spec-authoring
Skill2 starsChanged 4 months agoMITView on GitHub
Use whenever editing or extending an existing Synergy spec session in .synergy/sessions/. Enforces spec-kit component usage, cross-reference discipline, and session-local component creation. Triggers when the user asks to "update the spec", "add a section to the design doc", "extend the architecture spec", or any edit to a `.synergy/sessions/**/*.mdx` file.
- Deletes or force-pushes
7 other projects use a version of this.
Adopted by
Most recently taken up by
- AlexCiortan/setlisttheir own version, first seen Oct 29, 2026
- NashEQify/forgetheir own version, first seen Oct 25, 2026
- attilaszasz/sdd-pilottheir own version, first seen Oct 20, 2026
- galimba/agentic-builder-forgetheir own version, first seen Oct 13, 2026
- cypher0n3/dotagentstheir own version, first seen Oct 11, 2026
- bmarshall511/Trellistheir own version, first seen Aug 11, 2026
Other versions7 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 7
- attilaszasz/sdd-pilot★ 98same name
- Muvon/octomind-tap★ 6same name
- galimba/agentic-builder-forge★ 4same name
- cypher0n3/dotagents★ 3same name
- AlexCiortan/setlist★ 2same name
- NashEQify/forge★ 2same name
- bmarshall511/Trellis★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository9 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- address-feedbackSkill
- continueSkill
- create-specSkill
- executeSkill
- handoffSkill
- preview-controlSkill
- reviewSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
22 rules. 0 are common, 9 are distinctive, and 13 are very specific to this project.
0
Common
Most of the 7 edited versions we read keep these.
9
Distinctive
This author's own choices. Worth a look.
13
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 24
If it prints a warning, surface that line to the user verbatim before continuing.
- Very specific: line 33
All session content lives in .synergy/sessions/<name>/.
- Very specific: line 34
Add new top-level sub-specs as NN-<slug>.mdx where NN keeps numeric ordering.
- Very specific: line 36
Put session-local React components in _components/<Name>.tsx and import them with a relative path from the MDX file.
- Very specific: line 37
Put images in assets/ and reference them via <Mockup src="./assets/foo.png" alt="..." />.
- Distinctive: line 41
Always prefer spec-kit components over raw markdown for structured content (status badges, phases, risks, allocations, timelines, charts).
- Very specific: line 42
If the structure you need doesn't exist in spec-kit, build a session-local component in _components/ rather than dropping back to ad-hoc …
- Very specific: line 47
Timeline is phase-driven: Use <Timeline /> (no props) in the overview — it renders the live phase roster + progress bar from execution …
- Very specific: line 56
Every link between specs in the same session must use <CrossRef to="<slug>" /> or <CrossRef to="<slug>#<anchor>" />.
- Very specific: line 59
After editing, run node "$CLAUDE_PLUGIN_ROOT/packages/cli/dist/cli.js" validate <session-name> — dangling cross-refs are validation errors.
- Very specific: line 75
Update
02-implementation.mdx: add a <Phase> summary card that cross-refs phases/<slug>. - Distinctive: line 110
Keep the prefix; change the slug.
- Very specific: line 120
Start the preview with node "$CLAUDE_PLUGIN_ROOT/packages/cli/dist/cli.js" preview start if needed, then run node …
- Distinctive: line 122
When you add, remove, or rename a phase folder, the virtual session index is rebuilt and the page does a full reload.
- Distinctive: line 126
Before declaring an edit complete:
- Distinctive: line 136
Don't add files outside the session directory and claim they're part of the spec.
- Very specific: line 137
Don't write raw markdown links between specs (link).
- Very specific: line 138
Don't reference phases by numeric prefix (phases/02-<slug>).
- Distinctive: line 139
Don't bypass the validator by silencing errors.
- Distinctive: line 140
Don't bundle implementation code into the spec — the spec describes the implementation, the agents implement it elsewhere.
- Very specific: line 141
Don't edit orchestrator.md to be more MDX-like — it's plain markdown by design.
- Distinctive: line 142
Don't leave gaps in phase numbering.
“Common” is measured: kept by at least 6 in 10 of the 7 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
<!-- synergy-version: 0.22.0 -->Step 0 — Freshness check (run before anything else)
This skill loads at session start, so it can be stale if the plugin was updated
mid-session. Before doing any work, confirm you are the newest installed version.
Set MINE to the version in the synergy-version marker just above, then run:
MINE="0.22.0" # ← the synergy-version marker above
CACHE="${CLAUDE_PLUGINS_DIR:-$HOME/.claude/plugins}/cache/synergy/synergy"
NEWEST="$(ls "$CACHE" 2>/dev/null | sort -V | tail -1)"
if [ -n "$NEWEST" ] && [ "$NEWEST" != "$MINE" ] && \
[ "$(printf '%s\n%s\n' "$MINE" "$NEWEST" | sort -V | tail -1)" = "$NEWEST" ]; then
printf '⚠ synergy: this session loaded v%s, but v%s is installed. Restart Claude Code to load the latest skills/templates.\n' "$MINE" "$NEWEST"
fiIf it prints a warning, surface that line to the user verbatim before continuing. Then proceed — staleness is a warning, not a block.
spec-authoring
Rules for editing existing Synergy specs. The create-spec skill is for new sessions; this skill is for everything after.
Where to edit
- All session content lives in
.synergy/sessions/<name>/. Never write spec files outside this tree. - Add new top-level sub-specs as
NN-<slug>.mdxwhereNNkeeps numeric ordering. Cross-link with<SubSpec>. - Phases live in their own folders:
phases/<NN>-<slug>/spec.mdx(+ optionalorchestrator.md). See "Editing phases" below. - Put session-local React components in
_components/<Name>.tsxand import them with a relative path from the MDX file. - Put images in
assets/and reference them via<Mockup src="./assets/foo.png" alt="..." />.
Component usage
- Always prefer spec-kit components over raw markdown for structured content (status badges, phases, risks, allocations, timelines, charts).
- If the structure you need doesn't exist in spec-kit, build a session-local component in
_components/rather than dropping back to ad-hoc markdown. - Charts default to
<Chart>(Mermaid). For visuals beyond Mermaid, import a chart library (recharts, visx, etc.) inside a session-local component. - Agent rosters use
<AgentTree>(hierarchy + model/effort; effort inherits, model is per-node) as the source of truth;<AgentAllocation>maps agents to phases by name only. Never put model/effort on<AgentAllocation>or inline on<Phase>. - Timeline is phase-driven. Use
<Timeline />(no props) in the overview — it renders the live phase roster + progress bar from execution state. Do not reintroduce a hand-authoredmilestones={[…]}list for the phase timeline; it drifts from the right rail. Eachphases/<NN>-<slug>/spec.mdxmust have a frontmattertitle(the timeline step label); the validator warns when it is missing.
Cross-references
- Every link between specs in the same session must use
<CrossRef to="<slug>" />or<CrossRef to="<slug>#<anchor>" />. - Phase references use the slug-based form:
<CrossRef to="phases/<slug>" />. Slugs are stable across renumbering — numeric prefixes are not. Do not writephases/02-<slug>or02-implementation#phase-2. - Heading anchors are GitHub-style: lowercase, spaces →
-, special chars stripped, deduplicated per file. - After editing, run
node "$CLAUDE_PLUGIN_ROOT/packages/cli/dist/cli.js" validate <session-name>— dangling cross-refs are validation errors.
Editing phases
Phase folders are phases/<NN>-<slug>/. NN is zero-padded and must be gap-free starting at 01. The slug is the stable identifier (CrossRefs use it); NN only sets display order.
Add a phase (append to the end)
- Pick a slug from the phase title (lowercase kebab-case, max 40 chars).
- Pick
NN—max(existing NN) + 1, zero-padded. - Create the folder:
mkdir -p .synergy/sessions/<name>/phases/<NN>-<slug>. Copy templates from
$CLAUDE_PLUGIN_ROOT/skills/create-spec/templates/phase/:spec.mdx→phases/<NN>-<slug>/spec.mdxorchestrator.md→phases/<NN>-<slug>/orchestrator.md
Substitute
{{PHASE_NUMBER}}(the ordinal as a plain number, not zero-padded) and{{PHASE_TITLE}}.- Update
02-implementation.mdx: add a<Phase>summary card that cross-refsphases/<slug>. - Update
orchestrator.md(root) to include the new phase in the dependency graph and verification gates. - Validate:
node "$CLAUDE_PLUGIN_ROOT/packages/cli/dist/cli.js" validate <session-name>.
Insert a phase between existing ones
Pick the slot N (1-indexed) where the new phase will sit. Every existing phase with prefix >= N shifts up by one.
- Rename downstream folders in REVERSE order to avoid
mvcollisions. If you currently have01,02,03and want to insert at slot02:
(Reverse order is mandatory — going forward would overwrite the next folder before it has been moved.)mv phases/03-<slug> phases/04-<slug> mv phases/02-<slug> phases/03-<slug> - Create the new phase folder at slot
<N>-<slug>and copy the phase templates (as in "Add a phase" steps 3–4). - Update
02-implementation.mdx<Phase number={…} />props so the displayed ordinals match the new folder positions. - Update CrossRefs. Slug-based refs (
<CrossRef to="phases/<slug>" />) need no update because slugs are stable. Legacy refs that hard-code the numeric prefix (phases/02-<slug>or02-implementation#phase-2) do need updating — search and migrate them to the slug-based form. - Update the root
orchestrator.mddependency graph to include the new phase. - Validate.
Remove a phase
- Delete the folder:
rm -rf .synergy/sessions/<name>/phases/<NN>-<slug>. - Renumber the downstream folders in ASCENDING order (each
mvdecreases the prefix, so there is no collision risk):mv phases/03-<slug> phases/02-<slug> mv phases/04-<slug> phases/03-<slug> - Remove the
<Phase>card from02-implementation.mdx. Re-number the remaining<Phase number={…} />props. - Update CrossRefs. Slug-based refs to the removed phase will now dangle — the validator will flag them. Either delete the references or redirect them to a still-existing phase. Slug-based refs to renumbered phases need no update (slugs didn't change).
- Update the root
orchestrator.mdto drop the phase from the dependency graph and verification gates. - Validate.
Rename a phase
Keep the prefix; change the slug.
- Rename the folder:
mv phases/<NN>-<old-slug> phases/<NN>-<new-slug>. - Update the
title:frontmatter inphases/<NN>-<new-slug>/spec.mdx. - Update CrossRefs that reference the old slug: grep for
phases/<old-slug>and replace withphases/<new-slug>. - Update
02-implementation.mdx— the<Phase>card'stitleprop and any<CrossRef to="phases/<old-slug>" />inside it. - Validate.
Iterating with the preview
- Start the preview with
node "$CLAUDE_PLUGIN_ROOT/packages/cli/dist/cli.js" preview startif needed, then runnode "$CLAUDE_PLUGIN_ROOT/packages/cli/dist/cli.js" preview status --json. Use its non-nulloriginto build/s/<session-name>/overview; never assume a fixed port. - On every save, MDX files hot-reload in the browser. Confirm the user can see your change before moving on.
- When you add, remove, or rename a phase folder, the virtual session index is rebuilt and the page does a full reload.
Verification
Before declaring an edit complete:
node "$CLAUDE_PLUGIN_ROOT/packages/cli/dist/cli.js" validate <session-name>Zero errors. Warnings are OK (e.g. unparseable non-literal expressions in props) but should be reviewed.
Don'ts
- Don't add files outside the session directory and claim they're part of the spec.
- Don't write raw markdown links between specs (
[link](01-architecture.mdx)). Use<CrossRef>. - Don't reference phases by numeric prefix (
phases/02-<slug>). Use the slug-based form (phases/<slug>). - Don't bypass the validator by silencing errors. If a CrossRef doesn't resolve, fix the target.
- Don't bundle implementation code into the spec — the spec describes the implementation, the agents implement it elsewhere.
- Don't edit
orchestrator.mdto be more MDX-like — it's plain markdown by design. - Don't leave gaps in phase numbering. If you remove a phase, renumber the rest.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

