From shipyard
Project dashboard showing sprint progress, backlog health, spec coverage, state validation, and what to do next. Also validates and auto-fixes state inconsistencies. Use when the user asks about project status, progress, what's happening, what's left, what to work on next, wants a health check, suspects state corruption, or just wants an overview.
npx claudepluginhub acendas/shipyard --plugin shipyardThis skill is limited to using the following tools:
Read all project state, validate it, auto-fix issues, and present a clear dashboard.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Searches prompts.chat for AI prompt templates by keyword or category, retrieves by ID with variable handling, and improves prompts via AI. Use for discovering or enhancing prompts.
Creates isolated Git worktrees for feature branches with prioritized directory selection, gitignore safety checks, auto project setup for Node/Python/Rust/Go, and baseline verification.
Read all project state, validate it, auto-fix issues, and present a clear dashboard.
!shipyard-context path
!shipyard-context diagnose
!shipyard-context view config
!shipyard-context view sprint
!shipyard-context view sprint-progress
!shipyard-context view backlog
!shipyard-context view metrics 50
!shipyard-context debug-count
!shipyard-context view sprint-handoff
!shipyard-context status-counts
Paths. All file ops use the absolute SHIPYARD_DATA prefix from the context block. No ~, $HOME, or shell variables in file_path. No bash invocation of shipyard-data or shipyard-context — use Read / Grep / Glob. Never use echo/printf/shell redirects to write state files — use the Write tool (auto-approved for SHIPYARD_DATA).
$ARGUMENTS
If arguments specify a section (sprint, backlog, health, spec, diagnose), show only that section in detail. If no arguments, show the full dashboard. If project not initialized → "Project not initialized. Run /ship-init to get started."
diagnose section — when invoked as /ship-status diagnose, print only the resolver diagnostic block from the context above (SHIPYARD_DATA, PROJECT_ROOT, PROJECT_HASH, env vars, .auto-approve.log tail). This is the self-serve format for filing actionable bug reports about permission prompts or state divergence. Include a one-line interpretation note: if AUTO_APPROVE_LOG=(does not exist) the auto-approve hook has never fired for this project; if CLAUDE_PLUGIN_DATA=(unset) the resolver is using its discovery probe or legacy fallback.
Before showing the dashboard, run health checks and fix what can be fixed automatically. Do NOT prompt the user for each fix — just fix it and report what was fixed at the bottom of the dashboard.
Use Glob to enumerate every .md file under <SHIPYARD_DATA>/spec/ (substitute the literal SHIPYARD_DATA from the context block), then Read each one and validate frontmatter:
Feature files — required: id (F+digits), title (non-empty), type (feature), epic (string), status (proposed|approved|in-progress|done|deployed|released|cancelled), story_points (≥0), complexity (low|medium|high|""), token_estimate (≥0), rice_reach (0-10), rice_impact (0-3), rice_confidence (0-100), rice_effort (>0), rice_score (≥0), dependencies (list), references (list), tasks (list), created (date)
Task files — required: id (T+digits), title (non-empty), feature (valid feature ID), status (pending|in-progress|done|blocked|needs-attention), effort (S|M|L), dependencies (list). The needs-attention status is set by the operational fix-findings loop or the research dispatcher when escalation triggers — it means "prior attempt produced a full audit trail but the task did not converge; needs a human decision." Distinct from blocked (waiting on an external dependency). See references/task-kinds.md for the escalation semantics.
Bug files — required: id (B+digits), title, status, severity
Idea files — required: id (IDEA+digits), title, status
Epic files — required: id (E+digits), title, status
Auto-fix: Backfill missing fields with defaults where safe (e.g., dependencies: [], references: [], tasks: []). Log unfixable issues (wrong type, invalid status).
dependencies: arrayepic: fieldSkip if not a git repo. Otherwise:
done without commits → log as warningreleased without tags → log as warningState files use the soft-delete sentinel pattern: overwrite with a "cleared" marker rather than physically deleting. The relevant hooks treat the sentinel as inactive.
obsolete: truetasks: array) → log as warningfeatures: arrays → remove the array (membership is derived)<SHIPYARD_DATA>/.loop-state.json → Write {"cleared": "<iso>", "events": []}<SHIPYARD_DATA>/.active-session.json (>24h old) → Write {"skill": null, "cleared": "<iso>"}<SHIPYARD_DATA>/.compaction-count file (legacy — the counter now lives on the execution lock) → use the Bash tool to rm it if present; it's dead state from an older plugin version.<SHIPYARD_DATA>/.active-execution.json — Read it, parse JSON. If cleared is set, ignore. Otherwise: if started is >2h old, Write the cleared sentinel automatically; if <2h, show it in the dashboard and AskUserQuestion: "Execution lock found ([skill], started [time]). Still running? (yes, leave it / no, clear it)". On clear, Write the cleared sentinel (which also clears any compaction_count field on the old lock).metrics.md > 300 lines → quarterly rollover. Read the file, split off the older content, use Write to create <SHIPYARD_DATA>/memory/metrics-[quarter].md, then use Edit to truncate the original metrics.md to the current quarter only.BACKLOG.md > 200 lines → archive completed items by Edit (remove their IDs); the underlying feature files keep their status: done|released and are reaped by reap-obsolete after retention.reconcile-log.md > 200 lines → Read it, then use Write to overwrite with the last 10 entries.All fixes are silent. The dashboard shows a summary line at the bottom: "Auto-fixed: N items" with a brief list. Only use AskUserQuestion for destructive ambiguous issues (duplicate IDs, tasks referencing deleted features).
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
SHIPYARD STATUS — [Project Name]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
PRODUCT
Overall: [████████░░] [N]% | [done pts]/[total pts] story points shipped
Epics:
E001: [title] [████████░░] 80% | 24/30 pts
E002: [title] [███░░░░░░░] 30% | 5/18 pts
Pipeline: [N] proposed → [N] approved → [N] in-progress → [N] done → [N] released
Bugs: [N] open | Ideas: [N] pending
SPRINT ([id] — [goal])
Status: [status] (day [N] of ~[M])
Progress: [████████░░] [done pts]/[total pts] pts | [done]/[total] tasks
Waves: [current wave] of [M]
Wave 1: ✅ [N] tasks done
Wave 2: [██░░░] 2/5 tasks | T012 blocked
Wave 3: ⬜ [N] tasks pending
Critical path: [T001 → T003 → T007] — [on track / delayed by T003]
Blocked: [N] ([task IDs + reasons])
Time: ~[N]hrs elapsed | ~[M]hrs remaining (at [X] pts/hr)
CARRY-OVER (from previous sprints)
[N] open bugs | [N] blocked tasks | [N] retro items | [N] incomplete features
(details: /ship-sprint will show these before feature selection)
BACKLOG
Ready to pull: [N] features ([total pts] pts) — next: [top feature by RICE]
Proposed: [N] features awaiting approval
⚠️ Stale: [N] items haven't been touched in 60+ days
⚠️ Zombie stories: [N] items planned in multiple sprints
HEALTH
Velocity: [N] pts/sprint (avg last 3) — trend: [↑/↓/→]
Throughput: [N] pts/hr — trend: [↑/↓/→]
Carry-over rate: [N]% — trend: [↑/↓/→]
Bug rate: [N] bugs/feature
Estimate accuracy: [N]% (planned vs actual)
⚠️ [Any anti-pattern flags]
STATE
✅ All checks passed (or: ⚠️ [N] issues auto-fixed, [M] need attention)
[Brief list of what was fixed, if any]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
NEXT ACTION
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
→ [Most important thing to do right now]
[Specific command or action to take]
Determine the single most important action:
<SHIPYARD_DATA>/reconcile-log.md (use Read to get current contents, then Write back with the appended line — one line per fix with date)Per-feature progress within the sprint, then per-wave task breakdown:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
SPRINT [NNN] — [goal]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
FEATURES
F001: [title] [████████░░] 4/5 tasks | 8 pts
F005: [title] [██████████] 3/3 tasks | 5 pts ✅
WAVES
Wave 1: ✅ complete
✅ T001: [title] (S) — feat(T001): [commit msg]
✅ T002: [title] (M) — feat(T002): [commit msg]
Wave 2: in-progress
✅ T003: [title] (M) — feat(T003): [commit msg]
🔄 T004: [title] (L) — in-progress
⛔ T005: [title] (S) — blocked: [reason]
Wave 3: pending
⬜ T006: [title] (M) — depends on T004
⬜ T007: [title] (S)
CRITICAL PATH: T001 → T003 → T004 → T006
Status: delayed at T004 (in-progress longer than estimate)
TIMING
Started: [date] | Elapsed: [N]hrs active
Throughput: [N] pts/hr this sprint
ETA: ~[M]hrs remaining ([remaining pts] pts at current rate)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Full ranked backlog with RICE scores, epic grouping, staleness flags, proposed features.
Velocity and throughput trends across last 5 sprints:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
HEALTH
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
VELOCITY (pts/sprint)
sprint-001: ████████░░ 16 pts
sprint-002: ██████████ 20 pts
sprint-003: █████████░ 18 pts
sprint-004: ██████████ 21 pts
sprint-005: ████████░░ 17 pts (current)
Avg: 18.4 pts | Trend: → stable
THROUGHPUT (pts/hr)
sprint-001: 6.2 | sprint-002: 7.8 | sprint-003: 8.1
sprint-004: 9.2 | sprint-005: 8.5 (current)
Avg: 7.9 pts/hr | Trend: ↑ improving
ESTIMATE ACCURACY
sprint-001: 72% | sprint-002: 85% | sprint-003: 91%
Avg: 83% | Trend: ↑ improving
CARRY-OVER RATE
sprint-001: 20% | sprint-002: 10% | sprint-003: 5%
Avg: 12% | Trend: ↓ improving
ANTI-PATTERNS
⚠️ Overloading: sprint-005 planned at 110% capacity
✅ No zombie stories
✅ No estimation gaps >50%
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Per-epic completion matrix with feature status indicators and overall product progress:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
SPEC COVERAGE
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Overall: [████████░░] 72% | 86/120 pts shipped
E001: Auth System [██████████] 100% | 30/30 pts
✅ F001: Login ✅ F002: Register ✅ F003: Password Reset
E002: Payments [██████░░░░] 60% | 12/20 pts
✅ F004: Card Pay 🔄 F005: Refunds ⬜ F006: Split Pay
E003: Notifications [██░░░░░░░░] 20% | 4/20 pts
✅ F007: Email ⬜ F008: Push ⬜ F009: In-App
Ungrouped: [░░░░░░░░░░] 0% | 0/10 pts
⬜ F010: Dark Mode ⬜ F011: Export
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Status indicators: ✅ done/released | 🔄 in-progress | ⬜ proposed/approved | ⛔ blocked | ⚠️ needs-attention