spec-creation-updating
Skill20 starsChanged 2 months agoMITView on GitHub
Create, update, review, and improve technical specification documents so they are complete, testable, and implementation-ready. Use when defining new features/systems/APIs, updating existing specs, restructuring documents, auditing missing requirements, or converting vague plans into concrete, verifiable requirements and acceptance criteria.
In this repository16 other files it gives its agents.
- AGENTS.mdAGENTS.md
- code-reviewSkill
- gemini-files-apiSkill
- harness-engineeringSkill
- hint-overlay-visual-verificationSkill
- ios-xcodegenSkill
- lifecycle-and-side-effects-correctnessSkill
- local-model-servingSkill
- mechanism-auditSkill
- meeting-transcriptionSkill
- public-source-release-auditSkill
- silent-pushes-setupSkill
- swift-testingSkill
- swiftui-view-refactorSkill
- xcode-buildSkill
- xcode-cloudSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
18 rules. About 0 are common, 17 are distinctive, and 1 is very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈17
Distinctive · estimate
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 20
Ask clarifying questions when decisions affect architecture, cost, security, or user-visible behavior.
- Distinctive: line 24
Write a lightweight spec for isolated, low-risk changes.
- Distinctive: line 25
Write a full system spec for cross-team, risky, or high-impact work.
- Distinctive: line 26
Keep the same quality gates regardless of depth.
- Distinctive: line 32
Add domain-specific sections as needed, but do not remove mandatory content.
- Distinctive: line 36
Write requirements as testable statements, not intentions.
- Distinctive: line 40
When work spans existing code paths, add an implementation map that names the canonical files or directories to edit and adjacent paths …
- Distinctive: line 56
Update version, last-updated date, and status.
- Very specific: line 62
Use references/spec-review-scorecard.md when auditing an existing spec.
- Distinctive: line 63
Treat any missing MUST item as blocking.
- Distinctive: line 67
Prefer precise language over broad terms like "optimize", "support", or "handle".
- Distinctive: line 68
Use explicit units, limits, and conditions.
- Distinctive: line 70
Keep requirements and facts in the spec.
- Distinctive: line 71
Avoid embedding secrets or private credentials in reusable specs.
- Distinctive: line 75
Use this block when a contract crosses a subsystem boundary, drives generated data, constrains model/tool output, or owns verifier behavior.
- Distinctive: line 88
Do not rely on prose such as "validate the output" or "handle failures" when a table, enum list, state transition, or verifier binding …
- Distinctive: line 92
When creating a spec, deliver:
- Distinctive: line 96
When reviewing a spec, deliver:
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill 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
Spec Creation Updating
Overview
Produce specs that reduce ambiguity and can be implemented with minimal back-and-forth. Apply this workflow to any project domain (product, backend, API, data, UI, infrastructure, ops).
Workflow
1. Set boundaries
- Capture the objective and user/business value.
- Define in-scope and out-of-scope behavior.
- Record assumptions, dependencies, and constraints.
- Ask clarifying questions when decisions affect architecture, cost, security, or user-visible behavior.
2. Choose depth
- Write a lightweight spec for isolated, low-risk changes.
- Write a full system spec for cross-team, risky, or high-impact work.
- Keep the same quality gates regardless of depth.
3. Build structure
- Start from
references/spec-template.md. - Preserve repository naming, section ordering, and style if they already exist.
- Add domain-specific sections as needed, but do not remove mandatory content.
4. Fill concrete requirements
- Write requirements as testable statements, not intentions.
- Define success paths, edge cases, and failure behavior.
- Specify interfaces, data contracts, and state transitions when relevant.
- Specify non-functional requirements: performance, reliability, scalability, observability.
- When work spans existing code paths, add an implementation map that names the canonical files or directories to edit and adjacent paths that must remain untouched. Keep the map aligned with the repository's real structure so an implementer does not have to infer sibling paths from prose.
- For external, generated, AI-facing, or verifier-owned contracts, add a machine-checkable contract block before implementation details.
5. Define verification and completion
- Map each requirement to a verification method.
- Bind every requirement to a concrete verifier, test, or manual check ID; bind every verifier back to the requirement it proves.
- Include reproducible commands, tests, and manual checks when automation is unavailable.
- Define completion criteria with pass/fail outcomes.
6. Close traceability
- Link related specs, ADRs, designs, and operational docs.
- Update version, last-updated date, and status.
- Record unresolved questions and decision owners.
7. Run quality gate
- Validate against
references/spec-must-have-checklist.md. - Use
references/spec-review-scorecard.mdwhen auditing an existing spec. - Treat any missing MUST item as blocking.
Writing rules
- Prefer precise language over broad terms like "optimize", "support", or "handle".
- Use explicit units, limits, and conditions.
- Mark implemented vs planned behavior with explicit status labels.
- Keep requirements and facts in the spec; keep narrative concise.
- Avoid embedding secrets or private credentials in reusable specs.
Machine-checkable contract blocks
Use this block when a contract crosses a subsystem boundary, drives generated data, constrains model/tool output, or owns verifier behavior.
Include:
- Canonical tokens, enum values, identifiers, and version fields.
- Predicate tables or mapping rules for eligibility, routing, projection, fallback, and publication decisions.
- App-owned envelope fields separated from model, user, service, or generated output.
- Validator order, fail-closed behavior, retry/idempotency rules, and forbidden silent-discard cases.
- Redaction and observability rules for logs, traces, QA artifacts, and analytics.
- Publication gates, rollout state, and backwards-compatibility rules when output becomes durable.
- Boundary-proof cases that show the exact allowed and disallowed edges.
- Requirement-to-verifier binding with stable IDs.
Do not rely on prose such as "validate the output" or "handle failures" when a table, enum list, state transition, or verifier binding would make the rule mechanically checkable.
Output expectations
- When creating a spec, deliver:
- A complete spec document.
- A list of unresolved questions.
- A verification plan mapped to requirements.
- When reviewing a spec, deliver:
- Prioritized gaps and risks.
- Concrete rewrite suggestions.
- A readiness verdict based on MUST items.
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.

