Feature Forge
Conducts structured requirements workshops to produce feature specifications, user stories, EARS-format functional requirements, acceptance criteria, and implementation checklists.
Before & after
Same prompt, same agent — the only difference is the skill.
Writing specs for authentication is important. You'd want to define what users should be able to do, like log in and reset their password. It helps to think about different scenarios - what happens if the password is wrong, or the user forgets their email. You'd probably want to include error messages and some acceptance criteria so you know when it's done. Different teams have different ways of writing specs.
FEATURE SPECIFICATION: Email + Password Authentication v2 FEATURE ID: AUTH-001-EMAIL-PWD Priority: P0 (blocks launch) Stakeholder: VP Product (Sarah) Target launch: Q4 2024 (Oct 15) Epic: Authentication System Rebuild BACKGROUND: Current system lacks rate limiting and passwordless options; customers requesting multi-factor auth and device trust. This spec covers the foundational email+password auth component; MFA in separate spec (AUTH-002). USER STORIES & ACCEPTANCE CRITERIA: STORY 1: User creates account with email and password AS A new user I WANT TO create an account with my email and a secure password SO THAT I can access the platform Acceptance Criteria: → AC1.1: Email field accepts valid email format (RFC 5322) → AC1.2: Email must be unique (case-insensitive); error: "Email already registered" → AC1.3: Password field shows/hide toggle (show password icon) → AC1.4: Password strength meter displays (0-4 levels) → AC1.5: Minimum password requirements: 12 characters, 1 uppercase, 1 number, 1 special char (@, !, #, $, %) → AC1.6: Password meter prevents form submission if <level 2 (medium strength) → AC1.7: Confirm password field matches password (real-time validation) → AC1.8: Submit button disabled until all validations pass → AC1.9: On submit, hash password with bcrypt (cost: 12 rounds); never store plaintext → AC1.10: Confirmation email sent within 10 seconds (verify email address owns account) → AC1.11: New account created in pending state (not active until email verified) → AC1.12: 24-hour expiry on confirmation link; error: "Link expired. Resend confirmation." → AC1.13: Success page: "Check your email to complete signup" with resend link STORY 2: User logs in with email and password AS AN existing user I WANT TO log in with my registered email and password SO THAT I can access my account Acceptance Criteria: → AC2.1: Email and password fields present on login screen → AC2.2: Form submission triggers credentials validation → AC2.3: Invalid credentials (wrong email OR wrong password): generic error "Invalid email or password" (no user enumeration) → AC2.4: API rate limiting: Max 5 failed attempts per IP per 15 minutes → AC2.5: On 5th failed attempt: Account locked for 30 minutes + email alert sent → AC2.6: Successful login returns session token (JWT, 30-day expiry) → AC2.7: Session stored in secure HTTP-only cookie (not accessible via JavaScript) → AC2.8: User redirected to dashboard on successful login → AC2.9: "Remember me" checkbox (optional): Session extends to 90 days if checked → AC2.10: Session invalidated on logout (cookie deleted, server-side revocation) STORY 3: User resets forgotten password AS A user who forgot my password I WANT TO reset my password via email SO THAT I can regain account access Acceptance Criteria: → AC3.1: "Forgot password" link on login screen → AC3.2: Forgot password form: Email field only → AC3.3: Email submission triggers check (success regardless of whether email exists, for security) → AC3.4: If email exists: Password reset link sent within 30 seconds → AC3.5: If email does not exist: Display "If that email exists, we sent a link" (no enumeration) → AC3.6: Reset link expires after 1 hour → AC3.7: Reset link single-use (after 1 successful use, link invalid) → AC3.8: New password must meet same strength requirements as signup (AC1.5) → AC3.9: Old password is NOT required (passwordless reset) → AC3.10: On successful reset: Display "Password updated. You can now log in." with login link → AC3.11: All active sessions invalidated after password reset (forces re-login on all devices) EARS-FORMAT FUNCTIONAL REQUIREMENTS: Requirement 1: Password Storage WHEN a user creates an account or resets password THE system MUST hash the password using bcrypt with cost parameter 12 AND store only the hash in the database (never plaintext) SO THAT passwords cannot be exposed even if database is compromised Requirement 2: Session Management WHEN a user successfully logs in THE system MUST create a JWT token with the following claims: ├ sub (subject): user_id ├ iat (issued at): current timestamp ├ exp (expiration): current timestamp + 30 days ├ role: user_role (admin, creator, user) AND return the token in an HTTP-only, secure, same-site cookie SO THAT session tokens cannot be accessed by JavaScript or sent cross-site Requirement 3: Rate Limiting WHEN a user attempts to log in IF more than 5 failed attempts occur from the same IP within 15 minutes THE system MUST temporarily lock the account for 30 minutes AND send an email alert to the account owner SO THAT brute-force attacks are prevented Requirement 4: Email Verification WHEN a user creates a new account THE system MUST send a verification email with a unique, single-use link AND mark the account as inactive until the link is clicked AND set link expiry to 24 hours SO THAT account ownership is verified and valid contact info is confirmed Requirement 5: Password Reset Token WHEN a user requests a password reset THE system MUST generate a cryptographically secure random token AND send it via email in a time-limited reset link (1-hour expiry) AND mark the token as single-use (invalid after 1 redemption) SO THAT compromised reset links cannot be reused NON-FUNCTIONAL REQUIREMENTS: Security: → All authentication endpoints use HTTPS only (no HTTP fallback) → Passwords never logged (including debug logs) → Rate limiting must account for proxy/load balancer IP headers → OWASP Top 10 validation: no SQL injection, XSS, CSRF vulnerabilities → Secrets (API keys, signing keys) stored in environment variables, never in code Performance: → Login endpoint latency: <500ms p95 (including bcrypt verification) → Password reset email delivery: <30 seconds (SLA 95%) → Session validation on each request: <10ms (cached) Scalability: → Support 10,000 concurrent sessions → Database queries optimized (index on email column) → Rate limiting: Redis-backed (distributed rate limit across servers) Availability: → Authentication system must be always-on (part of critical path) → If auth service is down: Deny access (fail-secure, not fail-open) → SLA: 99.95% uptime IMPLEMENTATION CHECKLIST: Phase 1: Backend (2 weeks) □ Database schema: users table with email, password_hash, email_verified, created_at □ API endpoints: POST /auth/signup, POST /auth/login, POST /auth/logout, POST /auth/forgot-password, POST /auth/reset-password □ Bcrypt integration + rate limiting middleware □ Email service integration (SendGrid or similar) □ JWT token generation and verification □ Session invalidation on logout / password reset □ Unit tests: 100% coverage on auth logic □ Integration tests: Login flow, password reset flow, rate limiting Phase 2: Frontend (1.5 weeks) □ Signup page: email, password, confirm password, password strength meter □ Login page: email, password, forgot password link, remember me checkbox □ Forgot password page: email field, resend link button □ Reset password page: new password, confirm password, submit button □ Error messages and success states □ Loading states and spinners □ Form validation (client-side + server-side redundancy) □ E2E tests: Full signup, login, logout, password reset flow Phase 3: Testing & Launch (1 week) □ Security audit: Penetration testing on authentication endpoints □ Load testing: Verify rate limiting under 1000 req/sec □ Accessibility review: Keyboard navigation, screen reader compatibility □ Cross-browser testing: Chrome, Safari, Firefox, Edge □ Production deployment: Blue-green deployment, rollback plan □ Monitoring: Alert on auth failures, rate limit triggers DEPENDENCIES: → Email service provider API (SendGrid, Mailgun, AWS SES) → Database migration: users table schema → JWT library (jsonwebtoken for Node.js) → Bcrypt library (bcryptjs for Node.js) → Redis for distributed rate limiting OPEN QUESTIONS: → Should passwordless authentication (magic link) be in this spec or separate? → Should we support social login (Google, GitHub) in Phase 1 or Phase 2? → Rate limiting: Per-IP or per-email? Current spec assumes per-IP. → Session timeout: 30 days with "remember me", or shorter default (e.g., 24 hours)?
About this skill
name: feature-forge description: Use when Conducts structured requirements workshops to produce feature specifications, user stories, EARS-format functional requirements, acceptance criteria, and implementation checklists.
Feature Forge
Conducts structured requirements workshops to produce feature specifications, user stories, EARS-format functional requirements, acceptance criteria, and implementation checklists. Use when defining new features, gathering requirements, or writing specifications. Invoke for feature definition, requirements gathering, user stories, EARS format specs, PRDs, acceptance criteria, or requirement matrices.
What you get
- Public GitHub repo
- the skills/feature-forge folder with SKILL.md and references.
Customize your output
- Fork the repo and extend the skill's reference files for your own stack conventions.
Example output
Activates on a matching request (e.g. building or reviewing Feature Forge code) and can chain with other skills in the pack.
Best for
Full-stack developers and engineering teams using Claude Code.
SKILL.md preview
---
name: feature-forge
description: Use this skill when defining a new feature, gathering requirements, or writing specifications that need user stories, EARS-format requirements, and acceptance criteria.
version: 1.0.0
category: Development / Engineering
author: AgentVolt
license: proprietary
tags:
- development
- engineering
---
# Feature Forge
Runs a structured requirements workshop that turns a vague feature idea into user stories, EARS-format requirements, acceptance criteria, and a checklist.
## When to use
… (sign up to view the full skill)More development skills
View all Development skills →Generate
Scaffold code, tests, and boilerplate from a short spec.
Performance Profiler
Systematic performance profiling for Node.js, Python, and Go applications.
Threat Detection
Use when hunting for threats in an environment, analyzing IOCs, or detecting behavioral anomalies in telemetry.
Agent Harness
Turns a domain folder of skills into a bounded agentic loop: compile a goal into a task plan, execute with the domain's tools, verify every task, retry within a budget.