skills/init/SKILL.md
Initialize Nazgul for a project — check prerequisites, run discovery, create runtime directories, generate reviewer agents. Use when setting up Nazgul for the first time, user says "initialize nazgul", "set up nazgul", or before running any other Nazgul commands.
npx skillsauth add OrodruinLabs/nazgul nazgul:initInstall 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:init — Initialize Nazgul with default settings/nazgul:init --force — Reinitialize, archiving current state first/nazgul:init --local — Initialize in local mode (files not tracked in git)/nazgul:init --local --force — Reinitialize in local modewhich jq 2>/dev/null && echo "YES" || echo "NO — install jq first: brew install jq (macOS) or apt install jq (Linux)"git rev-parse --is-inside-work-tree 2>/dev/null && echo "YES" || echo "NO — initialize a git repo first"ls ~/.claude/plugins/security-guidance 2>/dev/null && echo "INSTALLED" || echo "NOT INSTALLED — recommended: claude plugin install security-guidance"Pre-load: Run ToolSearch with query select:AskUserQuestion to load the interactive prompt tool (deferred by default). Do this BEFORE any step that uses AskUserQuestion.
Initialize the Nazgul Framework for this project:
nazgul/config.json already exists--force to reinitialize (current state will be archived)."--force was passed (check $ARGUMENTS), archive current state to nazgul/archive/ first, then proceed$ARGUMENTS for --local flag--local is present, set a variable LOCAL_MODE=true--local and --force can be combinedjq is installed (required for hook scripts). If jq is NOT installed, output: "REQUIRED: jq is not installed. Install it first: brew install jq (macOS) or apt install jq (Linux). Nazgul cannot function without jq." — STOP, do not proceed with initialization.Create the following directories and files:
nazgul/
├── config.json # Copy from plugin templates/config.json
├── plan.md # Copy from plugin templates/plan.md
├── tasks/ # Empty, for task manifests
├── checkpoints/ # Empty, for iteration checkpoints
├── reviews/ # Empty, for review artifacts
├── context/ # Will be filled by Discovery
├── docs/ # Will be filled by Doc Generator
└── logs/ # Empty, for iteration logs
If LOCAL_MODE=true:
.gitignore at the project root# Nazgul Framework (local mode) marker already exists# Nazgul Framework (local mode)
nazgul/
.claude/agents/generated/
.mcp.json
install_mode to "local" in the config:
jq '.install_mode = "local"' nazgul/config.json > nazgul/config.json.tmp && mv nazgul/config.json.tmp nazgul/config.json
Delegate to the Discovery agent to scan the codebase:
nazgul/context/.claude/agents/generated/nazgul/config.json with discovered project settingsShow the user:
/nazgul:start "your objective"If LOCAL_MODE=true:
Otherwise (shared mode): If the project doesn't already have Nazgul instructions in CLAUDE.md:
templates/CLAUDE.md.templateEnsure Agent Teams is configured for this project.
Read .claude/settings.json (or start with {}), then merge:
enableAgentTeams: set to true if missingWrite the merged result back. If already present, skip (no-op).
Use AskUserQuestion to ask about optional features. Store preferences in nazgul/config.json.
Call AskUserQuestion with all three questions at once (up to 4 questions supported):
Question 1 — Auto-Formatter:
formatter.enabled: true in config.jsonformatter.enabled: falseQuestion 2 — Completion Notifications:
say 'Nazgul loop complete' (macOS) or notify-send 'Nazgul' 'Loop complete' (Linux)notifications.on_complete to the platform-appropriate commandnotifications section emptynotifications.on_complete to the user's commandQuestion 3 — Model Assignments:
nazgul/config.json → modelsModel assignment sub-flow (only if Customize selected):
AskUserQuestion:
If "Per stage": call AskUserQuestion twice (4 questions max per call):
Write selected models to nazgul/config.json → models
Presets map:
{ planning: "opus", discovery: "sonnet", docs: "sonnet", review: "sonnet", implementation: "sonnet", specialists: "sonnet", post_loop: "haiku", default: "sonnet" }{ planning: "opus", discovery: "opus", docs: "opus", review: "opus", implementation: "opus", specialists: "opus", post_loop: "opus", default: "opus" }{ planning: "sonnet", discovery: "haiku", docs: "haiku", review: "haiku", implementation: "sonnet", specialists: "sonnet", post_loop: "haiku", default: "haiku" }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.