A Rust CLI tool for managing Obsidian-based project planning and execution with AI assistance.
Nexus CLI enforces planning discipline through a gated workflow:
- Init - Create a new project with planning templates
- Gate - Validate that planning documents are complete
- Unlock - Generate CLAUDE.md from validated planning docs
- Sprint - Create sprint branches with scoped workspaces
- Structured Planning: Template-based planning workflow with enforced completion
- Gate Validation: Heuristic-based validation ensures planning quality
- Ad-Hoc Task Mode: Lightweight workflow for bug fixes and small features
- AI Integration: Generate CLAUDE.md for AI-assisted development
- Git Integration: Automatic repository initialization and initial commit
- Sprint Management: Create sprint branches with scoped task lists and context
- Path Flexibility: Configurable paths for Obsidian vaults and planning directories
cargo build --release
./target/release/nexus_cli --helpCreate a new project with planning templates:
nexus init my-project
cd my-projectThis creates:
- Project directory structure
- Planning document templates (01-PLANNING/)
- Management directory (00-MANAGEMENT/)
nexus.tomlconfiguration file
Open the project in Obsidian and complete the planning templates:
01-Problem-and-Vision.md- Define problem, vision, and success criteria02-Scope-and-Boundaries.md- Define MVP scope and boundaries03-Tech-Stack.md- Choose and justify technology stack04-Architecture.md- Design system architecture05-MVP-Breakdown.md- Break MVP into sprints
Complete all tasks in 00-MANAGEMENT/00-START-HERE.md.
Verify planning is complete before unlocking:
nexus gate .The gate checks:
- All checkboxes in dashboard are checked
- Planning documents meet minimum quality standards
- No incomplete placeholders (TODO, TBD, etc.)
- All required sections are present
Example output when validation passes:
πͺ INITIATING GATE SEQUENCE...
π SCANNING DASHBOARD...
β Dashboard clean - all tasks completed
π SCANNING PLANNING DOCUMENTS...
β 01-Problem-and-Vision.md
β 02-Scope-and-Boundaries.md
β 03-Tech-Stack.md
β 04-Architecture.md
β 05-MVP-Breakdown.md
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
MISSION READY
Gate is open. All validation checks passed.
Once planning passes the gate, unlock the project:
nexus unlock .This command:
- Runs gate check - Aborts if planning is incomplete
- Parses planning documents - Extracts structured content
- Generates CLAUDE.md - Creates permanent AI context file
- Initializes git - Creates repository if needed
- Creates initial commit - Commits CLAUDE.md and planning docs
Example output:
π INITIATING UNLOCK SEQUENCE...
π Loading configuration...
β Config loaded: my-project
πͺ Running gate check...
β Gate check passed - planning complete
π§ Parsing planning documents...
β Planning documents parsed
π Generating CLAUDE.md...
β CLAUDE.md generated
π§ Initializing git repository...
β Files staged for commit
β Initial commit created
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
PROJECT UNLOCKED
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
π Summary:
β’ CLAUDE.md generated at: /path/to/project/CLAUDE.md
β’ Git repository initialized
β’ Initial commit created with planning docs
π Next Steps:
1. Review CLAUDE.md in your repository
2. Share CLAUDE.md with your AI assistant (Claude, etc.)
3. Start development with clear context and constraints
The unlock command requires the gate check to pass. If planning is incomplete:
nexus unlock .Output:
πͺ Running gate check...
π« UNLOCK ABORTED
Gate check failed. Fix planning issues before unlocking.
This prevents generating CLAUDE.md from incomplete planning.
After unlocking, create a sprint workspace:
nexus sprint . 4This command:
- Checks sequencing - Blocks if previous sprint not approved
- Parses MVP breakdown - Extracts sprint tasks from 05-MVP-Breakdown.md
- Creates git branch - Creates sprint-{number}-{name} branch
- Scaffolds workspace - Creates Obsidian sprint folder structure
- Updates config - Marks sprint as active in nexus.toml
Example output:
π Sprint Orchestrator
π Project: nexus_cli
π Planning path: /path/to/obsidian/vault
π Parsing MVP breakdown...
β Found Sprint 4: The Sprint Orchestrator (The Leash)
πΏ Creating git branch...
β Branch created: sprint-4-the-sprint-orchestrator
π Scaffolding sprint workspace...
β Created: 00-MANAGEMENT/sprints/sprint-4-the-sprint-orchestrator/
β Tasks.md
β Sprint-Context.md
β approvals/
β sessions/
πΎ Updating nexus.toml...
β Active sprint updated
β
SPRINT READY
Sprint 4 is now active: The Sprint Orchestrator (The Leash)
Next steps:
1. Review tasks in: 00-MANAGEMENT/sprints/sprint-4-the-sprint-orchestrator/Tasks.md
2. Check scope boundaries in: 00-MANAGEMENT/sprints/sprint-4-the-sprint-orchestrator/Sprint-Context.md
3. Start implementing the tasks!
Each sprint creates an isolated workspace:
00-MANAGEMENT/sprints/sprint-{number}-{name}/
βββ Tasks.md # Sprint task list (from MVP breakdown)
βββ Sprint-Context.md # Scope boundaries and success criteria
βββ approvals/ # Approval artifacts
βββ sessions/ # Dev session notes
Sprints must be completed in order. If you try to start Sprint 4 while Sprint 3 is still in progress:
nexus sprint . 4Output:
β SPRINT BLOCKED: Previous sprint not approved
Current active sprint: sprint-3
Status: in_progress
You must complete and approve the current sprint before starting a new one.
To proceed, mark the current sprint as approved in nexus.toml:
[state.active_sprint]
current = "sprint-3"
status = "approved" # Change from "in_progress"For smaller tasks like bug fixes or minor features, use the ad-hoc mode:
# Initialize an ad-hoc task
nexus init my-bug-fix --mode adhoc
# Start the task (runs gate validation)
nexus task-start .
# Mark task as completed (validates checklist)
nexus task-done .Ad-hoc mode uses a simplified planning structure:
Task-Capture.md: Problem statement and contextTask-Approach.md: Analysis and proposed solutionTask-Validation.md: Implementation checklist
Running unlock multiple times is safe:
- Git repository initialization is skipped if .git exists
- Initial commit is skipped if repository already has commits
- CLAUDE.md is regenerated (updates with latest planning content)
The nexus.toml file configures project paths and settings:
[project]
name = "my-project"
version = "0.1.0"
obsidian_path = "/path/to/project"
[structure]
planning_dir = "01-PLANNING"
management_dir = "00-MANAGEMENT"
sprint_dir = "00-MANAGEMENT/Sprints"
[gate]
heuristics_file = "Gate-Heuristics.json"
strict_mode = true
[obsidian]
planning_path = "/path/to/project" # Defaults to obsidian_path if not set
[state]
is_unlocked = false
[state.active_sprint]
current = "sprint-4"
status = "in_progress" # or "approved"
[templates]
claude_template = "templates/CLAUDE.md.example"obsidian_path- Root directory where nexus.toml livesplanning_path- Directory containing 01-PLANNING/ (defaults to obsidian_path)
All commands resolve paths using these configuration values, not the current working directory.
Run tests:
cargo testRun specific test suite:
cargo test --test gate_integration
cargo test --test unlock_integration
cargo test --test sprint_integrationsrc/commands/- Command implementations (init, gate, unlock, sprint, task)src/config.rs- Configuration structure and loadingsrc/git_ops.rs- Git branch creation and managementsrc/heuristics.rs- Gate validation rulessrc/planning.rs- Planning document parsing and validationsrc/scaffolding.rs- Sprint workspace scaffoldingsrc/templating.rs- CLAUDE.md template renderingtemplates/- Project templates and Tera templates
MIT