skills/raffaelecamanzo/skills/technical-writer

technical-writer

SKILL.md

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

  1. If invoked with a file argument (e.g., by the product-owner skill), use that file directly.
  2. If the user specifies a file in conversation, use that.
  3. Otherwise, scan docs/requests/ for request documents.
  4. If multiple files exist, ask the user which to analyze.
  5. 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:

  1. Classify the system type — Is this a user-facing application, an API/service, a data pipeline, infrastructure tooling, or something else?
  2. Identify explicitly stated requirements — What does the request already specify?
  3. Identify gaps — Which critical NFR categories are absent or underspecified?
  4. Assess risk — Where would wrong assumptions cause the most specification damage?
  5. 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
Weekly Installs
6
First Seen
14 days ago
Installed on
opencode6
gemini-cli6
antigravity6
claude-code6
github-copilot6
codex6