DOC
Workflows
Step-by-step workflows for common development scenarios with ulk.
Workflows
Five complete workflows, each with real commands and agent delegation. All workflows assume ulk is installed and you are in a Claude Code session.
Workflow 1 — New project from scratch
Situation: empty repo, vague brief, no spec, no tech decisions made yet.
Step 1 — Single entry point
/ulk:bruce go
Bruce invokes Godspeed, reads the empty state, then asks Tony to handle the architecture decision.
Step 2 — Architecture (Tony, agent 50)
Tony asks a short questionnaire: target users, expected scale, preferred stack, deployment constraints, timeline. It produces:
- Stack recommendation with rationale
- Architecture overview
- Phase breakdown with time estimates
- Handoff to Stark for the design system and Shuri for documentation
Example Tony output structure:
Stack: Astro 5 SSG + TypeScript strict + Tailwind v4
Hosting: Vercel (free tier sufficient for < 10K monthly visits)
Phases: 4 × 0.5 day = 2 days solo
Next: → Stark (design) → Shuri (spec + todo)
Step 3 — Design system (Stark, agent 58)
If a brand, URL, or Figma file is provided, Stark extracts the visual language and produces:
docs/design.md— design source of truth (palette, typography, spacing, anti-patterns)design-model.yaml— machine-readable design tokenstokens.css— CSS custom properties- HTML previews of key components
If no visual reference exists, Stark builds from the brief. Agathe (60) acts as art director and validates the output.
Step 4 — Spec and backlog (Shuri, agent 01)
Shuri reads Tony + Stark outputs and produces:
docs/spec.md ← narrative spec (frontmatter + 9 sections, Obsidian-compatible)
docs/todo.md ← Kanban board (Backlog / Todo / In Progress / Blocked / Done)
CLAUDE.md ← project context (updated with stack, agents, doc-mode)
README.md ← project overview
The todo.md format is compatible with the Obsidian Kanban plugin (mgmeyers/obsidian-kanban).
Step 5 — Prompt decomposition (Project Decomposer, agent 35)
Transforms the todo into self-contained Claude Code prompts stored in docs/prompts.md. Each prompt works without prior context, which protects against drift in long sessions.
Step 6 — Implementation
/ulk:bruce next # Execute first task
/ulk:bruce next # Execute second task
# ...
Bruce delegates each task to Task Runner (04), which reads docs/todo.md and executes sequentially. For heavy exploration (understanding a large dependency, reading many files), Bruce spawns a sub-agent to keep the main context clean.
If a build breaks:
/ulk:robocop
Step 7 — Session checkpoint (2b3, agent 08)
At the end of each session:
/ulk:2b3
2b3 runs: tsc strict → lint → tests → simplification pass → todo update → memory capture → commit. If Verify (65) finds a CRITICAL gap between spec and code, 2b3 flags it but still allows the commit (non-blocking in this phase).
Step 8 — Pre-launch audit
/ulk:sargeras # 10-axis audit (security, perf, tests, a11y, CI/CD...)
/ulk:ed209 # Security deep dive
/ulk:killbill # Cost audit (Vercel, GitHub, Neon)
Or all four in parallel:
/ulk:blackemperor
Step 9 — Deploy
/ulk:xavier # Verify you're on the right account before deploying
/ulk:deploy-vercel # Deploy to Vercel
Deliverables
docs/spec.md,docs/todo.md,docs/design.md,CLAUDE.md,README.mddesign-model.yaml,tokens.css- Clean git history with one commit per logical step
- Sargeras audit report archived in
docs/audits/ - Project deployed and live
Workflow 2 — Audit an existing project
Situation: legacy repo, inherited codebase, or a project not touched in months. Goal: understand the state, identify problems, produce an actionable plan.
Step 1 — Initial cartography
/ulk:bruce
Bruce calls Godspeed, which scans and reports: stack, state (greenfield / in progress / stalled / production), key files present or absent, visible debt.
Step 2 — Reconstruct missing documentation
If docs/spec.md is absent or outdated:
/ulk:strange
Strange reverse-engineers a spec from the code. It reads the directory structure, entry points, dependencies, and produces a narrative spec that can be edited and committed.
If any AI-generated outputs exist and you want to understand the prompts that produced them:
/ulk:strange mode=prompt
Step 3 — Full audit
/ulk:sargeras
10-axis scored report. Violations sorted by severity. Typical axes:
- Security (secrets, dependencies, headers)
- Performance (bundle, Core Web Vitals, queries)
- Architecture (coupling, patterns, consistency)
- Tests (coverage, quality, regression)
- CI/CD (pipeline health, deploy frequency)
- Accessibility (WCAG 2.1/2.2)
- SEO (meta, structure, performance)
- Documentation (completeness, freshness)
- Tech debt (age, churn, complexity hotspots)
- Cost (cloud spend, unused resources)
Step 4 — Targeted audits
/ulk:ed209 # OWASP Top 10 security
/ulk:killbill # Cloud cost analysis with savings plan
/context-audit # Token health score (CLAUDE.md bloat, unused MCPs, missing settings)
For a single consolidated report from all four:
/ulk:blackemperor
Step 5 — Convert findings to tasks
Shuri reads the audit reports and pushes findings into docs/todo.md with a datestamped category:
/ulk:shuri
Deliverables
- Comprehensive project state report
- Prioritized fix list (security first, cost second, tech debt third)
- Cloud savings plan with estimated amounts
- Updated
docs/todo.mdready for the next development session
Workflow 3 — Daily development session
Situation: active project, working on it regularly. Goal: maximize throughput without saturating context.
Morning routine
1. Context verification (Xavier, agent 57)
/ulk:xavier
Verifies: correct repo, correct account, last git state, last session summary. If --with-xavier-hook was passed at install, this runs automatically at session start.
2. Memory surface (Lovecraft, agent 47)
/ulk:lovecraft memory surface
Read-only summary of architectural decisions, known issues, and preferences from previous sessions. This is auto-integrated in Godspeed’s Phase 1.5 when Bruce invokes it.
3. Project pulse (Godspeed, agent 00)
/ulk:godspeed
Current state: which tests are red, last commit, where are we in the todo, any CI failures.
Development routine
4. One task per session (Hygiene Rule 2)
Pick one task from docs/todo.md. No chaining of unrelated tasks. After completion: commit → /clear → new session.
/ulk:bruce next # Takes the next task from todo.md and executes it
5. Sub-agents for heavy exploration (Hygiene Rule 3)
When understanding a module requires reading many files, do not explore in the main session:
Launch a sub-agent to summarize how the authentication module works
The sub-agent returns only the synthesis. The main context stays clean.
6. Proactive /compact at 50-60% (Hygiene Rule 4)
When the context indicator reaches 50%:
/compact Preserve: arch decision (option B), files in progress (src/auth.ts), active bug (#A042). Discard: abandoned approaches.
7. Build broken? Robocop
/ulk:robocop
Robocop identifies the root cause (broken import, type error, failing test), applies the fix, re-runs the check.
End-of-session routine
8. Checkpoint (2b3, agent 08)
/ulk:2b3
Runs: lint → tests → tsc strict → simplification → todo update → memory capture → commit message suggestion → commit.
9. Clear (Hygiene Rule 2)
/clear
After 2b3, always /clear before starting the next unrelated task.
Cloud routines (without a local machine)
Sessions that run autonomously without requiring you to be at a computer. Configure via agent Routine (53):
/ulk:routine
Recommended schedule:
- 2b3 daily at 18:00 — auto end-of-day checkpoint
- Godspeed weekly — weekly project health
- Robocop / CI Guard on
check_suite.completed (failed)— auto-fix broken CI - Sargeras weekly Monday — weekly audit
- Lovecraft daily at 08:00 — memory surface before the workday
- ED-209 monthly — security audit
- Killbill monthly on the 1st — cost review
Workflow 4 — Release / ship
Situation: feature complete, ready to release. Goal: verify quality, audit, deploy.
Step 1 — Completeness review
/ulk:bruce review
Bruce checks: spec vs code completeness, open tasks in todo.md, test coverage, documentation freshness.
Alternatively, run Verify directly:
/ulk:verify
Verify checks 3 dimensions:
- Completeness: everything planned was delivered
- Correctness: what was delivered matches requirements
- Coherence: code respects design decisions and repo conventions
A CRITICAL finding blocks the audit phase. A WARNING is noted but does not block. A SUGGESTION is informational.
Step 2 — Pre-release audit
/ulk:sargeras # 10-axis audit
/ulk:ed209 # Security
Or in parallel:
/ulk:blackemperor
Step 3 — Cost check
/ulk:killbill
Verify the deployment will not introduce unexpected cloud costs. Killbill runs in dry-run mode by default — no actual changes are made.
Step 4 — Account verification (Xavier)
/ulk:xavier
Confirms: correct GitHub account, correct Vercel account, correct API keys. A deploy to the wrong account is a common and avoidable mistake.
Step 5 — Deploy
/ulk:deploy-vercel # Vercel
/ulk:deploy-netlify # Netlify
/ulk:deploy-fly # Fly.io
/ulk:deploy-aws # AWS
/ulk:deploy-cloudflare # Cloudflare Workers/Pages
/ulk:deploy-docker # Docker build + push
Step 6 — Post-deploy checkpoint
/ulk:2b3
Final commit (changelog, version bump if applicable), memory capture, session close.
Workflow 5 — Team onboarding
Situation: sharing ulk with teammates. Goal: each team member has the same agents, same conventions, same vocabulary.
Installation (each team member)
git clone https://github.com/izo/ulk
cd ulk
./install.sh
The install is per-machine, per-user (~/.claude/). Agents are not shared via the project repo — each developer installs their own copy.
Project CLAUDE.md as shared context
The project’s CLAUDE.md (at the project root, committed to git) is the shared source of truth for:
- Stack and architecture decisions
- Ulk agents used and why
- Doc mode (faru / obsidian)
- Custom agent configurations
All team members get the same CLAUDE.md on git pull.
Shared vocabulary
All team members use the same slash commands:
/ulk:bruce → start any session
/ulk:2b3 → end any session
/ulk:sargeras → audit before PR merge
/ulk:godspeed → project health check
This creates a common language across the team — no more ad hoc prompts that vary per person.
CI integration (CI Guard, agent 54)
For teams using GitHub Actions, CI Guard can be configured as a Managed Agent triggered by CI failures:
./install.sh --with-managed-agents
Then configure the GitHub webhook to send check_suite.completed events to the CI Guard trigger handler (framework/managed-agents/triggers/webhook-github.ts).
CI Guard automatically investigates failures, proposes fixes, and can open a PR with the fix.
Agent Teams (experimental)
For coordinated multi-agent work, Agent Teams can be enabled:
./install.sh --with-teams
Agent Teams allow multiple agents to work concurrently on related tasks, with Bruce coordinating the outputs. This feature requires a settings.local.json configuration — see framework/ for examples.
Audit trail
For teams that need governance over AI-assisted changes:
./install.sh --with-accountability
This installs a PostToolUse hook that logs all file mutations (Edit, Write, Bash) to .ulk-reports/accountability.jsonl. A companion log tracks file reads in read-coverage.jsonl.
# View the audit trail
./framework/tools/accountability-report.sh
./framework/tools/accountability-report.sh --since 2026-05-01 --tool Edit
./framework/tools/accountability-report.sh --read-coverage