requirement-sync
Propagate a changed requirement across every place it is written down, and find where the old version still reads as current.
Skill by cheshirecode
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/cheshirecode-requirement-sync
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: productivity
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Python package
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/requirement-sync
What's inside
- Skill name
requirement-sync- Description
- Propagate a changed requirement across every place it is written down, and find where the old version still reads as current. Use when a decision changes in chat, a review, or a meeting and the written record now disagrees with itself; or when asked to sync, reconcile, or update records after a requirement change.
- License
- Unlicense
- Instructions
- 185 lines in SKILL.md · view on GitHub
Before installing
- Ships executable scripts
Agent Skills spec issues
- files: referenced but missing: references/gates.md
Files (4)
- SKILL.md
- derived-views.md · references/
- discover_surfaces.py · scripts/
- test_discover_surfaces.py · tests/
SKILL.md (first lines)
# requirement-sync A requirement changes in one place and stays true in three others. The cost is not the edit, it is the search: finding which records still assert the old version, when none of them look wrong on their face. This skill does the finding. It does not decide what is true. ## When to use - A decision lands and some written record now contradicts it. - A tracked item closes and its premise was carried into other documents. - Before a sign-off, to check the evidence under it has not moved. - A page is assembled from several sources and has to follow them as they move, including a status summary generated from live sources. That is the same problem from the end with more inputs than editors; see [references/derived-views.md](references/derived-views.md). Do not use it to make the decision. It surfaces disagreement; a human resolves it. ## Initialise: scan, ask, declare The skill assumes no particular tracker, document store or publishing tool. Before the first run, work out what exists here — in that order, because a scan sees structure and cannot see intent. **Scan.** `scripts/discover_surfaces.py [root ...]` walks read-only, writes nothing and makes no network call. It reports each kind of surface in one of four states, never collapsed: `found` with the evidence named, `absent`, `unknown`, or `n/a`. `--json` emits the same as a declarations skeleton. **Pass every root, not just the repository.** A project's notes, ledger and memory store routinely live in another checkout or off-disk entirely, and the tracker always does. `absent` means *not under the roots you scanned* — it is never evidence that a surface does not exist, which is why every absent row still prints the question asking where else to look. Three things it deliberately will not do: - **It will not claim `absent` from a partial look.** If inspection stops early the state degrades to `unknown`. An absence claim from a sample is not a measurement: an earlier version read 4,000 of 109,475 files on a real tree, 3.7%, and reported two surfaces absent off that. - **It never reports a tracker as `found`.** A forge is where the code lives, not evidence of where work is tracked — plenty of projects keep code in one place and issues in another. It names the host and asks. - **It separates test data and templates from live surfaces without hiding them.** A fixture looks exactly like the surface it stands in for; running this against the repository that ships it reported its own worklog fixtures as live working notes. Those matches are counted and named, not filtered, because a filter would also hide a real surface that happens to sit under one of those directory names. **Ask.** Every `unknown` prints the question to put to the operator. Answer those before declaring anything; a guess here is the one error the rest of the procedure cannot detect, because every later step trusts the declarations. **What the scan is and is not.** Discovery is one of six steps and the only scripted one; the rest is procedure followed by hand. So it gives a surface inventory and a checklist — it does not detect drift on its own, and `found` is not a completed inventory. A page published straight from a scratch directory, or a store that sits outside every plausible root, is visible only if someone names it. That is what the declarations are for. **Run it when a fact changes** — a tracked item closes, a change merges, a decision reverses — and not on a schedule. On a schedule it becomes another clean-looking pass that measures nothing, and a pass that always looks the same is one nobody reads. **Declare.** For each surface: **what it is**, **how to search it**, **how to read one item**, and **how to write to it**. For a tracker, two more: - **How to tell a closed item's reason for closing from its state** — see step 3 for why that is separate. - **What this credential can actually see.** The tracker and your visibility into it are two different facts, and a scan sees neither. One real setup files the same incidents across two projects where the account can read one and not the other. Declare the scope you can search, because a search that returns nothing for lack of permission looks exactly like a search that returns nothing because there is nothing there. Keep the declarations in one file the procedure can read. If a surface cannot answer one of those questions, record that; a missing capability changes the procedure rather than invalidating it. A source feeding a derived view answers the same four questions and three more — which fields it owns, where its snapshot lives, and how old that snapshot is. Those go in a manifest beside the declarations, which is also the extension point: a new source adds an entry and a script and edits neither the skill nor an existing script. The view itself declares two more things: **its refresh procedure**, which is what a sync runs, and **its hand-kept fields that age with traffic** (dated readings, "as of" intros, per-item flags, saved copies of outside config). No requirement has to change for those to go stale, so no claim search will find them. See [references/derived-views.md](references/derived-views.md). ## How records go stale Not configuration. This is the part worth knowing, and it transfers across tools. A surface's *kind* predicts how it rots: | kind of surface | how it goes stale | |---|---| | tracked item | closed on a premise that later changed | | working note | its next-action field carries a superseded plan | | published page | a card states what was true at publish time | | durable memory | a rule rests on a fact that has since moved | | code comment | it defends a property that nothing tests | The last one is the least obvious and the most expensive: a comment asserting an invariant is evidence that someone knew it mattered and did not encode it. ## Procedure 1. **State the change in one sentence**, with its source. "Service B will now emit under a second account identifier, per the decision recorded in <link>." If it cannot be said in one sentence it is more than one change.
From cheshirecode/dotfiles, Unlicense.
More from cheshirecode/dotfiles
- 0.570score
artifact-gate
cheshirecode
Gate an HTML artifact before publishing - tag balance, dead anchors, duplicate ids, non-absolute links, drifted self-claims, and code links that still resolve…
SkillAFreshness: AClaude Code +9 - 0.570score
job-application
cheshirecode
Generate a tailored job-application package (resume, cover letter, skills keyword block) for one job description.
SkillAFreshness: AClaude Code +9 - 0.567score
browser-use-setup
cheshirecode
Install, upgrade, wrap, and connect the browser-use CLI across macOS and Linux, with sandbox-safe testing and platform-specific debugging.
SkillAFreshness: AClaude Code +9 - 0.567score
pr-review
cheshirecode
Review one PR or close out completed work.
SkillAFreshness: AClaude Code +9 - 0.567score
loop-engineering
cheshirecode
Run bounded, evidence-driven loops for repeated, resumable, delegated, or scheduled work.
SkillAFreshness: AClaude Code +9 - 0.567score
fast-crawl
cheshirecode
Fetch and crawl web pages as markdown locally, fast, with no browser session.
SkillAFreshness: AClaude Code +9 - 0.565score
job-search
cheshirecode
Source remote job postings from public boards (Greenhouse boards, HN Who-is-hiring, RemoteOK, LinkedIn via the browser harness, direct URLs), filter them for…
SkillAFreshness: AClaude Code +9 - 0.529score
evidence-gate
cheshirecode
Gate completion claims by mapping every observable goal or acceptance criterion to typed command, artifact, Git, GitHub, or URL evidence.
SkillBFreshness: BClaude Code +9 - 0.529score
loop-helpers
cheshirecode
Optional deterministic helpers for loop-engineering context packs and fail-open Caveman transport decisions.
SkillBFreshness: BClaude Code +9 - 0.529score
council
cheshirecode
Run multi-angle, audited research with independent voting.
SkillBFreshness: BClaude Code +9 - 0.529score
serena-rg-search
cheshirecode
Pick the right tool for multi-faceted code search across symbols, text, semantic meaning, JSON, git history, and logs.
SkillBFreshness: BClaude Code +9 - 0.526score
pr-cost
cheshirecode
Collect a typed AI cost payload for a newly created GitHub PR, persist it to a local ledger, and optionally post an idempotent PR comment when live writes are…
SkillBFreshness: BClaude Code +9
Signals
- Stars
- 0
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Oct 20, 2026 (8 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- Unlicense
- Repository
- github.com/cheshirecode/dotfiles
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from cheshirecode
- 0.570score
artifact-gate
cheshirecode
Gate an HTML artifact before publishing - tag balance, dead anchors, duplicate ids, non-absolute links, drifted self-claims, and code links that still resolve…
SkillAFreshness: AClaude Code +9 - 0.570score
job-application
cheshirecode
Generate a tailored job-application package (resume, cover letter, skills keyword block) for one job description.
SkillAFreshness: AClaude Code +9 - 0.567score
browser-use-setup
cheshirecode
Install, upgrade, wrap, and connect the browser-use CLI across macOS and Linux, with sandbox-safe testing and platform-specific debugging.
SkillAFreshness: AClaude Code +9 - 0.567score
fast-crawl
cheshirecode
Fetch and crawl web pages as markdown locally, fast, with no browser session.
SkillAFreshness: AClaude Code +9 - 0.567score
loop-engineering
cheshirecode
Run bounded, evidence-driven loops for repeated, resumable, delegated, or scheduled work.
SkillAFreshness: AClaude Code +9 - 0.567score
pr-review
cheshirecode
Review one PR or close out completed work.
SkillAFreshness: AClaude Code +9
Cite this page
requirement-sync skill. Agent Mart. https://agentmart.dev/skills/cheshirecode-requirement-sync (last updated 2026-10-24)