From haiku
Analyzes historical throughput from completed H·AI·K·U intents: bolt counts per unit, stage durations, gate outcomes, busiest stages across studios.
npx claudepluginhub gigsmart/haiku-method --plugin haikuThis skill is limited to using the following tools:
`haiku:capacity` — Historical throughput analysis from local intent artifacts.
Generates project health and ROI dashboard aggregating QA findings, bugs caught, token costs, git velocity, workflow trends from artifacts and session data. Run monthly or for evaluations.
Generates usage analytics dashboard from Claude Code sessions with epistemic protocol coverage metrics, friction analysis, growth timelines, and improvement recommendations.
Generates graphic weekly/monthly digests of Claude Code session patterns: biome aquarium (whale/shark/dolphin/fish/shrimp/plankton), 8 archetypes, rhythms, stack palettes, DORA radar (CFR/lead time/pushes), friction (compacts/pivots/subagents). Auto-installs Python backend.
Share bugs, ideas, or general feedback.
haiku:capacity — Historical throughput analysis from local intent artifacts.
/haiku:capacity # All studios
/haiku:capacity software # Single studio
User-facing command — Reads completed and active intent artifacts to show historical patterns. Not estimates — data about what actually happened.
Sources:
started_at, completed_at, studio, statusstarted_at, completed_at, phase, gate_outcomebolt, hat, status, started_at, completed_athaiku_intent_list → all intents with studio, status, active_stage
Group by studio. Filter by argument if a studio name was provided.
For each intent:
# Intent duration
STARTED=$(haiku_intent_get { slug, field: "started_at" })
COMPLETED=$(haiku_intent_get { slug, field: "completed_at" })
# If completed: duration = completed_at - started_at
# If active: duration = now - started_at (in progress)
For each stage in the intent:
# Read stage state
STAGE_STARTED=$(haiku_stage_get { intent, stage, field: "started_at" })
STAGE_COMPLETED=$(haiku_stage_get { intent, stage, field: "completed_at" })
STAGE_PHASE=$(haiku_stage_get { intent, stage, field: "phase" })
GATE_OUTCOME=$(haiku_stage_get { intent, stage, field: "gate_outcome" })
For each unit:
haiku_unit_list { intent, stage } → units with status, bolt, hat
For each studio, compute:
status: completedstatus: activeawait gates are common, and typical wait durations## Capacity Report
### Software Studio
**Completed:** 8 intents | **Active:** 3 intents
| Stage | Median Duration | Max Duration | Median Bolts/Unit | Typical Gate |
|-------|----------------|--------------|-------------------|--------------|
| inception | 1 session | 2 sessions | 1 | auto |
| design | 1 session | 3 sessions | 1 | ask |
| product | 2 sessions | 4 sessions | 1 | external |
| development | 3 sessions | 8 sessions | 3 | ask |
| operations | 1 session | 2 sessions | 1 | auto |
| security | 2 sessions | 5 sessions | 2 | external |
**Patterns:**
- Development is the bottleneck — highest bolt counts and longest duration
- Inception is consistently fast — good elaboration
- 2 of 3 active intents are in development stage
### Sales Studio
**Completed:** 12 intents | **Active:** 6 intents
| Stage | Median Duration | Typical Gate |
|-------|----------------|--------------|
| research | fast (same session) | auto |
| qualification | fast (same session) | ask |
| proposal | 2 sessions + await | ask, await |
| negotiation | variable (await-dependent) | ask, await |
| close | 1 session | external |
**Patterns:**
- Proposal→negotiation has longest wait times (await gates)
- 3 of 6 active intents are in proposal-await
Duration is computed from started_at / completed_at timestamps in frontmatter. Since H·AI·K·U doesn't track wall-clock session time (only artifact timestamps), durations represent elapsed calendar time, not active work time.
For a rough session count, check git log for the number of distinct commit sessions between stage start and end:
# Count distinct commit sessions (gap > 30min = new session)
git log --format="%aI" -- ".haiku/intents/{slug}/stages/{stage}/" | \
sort | awk 'NR>1{split($0,a,"T");split(prev,b,"T"); if(a[1]!=b[1]) sessions++}{prev=$0}END{print sessions+1}'
| Scenario | Behavior |
|---|---|
| No completed intents | "No completed intents found. Complete an intent to see capacity data." |
| No timestamps in frontmatter | Skip that intent — older intents without timestamps can't contribute |
| Studio argument not found | "Studio '{name}' not found. Available: {list}" |