requirements-gathering
# Requirements Gathering Skill
What this skill does
# Requirements Gathering Skill This skill enables Claude to autonomously gather, analyze, and document requirements for features, projects, or issues. ## When to Use This Skill Use this skill when: - A user describes a feature but hasn't provided detailed requirements - Converting vague ideas into structured specifications - Analyzing an issue and determining what needs to be built - Preparing for development planning - Creating GitHub issues from conversations ## What This Skill Does 1. **Elicits Requirements Through Questions** - Asks clarifying questions about scope and goals - Identifies functional and non-functional requirements - Discovers constraints and dependencies - Clarifies success criteria 2. **Analyzes Context** - Reviews existing codebase patterns - Checks for similar implementations - Identifies affected components - Reviews related documentation 3. **Structures Requirements** - Organizes into functional/non-functional categories - Defines clear acceptance criteria - Prioritizes using MoSCoW method - Creates user stories where applicable 4. **Documents Findings** - Generates structured requirements document - Creates GitHub-compatible markdown - Includes technical specifications - Adds implementation considerations ## Usage Process ### Step 1: Initial Analysis When a user describes a feature: ``` User: "I want to add user authentication" ``` Claude should: 1. Acknowledge the request 2. Start gathering context from the codebase 3. Begin asking clarifying questions ### Step 2: Ask Clarifying Questions Essential questions to ask: - What type of authentication? (OAuth, JWT, Session-based) - Who are the users? (Internal staff, external customers, admins) - What features need protection? - Any specific security requirements? - Integration with existing systems? - Password policies required? - MFA/2FA needed? - Social login options? ### Step 3: Analyze Codebase Search for: - Existing authentication patterns - Current user models - API structure - Frontend framework in use - State management approach - Database schema ### Step 4: Structure Requirements Create document following this format: ```markdown ## Feature: User Authentication ### Business Context - **Problem**: Users currently have no way to securely access the system - **Goal**: Implement secure authentication for user access control - **Success Criteria**: Users can register, login, and access protected resources ### Functional Requirements #### FR-1: User Registration **Priority**: Must-have **Description**: Users can create new accounts with email and password **Acceptance Criteria**: - [ ] Registration form validates email format - [ ] Password meets complexity requirements (min 8 chars, 1 uppercase, 1 number) - [ ] Email confirmation sent upon registration - [ ] Duplicate emails are rejected - [ ] User data is stored securely in database #### FR-2: User Login **Priority**: Must-have **Description**: Registered users can authenticate and access the system **Acceptance Criteria**: - [ ] Login form accepts email and password - [ ] Invalid credentials show appropriate error message - [ ] Successful login creates session/JWT token - [ ] User is redirected to dashboard after login - [ ] Remember me option available #### FR-3: Password Reset **Priority**: Should-have **Description**: Users can reset forgotten passwords **Acceptance Criteria**: - [ ] Forgot password link on login page - [ ] Email with reset link sent to user - [ ] Reset link expires after 1 hour - [ ] User can set new password - [ ] Old password is invalidated ### Non-Functional Requirements #### NFR-1: Security - Passwords hashed using bcrypt (10+ rounds) - JWT tokens expire after 24 hours - Refresh tokens for extended sessions - HTTPS required for all auth endpoints - Protection against brute force attacks (rate limiting) - CSRF protection implemented #### NFR-2: Performance - Login response time < 500ms - Registration process < 1 second - Token validation < 100ms #### NFR-3: Accessibility - Forms are keyboard navigable - Screen reader compatible - Error messages clearly announced - WCAG 2.1 AA compliance ### User Stories **US-1**: As a new user, I want to register for an account, so that I can access the platform **US-2**: As a registered user, I want to login securely, so that I can access my data **US-3**: As a user, I want to reset my password if I forget it, so that I can regain access ### Technical Specifications #### Backend - Framework: [Express/Fastify/NestJS] - Authentication: JWT with refresh tokens - Password hashing: bcrypt - Rate limiting: express-rate-limit - Validation: Zod/Joi **API Endpoints**: ``` POST /api/auth/register - User registration POST /api/auth/login - User login POST /api/auth/refresh - Refresh JWT token POST /api/auth/logout - User logout POST /api/auth/forgot-password - Request password reset POST /api/auth/reset-password - Reset password with token GET /api/auth/me - Get current user ``` #### Frontend - Framework: [React/Vue/Next.js] - State management: [Context/Zustand/Redux] - Form handling: React Hook Form - API client: Axios/Fetch **Components**: - RegisterForm - LoginForm - ForgotPasswordForm - ResetPasswordForm - AuthProvider (context) #### Database ```sql CREATE TABLE users ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), email VARCHAR(255) UNIQUE NOT NULL, password_hash VARCHAR(255) NOT NULL, email_verified BOOLEAN DEFAULT FALSE, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); CREATE TABLE password_resets ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), user_id UUID REFERENCES users(id), token VARCHAR(255) UNIQUE NOT NULL, expires_at TIMESTAMP NOT NULL, used BOOLEAN DEFAULT FALSE, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); ``` ### Dependencies - bcrypt library for password hashing - jsonwebtoken for JWT handling - nodemailer for email sending - express-validator for input validation ### Assumptions - Email service is already configured - HTTPS is available in production - Database supports UUIDs ### Risks | Risk | Impact | Mitigation | |------|--------|------------| | Email delivery issues | High | Use reliable email service (SendGrid/AWS SES) | | Token security | High | Use secure random tokens, HTTPS only | | Database performance | Medium | Index email column, use connection pooling | ### Testing Requirements - Unit tests for auth service methods - Integration tests for API endpoints - E2E tests for registration and login flows - Security testing (SQL injection, XSS, CSRF) - Load testing for concurrent logins ### Implementation Estimate - Backend: 3-5 days - Frontend: 2-3 days - Testing: 2 days - Total: 7-10 days ``` ### Step 5: Save and Share Save the document to appropriate location: ```bash mkdir -p docs/requirements cat > docs/requirements/user-authentication.md <<EOF [Requirements content] EOF ``` Optionally create GitHub issue: ```bash gh issue create \ --title "Requirements: User Authentication" \ --body "$(cat docs/requirements/user-authentication.md)" \ --label "requirements,documentation" ``` ## Best Practices ### Question Asking - Start with open-ended questions - Follow up with specific clarifications - Don't assume - ask when uncertain - Validate understanding by summarizing ### Requirement Quality - Make requirements specific and measurable - Include clear acceptance criteria - Use consistent terminology - Avoid technical jargon in business requirements ### Prioritization - Use MoSCoW (Must, Should, Could, Won't) - Distinguish MVP from future enhancements - Consider dependencies when prioritizing ### Documentation - Use consistent formatting - Include code examples where helpful - Link to related documentation - Keep language clear and concise ## Integration with Other Tools This skill works well with: - `/sng-requirements` command (for manual invocation) - `requirements-anal
Related in General
modeling-omnistudio-epc-catalog
IncludedSalesforce Industries CME EPC product-modeling skill for Product2-based catalog creation. Use when creating EPC products, configuring product attributes, building offer bundles with Product Child Items, or reviewing EPC DataPack JSON metadata for product catalog changes. TRIGGER when: user creates or updates Product2 EPC records, AttributeAssignment payloads, AttributeMetadata/AttributeDefaultValues, Offer bundles, or ProductChildItem relationships. DO NOT TRIGGER when: designing OmniScripts/FlexCards/Integration Procedures (use building-omnistudio-omniscript, building-omnistudio-flexcard, or building-omnistudio-integration-procedure), implementing Apex business logic (use generating-apex), or troubleshooting deployment pipelines (use deploying-metadata).
relationship-science-coach
IncludedUse this skill for direct, practical adult relationship coaching: couples conflict, repair, trust, marriage, dating, flirting, attachment patterns, emotional connection, sex, desire differences, eroticism, kink negotiation, affection, love languages, breakups, and long-term passion. Draw on Gottman, EFT and Hold Me Tight, attachment science, modern sex research, Perel, Nagoski, Kerner, Schnarch, Love and Stosny, and flexible love-language tools. Be concrete and low-hedge. Redirect only for imminent danger, abuse, coercive control, minors, non-consent, self-harm, stalking, or medical/legal/psychiatric decisions.
building-sf-integrations
IncludedSalesforce integration architecture and runtime plumbing with 120-point scoring. Use this skill to set up Named Credentials, External Credentials, External Services, REST/SOAP callout patterns, Platform Events, and Change Data Capture. TRIGGER when: user sets up Named Credentials, External Services, REST/SOAP callouts, Platform Events, CDC, or touches .namedCredential-meta.xml files. DO NOT TRIGGER when: Connected App/OAuth config (use configuring-connected-apps), Apex-only logic (use generating-apex), or data import/export (use handling-sf-data).
venue-templates
IncludedAccess comprehensive LaTeX templates, formatting requirements, and submission guidelines for major scientific publication venues (Nature, Science, PLOS, IEEE, ACM), academic conferences (NeurIPS, ICML, CVPR, CHI), research posters, and grant proposals (NSF, NIH, DOE, DARPA). This skill should be used when preparing manuscripts for journal submission, conference papers, research posters, or grant proposals and need venue-specific formatting requirements and templates.
let-fate-decide
IncludedDraws the 12 Houses of the Zodiac Tarot spread to inject entropy into planning when prompts are vague, ambiguous, or casually delegated. Interprets the spread to guide next steps. Use when the user says 'let fate decide', 'YOLO', 'whatever', 'idk', or other nonchalant phrases, makes Yu-Gi-Oh references, or when you are about to arbitrarily pick between multiple reasonable approaches. Prefer over ask-questions-if-underspecified when the user's tone is casual or playful rather than precision-seeking.
net-ops
IncludedCross-platform network troubleshooting (Windows, macOS, Linux) via local or remote shell. Use for: DNS broken, can't resolve hostnames, nslookup/dig works but apps fail, NRPT, WFP, scutil, /etc/resolver, systemd-resolved, /etc/resolv.conf, NetworkManager, VPN DNS leak residue (ProtonVPN/Mullvad/WireGuard/AnyConnect), AV/firewall blocking DNS or DoH, Tailscale DNS interaction, intermittent connectivity, remote diagnostics over SSH.