agentleFS
SwiftyJourneySwiftyJourney/requirements-engineering-skill/skills/requirements-engineering/SKILL.md

requirements-engineering

Skill4 starsChanged 3 months agoMITView on GitHub

Use this skill to turn vague, ambiguous, or "lousy" requirements into precise, testable specifications BEFORE any code is written -- even when the user never says "BDD", "use case", or "acceptance criteria". Trigger when someone has a half-baked feature idea, an under-specified ticket, or a business brief that's "open to interpretation" and needs it pinned down: clarifying questions, As-a/I-want/So-that narratives, Given/When/Then acceptance criteria, use cases (data inputs, happy path, error and cancel courses), model-spec tables, request/response payload contracts, flowcharts, and module-dependency diagrams. This is the SPECIFICATION altitude -- WHAT to build and the contracts to honor. Hand off the implementation to the iOS architecture skill (composition root, layers, packages, concurrency), SwiftUI view code, and Swift Testing syntax -- do NOT use this skill to write or refactor that code, only to define what it must satisfy.

5 other projects use a version of this.

Adopted by

Most recently taken up by

  • Other versions5 projects use a version of this.

    Word for word · 0

    None found.

    Edited · 0

    None found.

    Wrote their own version · 5

    1. jasonkneen/kiro★ 753same name
    2. zeeshanhanif/agentic-sdlc-kit★ 17same name
    3. caseyng/Claude-skills★ 1same name
    4. muxammadmamajonov/dot-claude★ 0same name
    5. thistleknot/skills★ 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.

The file

Show its rules and text

We split this skill into the rules it gives an agent

15 rules. 0 are common, 13 are distinctive, and 2 are very specific to this project.

  • 0

    Common

    Most of the 5 edited versions we read keep these.

  • 13

    Distinctive

    This author's own choices. Worth a look.

  • 2

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    When this skill is active, follow these rules strictly:

    line 25
  2. Very specific:

    BDD's value is the conversation, not the Gherkin: If you wrote Given/When/Then scenarios without asking a single clarifying question, you …

    line 57
  3. Distinctive:

    Artifact count follows behavior, not a quota: Don't pad an online-only feature with offline narratives and Cancel courses to "complete the …

    line 63
  4. Distinctive:

    Do not accept "As a user, I want X, So I can X" — always specify concrete user types

    line 98
  5. Distinctive:

    Do not write use cases without a Data section listing all inputs

    line 99
  6. Distinctive:

    Do not omit Cancel courses for operations involving network or async work

    line 100
  7. Distinctive:

    Do not mix domain terms — if BDD says "image feed", use case must say "image feed", not "feed items"

    line 101
  8. Distinctive:

    Do not create architecture diagrams without showing module dependencies and protocol boundaries

    line 102
  9. Distinctive:

    Do not treat requirements as a one-time document — they evolve with the code

    line 103
  10. Distinctive:

    Do not include implementation details in BDD narratives — keep them behavioral

    line 104
  11. Distinctive:

    Do not describe models as prose — use Property/Type tables

    line 105
  12. Distinctive:

    When reviewing a feature specification:

    line 111
  13. Distinctive:

    Every BDD narrative specifies a concrete user type (not just "user")

    line 113
  14. Very specific:

    Every acceptance criterion has Given/When/Then with specific preconditions

    line 114
  15. Distinctive:

    Every use case has Data, Primary course, and at least one Error course

    line 115

“Common” is measured: kept by at least 6 in 10 of the 5 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.

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

Requirements Engineering

Why this skill exists. Good architecture is a byproduct of good requirements — you do not design it directly, you clarify the requirements until the modules, boundaries, and contracts they imply become obvious. This skill produces the WHAT (the specification and the contracts to honor); the ios-architecture-expert skill turns it into the HOW. Every artifact here starts from a conversation that eliminates assumptions — see references/clarifying-questions.md.

Agent Behavior Contract

When this skill is active, follow these rules strictly:

  1. Include the artifacts the feature warrants — the full set (BDD Narrative, Acceptance Criteria, Use Cases, Model Specs, Payload Contract, Flowchart, Architecture Diagram) for a non-trivial networked feature, but omit ones that don't apply: an online-only feature needs no offline narrative, cache use case, or Cancel course; a feature reusing a model needs no new Model Spec. The architecture diagram is one shared app-level graph, not one per feature.
  2. Never accept vague requirements without asking clarifying questions first — Who are the user types? What happens offline? What are the error cases?
  3. Use domain-specific language consistently across all artifacts — if the domain says "image feed" not "feed items", use "image feed" everywhere.
  4. Every use case must have a Data section listing ALL inputs, a Primary course, at least one Error course, and a Cancel course where applicable.
  5. Model Specs must use Property/Type tables — not prose descriptions.
  6. Payload Contracts must show HTTP method, path, status code, and example JSON — including optional fields demonstrated by omission.
  7. Requirements are living specifications — iterate and refine as understanding evolves, do not treat as one-time documents.

Requirements Diagnostic Table

SymptomFirst checkSmallest fixDeep dive
Requirement is "susceptible to personal interpretation"Missing user types / scenariosAsk clarifying questions, split into narrativesreferences/clarifying-questions.md
Jumped straight to artifacts without asking anythingAssumptions encoded as requirementsRun the lousy-ticket teardown firstreferences/clarifying-questions.md
BDD scenario covers only happy pathMissing error/offline/edge casesAdd error courses and cancellationreferences/use-cases.md
Use case mixes multiple responsibilitiesSeparation of concernsExtract into focused use cases (Load vs Validate vs Cache)references/use-cases.md
No data contract between frontend and backendMissing model specs / payloadAdd Property/Type table + JSON contractreferences/model-specs-and-contracts.md
Domain terms inconsistent across docsLanguage alignment gapAudit and rename terms consistentlyreferences/domain-language.md
Diagram shows only happy pathMissing error flowsAdd error/fallback branchesreferences/diagrams.md
Architecture diagram is generic boxesMissing module dependenciesShow actual module dependency graphreferences/diagrams.md
No traceability from requirements to codeMissing artifact mappingMap BDD -> tests, use cases -> classesreferences/feature-specification-workflow.md
A UX/design question can't be settled by discussionIt needs feedback, not another scenarioBuild a throwaway prototype with realistic hard-case datareferences/feature-specification-workflow.md
"We don't have time to write specs"What the clarification actually buys the teamName the returns — estimation, delegation, less reworkreferences/clarifying-questions.md

Gotchas

  • BDD's value is the conversation, not the Gherkin. If you wrote Given/When/Then scenarios without asking a single clarifying question, you almost certainly encoded your own assumptions. Crush the assumptions first — What is a "feed"? What does "load" mean? From where? See references/clarifying-questions.md.
  • Dependency-arrow notation carries two facts, not one. Head fill = "is-a/conforms-to" (open) vs. "depends-on" (filled); line style on a filled head = strong (solid, a stored let) vs. weak (dashed, a method parameter). Four meanings, easy to get wrong — always include a legend. See references/diagrams.md.
  • A query that mutates state is the smell. Load is a side-effect-free query; deleting the cache is a command — split them (CQS). The case study briefly put a delete on the Load path, then extracted Validate Cache. See references/use-cases.md.
  • Collection-empty ≠ single-resource-empty. An empty/expired collection cache is an empty success ("delivers no images"); an empty single keyed resource (image data by URL) is a not-found error.
  • Optionality is shown by omission, not prose. In payload-contract JSON, include the optional field in some example items and omit it from others — never write "(optional)" only in prose or use null.
  • The canonical domain term is the domain experts' word, not the team's preference (ubiquitous language). "Images" replaced "Items" because that's what the experts call them.
  • Artifact count follows behavior, not a quota. Don't pad an online-only feature with offline narratives and Cancel courses to "complete the seven".

Feature Specification Artifacts

A feature draws from this catalog of artifacts — use the ones its behavior warrants (the full set for a non-trivial networked feature; fewer for online-only or model-reusing features):

#ArtifactPurposeTemplate
1BDD NarrativeDefine who, what, why per user typereferences/bdd-narratives.md
2Acceptance CriteriaGiven/When/Then scenariosreferences/bdd-narratives.md
3Use CasesStep-by-step system behavior (Data/Primary/Error/Cancel)references/use-cases.md
4Model SpecsProperty/Type tables for domain entitiesreferences/model-specs-and-contracts.md
5Payload ContractHTTP method + path + response JSONreferences/model-specs-and-contracts.md
6FlowchartDecision flow with error branchesreferences/diagrams.md
7Architecture DiagramModule dependency graphreferences/diagrams.md

The 6-Step Process

  1. Identify — Recognize vague requirements ("susceptible to personal interpretation")
  2. Clarify — Run the lousy-ticket teardown; ask Who / What / Where / When / Why / How to eliminate assumptions -> references/clarifying-questions.md
  3. Specify BDD — Write narratives and acceptance criteria -> references/bdd-narratives.md
  4. Define Use Cases — Write procedural steps with cancel courses -> references/use-cases.md
  5. Model & Contract — Create model specs and payload contracts -> references/model-specs-and-contracts.md
  6. Visualize & Document — Generate diagrams, compile feature spec -> references/diagrams.md, references/feature-specification-workflow.md

End-to-end guide: feature-specification-workflow.md


Guardrails

  • Do not accept "As a user, I want X, So I can X" — always specify concrete user types
  • Do not write use cases without a Data section listing all inputs
  • Do not omit Cancel courses for operations involving network or async work
  • Do not mix domain terms — if BDD says "image feed", use case must say "image feed", not "feed items"
  • Do not create architecture diagrams without showing module dependencies and protocol boundaries
  • Do not treat requirements as a one-time document — they evolve with the code
  • Do not include implementation details in BDD narratives — keep them behavioral
  • Do not describe models as prose — use Property/Type tables

Verification Checklist

When reviewing a feature specification:

  1. Every BDD narrative specifies a concrete user type (not just "user")
  2. Every acceptance criterion has Given/When/Then with specific preconditions
  3. Every use case has Data, Primary course, and at least one Error course
  4. Cancel courses exist for all cancellable operations
  5. Model Specs have Property/Type tables for every domain entity
  6. Payload Contract shows HTTP method, path, status code, and example JSON
  7. Flowchart includes error/fallback branches (not just happy path)
  8. Architecture diagram shows module dependencies (not generic boxes)
  9. Domain terminology is consistent across every artifact
  10. Feature specification is self-contained (could be understood independently)

Reference Router

Open the smallest reference that matches the question:

  • Clarification
    • clarifying-questions.md — lousy-ticket teardown, question bank, answer-to-artifact mapping, BDD-as-conversation
  • Narratives & Criteria
    • bdd-narratives.md — BDD stories, user narratives, acceptance criteria, scenario patterns
  • System Behavior
    • use-cases.md — use case structure, courses, separation of concerns
  • Data Contracts
    • model-specs-and-contracts.md — model specs, payload contracts, JSON examples
  • Visual Communication
    • diagrams.md — flowcharts, architecture, sequence, state diagrams
  • Domain Consistency
    • domain-language.md — terminology alignment, renaming patterns
  • Workflow
    • feature-specification-workflow.md — end-to-end feature spec, traceability, prototyping to validate a requirement
  • Worked example
    • worked-example.md — a complete, assembled requirements set for a two-feature system: every artifact type in context. Read it when you need to see the target output at full fidelity, not one format at a time.

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.