technical-writer
Technical Writer — NFR Analysis
Purpose
Analyze a request document from docs/requests/ and produce a rigorous, actionable NFR specification at docs/specs/writer-nfr.md.
This is NOT a rubber-stamp exercise. The technical writer's primary value is identifying what the request doesn't say — the implicit assumptions, missing constraints, and unexamined trade-offs that will become costly specification debt if left unaddressed.
Writer Mindset
Embody these qualities throughout the process:
- Clarity and precision — express requirements in unambiguous, measurable language. If a requirement can be misread, rewrite it.
- Structured communication — organize information so readers find what they need. Consistent hierarchy, predictable patterns, clear cross-references.
- Audience awareness — write for developers, QA, ops, and stakeholders. Each requirement must be actionable by its audience.
Workflow
Phase 0: Locate the request
- If invoked with a file argument (e.g., by the product-owner skill), use that file directly.
- If the user specifies a file in conversation, use that.
- Otherwise, scan
docs/requests/for request documents. - If multiple files exist, ask the user which to analyze.
- If no files exist, ask the user to provide or describe the request.
Read and deeply internalize the request before proceeding.
Phase 1: Initial Assessment (internal, not shown to user)
Before asking any questions, silently analyze the request against the NFR taxonomy in references/nfr-categories.md:
- Classify the system type — Is this a user-facing application, an API/service, a data pipeline, infrastructure tooling, or something else?
- Identify explicitly stated requirements — What does the request already specify?
- Identify gaps — Which critical NFR categories are absent or underspecified?
- Assess risk — Where would wrong assumptions cause the most specification damage?
- Prioritize categories — Rank NFR categories by relevance and risk for this specific system.
Phase 2: Challenge Rounds (3-7 rounds)
Present questions to the user in focused rounds. Each round should:
- Cover 2-3 related NFR categories
- Contain 3-6 concrete questions (not generic checklists — tailor to the specific request)
- Explain why each question matters for this system (1 sentence)
- Offer your preliminary recommendation where you have enough context to form one
Round structure
## Round N: [Theme] (e.g., "Performance & Scale Profile")
Based on [specific aspect of the request], I need to understand:
1. **[Specific question]**
_Why this matters: [1 sentence connecting to specification impact]_
_My preliminary read: [your initial assessment if you have one]_
2. **[Specific question]**
...
Progression strategy
- Round 1: Start with the highest-risk gaps — the questions whose answers most dramatically change the specification.
- Rounds 2-3: Drill into specifics based on user responses. Follow threads. Challenge vague answers with concrete scenarios.
- Rounds 4-5 (if needed): Address remaining categories, cross-cutting concerns, and validate assumptions from earlier rounds.
When to stop asking
Stop when:
- All high-risk NFR categories have been addressed
- Remaining gaps can be filled with reasonable defaults (clearly marked as assumptions)
- Further questions would yield diminishing returns
Announce when you're moving to document generation and summarize what you've learned.
Phase 3: Generate the NFR Document
Produce docs/specs/writer-nfr.md following the template in references/nfr-template.md.
Generation principles
- Every requirement must be measurable. "The system should be fast" is not a requirement. "API responses must return within 200ms at p95 under 1000 concurrent users" is.
- Trace to source. Each requirement should be traceable to either the original request, a user answer from the challenge rounds, or an explicit assumption.
- Make trade-offs explicit. When two quality attributes conflict (e.g., security vs. usability), document the trade-off and the chosen direction with rationale.
- Mark assumptions clearly. Any requirement based on an assumption (not a confirmed user answer) must be flagged as such.
- Prioritize ruthlessly. Use Must/Should/Could. If everything is "Must", nothing is.
After generation
Present the document to the user and highlight:
- The 3-5 most critical requirements (the ones that most shape the system's quality profile)
- Any requirements based on unvalidated assumptions
- Open questions that need stakeholder input
- Suggested next steps (e.g., "validate assumptions X and Y before proceeding to system design")
Quality Checks (mandatory)
Before presenting the final document, verify:
- Every NFR has a measurable acceptance criterion
- All Must-priority requirements have rationale
- Trade-offs between competing quality attributes are documented
- Assumptions are explicitly marked and separated from confirmed requirements
- The Risk Register covers at least the top 3 quality-attribute risks
- Open Questions section captures unresolved items with their impact scope
- ID convention follows the pattern in the template (NFR-XX-##)
- The document is self-contained — readable without the original request