requirements-engineering
Transform vague feature ideas into clear, testable requirements using EARS format. Capture user stories, define acceptance criteria, identify edge cases, and validate completeness before moving to design.
What this skill does
# Requirements Engineering Master the art of capturing what needs to be built before diving into how to build it. This skill teaches the EARS (Easy Approach to Requirements Syntax) format for creating clear, testable requirements. ## 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 ## The EARS Format EARS provides consistent patterns for writing requirements that are specific, testable, and unambiguous. ### Basic Patterns **Event-Response (Most Common):** ``` WHEN [triggering event] THEN [system] SHALL [required response] ``` **Conditional Behavior:** ``` IF [precondition is met] THEN [system] SHALL [required response] ``` **Complex Conditions:** ``` WHEN [event] AND [additional condition] THEN [system] SHALL [response] ``` **Optional Conditions:** ``` WHEN [event] OR [alternative event] THEN [system] SHALL [response] ``` ### Advanced Patterns **State-Based:** ``` WHEN [system is in specific state] THEN [system] SHALL [behavior] ``` **Performance:** ``` WHEN [user action] THEN [system] SHALL [respond within X seconds/milliseconds] ``` **Security:** ``` IF [authentication condition] THEN [system] SHALL [security response] ``` ## Step-by-Step Process ### Step 1: Capture User Stories Format: **As a [role], I want [feature], so that [benefit]** Focus on: - Who is the user? (role) - What do they want to accomplish? (feature) - Why does it matter? (benefit/value) **Example:** ```markdown As a returning customer, I want to save my payment methods, so that I can checkout faster in the future. ``` ### Step 2: Generate Acceptance Criteria For each user story, define specific acceptance criteria using EARS: **Example for payment methods:** ```markdown **User Story:** As a returning customer, I want to save my payment methods, so that I can checkout faster. **Acceptance Criteria:** 1. WHEN user adds a valid credit card THEN system SHALL securely store card details 2. WHEN user adds a card with invalid number THEN system SHALL display validation error 3. WHEN user has saved cards THEN system SHALL display list during checkout 4. WHEN user selects saved card THEN system SHALL pre-fill payment form 5. WHEN user deletes saved card THEN system SHALL remove card from list 6. IF user is not authenticated THEN system SHALL redirect to login before saving card 7. WHEN user adds card THEN system SHALL mask all but last 4 digits in display ``` ### Step 3: Identify Edge Cases For each requirement, ask: - What if the input is empty/null? - What if the input is at boundary values? - What if the operation fails? - What if the user is not authorized? - What if there are concurrent operations? **Edge case patterns:** ```markdown **Error Handling:** - WHEN [operation fails] THEN system SHALL [display error / retry / log] **Boundary Conditions:** - WHEN [value equals minimum/maximum] THEN system SHALL [specific behavior] **Concurrent Access:** - WHEN [multiple users access same resource] THEN system SHALL [conflict resolution] **Empty States:** - WHEN [collection is empty] THEN system SHALL [display empty state message] ``` ### Step 4: Validate Requirements Use this checklist: **Completeness:** - [ ] All user roles identified and addressed - [ ] Normal flow scenarios covered - [ ] Edge cases documented - [ ] Error cases handled - [ ] Business rules captured **Clarity:** - [ ] Each requirement uses precise language - [ ] No ambiguous terms (fast, easy, user-friendly) - [ ] Technical jargon avoided or defined - [ ] Expected behaviors are specific **Consistency:** - [ ] EARS format used throughout - [ ] Terminology consistent across requirements - [ ] No contradictory requirements - [ ] Similar scenarios handled similarly **Testability:** - [ ] Each requirement can be verified - [ ] Success criteria are observable - [ ] Inputs and expected outputs specified - [ ] Performance requirements are measurable ## Common Mistakes to Avoid ### Mistake 1: Vague Requirements **Bad:** "System should be fast" **Good:** "WHEN user submits search THEN system SHALL return results within 2 seconds" ### Mistake 2: Implementation Details **Bad:** "System shall use Redis for caching" **Good:** "WHEN user requests frequently accessed data THEN system SHALL return cached results" ### Mistake 3: Missing Error Cases **Bad:** Only documenting happy path **Good:** Include WHEN/IF statements for all error conditions ### Mistake 4: Untestable Requirements **Bad:** "System should be user-friendly" **Good:** "WHEN new user completes onboarding THEN system SHALL require no more than 3 clicks to reach main dashboard" ### Mistake 5: Conflicting Requirements **Bad:** Requirements that contradict each other **Good:** Review all requirements together, resolve conflicts explicitly ## 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. WHEN user selects file under 10MB THEN system SHALL accept file for upload 2. WHEN user selects file over 10MB THEN system SHALL display "file too large (max 10MB)" error 3. WHEN user selects unsupported file type THEN system SHALL display "unsupported format" error with list of allowed types 4. WHEN upload is in progress THEN system SHALL display progress indicator with percentage 5. WHEN upload completes successfully THEN system SHALL display success message with file link 6. WHEN upload fails due to network error THEN system SHALL display retry option 7. IF user is not authenticated THEN system SHALL redirect to login before upload 8. WHEN user uploads file with same name as existing file THEN system SHALL prompt for rename or replace **Supported File Types:** PDF, DOC, DOCX, XLS, XLSX, PNG, JPG, GIF **Maximum File Size:** 10MB **Maximum Files Per Upload:** 5 ``` ### 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 user enters search term THEN system SHALL display matching products 2. WHEN search returns results THEN system SHALL show result count 3. WHEN search returns no results THEN system SHALL display "no products found" with suggestions 4. WHEN user searches with special characters THEN system SHALL sanitize input and search 5. WHEN user submits empty search THEN system SHALL display validation message 6. WHEN results exceed 20 items THEN system SHALL paginate with 20 items per page 7. WHEN user searches THEN system SHALL return results within 2 seconds 8. WHEN user types in search box THEN system SHALL show autocomplete suggestions after 3 characters **Search Fields:** Product name, description, category, SKU **Minimum Search Length:** 2 characters ``` ## Requirements Document Template ```markdown # Requirements Document: [Feature Name] ## Overview [Brief description of the feature and its purpose] ## User Roles - [Role 1]: [Description of this user type] - [Role 2]: [Description of this user type] ## Requirements ### Requirement 1: [Name] **User Story:** As a [role], I want [feature], so that [benefit] **Acceptance Criteria:** 1. WHEN [event] THEN system SHALL [response] 2. IF [condition] THEN system SHALL [response] 3. WHEN [event] AND [condition] THEN system SHALL [response] **Edge Cases:** - [Edge case 1 and how it's handled] - [Edge case 2 and how it's handled] ### Requirement 2: [Name] [Continue pattern...] ## Non-Functional Requirements - **Performance:** [Specific metrics] - **Security:** [Security requirements] - **Accessibility:** [Accessibility standards] ## Out of Scope - [Items explicitly not included in this feature] ## Open Questions - [Questions that need stakeholder input] ``` ## Next Steps After completing requirements: 1. Review with s
Related in Design
contribute
IncludedLocal-only OSS contribution command center. Auto-refreshes the user's in-flight PR and issue state on invoke so conversations start with full context — no need to brief Claude on what's in flight. Helps the user find issues to contribute to on GitHub, builds per-repo dossiers of what each upstream expects (CLA, DCO, branch convention, AI policy, draft-first, review bots, issue templates), runs deterministic gates before any external action so AI-assisted contributions don't reach maintainers as slop. State is markdown-only: candidate files at ~/.contribute-system/candidates/, repo dossiers at ~/.contribute-system/research/, append-only event log at ~/.contribute-system/log.jsonl. No database, no cloud calls. Use when the user asks about their PRs / issues / contributions, wants to find new work to take on, claim an issue, build/refresh a repo's dossier, or draft a Design Issue or PR. Trigger with "/contribute", "what's my PR status", "find a contribution", "claim issue X", "draft a Design Issue for Y", "refresh dossier for Z".
architectural-analysis
IncludedUser-triggered deep architectural analysis of a codebase or scoped subtree across eight modes — information architecture, data flow, integration points, UI surfaces, interaction patterns, data model, control flow, and failure modes. This skill should be used when the user asks to "diagram this codebase," "map the architecture," "show the data flow," "give me an ERD," "trace control flow," "find the integration points," "verify the layout pattern," "audit the UX architecture," or any similar request whose primary deliverable is mermaid diagrams plus cited reports under docs/architecture/. Dispatches haiku/sonnet sub-agents in parallel for per-mode exploration, then verifies every citation mechanically before any node lands in a diagram. Not for one-off prose explanations of code (use code-explanation) or for high-level system design from scratch (use system-design).
mcp
IncludedModel Context Protocol (MCP) server development and tool management. Languages: Python, TypeScript. Capabilities: build MCP servers, integrate external APIs, discover/execute MCP tools, manage multi-server configs, design agent-centric tools. Actions: create, build, integrate, discover, execute, configure MCP servers/tools. Keywords: MCP, Model Context Protocol, MCP server, MCP tool, stdio transport, SSE transport, tool discovery, resource provider, prompt template, external API integration, Gemini CLI MCP, Claude MCP, agent tools, tool execution, server config. Use when: building MCP servers, integrating external APIs as MCP tools, discovering available MCP tools, executing MCP capabilities, configuring multi-server setups, designing tools for AI agents.
react-native-skia
IncludedDesign, build, debug, and optimise high-polish animated graphics in React Native or Expo using @shopify/react-native-skia, Reanimated, and Gesture Handler. Use when the user wants canvas-driven UI, shaders, paths, rich text, image filters, sprite fields, Skottie, video frames, snapshots, web CanvasKit setup, or performance tuning for custom motion-heavy elements such as loaders, hero art, cards, charts, progress indicators, particle systems, or gesture-driven surfaces. Also use when the user asks for fluid, glow, glass, blob, parallax, 60fps/120fps, or GPU-friendly animated effects in React Native, even if they do not explicitly say "Skia". Do not use for ordinary form/layout work with standard views.
plaid
IncludedProduct Led AI Development — guides founders from idea to launched product. Six capabilities: Idea (discover a product idea), Validate (pressure-test the idea against fatal flaws, problem reality, competition, and 2-week MVP feasibility), Plan (vision intake + document generation), Design (translate image references into a design.md spec), Launch (go-to-market strategy), and Build (roadmap execution). Use when someone says "PLAID", "plaid idea", "help me find an idea", "product idea", "idea from my business", "idea from my expertise", "plaid validate", "validate my idea", "pressure-test", "is this idea good", "find fatal flaws", "validate the problem", "plan a product", "define my vision", "generate a PRD", "product strategy", "plaid design", "design from image", "translate image to design", "create design.md", "extract design tokens", "plaid launch", "go-to-market", "launch plan", "GTM strategy", "launch playbook", "plaid build", "build the app", "start building", or "execute the roadmap".
nextjs-framer-motion-animations
IncludedAdds production-safe Motion for React or Framer Motion animations to Next.js apps, including reveal, hover and tap micro-interactions, whileInView, stagger, AnimatePresence, layout and layoutId transitions, reorder, scroll-linked UI, and lightweight route-content transitions. Use when the user asks to add, refactor, or debug Motion or Framer Motion in App Router or Pages Router codebases, especially around server/client boundaries, reduced motion, LazyMotion, bundle size, hydration, or route transitions. Avoid for GSAP-style timelines, WebGL or 3D scenes, heavy scroll storytelling, or CSS-only effects unless Motion is explicitly requested.