specflow
AGENTS.md17 starsChanged 3 months agoMITView on GitHub
specflow supports Claude Code and Codex from one skill source. Claude Code ships it as a single-plugin marketplace; Codex discovers the same skills directly. These rules keep both integrations consistent as skills are added. AGENTS.md is the canonical source for contributors using either harness. Claude Code loads the repository-only pointer in .claude/rules/repository.md; plugin consumers receive the promoted skills, not these development conventions. Skills live under skills/ in bucket folders: engineering/ and productivity/ are the promoted buckets — the plugin ships…
We split this AGENTS.md into the rules it gives an agent
7 rules. About 0 are common, 2 are distinctive, and 5 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈2
Distinctive · estimate
This author's own choices. Worth a look.
5
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 31
Every promoted skill also gets a human-facing page at docs/<bucket>/<name>.md, mirroring the two promoted bucket folders.
- Distinctive: line 41
Use a canonical source for each artifact and preserve concurrent/user edits:
- Very specific: line 53
Keep .claude-plugin/plugin.json and .codex-plugin/plugin.json versions in sync with package.json.
- Very specific: line 56
After changing a promoted skill, run node scripts/check.mjs in the authorized environment.
- Distinctive: line 63
Use the focused scenarios in docs/validation-0.10.md for changed behaviors.
- Very specific: line 69
All shipped artifacts — SKILL.md, README.md, docs — are written in English.
- Very specific: line 74
Keep agents/openai.yaml in every promoted skill.
≈ “Common” is an estimate: at least 1 in 5 of the 36,368 AGENTS.md files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
specflow — repository conventions
specflow supports Claude Code and Codex from one skill source. Claude Code ships it as a single-plugin marketplace; Codex discovers the same skills directly. These rules keep both integrations consistent as skills are added. AGENTS.md is the canonical source for contributors using either harness. Claude Code loads the repository-only pointer in .claude/rules/repository.md; plugin consumers receive the promoted skills, not these development conventions.
Buckets
Skills live under skills/ in bucket folders:
engineering/— code and codebase workproductivity/— non-code workflow toolsin-progress/— drafts not ready to shipmisc/— kept but not promotedpersonal/— tied to one person's setupdeprecated/— no longer used
engineering/ and productivity/ are the promoted buckets — the plugin ships exactly that set.
What every promoted skill needs
A skill in engineering/ or productivity/ MUST have all four, kept in sync:
- A folder
skills/<bucket>/<name>/containingSKILL.md, where the folder name equals thename:in the frontmatter. - An entry in the top-level
README.md, with the skill name linked to itsSKILL.md, grouped under User-invoked or Model-invoked. - An entry in
.claude-plugin/plugin.json'sskillsarray (./skills/<bucket>/<name>). - An
agents/openai.yamlwith Codex UI metadata. User-invoked skills setpolicy.allow_implicit_invocation: false; model-invoked skills leave it enabled.
Skills in in-progress/, misc/, personal/, and deprecated/ MUST NOT appear in README.md or plugin.json.
Docs pages
Every promoted skill also gets a human-facing page at docs/<bucket>/<name>.md, mirroring the two promoted bucket folders. When you add, rename, or change a promoted skill's behaviour, create or re-sync its docs page. Non-promoted skills get no docs page.
Invocation
Every SKILL.md is either user-invoked or model-invoked. Retain Claude Code's existing disable-model-invocation: true field for user-invoked skills. Mirror it in Codex's agents/openai.yaml policy: allow_implicit_invocation: false is user-invoked (still explicitly available as $skill-name in Codex), while the default true is model-invoked. Keep the shared required frontmatter (name and description) present in every skill; do not remove Claude-specific fields from an existing skill. specflow's skills are user-invoked by default: the flow is deliberate, and each step is chosen, not triggered.
Authority and shared files
The user's request and repository policy govern scope, execution environment and delivery. These skills supply defaults where the project is silent; they do not erase prior authorization or impose a fresh confirmation at every transition. Do not bake particular model generations or one user's operational environment into reusable rules (ADR 0009).
Use a canonical source for each artifact and preserve concurrent/user edits:
domain-modelingprovides the glossary/ADR discipline, including the threshold for creating an ADR. Other authorized tasks may make bounded corrections without invoking a nominal owner solely for permission.repo-hardeningedits its verification markers only. Preserve project-specific restrictions and present a scoped migration when changing older generated policy.- Specs normally live under
docs/specs/, local tickets underdocs/tickets/, and durable evidence underdocs/evidence/, unless the project already has an equivalent convention/tracker. Create only artifacts the work needs; version them according to the authorized delivery workflow. to-spec,to-ticketsand an authorizedspec-executionmay correct the same source and clear its returned state only after resolving the named defect. Preserve source identity and dependency edges; the marker is not a counter or a process-only veto.- Handoffs default to ignored
.scratch/handoffs/. Keep the last usable checkpoint until it is superseded or continuation is durably recorded; reading it is not permission to delete it (ADR 0010).
A blocked action names the concrete obstacle and next useful action. Continue independent authorized work. Do not reroute a healthy repository to hardening solely because its marker is absent.
Versioning & validation
- Keep
.claude-plugin/plugin.jsonand.codex-plugin/plugin.jsonversions in sync withpackage.json. Claude uses its plugin version to decide when installed users see an update; the Codex plugin manifest uses the same release version. - Validate changed manifests with the supported
claude plugin validate . --strictand available Codex/plugin validation tooling in the authorized environment; report unavailable validators, never invent a path. - Preserve the existing distribution format and IDs. Do not migrate packaging formats or install global plugins as an incidental part of editing skill behavior.
- After changing a promoted skill, run
node scripts/check.mjsin the authorized environment; it validates wiring, metadata and manifests. For marker-contract changes also runnode scripts/eval-marker-protocol.mjs; for the link helper runnode scripts/test-link-skills.mjs. Reuse passing results for unchanged inputs. - Docs-sync ritual.
scripts/check.mjsverifies a docs page exists, not that its content matches theSKILL.md— content drift is a bug class CI cannot catch. Every version bump that touches aSKILL.mdmust re-read the correspondingdocs/<bucket>/<name>.mdand re-sync it in the same commit.
Behavioral validation
Structural checks do not prove agent behavior. scripts/eval-marker-protocol.mjs checks prose contracts and runs local fixture transitions as executable documentation, reported separately. It does not execute an agent or prove the GitHub API path. scripts/test-link-skills.mjs exercises the actual link helper in isolated target directories and never changes global discovery paths.
Use the focused scenarios in docs/validation-0.10.md for changed behaviors. Run tracker scenarios only with authorization in a disposable repository, never in a user's real project as a test. Do not require unrelated application builds or repeated demonstrations of unchanged behavior.
Historical tracker baseline: the full 0.9.15 protocol was exercised on 2026-07-25 against two fresh private repos. That is historical evidence, not a passing result for 0.10.0's authorized-correction path. Record current results and unrun scenarios honestly in release evidence.
Language
All shipped artifacts — SKILL.md, README.md, docs — are written in English.
Codex distribution
- Preserve the existing Claude Code frontmatter fields (
disable-model-invocationandargument-hint) where present. Codex requiresnameanddescriptionand usesagents/openai.yamlfor its policy; the shared frontmatter keeps Claude's behavior intact. - Keep
agents/openai.yamlin every promoted skill. User-invoked skills setpolicy.allow_implicit_invocation: false; model-invoked skills omit that policy or leave it true. - Codex distributes specflow through
.codex-plugin/plugin.jsonand.agents/plugins/marketplace.json; keep both manifests versioned withpackage.json. It also discovers repository skills through.agents/skillsand user skills through~/.agents/skills; usescripts/link-skills.shto create safe user-level symlinks during development. - Preserve
.claude-plugin/and its validation: it remains the Claude Code distribution channel.
Where files are headingNew AGENTS.md files have more rules about keeping secrets out of the code, and fewer about code style.
Of the AGENTS.md files we read, the 28,693 first seen in the last six months, against the older ones: the kind of rule that gained most share, and the kind that lost most. About files like this in general, not this one, and an estimate, since a kind is a pattern in the words.
In this repository14 other files it gives its agents.
- code-reviewSkill
- domain-modelingSkill
- file-prSkill
- pr-maintenanceSkill
- repo-hardeningSkill
- review-loopSkill
- spec-executionSkill
- takeoverSkill
- tddSkill
- to-specSkill
- to-ticketsSkill
- grillSkill
- guideSkill
- session-handoffSkill
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.

