Agent skill

Arrow Maintenance

by jszmajda in jszmajda/lid

Navigation and audit overlay for linked-intent development. An agent skill from jszmajda/lid.

MITAuto-check passed

Install Arrow Maintenance

skills CLI
$ npx skills add jszmajda/lid --skill arrow-maintenance -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install jszmajda/lid arrow-maintenance --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/jszmajda/lid.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/arrow-maintenance/skills/arrow-maintenance .claude/skills/arrow-maintenance && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
arrow-maintenance
GitHub stars
105
Token cost
~3.5k tokens
SKILL.md length
1,757 words
Files
7 (incl. references)
Skills in repo
6
Repo updated
First seen
Licence
MIT

At a glance

Navigation and audit overlay for linked-intent development. An agent skill from jszmajda/lid.

  • Works in 5 steps: Repair broken overlay state. Malformed… → Run the five audit checks (see… → Apply unambiguous fixes in place → …
  • Working with docs/arrows/ — orienting via index.yaml
  • SKILL.md covers Two modes, When /arrow-maintenance is…, Audit-and-update pass (command… and Incremental audit, plus 8 more sections
  • Runs JavaScript scripts from its folder

What it does

Arrow Maintenance is an agent skill from jszmajda/lid. Navigation and audit overlay for linked-intent development. Use when working with docs/arrows/ — orienting via index.yaml, auditing spec-to-code coherence, detecting reverse orphans and drift, splitting/merging/renaming/re-parenting segments. Dual-mode: ambient guidance when the overlay is present (catch-and-recommend), or explicit /arrow-maintenance command for a directed audit-and-update pass.

Its SKILL.md is about 3.5k tokens, which your agent loads only when the skill is triggered. The skill folder holds 8 other files, including reference files (for example `evals/evals.json`, `references/README-template.md` and `references/arrow-doc-template.md`).

The repository describes itself as: Linked-Intent Development - a SDD methodology for agentic coding. The licence is MIT.

When your agent uses it

  • Working with docs/arrows/ — orienting via index.yaml
  • Auditing spec-to-code coherence
  • Detecting reverse orphans and drift
  • Splitting/merging/renaming/re-parenting segments

Example prompts

  • “/arrow-maintenance”

Requirements

  • Node.js

Workflow steps

5 steps, taken from the first numbered list in SKILL.md.

  1. Repair broken overlay state. Malformed index.yaml, missing per-segment docs referenced by the index, stale schema versions — these are…
  2. Run the five audit checks (see references/audit-checklist.md)
  3. Apply unambiguous fixes in place
  4. Surface everything else for user decision
  5. Produce a structured report at the end: list findings, distinguishing those that were automatically resolved from those requiring user…

What it can do on your machine

Read from SKILL.md and the folder at commit 831c195. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships script files (JavaScript), which the agent can run.

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Arrow Maintenance loads about 3.5k tokens when it runs, and up to ~11k if it reads all its reference files. Until then it costs about 104 tokens; SKILL.md has 1,757 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~104
When it runs · the whole SKILL.md, loaded when a task matches
~3.5k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~11k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from jszmajda/lid at commit 831c195, republished under its MIT licence (© jszmajda). 1,757 words, ~3,468 tokens.

Download SKILL.mdSave it as .claude/skills/arrow-maintenance/SKILL.md (or your agent's skills folder). This skill also uses 6 other files; get the full folder from GitHub.
name
arrow-maintenance
description
Navigation and audit overlay for linked-intent development. Use when working with docs/arrows/ — orienting via index.yaml, auditing spec-to-code coherence, detecting reverse orphans and drift, splitting/merging/renaming/re-parenting segments. Dual-mode: ambient guidance when the overlay is present (catch-and-recommend), or explicit /arrow-maintenance command for a directed audit-and-update pass.

Arrow Maintenance

The arrow-maintenance overlay scales linked-intent-dev for projects too large to hold in one context window. It provides a navigation index, systematic audit, and brownfield bootstrap.

This skill operates in two modes. Detect which mode applies before acting.

Two modes

Ambient mode. Auto-triggered on arrow-adjacent prompts when docs/arrows/ exists. Posture is catch and recommend — notice relevant work, surface findings, edit only as the surrounding conversation authorizes. File writes happen opportunistically (e.g., updating an arrow doc's coverage table alongside a linked-intent-dev edit on the same segment). Record arrow lifecycle events (split, merge, rename, re-parent, status transitions) rather than erasing them. Do not initiate a systematic audit-and-update pass in ambient mode.

Command mode. Invoked explicitly as /arrow-maintenance. Posture is directed action — the user has asked for the pass. Run an audit-and-update pass, apply unambiguous fixes in place, and surface the rest for user decision. Does not pause at synthetic phase boundaries — it is a single directed pass.

When /arrow-maintenance is invoked

Inspect the project and dispatch on state:

  • Overlay present (docs/arrows/ exists) → run the audit-and-update pass (below).
  • LID docs present (HLD + at least one LLD) but no docs/arrows/ → generate the overlay from existing LID docs: populate index.yaml with one arrows: entry per design-tree node — one leaf entry per leaf LLD (the EARS-owning nodes) and one grouping entry per sub-HLD node — recording the tree's nesting via parent/children links, status MAPPED, sampled: {today}, audited_sha: null; create one per-segment arrow doc per leaf LLD at its tree-mirrored path (docs/arrows/<path>/<leaf>.md), referencing the existing LLD and any known tests/code. Sub-HLD nodes are directories, not arrow docs — their index.yaml entry sets detail to the sub-HLD's design doc (../intent/<path>.md) instead. Do not generate new HLD, LLD, or EARS skeletons (those exist).
  • Neither LID docs nor overlay → the user typed /arrow-maintenance on a project that isn't ready for it. Don't just print a redirect — describe what you found and offer to dispatch: "I see no LID installation here. You probably want /linked-intent-dev if this is a greenfield project (give it a description of what you want to build; it bootstraps LID as part of Phase 1), or /map-codebase if you're bringing LID to an existing codebase. Shall I run one of those instead, or did you mean something else?" Then proceed based on the user's answer.

Audit-and-update pass (command mode)

Every /arrow-maintenance run, in order:

  1. Repair broken overlay state. Malformed index.yaml, missing per-segment docs referenced by the index, stale schema versions — these are this skill's domain, so fix them first.

  2. Run the five audit checks (see references/audit-checklist.md):

    • Reference coherence: do arrow-doc pointers resolve? Are cited EARS specs present? Are LLD section headings as referenced?
    • Coverage: does every behavioral spec have at least one eval assertion citing it?
    • Staleness: compare audited and audited_sha against current state to find segments whose files changed since last audit.
    • Drift signals: modified code since audited_sha, specs changed without test updates, tests passing but missing @spec annotations, @spec annotations pointing to missing spec IDs (reverse orphans).
    • Orphan artifacts: LLDs, specs, or code files not listed in any arrow doc's References section.

    Exclude the reserved docs/arrows/_experiments/ subtree from all five checks — it is owned by lid-experimental, not this skill, and is never audited, cleaned up, or regenerated here (see docs/intent/arrow-maintenance/arrow-maintenance-design.md).

    When a project-local coherence script is declared under ## LID Tooling in CLAUDE.md (as Coherence check: {path}), invoke that script and treat its output as authoritative for the deterministic checks it performs. Languages and paths vary by project — trust the declaration. If the declaration is missing or the declared path does not exist, perform the checks in-prompt. A reference Node implementation is bundled at references/coherence-check.mjs that users may copy to their project and declare in CLAUDE.md.

  3. Apply unambiguous fixes in place:

    • Regenerate ## Spec Coverage tables in affected arrow docs from source scans.
    • Regenerate ## References sections from source scans (grep for @spec, check file paths exist).
    • Update status / next / drift fields in index.yaml where the new state is clear.
    • Clean up unmapped.docs: assign entries to segments where the assignment is unambiguous; flag the rest for user assignment.
    • Refresh audited: {today} and audited_sha: {current git HEAD} on each audited segment.
  4. Surface everything else for user decision:

    • Reverse orphans — ask whether to create the missing spec, delete the annotation, or treat as an alias of an existing spec. Do not auto-resolve.
    • Ambiguous segment assignments for unmapped.docs entries.
    • Candidate lifecycle events (splits, merges) detected from drift signals.
    • Any finding where the right fix depends on intent.
  5. Produce a structured report at the end: list findings, distinguishing those that were automatically resolved from those requiring user decision. Include location (segment, file, line) for each.

Incremental audit

When audited_sha is populated and git history is available, run the audit in incremental mode — inspect only segments whose files changed since audited_sha. This is a large performance win on big projects. When audited_sha is null (never audited) or git history is unavailable, audit every segment.

Ambient mode behavior

When the skill is consulted ambiently (not via /arrow-maintenance), bias the agent's work on arrow-adjacent tasks:

  • Start from index.yaml. Load it first, before any per-segment doc. Query for unblocked segments (where blockedBy is empty and status is not OK or OBSOLETE).
  • Load detail on demand. Only load the per-segment arrow doc once a specific segment is implied. Follow its ## References into LLDs, spec files, tests, or code as needed.
  • Surface drift rather than silently repair. When you notice a reference mismatch, reverse orphan, or stale segment during other work, mention it. Let the user or linked-intent-dev drive the fix.
  • Participate in writes the conversation is already doing. When linked-intent-dev is editing a segment, update that segment's arrow doc and index.yaml entry in the same cascade — this is opportunistic, not initiated by you.

Authoritative sources

When information appears in multiple places, this is the authority rule:

  • Segment state fields (status, sampled, audited, audited_sha, next, drift, blocks, blockedBy, merged_into) live authoritatively in index.yaml.
  • Per-segment arrow doc's References and Spec Coverage are derived views — regenerated from source scans during audit. Do not hand-edit them to contradict source.
  • index.yaml schema is defined authoritatively in docs/intent/arrow-maintenance/arrow-maintenance-design.md (the sub-HLD that owns the shared overlay); references/index-schema.md is the working copy. Cross-plugin schema changes defer to the sub-HLD.
  • Spec-file header format (the LID-on-LID inversion) is defined in docs/intent/linked-intent-dev/linked-intent-dev-design.md — this skill reads from that schema.
  • @spec placement rule (entry point of behavior's implementation graph) is defined in the linked-intent-dev skill.
Show full SKILL.md (698 more words)Show less

Arrow doc format

An arrow segment is the territory owned by one leaf LLD — the node that owns EARS specs — and its boundary is that leaf's prefix in the path-concatenated EARS IDs (e.g., grep SCALE-MAINT gathers the segment). Each leaf segment has one markdown file under docs/arrows/ at the path mirroring its design doc under docs/intent/ (e.g., docs/arrows/arrow-maintenance/maintenance.md mirrors docs/intent/arrow-maintenance/maintenance/maintenance-design.md); at depth-2 this is a flat set of {segment-name}.md files. Sub-HLD (grouping) nodes own no EARS and no segment — they are directories, not arrow docs. See references/arrow-doc-template.md for the template. The arrow doc is an orientation page, not a design doc — pointers + coverage table, no duplicated design content.

Status enum

StatusMeaning
UNMAPPEDNot yet explored
MAPPEDStructure known, specs not verified against code
AUDITEDSpecs verified — implementation status understood
OKFully coherent — all specs implemented
PARTIALSome specs missing or partial
BROKENCode and docs have diverged significantly
STALEDocs exist but outdated
OBSOLETESuperseded, kept for historical reference
MERGEDCombined into another arrow (use merged_into field)

Normal progression: UNMAPPED → MAPPED → AUDITED → OK.

Lifecycle events

Segments evolve. Five first-class events. This skill is the owner that executes them on an existing overlay; linked-intent-dev recognizes one mid-change and hands off here. The mechanics and atomicity guarantees are specified authoritatively in docs/intent/arrow-maintenance/arrow-maintenance-design.md § Lifecycle Events.

  • Split: one segment → two. Create the new segment's arrow doc, move relevant references, update both docs to reference each other, record in index.yaml. If detected mid-change, ask whether to split now or defer — deferring is preferred. Split at clean breaks, not mid-edit.
  • Merge: two segments → one. Pick primary, move references, mark secondary as MERGED with merged_into: {primary-name}. Tombstone or delete the secondary's arrow doc.
  • Rename: a leaf segment's name changes (e.g., auth → identity). Because that name is the leaf prefix of the segment's path-concatenated EARS IDs, the rename rewrites every spec ID under it (AUTH-UI-001 → IDENTITY-UI-001) across the spec files and every @spec annotation in code and tests that cites those IDs. In the same pass, walk all other cross-references: the arrow-doc filename, the index.yaml entry key, parent/children links, blocks, blockedBy, merged_into, taxonomy membership, and every other arrow doc's References section. Rename is not rename-and-hope — spec files, docs, index.yaml, and code annotations land together or not at all.
  • Re-parent: a subtree moves to a new parent in the design tree (e.g., the runner leaf moves from under prompt-eval to under orchestration). Because an EARS ID is the root-to-leaf path, re-parenting rewrites the path-concatenated IDs of every spec in the moved subtree (PEVAL-RUN-014 → ORCH-RUN-014) and every @spec annotation citing them across code, tests, and docs, plus the parent/children links in index.yaml for the moved node and both the old and new parents. Like rename, this happens atomically in one session.
  • Status transition: UNMAPPED → MAPPED → AUDITED → OK with detours as needed. Timestamps (sampled, audited, audited_sha) record when each transition happened.

Rename and re-parent are the tooled, atomic restructuring operation this plugin owns: path-concatenated EARS IDs are stable under ordinary growth and change only under a deliberate rename or re-parent. A partial application — IDs rewritten in the spec file but not in code — is exactly the cross-reference rot the atomicity requirement exists to prevent.

Coordination with linked-intent-dev

ConcernOwner
Per-change HLD/LLD/EARS/test/code worklinked-intent-dev
Cascade at change timelinked-intent-dev
Arrow doc + index.yaml updates during a changelinked-intent-dev (has segment in context)
unmapped.docs cleanuparrow-maintenance during audit; linked-intent-dev when it notices an unmapped doc it can assign in passing
Systematic audit across segmentsarrow-maintenance
Drift detection between sessionsarrow-maintenance
Brownfield mappingarrow-maintenance (/map-codebase)
Overlay bootstrap on existing LID projectsarrow-maintenance (/arrow-maintenance command mode)
Lifecycle events (split, merge, rename, re-parent, status)Either skill; arrow-maintenance has richer guidance for multi-segment events and owns the atomic rename/re-parent operation that rewrites path-concatenated EARS IDs and their @spec annotations across docs and code

No prescribed audit cadence

The skill does not prescribe "run audit every N commits" or "run weekly." Surface staleness signals when consulted; let the user choose the rhythm.

Reference files

  • references/index-schema.md — full index.yaml schema.
  • references/arrow-doc-template.md — per-segment arrow doc template.
  • references/audit-checklist.md — the five audit checks in actionable form.
  • references/coherence-check.mjs — reference Node implementation of deterministic checks. Optional; any equivalent in any language works.
  • references/README-template.md — template for the docs/arrows/README.md that projects install alongside their overlay.

© jszmajda, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 6 other files (references) in plugins/arrow-maintenance/skills/arrow-maintenance of jszmajda/lid.

  • SKILL.md
  • evals/evals.json
  • references/README-template.md
  • references/arrow-doc-template.md
  • references/audit-checklist.md
  • references/coherence-check.mjs
  • references/index-schema.md

Open the folder on GitHubat commit 831c195

Compare with similar skills

Arrow Maintenance next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Arrow Maintenance compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Arrow Maintenance this skilljszmajda/lid105—~3.5kAutomated safety check: PassMIT
Invalid Linksthedaviddias/Front-End-Checklist74k—~806Automated safety check: PassMIT
Skip Navigationthedaviddias/Front-End-Checklist74k—~443Automated safety check: PassMIT
Internal Linksthedaviddias/Front-End-Checklist74k—~770Automated safety check: PassMIT
External Linksthedaviddias/Front-End-Checklist74k—~773Automated safety check: PassMIT
Intent Requirements IntakeYeachan-Heo/oh-my-claudecode40k—~1.5kAutomated safety check: PassMIT

Similar skills

  • Invalid Links

    thedaviddias/Front-End-Checklist

    A skill your agent uses when auditing a page's link elements for crawlability, reviewing JavaScript-heavy SPAs where navigation may not use <a href tags, or checking that dynamically generated links…

    74k GitHub stars~806 tokensUpdated 3 days ago
    Marketing & SEOAuto-check passed
  • Skip Navigation

    thedaviddias/Front-End-Checklist

    A skill your agent uses when reviewing rendered HTML, interactive components, or design-system patterns related to Include a skip navigation link.

    74k GitHub stars~443 tokensUpdated 3 days ago
    Frontend & DesignAuto-check passed
  • Internal Links

    thedaviddias/Front-End-Checklist

    A skill your agent uses when auditing a site's internal link structure, identifying pages that need more incoming links, generating contextual linking opportunities between related content, or…

    74k GitHub stars~770 tokensUpdated 3 days ago
    Marketing & SEOAuto-check passed
  • External Links

    thedaviddias/Front-End-Checklist

    A skill your agent uses when auditing content pages for citation quality, suggesting authoritative sources to link for factual claims, or reviewing whether a page's external link attributes…

    74k GitHub stars~773 tokensUpdated 3 days ago
    Research & ScienceAuto-check passed
  • Intent Requirements Intake

    Yeachan-Heo/oh-my-claudecode

    Turns a pasted chat log or spoken problem report from support or ops staff into a reviewed five-section intent.md through numbered batches of questions.

    40k GitHub stars~1.5k tokensUpdated yesterday
    Product & Project ManagementAuto-check passed
  • SEO Aeo Internal Linking

    sickn33/agentic-awesome-skills

    Maps internal link opportunities between pages with relevant anchor text, placement instructions, orphan-page detection, and cannibalisation checks.

    47k GitHub starsUsed in 1 repo~2.3k tokens
    Marketing & SEOAuto-check passed

More from jszmajda/lid

  • Audit coherence across an arrow of intent by running two parallel fresh Claude sessions — one reconstructs code from a single EARS, the other reconstructs the EARS from stripped code — then…

    105 GitHub stars~2.9k tokensUpdated 3 days ago
    Auto-check passed
  • Map Codebase

    jszmajda/lid

    Bootstrap LID in an existing (brownfield) codebase. An agent skill from jszmajda/lid.

    105 GitHub stars~3.4k tokensUpdated 3 days ago
    Auto-check passed
  • Update Lid

    jszmajda/lid

    Configure or reconcile a project for linked-intent development (LID).

    105 GitHub stars~4.2k tokensUpdated 3 days ago
    Auto-check passed
  • Lid Coach

    jszmajda/lid

    Review a project's current linked-intent-development (LID) usage against LID's own principles and produce a prioritized report of recommendations for getting more out of the methodology.

    105 GitHub stars~13k tokensUpdated 3 days ago
    Auto-check passed
  • Linked Intent Dev

    jszmajda/lid

    Guide for linked-intent development (LID). An agent skill from jszmajda/lid.

    105 GitHub stars~5.3k tokensUpdated 3 days ago
    Auto-check passed

Questions about Arrow Maintenance

What does Arrow Maintenance do?

Navigation and audit overlay for linked-intent development. An agent skill from jszmajda/lid. Arrow Maintenance is an agent skill from jszmajda/lid. Navigation and audit overlay for linked-intent development.

When should I use Arrow Maintenance?

Arrow Maintenance fits situations like: working with docs/arrows/ — orienting via index.yaml; auditing spec-to-code coherence; detecting reverse orphans and drift; splitting/merging/renaming/re-parenting segments.

How do I install Arrow Maintenance in Claude Code?

Run `npx skills add jszmajda/lid --skill arrow-maintenance -a claude-code`. Or copy the skill folder (plugins/arrow-maintenance/skills/arrow-maintenance in jszmajda/lid) into .claude/skills/arrow-maintenance in your project. Claude Code loads it when a task matches its description.

How do I install Arrow Maintenance in Codex?

Run `npx skills add jszmajda/lid --skill arrow-maintenance -a codex`. Or copy the skill folder (plugins/arrow-maintenance/skills/arrow-maintenance in jszmajda/lid) into .agents/skills/arrow-maintenance in your project. Codex loads it when a task matches its description.

Can I use Arrow Maintenance in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add jszmajda/lid --skill arrow-maintenance -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/arrow-maintenance, .gemini/skills/arrow-maintenance, .github/skills/arrow-maintenance and .opencode/skills/arrow-maintenance in your project.

What does Arrow Maintenance need to run?

Going by SKILL.md and its folder, Arrow Maintenance needs JavaScript for the scripts in its folder. Our summary lists: Node.js.

Does Arrow Maintenance access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Arrow Maintenance safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Arrow Maintenance use?

Arrow Maintenance is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Arrow Maintenance use?

About 3.5k tokens (SKILL.md is roughly 14k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 7.1k tokens, read only when the agent opens those files.

What are the alternatives to Arrow Maintenance?

Skills that share tags, products or a category with Arrow Maintenance: Invalid Links (thedaviddias/Front-End-Checklist, 74k stars), Skip Navigation (thedaviddias/Front-End-Checklist, 74k stars), Internal Links (thedaviddias/Front-End-Checklist, 74k stars) and External Links (thedaviddias/Front-End-Checklist, 74k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Arrow Maintenance?

jszmajda (a GitHub user) maintains it in jszmajda/lid, which has 105 GitHub stars. The repository holds 6 skills in this directory. The repository was last updated on October 6, 2026.

Source: jszmajda/lid on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.