agentleFS
fiveonecodefiveonecode/agent-skills/spec-creation-updating/SKILL.md

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.

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
  1. Distinctive:

    Ask clarifying questions when decisions affect architecture, cost, security, or user-visible behavior.

    line 20
  2. Distinctive:

    Write a lightweight spec for isolated, low-risk changes.

    line 24
  3. Distinctive:

    Write a full system spec for cross-team, risky, or high-impact work.

    line 25
  4. Distinctive:

    Keep the same quality gates regardless of depth.

    line 26
  5. Distinctive:

    Add domain-specific sections as needed, but do not remove mandatory content.

    line 32
  6. Distinctive:

    Write requirements as testable statements, not intentions.

    line 36
  7. Distinctive:

    When work spans existing code paths, add an implementation map that names the canonical files or directories to edit and adjacent paths …

    line 40
  8. Distinctive:

    Update version, last-updated date, and status.

    line 56
  9. Very specific:

    Use references/spec-review-scorecard.md when auditing an existing spec.

    line 62
  10. Distinctive:

    Treat any missing MUST item as blocking.

    line 63
  11. Distinctive:

    Prefer precise language over broad terms like "optimize", "support", or "handle".

    line 67
  12. Distinctive:

    Use explicit units, limits, and conditions.

    line 68
  13. Distinctive:

    Keep requirements and facts in the spec.

    line 70
  14. Distinctive:

    Avoid embedding secrets or private credentials in reusable specs.

    line 71
  15. Distinctive:

    Use this block when a contract crosses a subsystem boundary, drives generated data, constrains model/tool output, or owns verifier behavior.

    line 75
  16. Distinctive:

    Do not rely on prose such as "validate the output" or "handle failures" when a table, enum list, state transition, or verifier binding …

    line 88
  17. Distinctive:

    When creating a spec, deliver:

    line 92
  18. Distinctive:

    When reviewing a spec, deliver:

    line 96

≈ “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.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

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.md when 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.

Download now (ZIP)

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
What did you use it for? e.g. Reviewing pull requests in a Rails app

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.