requirements
Gathers, structures, and prioritizes requirements for a system before any design work begins. Use when the user has a vague idea ("I need to build X", "we need a service that does Y"), wants to define what a system should do and under what constraints, asks about non-functional requirements, says things like "what are the requirements for", "help me scope this", "what do I need to think about before building", or "let's figure out what this needs to do". Do NOT use for designing the system itself — this skill produces the inputs that architecture and design skills consume.
What this skill does
# Gather Requirements
Turn a vague "build X" into structured, prioritized requirements before any design work begins. This skill produces the spec that architecture consumes — it does not pick technologies, draw boxes, or model data. Those are other skills' jobs.
## Current context
```shell
!ls .context/architecture/requirements/ 2>/dev/null || echo "(none yet)"
```
## Decision tree
- What does the user need?
- **Full requirements gathering for a new system** → follow the full process below
- **Quick NFR analysis for an existing design** → jump straight to "NFR analysis"
- **Single-question scope check** ("do I need X?") → answer directly, then suggest full gathering if the question reveals gaps
- **User already has a design and wants feedback** → hand off to `systems-design:design-review` when available
- **User wants to start designing** → capture requirements first, then hand off to `systems-design:architecture` when available
## Interview framework
Pin down 7 areas using `AskUserQuestion`. Ask in batches of 3-4 — not all at once, not one at a time. Skip questions you can answer from the codebase. Call out assumptions explicitly so the user can correct them.
Before asking, scan the project for existing context:
- Read `.context/` files, README, and existing docs
- Check the codebase for clues about scale, stack, integrations
- Pre-fill what you can. Don't waste the user's time asking things the code already answers.
### Areas to cover
1. **Purpose** — What problem does this solve? Who uses it? What does success look like? What happens if we don't build it?
2. **Scale** — Users, requests/second, data volume, growth trajectory. Today and 2 years out. If the user doesn't know, help them estimate from comparable systems.
3. **Latency and availability** — p50/p99 targets for key operations, uptime requirement, acceptable downtime window, recovery expectations.
4. **Consistency** — Are stale reads acceptable? Where? For how long? Are there transactional writes that must be atomic? What's the blast radius of a bug or inconsistency?
5. **Data** — Core entities, key relationships, hot paths (what gets read/written most). Don't model the schema — just understand what exists.
6. **Constraints** — Existing stack, team skills and size, budget ceiling, compliance obligations (GDPR, SOC2, PCI), hard deadlines.
7. **Integrations** — Upstream and downstream systems, auth providers, payment processors, third-party APIs, event buses. What already exists vs what's new.
## Functional requirements structuring
Once the interview is done, structure what the system must DO:
- **List capabilities, not implementation details.** "Users can reset their password via email" — not "send a POST to /reset with a JWT".
- **Use MoSCoW prioritization:**
- **Must** — launch blocker, the system is useless without it
- **Should** — important, but a workaround exists for v1
- **Could** — nice-to-have, build if time allows
- **Won't** — explicitly out of scope (write these down so they stop coming up)
- **Each requirement must be testable.** "Users can reset their password" is testable. "Good UX" is not.
- **Number them** (F1, F2, ...) so the architecture skill can trace design decisions back to requirements.
## NFR analysis
Walk `references/nfr-checklist.md` area by area. For each relevant NFR:
- **Set concrete targets with units.** Not "fast" but "p99 < 300ms for search". Not "highly available" but "99.95% uptime, < 5min RTO".
- **Identify the rationale.** Why this number? Legal requirement? Business impact? User expectation? Gut feel? Be honest — gut feel is fine as a starting point, but label it.
- **Mark hard vs soft constraints.** Hard = non-negotiable (legal, contractual, physics). Soft = can be traded off during design if something else matters more.
- **Identify the hardest constraint** — the single NFR the architecture must optimize for. There's always one. If the user says "everything is equally important", push back — because that means nothing is prioritized and the design will try to optimize for everything and achieve nothing.
- **Call out conflicts.** Strong consistency vs low latency. High availability vs cost efficiency. Global distribution vs data residency. Name the tension so the architecture skill can make an informed trade-off.
## Output
Write structured requirements to `.context/architecture/requirements/<system>.md` using the template from `references/requirements-template.md`. Read the template before writing — match its structure exactly.
Include an "Open questions" section for anything unresolved. These become the first thing the architecture skill addresses.
## Cross-references
|Situation|Hand off to|
|---|---|
|Requirements done, ready to decompose into components|`systems-design:architecture` if installed|
|Requirements done, ready to write a design doc|`documentation:write-design-doc` if installed|
|Need to review an existing design against these requirements|`systems-design:design-review` if installed|
## Key references
|File|Covers|
|---|---|
|`references/nfr-checklist.md`|Non-functional requirements checklist — walk this during NFR analysis|
|`references/requirements-template.md`|Structured output template — match this format|
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.