Skip to content
Development
Skill

/update-lid

Configure or reconcile a project for linked-intent development (LID). Dispatches on project state — fresh bootstrap, append directives to an existing agent-instructions file (AGENTS.md or CLAUDE.md), add missing mode marker, reconcile convention drift, or run mode transitions.

From plugin
lid
1157 skills1 command

Claude Code

$ npx -y skills add jszmajda/lid --skill update-lid --agent claude-code

SKILL.md

update-lid.SKILL.md
name: update-lid
description: "Configure or reconcile a project for linked-intent development (LID). Dispatches on project state — fresh bootstrap, append directives to an existing agent-instructions file (AGENTS.md or CLAUDE.md), add missing mode marker, reconcile convention drift, or run mode transitions. Invoked as /update-lid. For fresh projects with no LID artifacts, users typically invoke /linked-intent-dev (the workflow skill) instead and the workflow's Phase 1 calls this skill's bootstrap branch."

update-lid

Configure or reconcile a project for linked-intent development. Dispatches on project state — do not re-run unconditionally.

Invoked as `/update-lid`. The skill handles both initial bootstrap and ongoing reconciliation; the user's mental model differs ("set me up" vs. "update what we have") but the behavior dispatches on what's detected in the project, not on the user's framing.

Instruction-file anchor

LID's directives, the `## LID` block, and the navigation table live in the project's **agent-instructions file**. Canonically that is **`AGENTS.md`** (the cross-tool convention Cursor and most agents read), with **`CLAUDE.md` a symlink alias** so Claude Code sees the same content. Never branch on which host you are running under.

  • **Read** (detect directives, mode, version, drift): use `AGENTS.md` if it exists, otherwise `CLAUDE.md`. With the symlink the two are one file.
  • **Fresh bootstrap (write)**: create `AGENTS.md` and a `CLAUDE.md` symlink pointing at it (`ln -s AGENTS.md CLAUDE.md`). Where symlinks are unavailable (e.g. Windows without Developer Mode), instead write a `CLAUDE.md` whose only content is `@AGENTS.md`.
  • **Existing project (write)**: update the file that already exists, in place. A project that already uses `CLAUDE.md` keeps it — do not migrate it to `AGENTS.md`.

Below, *the instruction file* means the file chosen by these rules.

Detection signals

Use these exact detection rules — do not guess or use fuzzy matching.

  • **LID directives present**: `grep` for the literal strings `"linked-intent-dev"` or `"Linked-Intent Development"` in the instruction file. Either match indicates LID directives are already installed.
  • **LID metadata block present**: `grep` for a `## LID` heading in the instruction file. The block carries two bullets:
  • `- Mode: {Full|Scoped}` — the project's LID mode. Case-insensitive on the mode name; whitespace tolerated.
  • `- Version: {X.Y.Z}` — the `linked-intent-dev` plugin version the project's docs conform to. A project with a `## LID` block but no `- Version:` bullet is treated as **predating versioned conventions (no `- Version:` bullet)** (walk from the start).
  • **Project version vs. installed version**: read `- Version:` from the `## LID` block and compare its major.minor with the major.minor of the installed `linked-intent-dev` plugin version (the `version` field in `plugins/linked-intent-dev/.claude-plugin/plugin.json`; the three LID plugins share it, and it is the LID conventions version). When the project's major.minor is lower, the project lags and version-walk applies. A difference in the patch number alone is **not** lag: a patch release asks nothing of a project, so do not walk. When the project's version is **newer** than the installed one — patch included — a newer LID plugin has already worked on this project; stop and suggest the user update their LID plugins (see the dispatch table). If `- Version:` does not read as `X.Y.Z`, read what parses — drop a leading `v`, take a missing patch as `0` (`v1.3` is 1.3.0) — and walk from that version; if nothing parses, treat the project as predating versioned conventions and walk from the start. Never write the installed version over a malformed one without walking: that would silently skip every migration in between.
  • **Arrow-maintenance overlay present**: `docs/arrows/` directory exists at the project root.
  • **Convention drift**: any of the required directories missing (`docs/intent/`, `docs/high-level-design.md`); the instruction-file directive sections diverge from the current template, including a **malformed `## LID` block** (heading other than a bare `## LID`, mode merged into the heading as `## LID Mode: Full`, a missing `- Mode:` or `- Version:` bullet, a `- Version:` not written as `X.Y.Z`, or stray non-template bullets); a design doc whose `prefix:` frontmatter is an **array** (an unresolved multi-prefix marker — see Version-walk); or a node folder holding **more than its `<node>-design.md` + optional `<node>-specs.md` pair** (an un-promoted sub-LLD left as extra files). The last two are detected independently of version lag — a project already at the installed major.minor still has them re-surfaced by reconcile-conventions, and handled the same way (surfaced with a recommended resolution, never silently left or auto-resolved).

Re-check all detection signals on every invocation. Installing `arrow-maintenance` after initial setup, for example, should trigger an arrow-navigation-row update on the next `/update-lid` run.

State dispatch

Inspect the project and take exactly one of these actions:

| Detected state | Action | |---|---| | No instruction file, no `docs/` | **Full bootstrap** — create required directories, create the instruction file (`AGENTS.md` + `CLAUDE.md` symlink, per *Instruction-file anchor*) with LID directives + `## LID` block (`- Mode:` + `- Version:` set to the installed `linked-intent-dev` version). No workflow-doc offer (see *Workflow-doc vendoring*). | | Instruction file exists, no LID directives | **Append directives** — append the LID directives block to the existing instruction file without overwriting existing content. Create `docs/` if missing. | | LID directives present, no `## LID` block (or no `- Mode:` bullet) | **Add or normalize the LID block** — default mode Full. Keep any `- Version:` the block already records (read it as the version rules above say) and let the version rows below decide whether to

Read more
@jszmajda
Ships withlid

A structured design-before-code methodology for agentic coding. Stop building the wrong thing — get alignment on what before writing how. Works with any coding agent that reads per-project instructions.

Stars on GitHub

Momentum

stars in total
115
Star history of jszmajda/lid on GitHub, a chart by star-history.com

Other skills on lid.

arrow-maintenance

arrow-maintenance

Navigation and audit overlay for linked-intent development. Use when working with docs/arrows/ — orienting via index.yaml,…

@jszmajda@jszmajdaInstall Skill
map-codebase

map-codebase

Bootstrap LID in an existing (brownfield) codebase. Deep-reads every file in the declared scope, offers lens-based clustering…

@jszmajda@jszmajdaInstall Skill
bidirectional-differential

bidirectional-differen…

Audit coherence across an arrow of intent by running two parallel fresh Claude sessions — one reconstructs code from a single…

@jszmajda@jszmajdaInstall Skill
review-depth

review-depth

Experimental declared review depth for linked-intent development. Use when a LID project's instruction file declares a review…

@jszmajda@jszmajdaInstall Skill
lid-coach

lid-coach

Review a project's current linked-intent-development (LID) usage against LID's own principles and produce a prioritized report of…

@jszmajda@jszmajdaInstall Skill
linked-intent-dev

linked-intent-dev

Guide for linked-intent development (LID). Consult for ALL code changes. Walks changes through a mode-aware six-phase workflow…

@jszmajda@jszmajdaInstall Skill

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills10d309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc12d293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react1d252k
@facebook@facebookInstall Skill

Questions about update-lid.

Which coding agents can use update-lid?
update-lid installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.