skills/gen-spec/SKILL.md
Interactively build a project specification. Guides you through tiered questions — quick product overview first, optional deep-dive into user stories and success metrics. Outputs nazgul/context/project-spec.md.
npx skillsauth add OrodruinLabs/nazgul nazgul:gen-specInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
/nazgul:gen-spec — Start the interactive spec builder/nazgul:gen-spec (with existing spec) — Review and optionally replace or edit current spec$ARGUMENTS
cat nazgul/context/project-spec.md 2>/dev/null | head -5 || echo "NONE"cat nazgul/config.json 2>/dev/null | head -3 || echo "NOT_INITIALIZED"AskUserQuestion tool (deferred by default): run ToolSearch with query select:AskUserQuestion. Do this BEFORE any step that uses AskUserQuestion.nazgul/config.json exists. If not, tell the user: "Nazgul not initialized. Run /nazgul:init first." and STOP.nazgul/context/project-spec.md already exists:
AskUserQuestion:
Ask these 5 questions conversationally — adapt phrasing to feel natural, not like a form. Wait for the user's responses.
After collecting Tier 1 answers, write the initial nazgul/context/project-spec.md with Tier 1 content.
After Tier 1, ask:
Use AskUserQuestion:
header: "Depth"
question: "Got the basics down. Want to go deeper with user stories, success metrics, and detailed feature descriptions?"
options:
If Done: Finalize the spec with Tier 1 content only. Update nazgul/config.json → set project_spec to "interactive". DONE.
If Go deeper: Continue to Tier 2.
For each core feature listed in Tier 1:
Then ask about: 4. Success metrics / KPIs — "How will you measure if this project succeeds?" 5. Out-of-scope items — "What is explicitly NOT part of this project?" 6. Technical constraints — "Any technical requirements? (specific APIs, protocols, libraries, performance SLAs)" 7. Integrations — "Does this need to integrate with any external services?"
Update nazgul/context/project-spec.md with Tier 2 sections. Update nazgul/config.json → set project_spec to "interactive".
After Tier 2 (or Tier 1 if user declined Tier 2), offer:
"Want me to analyze your features for implementation gray areas? I'll identify decisions that would change the outcome and ask about the ones you care about. (~3-5 minutes) (y/n)"
For each core feature from Tier 1, identify gray areas based on domain type:
Visual/UI features:
APIs/CLIs:
Data systems:
Infrastructure:
I found gray areas in your features. Select which ones you want to discuss:
Feature: User Authentication
1. Session handling — single device or multi-device?
2. Error responses — generic "invalid credentials" or specific field errors?
3. Recovery flow — email reset, magic link, or both?
Feature: Dashboard
4. Layout — cards with previews or dense table view?
5. Real-time updates — polling, WebSocket, or manual refresh?
Select numbers to discuss (e.g., "1, 3, 4") or "all" or "skip":
Skip the interactive selection. Instead:
## Claude's Discretion with rationaleAppend to nazgul/context/project-spec.md:
## Phase Decisions
### [Feature Name]
| Decision | Choice | Source |
|----------|--------|--------|
| Session handling | Multi-device with conflict resolution | User decision |
| Error responses | Specific field-level errors | User decision |
| Recovery flow | Email reset only for v1 | User decision |
| Layout density | Cards with previews | Claude's Discretion — more engaging for dashboard |
### Deferred Ideas
- [Feature suggested during discussion but out of scope — captured for future phases]
Update nazgul/config.json → set project_spec to "interactive". DONE.
Write nazgul/context/project-spec.md using this structure:
# Project Specification
## Source
- **Method**: interactive
- **Imported from**: N/A
- **Created at**: [ISO timestamp]
## Vision
[What the project does, 1-3 sentences from Q1]
## Target Users
[Who this is for, from Q2]
## Core Features
1. [Feature name] — [brief description]
2. ...
## Problem Statement
[What problem it solves and why it matters, from Q4]
## Constraints
[Non-functional requirements, compliance, deadlines, integrations from Q5, or "None specified"]
## User Stories
<!-- Tier 2 content — only present if user went deeper -->
### [Feature Name]
- As a [user], I want [X] so that [Y]
## Success Metrics
<!-- Tier 2 content -->
- [Metric]: [target]
## Out of Scope
<!-- Tier 2 content -->
- [Item]
## Phase Decisions
<!-- Tier 3 content — only present if user went deeper -->
### [Feature Name]
| Decision | Choice | Source |
|----------|--------|--------|
| [decision] | [choice] | [User decision / Claude's Discretion — reason] |
### Deferred Ideas
- [Item captured during discussion but out of scope]
After writing the spec, display a summary:
Project spec saved to nazgul/context/project-spec.md
Vision: [1-line summary]
Features: [count] core features defined
Depth: [Tier 1 only | Tier 1 + Tier 2 | Tier 1 + Tier 2 + Tier 3]
Phase decisions: [N] locked, [M] at Claude's discretion
This spec will be used by the Doc Generator to create a product-aware PRD.
Run /nazgul:start to begin development.
testing
Human acceptance testing — structured verification that work actually works. Run standalone or integrated in HITL review cycle.
devops
Task lifecycle management — skip, unblock, add, prioritize, info, and list tasks. Use when you need to manage individual tasks in the Nazgul pipeline.
development
Check the current state of a Nazgul autonomous loop. Use when asked about loop progress, task status, iteration count, review board status, or how the Nazgul loop is going.
development
Start or resume a Nazgul autonomous development loop. Use when user says "start nazgul", "run nazgul", "begin development", "resume the loop", or passes an objective for new work. Auto-detects project state — no arguments needed.