requirements-engineering
Transform vague feature ideas into lightweight, testable requirements using user stories and short acceptance criteria. Use when clarifying scope, defining expected behavior, capturing edge cases, and producing decision-ready requirements with Definition of Ready checks.
Best use case
requirements-engineering is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Transform vague feature ideas into lightweight, testable requirements using user stories and short acceptance criteria. Use when clarifying scope, defining expected behavior, capturing edge cases, and producing decision-ready requirements with Definition of Ready checks.
Teams using requirements-engineering should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/requirements-engineering/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How requirements-engineering Compares
| Feature / Agent | requirements-engineering | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Transform vague feature ideas into lightweight, testable requirements using user stories and short acceptance criteria. Use when clarifying scope, defining expected behavior, capturing edge cases, and producing decision-ready requirements with Definition of Ready checks.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# Requirements Engineering Capture what needs to be built before diving into design. This skill produces lightweight, testable requirements using user stories and short acceptance criteria, with explicit readiness quality gates. ## When to Use This Skill Use requirements engineering when: - Starting any new feature or project - Clarifying ambiguous stakeholder requests - Creating acceptance criteria for user stories - Documenting system behavior for testing - Ensuring all team members share understanding ## Lightweight Format Use simple, consistent statements that are easy to review and test. **File Naming Convention (Feature Slices)** ```text prd-<ID>-<SLICE>-<title>.md ``` - Use a zero-padded numeric ID for `<ID>` (minimum 4 digits). - Use per-slice ranges in steps of 100 (`0000`, `0100`, `0200`, ...). - Assign additional PRDs within the same slice range (`0100`, `0101`, `0102`, ...). - Use uppercase for `<SLICE>` (for example: `TASKS`, `PROJECTS`, `SETTINGS`). - Use lowercase kebab-case for `<title>`. - Store files under `docs/prd/`. - A slice can have one or more PRD files. - Create multiple PRDs for the same slice when there is more than one distinct story or workflow. - Keep each PRD focused on a coherent requirement scope. **Minimal Frontmatter (required)** ```yaml --- id: PRD-<ID> title: <Feature Slice Title> slice: <SLICE> status: Implemented | Partial | Pending ticket: <Optional Issue/Tracker ID> --- ``` - Keep frontmatter minimal: only `id`, `title`, `slice`, `status`, and `ticket`. - Match `slice` with the file naming convention. - Use the same status legend as story status: `Implemented`, `Partial`, or `Pending`. **User Story** ```text As a [actor], I want [action], so that [achievement]. ``` **Short Acceptance Criteria** ```text When [action], then [outcome]. Given [context], when [action], then [outcome]. ``` Each story should have 3-5 acceptance criteria and at least one edge or error criterion. **Optional Story Additions (ASCII Diagrams)** - Use diagrams as optional additions when behavior is stateful, multi-step, or branch-heavy. - Prefer simple ASCII in fenced `text` code blocks. - Diagram usage is optional; acceptance criteria remain the source of truth. **Diagram Rules** 1. Keep diagrams plain ASCII and readable in raw Markdown. 2. Keep width near 80 characters. 3. Place global diagrams under `## Diagram` or `## Diagrams` after `## Scope`. 4. Place story-specific diagrams under the story as `Flow (ASCII)` when needed. 5. Add a short `Covers AC:` line mapping diagram to acceptance criteria. 6. Use diagrams to clarify behavior only; do not duplicate full criteria text. ## Definition of Ready (DoR) Use this gate before marking a story as ready. **Core mandatory checks (blockers):** 1. Name is clear, concise, and specific. 2. Story uses the actor-action-achievement format. 3. Acceptance criteria clearly define what the story must achieve. 4. Data requirements (fields, types, constraints) are identified if applicable. 5. Notes include dependencies/external input and known risks/constraints. **Optional checks (recommended):** 1. Required assets/content/design links are attached when needed. 2. Story size estimate is captured. 3. Priority/order is explicit. **INVEST quick check (lightweight):** - I: Independent - N: Negotiable - V: Valuable - E: Estimable - S: Small - T: Testable *Note: You do not need to write out the full INVEST checklist for every story. Use it as a mental check. Only document INVEST failures (e.g., "S: Too large") in the `Ready Reason`.* More INVEST details: [INVEST Criteria](https://scrum-master.org/en/creating-the-perfect-user-story-with-invest-criteria/) ## Ready Decision Rule Set `Ready: Yes` only when: 1. All core mandatory DoR checks pass. 2. There is no critical INVEST failure in `V`, `S`, or `T`. Otherwise: - Set `Ready: No`. - Fill `Ready Reason` with explicit missing conditions or INVEST failures. ## Step-by-Step Process ### Step 1: Capture User Stories Format: **As a [actor], I want [action], so that [achievement]** Focus on: - Who is the actor? - What action do they need? - What achievement/outcome matters? ### Step 2: Add Short Acceptance Criteria For each story, add 3-5 short, testable criteria. Rules: - Use observable outcomes. - Keep each criterion focused on one behavior. - Include at least one error or edge case. - Add an ASCII diagram only if it improves clarity for transitions, timelines, or decisions. ### Step 3: Define Data & Technical Context Capture: - Specific data fields, types, and validation rules (e.g., regex, max length). - Technical context (e.g., API endpoints, database changes, architectural constraints). ### Step 4: Evaluate DoR and Set Readiness Set: - `Ready: Yes|No` - `Ready Reason: ...` - `INVEST Check: I/N/V/E/S/T with short notes` ### Step 5: Validate Requirements Quality Use this checklist: **Completeness:** - [ ] Key user roles identified and covered - [ ] Normal flow scenarios covered - [ ] Edge and error cases included - [ ] Scope boundaries are explicit **Clarity:** - [ ] Criteria use plain, precise language - [ ] Ambiguous words are avoided or defined - [ ] Outcomes are observable **Consistency:** - [ ] Story and criteria format is consistent - [ ] Terminology is consistent across sections - [ ] No contradictory behaviors **Testability:** - [ ] Every criterion can be verified - [ ] Inputs/contexts and expected outcomes are stated - [ ] Normal and error paths are both testable ## Common Mistakes to Avoid ### Mistake 1: Vague Requirements **Bad:** "System should be fast" **Good:** "When a user submits search, then results appear within 2 seconds." ### Mistake 2: Implementation Details **Bad:** "System shall use Redis for caching" **Good:** "When users request frequently accessed data, then the response is returned quickly from cached data." ### Mistake 3: Missing Error Cases **Bad:** Only documenting happy path **Good:** Include at least one invalid input or failure scenario per story. ### Mistake 4: Untestable Requirements **Bad:** "System should be user-friendly" **Good:** "When a new user completes onboarding, then they can reach the dashboard in at most 3 clicks." ### Mistake 5: Conflicting Requirements **Bad:** Requirements that contradict each other **Good:** Review stories together and resolve conflicts before design. ## Examples ### Example 1: File Upload Feature ```markdown **User Story:** As a user, I want to upload files, so that I can share documents with my team. **Acceptance Criteria:** 1. Given the user is authenticated, when they select a supported file up to 10MB, then the upload starts. 2. When they select a file larger than 10MB, then a "file too large (max 10MB)" error appears. 3. When they select an unsupported file type, then an "unsupported format" error appears with allowed types. 4. When upload is in progress, then progress is shown as a percentage. 5. When upload completes successfully, then a success message with the uploaded file link is shown. 6. When upload fails due to network issues, then a retry option is shown. **Data Requirements:** - Supported Types: PDF, DOC, DOCX, XLS, XLSX, PNG, JPG, GIF - Max Size: 20MB (hard limit) ``` ### Example 2: Search Feature ```markdown **User Story:** As a customer, I want to search products, so that I can find items quickly. **Acceptance Criteria:** 1. When the customer enters a search term, then matching products are shown. 2. When results are found, then the result count is displayed. 3. When no results are found, then a "no products found" message with suggestions is displayed. 4. When the customer submits an empty search, then a validation message is shown. 5. When results exceed 20 items, then pagination is shown with 20 items per page. 6. When the customer searches, then results are returned within 2 seconds. **Data Requirements:** - Search Fields: Product name, description, category, SKU - Min Length: 2 chars ``` ## Requirements Document Template --- id: PRD-<ID> title: [Feature Slice Name] slice: [SLICE] status: Implemented | Partial | Pending ticket: [Tracker ID/URL] --- # Product Requirements: [Feature Slice Name] ## Overview [Short description of the feature and why it exists] ## Scope - In scope: [items included] - Out of scope: [items excluded] ## Diagram (Optional) ```text [State A] --> [State B] ``` Covers AC: [list] ## User Roles - [Role 1]: [Description] - [Role 2]: [Description] ## Stories ### Story 1: [Clear, specific name] - Status: Implemented | Partial | Pending - Ticket: [Tracker ID/URL] - Ready: Yes | No - Ready Reason: [Why this is ready, or missing items/INVEST failures] - User Story: As a [actor], I want [action], so that [achievement]. Acceptance Criteria: 1. Given [context], when [action], then [outcome]. 2. When [action], then [outcome]. 3. When [error or edge case], then [outcome]. Flow (ASCII) (optional): ```text User action -> system action -> outcome ``` Covers AC: [list] Data Requirements: - [Field Name]: [Type], [Constraints/Validation] Notes: - Dependencies / external input: - Risks / constraints: - Technical context: [e.g., API endpoints, DB changes] ### Story 2: [Clear, specific name] - Status: Implemented | Partial | Pending - Ticket: [Tracker ID/URL] - Ready: Yes | No - Ready Reason: ... - User Story: As a [actor], I want [action], so that [achievement]. Acceptance Criteria: 1. ... 2. ... 3. ... Data Requirements: - ... Notes: - Dependencies / external input: - Risks / constraints: - Technical context: ## Non-Functional Notes - Performance: [response targets] - Security: [access and data expectations] - Accessibility: [standards and constraints] ## Open Questions - [Questions that need stakeholder input]
Related Skills
xunit
Writes unit tests with xUnit framework across 30 test projects. Use when: writing new tests, adding test coverage, creating integration tests, setting up test fixtures, or debugging test failures.
visual-explainer
Generate beautiful, self-contained HTML pages that visually explain systems, code changes, plans, and data. Use when the user asks for a diagram, architecture overview, diff review, plan review, project recap, comparison table, or any visual explanation of technical concepts. Also use proactively when you are about to render a complex ASCII table (4+ rows or 3+ columns) — present it as a styled HTML page instead.
skill-creator
Guide for creating high-quality Agent Skills following the open standard (agentskills.io). Use this when asked to create or update a skill, write a SKILL.md file, convert custom instructions or chatmodes into portable skills, or design specialized AI agent capabilities.
review-code
Perform comprehensive csharp/dotnet code reviews focusing on clean code, security, testing, performance, and documentation
playwright-skill
Complete browser automation with Playwright. Auto-detects dev servers, writes clean test scripts to /.tmp. Test pages, fill forms, take screenshots, check responsive design, validate UX, test login flows, check links, automate any browser task. Use when user wants to test websites, automate browser interactions, validate web functionality, or perform any browser-based testing.
mermaid-diagrams
Comprehensive guide for creating software diagrams using Mermaid syntax. Use when users need to create, visualize, or document software through diagrams including class diagrams (domain modeling, object-oriented design), sequence diagrams (application flows, API interactions, code execution), flowcharts (processes, algorithms, user journeys), entity relationship diagrams (database schemas), C4 architecture diagrams (system context, containers, components), state diagrams, git graphs, pie charts, gantt charts, or any other diagram type. Triggers include requests to "diagram", "visualize", "model", "map out", "show the flow", or when explaining system architecture, database design, code structure, or user/application flows.
grill-me
Interview the user relentlessly about a plan or design until reaching shared understanding, resolving each branch of the decision tree. Use when user wants to stress-test a plan, get grilled on their design, or mentions "grill me".
git-commit
Execute git commit with conventional commit message analysis, intelligent staging, and message generation. Use when user asks to commit changes, create a git commit, or mentions "/commit". Supports: (1) Auto-detecting type and scope from changes, (2) Generating conventional commit messages from diff, (3) Interactive commit with optional type/scope/description overrides, (4) Intelligent file staging for logical grouping
frontend-design
Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, artifacts, posters, or applications (examples include websites, landing pages, dashboards, React components, HTML/CSS layouts, or when styling/beautifying any web UI). Generates creative, polished code and UI design that avoids generic AI aesthetics.
find-skills
Helps users discover and install agent skills when they ask questions like "how do I do X", "find a skill for X", "is there a skill that can...", or express interest in extending capabilities. This skill should be used when the user is looking for functionality that might exist as an installable skill.
entity-framework-core
Entity Framework Core with DbContext, migrations, LINQ queries, relationships, and performance optimization. Covers EF Core 8+ patterns. USE WHEN: user mentions "Entity Framework", "EF Core", "DbContext", "migrations", "LINQ", "EF relationships", "database first", "code first" DO NOT USE FOR: Prisma - use `prisma`, Drizzle - use `drizzle`, Spring Data JPA - use `spring-data-jpa`, Dapper (raw SQL)
dotnet-testing-nsubstitute-mocking
Specialized skill for creating test doubles (Mock, Stub, Spy) using NSubstitute. Use when isolating external dependencies, simulating interface behavior, and verifying method calls. Covers complete guidance on Substitute.For, Returns, Received, Throws, etc.