shipwright-cli 1.10.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +221 -55
- package/completions/_shipwright +264 -32
- package/completions/shipwright.bash +118 -26
- package/completions/shipwright.fish +80 -2
- package/dashboard/server.ts +208 -0
- package/docs/strategy/01-market-research.md +619 -0
- package/docs/strategy/02-mission-and-brand.md +587 -0
- package/docs/strategy/03-gtm-and-roadmap.md +759 -0
- package/docs/strategy/QUICK-START.txt +289 -0
- package/docs/strategy/README.md +172 -0
- package/docs/tmux-research/TMUX-ARCHITECTURE.md +567 -0
- package/docs/tmux-research/TMUX-AUDIT.md +925 -0
- package/docs/tmux-research/TMUX-BEST-PRACTICES-2025-2026.md +829 -0
- package/docs/tmux-research/TMUX-QUICK-REFERENCE.md +543 -0
- package/docs/tmux-research/TMUX-RESEARCH-INDEX.md +438 -0
- package/package.json +4 -2
- package/scripts/lib/helpers.sh +7 -0
- package/scripts/sw +323 -2
- package/scripts/sw-activity.sh +500 -0
- package/scripts/sw-adaptive.sh +925 -0
- package/scripts/sw-adversarial.sh +1 -1
- package/scripts/sw-architecture-enforcer.sh +1 -1
- package/scripts/sw-auth.sh +613 -0
- package/scripts/sw-autonomous.sh +754 -0
- package/scripts/sw-changelog.sh +704 -0
- package/scripts/sw-checkpoint.sh +1 -1
- package/scripts/sw-ci.sh +602 -0
- package/scripts/sw-cleanup.sh +1 -1
- package/scripts/sw-code-review.sh +698 -0
- package/scripts/sw-connect.sh +1 -1
- package/scripts/sw-context.sh +605 -0
- package/scripts/sw-cost.sh +44 -3
- package/scripts/sw-daemon.sh +568 -138
- package/scripts/sw-dashboard.sh +1 -1
- package/scripts/sw-db.sh +1380 -0
- package/scripts/sw-decompose.sh +539 -0
- package/scripts/sw-deps.sh +551 -0
- package/scripts/sw-developer-simulation.sh +1 -1
- package/scripts/sw-discovery.sh +412 -0
- package/scripts/sw-docs-agent.sh +539 -0
- package/scripts/sw-docs.sh +1 -1
- package/scripts/sw-doctor.sh +107 -1
- package/scripts/sw-dora.sh +615 -0
- package/scripts/sw-durable.sh +710 -0
- package/scripts/sw-e2e-orchestrator.sh +535 -0
- package/scripts/sw-eventbus.sh +393 -0
- package/scripts/sw-feedback.sh +479 -0
- package/scripts/sw-fix.sh +1 -1
- package/scripts/sw-fleet-discover.sh +567 -0
- package/scripts/sw-fleet-viz.sh +404 -0
- package/scripts/sw-fleet.sh +8 -1
- package/scripts/sw-github-app.sh +596 -0
- package/scripts/sw-github-checks.sh +4 -4
- package/scripts/sw-github-deploy.sh +1 -1
- package/scripts/sw-github-graphql.sh +1 -1
- package/scripts/sw-guild.sh +569 -0
- package/scripts/sw-heartbeat.sh +1 -1
- package/scripts/sw-hygiene.sh +559 -0
- package/scripts/sw-incident.sh +656 -0
- package/scripts/sw-init.sh +237 -24
- package/scripts/sw-instrument.sh +699 -0
- package/scripts/sw-intelligence.sh +1 -1
- package/scripts/sw-jira.sh +1 -1
- package/scripts/sw-launchd.sh +363 -28
- package/scripts/sw-linear.sh +1 -1
- package/scripts/sw-logs.sh +1 -1
- package/scripts/sw-loop.sh +267 -21
- package/scripts/sw-memory.sh +18 -1
- package/scripts/sw-mission-control.sh +487 -0
- package/scripts/sw-model-router.sh +545 -0
- package/scripts/sw-otel.sh +596 -0
- package/scripts/sw-oversight.sh +764 -0
- package/scripts/sw-pipeline-composer.sh +1 -1
- package/scripts/sw-pipeline-vitals.sh +1 -1
- package/scripts/sw-pipeline.sh +947 -35
- package/scripts/sw-pm.sh +758 -0
- package/scripts/sw-pr-lifecycle.sh +522 -0
- package/scripts/sw-predictive.sh +8 -1
- package/scripts/sw-prep.sh +1 -1
- package/scripts/sw-ps.sh +1 -1
- package/scripts/sw-public-dashboard.sh +798 -0
- package/scripts/sw-quality.sh +595 -0
- package/scripts/sw-reaper.sh +1 -1
- package/scripts/sw-recruit.sh +2248 -0
- package/scripts/sw-regression.sh +642 -0
- package/scripts/sw-release-manager.sh +736 -0
- package/scripts/sw-release.sh +706 -0
- package/scripts/sw-remote.sh +1 -1
- package/scripts/sw-replay.sh +520 -0
- package/scripts/sw-retro.sh +691 -0
- package/scripts/sw-scale.sh +444 -0
- package/scripts/sw-security-audit.sh +505 -0
- package/scripts/sw-self-optimize.sh +1 -1
- package/scripts/sw-session.sh +1 -1
- package/scripts/sw-setup.sh +263 -127
- package/scripts/sw-standup.sh +712 -0
- package/scripts/sw-status.sh +44 -2
- package/scripts/sw-strategic.sh +806 -0
- package/scripts/sw-stream.sh +450 -0
- package/scripts/sw-swarm.sh +620 -0
- package/scripts/sw-team-stages.sh +511 -0
- package/scripts/sw-templates.sh +4 -4
- package/scripts/sw-testgen.sh +566 -0
- package/scripts/sw-tmux-pipeline.sh +554 -0
- package/scripts/sw-tmux-role-color.sh +58 -0
- package/scripts/sw-tmux-status.sh +128 -0
- package/scripts/sw-tmux.sh +1 -1
- package/scripts/sw-trace.sh +485 -0
- package/scripts/sw-tracker-github.sh +188 -0
- package/scripts/sw-tracker-jira.sh +172 -0
- package/scripts/sw-tracker-linear.sh +251 -0
- package/scripts/sw-tracker.sh +117 -2
- package/scripts/sw-triage.sh +627 -0
- package/scripts/sw-upgrade.sh +1 -1
- package/scripts/sw-ux.sh +677 -0
- package/scripts/sw-webhook.sh +627 -0
- package/scripts/sw-widgets.sh +530 -0
- package/scripts/sw-worktree.sh +1 -1
- package/templates/pipelines/autonomous.json +2 -2
- package/tmux/shipwright-overlay.conf +35 -17
- package/tmux/tmux.conf +23 -21
package/scripts/sw
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
# ╚═══════════════════════════════════════════════════════════════════════════╝
|
|
6
6
|
set -euo pipefail
|
|
7
7
|
|
|
8
|
-
VERSION="1.
|
|
8
|
+
VERSION="2.1.0"
|
|
9
9
|
|
|
10
10
|
# Resolve symlinks (required for npm global install where bin/ symlinks to node_modules/)
|
|
11
11
|
SOURCE="${BASH_SOURCE[0]}"
|
|
@@ -55,6 +55,18 @@ check_in_tmux() {
|
|
|
55
55
|
fi
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
+
ensure_repo_setup() {
|
|
59
|
+
if [[ ! -d ".claude" ]]; then
|
|
60
|
+
error "This repo hasn't been set up for Shipwright."
|
|
61
|
+
echo ""
|
|
62
|
+
echo -e " ${CYAN}${BOLD}Run one of:${RESET}"
|
|
63
|
+
echo -e " ${DIM}shipwright setup${RESET} — guided setup (recommended)"
|
|
64
|
+
echo -e " ${DIM}shipwright init${RESET} — quick setup (no prompts)"
|
|
65
|
+
echo ""
|
|
66
|
+
exit 1
|
|
67
|
+
fi
|
|
68
|
+
}
|
|
69
|
+
|
|
58
70
|
show_version() {
|
|
59
71
|
echo -e "${CYAN}${BOLD}shipwright${RESET} ${DIM}v${VERSION}${RESET} — Orchestrate AI Coding Teams ${DIM}(aliases: sw, cct)${RESET}"
|
|
60
72
|
}
|
|
@@ -64,12 +76,22 @@ show_help() {
|
|
|
64
76
|
echo ""
|
|
65
77
|
echo -e "${BOLD}USAGE${RESET}"
|
|
66
78
|
echo -e " ${CYAN}shipwright${RESET} <command> [options] ${DIM}(also: sw, cct)${RESET}"
|
|
79
|
+
echo -e " ${CYAN}shipwright${RESET} <group> <subcommand> [options]"
|
|
80
|
+
echo ""
|
|
81
|
+
echo -e "${BOLD}COMMAND GROUPS${RESET} ${DIM}(new grouped syntax)${RESET}"
|
|
82
|
+
echo -e " ${CYAN}agent${RESET} <subcmd> ${DIM}Agent management: recruit, swarm, standup, guild, oversight${RESET}"
|
|
83
|
+
echo -e " ${CYAN}quality${RESET} <subcmd> ${DIM}Quality & review: code-review, security-audit, testgen, hygiene${RESET}"
|
|
84
|
+
echo -e " ${CYAN}observe${RESET} <subcmd> ${DIM}Observability: vitals, dora, retro, stream, activity, replay${RESET}"
|
|
85
|
+
echo -e " ${CYAN}release${RESET} <subcmd> ${DIM}Release & deploy: release, release-manager, changelog, deploy${RESET}"
|
|
86
|
+
echo -e " ${CYAN}intel${RESET} <subcmd> ${DIM}Intelligence: predict, intelligence, strategic, optimize${RESET}"
|
|
67
87
|
echo ""
|
|
68
|
-
echo -e "${BOLD}COMMANDS${RESET}"
|
|
88
|
+
echo -e "${BOLD}CORE COMMANDS${RESET} ${DIM}(flat aliases for backwards compat)${RESET}"
|
|
69
89
|
echo -e " ${CYAN}session${RESET} [name] Create a new tmux window for a Claude team"
|
|
70
90
|
echo -e " ${CYAN}status${RESET} [--json] Show dashboard of running teams and agents"
|
|
91
|
+
echo -e " ${CYAN}mission-control|mc${RESET} Terminal-based pipeline mission control (drill-down, team tree, orchestration)"
|
|
71
92
|
echo -e " ${CYAN}ps${RESET} Show running agent processes and status"
|
|
72
93
|
echo -e " ${CYAN}logs${RESET} [team] [opts] View and search agent pane logs"
|
|
94
|
+
echo -e " ${CYAN}activity${RESET} [cmd] [opts] Live agent activity stream — watch Claude think"
|
|
73
95
|
echo -e " ${CYAN}templates${RESET} [list|show] Manage team composition templates"
|
|
74
96
|
echo -e " ${CYAN}doctor${RESET} Validate your setup and check for issues"
|
|
75
97
|
echo -e " ${CYAN}cleanup${RESET} [--force] Clean up orphaned team sessions"
|
|
@@ -79,26 +101,74 @@ show_help() {
|
|
|
79
101
|
echo -e " ${CYAN}pipeline${RESET} <cmd> ${BOLD}Full delivery pipeline${RESET} — idea to production"
|
|
80
102
|
echo -e " ${CYAN}worktree${RESET} <cmd> Manage git worktrees for agent isolation"
|
|
81
103
|
echo -e " ${CYAN}prep${RESET} [options] ${BOLD}Repo preparation${RESET} — generate .claude/ configs for agents"
|
|
104
|
+
echo -e " ${CYAN}hygiene${RESET} <cmd> ${BOLD}Repo hygiene${RESET} — dead code, structure, deps, cleanup"
|
|
82
105
|
echo -e " ${CYAN}daemon${RESET} <cmd> ${BOLD}Issue watcher${RESET} — auto-process GitHub issues"
|
|
106
|
+
echo -e " ${CYAN}autonomous|auto${RESET} <cmd> ${BOLD}Autonomous loop${RESET} — AI-building-AI: analyze, create, build, learn"
|
|
83
107
|
echo -e " ${CYAN}memory${RESET} <cmd> ${BOLD}Persistent memory${RESET} — learn from every pipeline run"
|
|
108
|
+
echo -e " ${CYAN}guild${RESET} <cmd> ${BOLD}Knowledge guilds${RESET} — cross-team learning, shared patterns"
|
|
109
|
+
echo -e " ${CYAN}instrument${RESET} <cmd> ${BOLD}Pipeline instrumentation${RESET} — record predicted vs actual metrics"
|
|
84
110
|
echo -e " ${CYAN}cost${RESET} <cmd> ${BOLD}Cost intelligence${RESET} — track tokens, budgets, model routing"
|
|
111
|
+
echo -e " ${CYAN}adaptive${RESET} <cmd> ${BOLD}Adaptive tuning${RESET} — data-driven pipeline defaults from historical runs"
|
|
112
|
+
echo -e " ${CYAN}regression${RESET} <cmd> ${BOLD}Regression detection${RESET} — detect regressions after merge"
|
|
113
|
+
echo -e " ${CYAN}incident${RESET} <cmd> ${BOLD}Incident commander${RESET} — detect failures, triage, remediate"
|
|
114
|
+
echo -e " ${CYAN}db${RESET} <cmd> ${BOLD}SQLite persistence${RESET} — events, runs, developers, metrics"
|
|
115
|
+
echo -e " ${CYAN}deps${RESET} <cmd> ${BOLD}Dependency updates${RESET} — scan, classify, test, merge Dependabot/Renovate PRs"
|
|
85
116
|
echo -e " ${CYAN}fleet${RESET} <cmd> ${BOLD}Multi-repo fleet${RESET} — orchestrate daemons across repos"
|
|
117
|
+
echo -e " ${CYAN}fleet-viz${RESET} <cmd> ${BOLD}Fleet visualization${RESET} — cross-repo insights and queue"
|
|
86
118
|
echo -e " ${CYAN}fix${RESET} \"goal\" [opts] ${BOLD}Bulk fix${RESET} — apply a fix across multiple repos"
|
|
87
119
|
echo -e " ${CYAN}dashboard${RESET} <cmd> ${BOLD}Fleet Command${RESET} — real-time WebSocket dashboard"
|
|
120
|
+
echo -e " ${CYAN}public-dashboard${RESET} <cmd> ${BOLD}Public dashboard${RESET} — shareable pipeline progress (static HTML)"
|
|
121
|
+
echo -e " ${CYAN}share${RESET} [...] ${BOLD}Share pipeline${RESET} — alias for ${DIM}public-dashboard share${RESET}"
|
|
88
122
|
echo -e " ${CYAN}jira${RESET} <cmd> ${BOLD}Jira sync${RESET} — bidirectional issue sync with Jira"
|
|
89
123
|
echo -e " ${CYAN}linear${RESET} <cmd> ${BOLD}Linear sync${RESET} — bidirectional issue sync with Linear"
|
|
124
|
+
echo -e " ${CYAN}model${RESET} <cmd> ${BOLD}Model router${RESET} — intelligent model routing and cost optimization"
|
|
90
125
|
echo -e " ${CYAN}tracker${RESET} <cmd> ${BOLD}Issue tracker${RESET} — configure Linear/Jira integration"
|
|
91
126
|
echo -e " ${CYAN}heartbeat${RESET} <cmd> ${BOLD}Agent heartbeat${RESET} — write/check/list/clear heartbeats"
|
|
127
|
+
echo -e " ${CYAN}standup${RESET} <cmd> ${BOLD}Daily standups${RESET} — gather status, summarize work, report blockers"
|
|
92
128
|
echo -e " ${CYAN}checkpoint${RESET} <cmd> ${BOLD}Checkpoints${RESET} — save/restore agent state mid-stage"
|
|
129
|
+
echo -e " ${CYAN}durable${RESET} <cmd> ${BOLD}Durable workflow${RESET} — event log, checkpoints, locks, exactly-once"
|
|
130
|
+
echo -e " ${CYAN}webhook${RESET} <cmd> ${BOLD}GitHub webhooks${RESET} — instant issue processing, no polling"
|
|
131
|
+
echo -e " ${CYAN}decompose${RESET} <cmd> ${BOLD}Issue decomposer${RESET} — analyze complexity, auto-create subtasks"
|
|
132
|
+
echo -e " ${CYAN}discovery${RESET} <cmd> ${BOLD}Cross-pipeline learning${RESET} — real-time knowledge sharing"
|
|
93
133
|
echo -e " ${CYAN}connect${RESET} <cmd> ${BOLD}Team connect${RESET} — sync local state to team dashboard"
|
|
94
134
|
echo -e " ${CYAN}remote${RESET} <cmd> ${BOLD}Remote machines${RESET} — register and manage distributed workers"
|
|
95
135
|
echo -e " ${CYAN}launchd${RESET} <cmd> ${BOLD}Process supervision${RESET} — auto-start daemon + dashboard on boot"
|
|
136
|
+
echo -e " ${CYAN}auth${RESET} <cmd> ${BOLD}GitHub authentication${RESET} — OAuth login, token management, multi-user"
|
|
96
137
|
echo -e " ${CYAN}docs${RESET} <cmd> ${BOLD}Documentation keeper${RESET} — auto-sync docs from source"
|
|
138
|
+
echo -e " ${CYAN}changelog${RESET} <cmd> ${BOLD}Changelog engine${RESET} — auto-generate release notes and migration guides"
|
|
139
|
+
echo -e " ${CYAN}docs-agent${RESET} <cmd> ${BOLD}Autonomous docs agent${RESET} — scan gaps, sync, coverage, API ref"
|
|
140
|
+
echo -e " ${CYAN}release${RESET} <cmd> ${BOLD}Release automation${RESET} — bump versions, changelog, tags, releases"
|
|
141
|
+
echo -e " ${CYAN}release-manager|rm${RESET} ${BOLD}Autonomous release pipeline${RESET} — readiness checks, RC flow, rollback"
|
|
142
|
+
echo -e " ${CYAN}replay${RESET} <cmd> ${BOLD}Pipeline DVR${RESET} — list, show, narrative, diff, export, compare runs"
|
|
143
|
+
echo -e " ${CYAN}scale${RESET} <cmd> ${BOLD}Dynamic team scaling${RESET} — scale agents up/down during pipeline"
|
|
144
|
+
echo -e " ${CYAN}swarm${RESET} <cmd> ${BOLD}Agent swarm manager${RESET} — registry, spawning, scaling, health, topology"
|
|
145
|
+
echo -e " ${CYAN}dora${RESET} <cmd> ${BOLD}DORA metrics${RESET} — deploy frequency, lead time, CFR, MTTR dashboard"
|
|
146
|
+
echo -e " ${CYAN}retro${RESET} <cmd> ${BOLD}Sprint retrospective${RESET} — analyze sprints, identify improvements, create actions"
|
|
97
147
|
echo -e " ${CYAN}tmux${RESET} <cmd> ${BOLD}tmux health${RESET} — doctor, install plugins, fix issues"
|
|
98
148
|
echo -e " ${CYAN}vitals${RESET} ${BOLD}Pipeline vitals${RESET} — real-time health scoring and dashboard"
|
|
149
|
+
echo -e " ${CYAN}stream${RESET} ${BOLD}Terminal streaming${RESET} — live agent output to dashboard or CLI"
|
|
99
150
|
echo -e " ${CYAN}github${RESET} ${BOLD}GitHub context${RESET} — repo metadata, security, blame"
|
|
100
151
|
echo -e " ${CYAN}checks${RESET} ${BOLD}GitHub checks${RESET} — CI check runs and status"
|
|
152
|
+
echo -e " ${CYAN}ci${RESET} ${BOLD}CI/CD orchestration${RESET} — workflow generation, matrix, caching, secrets"
|
|
101
153
|
echo -e " ${CYAN}deploys${RESET} ${BOLD}Deployments${RESET} — deployment history and environments"
|
|
154
|
+
echo -e " ${CYAN}github-app${RESET} ${BOLD}GitHub App management${RESET} — JWT, tokens, webhooks, manifest"
|
|
155
|
+
echo -e " ${CYAN}pr${RESET} ${BOLD}PR lifecycle${RESET} — auto-review, merge, cleanup, feedback"
|
|
156
|
+
echo -e " ${CYAN}context${RESET} ${BOLD}Context engine${RESET} — gather context for pipeline stages"
|
|
157
|
+
echo -e " ${CYAN}trace${RESET} ${BOLD}E2E traceability${RESET} — issue to commit to PR to deploy"
|
|
158
|
+
echo -e " ${CYAN}widgets${RESET} ${BOLD}Status widgets${RESET} — embeddable badges, Slack messages, markdown"
|
|
159
|
+
echo -e " ${CYAN}eventbus${RESET} ${BOLD}Event bus${RESET} — real-time inter-component communication"
|
|
160
|
+
echo -e " ${CYAN}otel${RESET} ${BOLD}OpenTelemetry observability${RESET} — Prometheus metrics, traces, OTLP export"
|
|
161
|
+
echo -e " ${CYAN}triage${RESET} ${BOLD}Issue labeling & prioritization${RESET} — auto-analyze, label, score, team sizing"
|
|
162
|
+
echo -e " ${CYAN}quality${RESET} ${BOLD}Quality validation${RESET} — ruthless gates, adversarial audits, completion detection"
|
|
163
|
+
echo -e " ${CYAN}oversight${RESET} ${BOLD}Quality oversight board${RESET} — multi-agent review council, voting, architecture governance"
|
|
164
|
+
echo -e " ${CYAN}code-review${RESET} ${BOLD}Autonomous code review${RESET} — clean code, SOLID, architecture boundaries, complexity"
|
|
165
|
+
echo -e " ${CYAN}pm${RESET} ${BOLD}Autonomous PM agent${RESET} — intelligent team sizing, composition, orchestration"
|
|
166
|
+
echo -e " ${CYAN}strategic${RESET} ${BOLD}Strategic intelligence${RESET} — analyze strategy, metrics, create improvement issues"
|
|
167
|
+
echo -e " ${CYAN}team-stages${RESET} ${BOLD}Multi-agent stage execution${RESET} — compose teams, delegate tasks, tally votes"
|
|
168
|
+
echo -e " ${CYAN}ux${RESET} ${BOLD}Premium UX layer${RESET} — themes, animations, shortcuts, accessibility"
|
|
169
|
+
echo -e " ${CYAN}recruit${RESET} ${BOLD}Agent recruitment${RESET} — skill matching, role definitions, performance evaluation"
|
|
170
|
+
echo -e " ${CYAN}testgen${RESET} ${BOLD}Test generation${RESET} — analyze coverage, generate tests, maintain thresholds"
|
|
171
|
+
echo -e " ${CYAN}security-audit|audit${RESET} ${BOLD}Security auditing${RESET} — secrets, licenses, vulnerabilities, SBOM, compliance"
|
|
102
172
|
echo -e " ${CYAN}init${RESET} ${BOLD}Quick tmux setup${RESET} — one command, no prompts"
|
|
103
173
|
echo -e " ${CYAN}setup${RESET} ${BOLD}Guided setup${RESET} — prerequisites, init, doctor, quick start"
|
|
104
174
|
echo -e " ${CYAN}help${RESET} Show this help message"
|
|
@@ -154,6 +224,7 @@ show_help() {
|
|
|
154
224
|
echo -e " ${DIM}shipwright daemon test${RESET} # Run daemon test suite"
|
|
155
225
|
echo -e " ${DIM}shipwright prep test${RESET} # Run prep test suite"
|
|
156
226
|
echo -e " ${DIM}shipwright pipeline test${RESET} # Run pipeline test suite"
|
|
227
|
+
echo -e " ${DIM}shipwright e2e${RESET} <cmd> ${BOLD}Test orchestration${RESET} — smoke/integration/regression"
|
|
157
228
|
echo ""
|
|
158
229
|
echo -e "${BOLD}AUDIT & QUALITY${RESET} ${DIM}(loop guardrails)${RESET}"
|
|
159
230
|
echo -e " ${DIM}shipwright loop \"goal\" --audit${RESET} # Self-reflection each iteration"
|
|
@@ -181,13 +252,107 @@ show_help() {
|
|
|
181
252
|
echo -e "${DIM}Docs: https://sethdford.github.io/shipwright | GitHub: https://github.com/sethdford/shipwright${RESET}"
|
|
182
253
|
}
|
|
183
254
|
|
|
255
|
+
# ─── Command Group Routers ───────────────────────────────────────────────────
|
|
256
|
+
|
|
257
|
+
route_agent() {
|
|
258
|
+
local subcmd="${1:-help}"
|
|
259
|
+
shift 2>/dev/null || true
|
|
260
|
+
case "$subcmd" in
|
|
261
|
+
recruit) exec "$SCRIPT_DIR/sw-recruit.sh" "$@" ;;
|
|
262
|
+
swarm) exec "$SCRIPT_DIR/sw-swarm.sh" "$@" ;;
|
|
263
|
+
standup) exec "$SCRIPT_DIR/sw-standup.sh" "$@" ;;
|
|
264
|
+
guild) exec "$SCRIPT_DIR/sw-guild.sh" "$@" ;;
|
|
265
|
+
oversight) exec "$SCRIPT_DIR/sw-oversight.sh" "$@" ;;
|
|
266
|
+
help|*) echo "Usage: shipwright agent {recruit|swarm|standup|guild|oversight}"; exit 1 ;;
|
|
267
|
+
esac
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
route_quality() {
|
|
271
|
+
local subcmd="${1:-help}"
|
|
272
|
+
shift 2>/dev/null || true
|
|
273
|
+
case "$subcmd" in
|
|
274
|
+
code-review) exec "$SCRIPT_DIR/sw-code-review.sh" "$@" ;;
|
|
275
|
+
security-audit|audit) exec "$SCRIPT_DIR/sw-security-audit.sh" "$@" ;;
|
|
276
|
+
testgen) exec "$SCRIPT_DIR/sw-testgen.sh" "$@" ;;
|
|
277
|
+
hygiene) exec "$SCRIPT_DIR/sw-hygiene.sh" "$@" ;;
|
|
278
|
+
help|*) echo "Usage: shipwright quality {code-review|security-audit|testgen|hygiene}"; exit 1 ;;
|
|
279
|
+
esac
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
route_observe() {
|
|
283
|
+
local subcmd="${1:-help}"
|
|
284
|
+
shift 2>/dev/null || true
|
|
285
|
+
case "$subcmd" in
|
|
286
|
+
vitals) exec "$SCRIPT_DIR/sw-pipeline-vitals.sh" "$@" ;;
|
|
287
|
+
dora) exec "$SCRIPT_DIR/sw-dora.sh" "$@" ;;
|
|
288
|
+
retro) exec "$SCRIPT_DIR/sw-retro.sh" "$@" ;;
|
|
289
|
+
stream) exec "$SCRIPT_DIR/sw-stream.sh" "$@" ;;
|
|
290
|
+
activity) exec "$SCRIPT_DIR/sw-activity.sh" "$@" ;;
|
|
291
|
+
replay) exec "$SCRIPT_DIR/sw-replay.sh" "$@" ;;
|
|
292
|
+
status) exec "$SCRIPT_DIR/sw-status.sh" "$@" ;;
|
|
293
|
+
help|*) echo "Usage: shipwright observe {vitals|dora|retro|stream|activity|replay|status}"; exit 1 ;;
|
|
294
|
+
esac
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
route_release() {
|
|
298
|
+
local subcmd="${1:-help}"
|
|
299
|
+
shift 2>/dev/null || true
|
|
300
|
+
case "$subcmd" in
|
|
301
|
+
release) exec "$SCRIPT_DIR/sw-release.sh" "$@" ;;
|
|
302
|
+
release-manager) exec "$SCRIPT_DIR/sw-release-manager.sh" "$@" ;;
|
|
303
|
+
changelog) exec "$SCRIPT_DIR/sw-changelog.sh" "$@" ;;
|
|
304
|
+
deploy|deploys) exec "$SCRIPT_DIR/sw-github-deploy.sh" "$@" ;;
|
|
305
|
+
help|*) echo "Usage: shipwright release {release|release-manager|changelog|deploy}"; exit 1 ;;
|
|
306
|
+
esac
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
route_intel() {
|
|
310
|
+
local subcmd="${1:-help}"
|
|
311
|
+
shift 2>/dev/null || true
|
|
312
|
+
case "$subcmd" in
|
|
313
|
+
predict) exec "$SCRIPT_DIR/sw-predictive.sh" "$@" ;;
|
|
314
|
+
intelligence) exec "$SCRIPT_DIR/sw-intelligence.sh" "$@" ;;
|
|
315
|
+
strategic) exec "$SCRIPT_DIR/sw-strategic.sh" "$@" ;;
|
|
316
|
+
optimize) exec "$SCRIPT_DIR/sw-self-optimize.sh" "$@" ;;
|
|
317
|
+
help|*) echo "Usage: shipwright intel {predict|intelligence|strategic|optimize}"; exit 1 ;;
|
|
318
|
+
esac
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
# ─── Welcome message helper ──────────────────────────────────────────────────
|
|
322
|
+
show_welcome() {
|
|
323
|
+
echo ""
|
|
324
|
+
echo -e "${CYAN}${BOLD} Welcome to Shipwright v${VERSION}!${RESET}"
|
|
325
|
+
echo -e "${DIM} ════════════════════════════════════════════${RESET}"
|
|
326
|
+
echo ""
|
|
327
|
+
echo -e " It looks like this repo hasn't been set up yet."
|
|
328
|
+
echo ""
|
|
329
|
+
echo -e " ${CYAN}${BOLD}→${RESET} For guided setup (4 phases): ${DIM}shipwright setup${RESET}"
|
|
330
|
+
echo -e " ${CYAN}${BOLD}→${RESET} For quick setup (no prompts): ${DIM}shipwright init${RESET}"
|
|
331
|
+
echo -e " ${CYAN}${BOLD}→${RESET} For full help: ${DIM}shipwright help${RESET}"
|
|
332
|
+
echo ""
|
|
333
|
+
}
|
|
334
|
+
|
|
184
335
|
# ─── Command Router ──────────────────────────────────────────────────────────
|
|
185
336
|
|
|
186
337
|
main() {
|
|
187
338
|
local cmd="${1:-help}"
|
|
339
|
+
|
|
340
|
+
# Special case: if no arguments and .claude/ doesn't exist, show welcome
|
|
341
|
+
if [[ "$#" -eq 0 && ! -d ".claude" && ! -d "$(pwd)/.claude" ]]; then
|
|
342
|
+
show_welcome
|
|
343
|
+
return 0
|
|
344
|
+
fi
|
|
345
|
+
|
|
188
346
|
shift 2>/dev/null || true
|
|
189
347
|
|
|
190
348
|
case "$cmd" in
|
|
349
|
+
# Command groups
|
|
350
|
+
agent) route_agent "$@" ;;
|
|
351
|
+
quality) route_quality "$@" ;;
|
|
352
|
+
observe) route_observe "$@" ;;
|
|
353
|
+
release) route_release "$@" ;;
|
|
354
|
+
intel) route_intel "$@" ;;
|
|
355
|
+
|
|
191
356
|
session)
|
|
192
357
|
check_tmux
|
|
193
358
|
check_in_tmux
|
|
@@ -197,6 +362,9 @@ main() {
|
|
|
197
362
|
check_tmux
|
|
198
363
|
exec "$SCRIPT_DIR/sw-status.sh" "$@"
|
|
199
364
|
;;
|
|
365
|
+
mission-control|mc)
|
|
366
|
+
exec "$SCRIPT_DIR/sw-mission-control.sh" "$@"
|
|
367
|
+
;;
|
|
200
368
|
ps)
|
|
201
369
|
check_tmux
|
|
202
370
|
exec "$SCRIPT_DIR/sw-ps.sh" "$@"
|
|
@@ -204,6 +372,9 @@ main() {
|
|
|
204
372
|
logs)
|
|
205
373
|
exec "$SCRIPT_DIR/sw-logs.sh" "$@"
|
|
206
374
|
;;
|
|
375
|
+
activity)
|
|
376
|
+
exec "$SCRIPT_DIR/sw-activity.sh" "$@"
|
|
377
|
+
;;
|
|
207
378
|
templates)
|
|
208
379
|
exec "$SCRIPT_DIR/sw-templates.sh" "$@"
|
|
209
380
|
;;
|
|
@@ -233,18 +404,48 @@ main() {
|
|
|
233
404
|
prep)
|
|
234
405
|
exec "$SCRIPT_DIR/sw-prep.sh" "$@"
|
|
235
406
|
;;
|
|
407
|
+
hygiene)
|
|
408
|
+
exec "$SCRIPT_DIR/sw-hygiene.sh" "$@"
|
|
409
|
+
;;
|
|
236
410
|
daemon)
|
|
237
411
|
exec "$SCRIPT_DIR/sw-daemon.sh" "$@"
|
|
238
412
|
;;
|
|
413
|
+
autonomous|auto)
|
|
414
|
+
exec "$SCRIPT_DIR/sw-autonomous.sh" "$@"
|
|
415
|
+
;;
|
|
239
416
|
memory)
|
|
240
417
|
exec "$SCRIPT_DIR/sw-memory.sh" "$@"
|
|
241
418
|
;;
|
|
419
|
+
guild)
|
|
420
|
+
exec "$SCRIPT_DIR/sw-guild.sh" "$@"
|
|
421
|
+
;;
|
|
422
|
+
instrument)
|
|
423
|
+
exec "$SCRIPT_DIR/sw-instrument.sh" "$@"
|
|
424
|
+
;;
|
|
242
425
|
cost)
|
|
243
426
|
exec "$SCRIPT_DIR/sw-cost.sh" "$@"
|
|
244
427
|
;;
|
|
428
|
+
adaptive)
|
|
429
|
+
exec "$SCRIPT_DIR/sw-adaptive.sh" "$@"
|
|
430
|
+
;;
|
|
431
|
+
regression)
|
|
432
|
+
exec "$SCRIPT_DIR/sw-regression.sh" "$@"
|
|
433
|
+
;;
|
|
434
|
+
incident)
|
|
435
|
+
exec "$SCRIPT_DIR/sw-incident.sh" "$@"
|
|
436
|
+
;;
|
|
437
|
+
db)
|
|
438
|
+
exec "$SCRIPT_DIR/sw-db.sh" "$@"
|
|
439
|
+
;;
|
|
440
|
+
deps)
|
|
441
|
+
exec "$SCRIPT_DIR/sw-deps.sh" "$@"
|
|
442
|
+
;;
|
|
245
443
|
fleet)
|
|
246
444
|
exec "$SCRIPT_DIR/sw-fleet.sh" "$@"
|
|
247
445
|
;;
|
|
446
|
+
fleet-viz)
|
|
447
|
+
exec "$SCRIPT_DIR/sw-fleet-viz.sh" "$@"
|
|
448
|
+
;;
|
|
248
449
|
fix)
|
|
249
450
|
exec "$SCRIPT_DIR/sw-fix.sh" "$@"
|
|
250
451
|
;;
|
|
@@ -257,21 +458,36 @@ main() {
|
|
|
257
458
|
dashboard|dash)
|
|
258
459
|
exec "$SCRIPT_DIR/sw-dashboard.sh" "$@"
|
|
259
460
|
;;
|
|
461
|
+
public-dashboard|share)
|
|
462
|
+
exec "$SCRIPT_DIR/sw-public-dashboard.sh" "$@"
|
|
463
|
+
;;
|
|
260
464
|
jira)
|
|
261
465
|
exec "$SCRIPT_DIR/sw-jira.sh" "$@"
|
|
262
466
|
;;
|
|
263
467
|
linear)
|
|
264
468
|
exec "$SCRIPT_DIR/sw-linear.sh" "$@"
|
|
265
469
|
;;
|
|
470
|
+
model)
|
|
471
|
+
exec "$SCRIPT_DIR/sw-model-router.sh" "$@"
|
|
472
|
+
;;
|
|
266
473
|
tracker)
|
|
267
474
|
exec "$SCRIPT_DIR/sw-tracker.sh" "$@"
|
|
268
475
|
;;
|
|
269
476
|
heartbeat)
|
|
270
477
|
exec "$SCRIPT_DIR/sw-heartbeat.sh" "$@"
|
|
271
478
|
;;
|
|
479
|
+
standup)
|
|
480
|
+
exec "$SCRIPT_DIR/sw-standup.sh" "$@"
|
|
481
|
+
;;
|
|
272
482
|
checkpoint)
|
|
273
483
|
exec "$SCRIPT_DIR/sw-checkpoint.sh" "$@"
|
|
274
484
|
;;
|
|
485
|
+
durable)
|
|
486
|
+
exec "$SCRIPT_DIR/sw-durable.sh" "$@"
|
|
487
|
+
;;
|
|
488
|
+
webhook)
|
|
489
|
+
exec "$SCRIPT_DIR/sw-webhook.sh" "$@"
|
|
490
|
+
;;
|
|
275
491
|
connect)
|
|
276
492
|
exec "$SCRIPT_DIR/sw-connect.sh" "$@"
|
|
277
493
|
;;
|
|
@@ -281,6 +497,9 @@ main() {
|
|
|
281
497
|
launchd)
|
|
282
498
|
exec "$SCRIPT_DIR/sw-launchd.sh" "$@"
|
|
283
499
|
;;
|
|
500
|
+
auth)
|
|
501
|
+
exec "$SCRIPT_DIR/sw-auth.sh" "$@"
|
|
502
|
+
;;
|
|
284
503
|
intelligence|intel)
|
|
285
504
|
exec "$SCRIPT_DIR/sw-intelligence.sh" "$@"
|
|
286
505
|
;;
|
|
@@ -296,27 +515,129 @@ main() {
|
|
|
296
515
|
simulation)
|
|
297
516
|
exec "$SCRIPT_DIR/sw-developer-simulation.sh" "$@"
|
|
298
517
|
;;
|
|
518
|
+
strategic|strategy)
|
|
519
|
+
exec "$SCRIPT_DIR/sw-strategic.sh" "$@"
|
|
520
|
+
;;
|
|
299
521
|
architecture)
|
|
300
522
|
exec "$SCRIPT_DIR/sw-architecture-enforcer.sh" "$@"
|
|
301
523
|
;;
|
|
302
524
|
vitals)
|
|
303
525
|
exec "$SCRIPT_DIR/sw-pipeline-vitals.sh" "$@"
|
|
304
526
|
;;
|
|
527
|
+
stream)
|
|
528
|
+
exec "$SCRIPT_DIR/sw-stream.sh" "$@"
|
|
529
|
+
;;
|
|
305
530
|
docs)
|
|
306
531
|
exec "$SCRIPT_DIR/sw-docs.sh" "$@"
|
|
307
532
|
;;
|
|
533
|
+
changelog)
|
|
534
|
+
exec "$SCRIPT_DIR/sw-changelog.sh" "$@"
|
|
535
|
+
;;
|
|
536
|
+
docs-agent)
|
|
537
|
+
exec "$SCRIPT_DIR/sw-docs-agent.sh" "$@"
|
|
538
|
+
;;
|
|
539
|
+
release)
|
|
540
|
+
exec "$SCRIPT_DIR/sw-release.sh" "$@"
|
|
541
|
+
;;
|
|
542
|
+
release-manager|rm)
|
|
543
|
+
exec "$SCRIPT_DIR/sw-release-manager.sh" "$@"
|
|
544
|
+
;;
|
|
545
|
+
replay)
|
|
546
|
+
exec "$SCRIPT_DIR/sw-replay.sh" "$@"
|
|
547
|
+
;;
|
|
548
|
+
scale)
|
|
549
|
+
exec "$SCRIPT_DIR/sw-scale.sh" "$@"
|
|
550
|
+
;;
|
|
551
|
+
swarm)
|
|
552
|
+
exec "$SCRIPT_DIR/sw-swarm.sh" "$@"
|
|
553
|
+
;;
|
|
554
|
+
dora)
|
|
555
|
+
exec "$SCRIPT_DIR/sw-dora.sh" "$@"
|
|
556
|
+
;;
|
|
557
|
+
retro)
|
|
558
|
+
exec "$SCRIPT_DIR/sw-retro.sh" "$@"
|
|
559
|
+
;;
|
|
308
560
|
tmux)
|
|
309
561
|
exec "$SCRIPT_DIR/sw-tmux.sh" "$@"
|
|
310
562
|
;;
|
|
563
|
+
tmux-pipeline)
|
|
564
|
+
exec "$SCRIPT_DIR/sw-tmux-pipeline.sh" "$@"
|
|
565
|
+
;;
|
|
311
566
|
github|gh-context)
|
|
312
567
|
exec "$SCRIPT_DIR/sw-github-graphql.sh" "$@"
|
|
313
568
|
;;
|
|
314
569
|
checks)
|
|
315
570
|
exec "$SCRIPT_DIR/sw-github-checks.sh" "$@"
|
|
316
571
|
;;
|
|
572
|
+
ci)
|
|
573
|
+
exec "$SCRIPT_DIR/sw-ci.sh" "$@"
|
|
574
|
+
;;
|
|
317
575
|
deploys|deployments)
|
|
318
576
|
exec "$SCRIPT_DIR/sw-github-deploy.sh" "$@"
|
|
319
577
|
;;
|
|
578
|
+
github-app)
|
|
579
|
+
exec "$SCRIPT_DIR/sw-github-app.sh" "$@"
|
|
580
|
+
;;
|
|
581
|
+
decompose)
|
|
582
|
+
exec "$SCRIPT_DIR/sw-decompose.sh" "$@"
|
|
583
|
+
;;
|
|
584
|
+
discovery)
|
|
585
|
+
exec "$SCRIPT_DIR/sw-discovery.sh" "$@"
|
|
586
|
+
;;
|
|
587
|
+
context)
|
|
588
|
+
exec "$SCRIPT_DIR/sw-context.sh" "$@"
|
|
589
|
+
;;
|
|
590
|
+
trace)
|
|
591
|
+
exec "$SCRIPT_DIR/sw-trace.sh" "$@"
|
|
592
|
+
;;
|
|
593
|
+
pr)
|
|
594
|
+
exec "$SCRIPT_DIR/sw-pr-lifecycle.sh" "$@"
|
|
595
|
+
;;
|
|
596
|
+
widgets)
|
|
597
|
+
exec "$SCRIPT_DIR/sw-widgets.sh" "$@"
|
|
598
|
+
;;
|
|
599
|
+
feedback)
|
|
600
|
+
exec "$SCRIPT_DIR/sw-feedback.sh" "$@"
|
|
601
|
+
;;
|
|
602
|
+
eventbus)
|
|
603
|
+
exec "$SCRIPT_DIR/sw-eventbus.sh" "$@"
|
|
604
|
+
;;
|
|
605
|
+
otel)
|
|
606
|
+
exec "$SCRIPT_DIR/sw-otel.sh" "$@"
|
|
607
|
+
;;
|
|
608
|
+
triage)
|
|
609
|
+
exec "$SCRIPT_DIR/sw-triage.sh" "$@"
|
|
610
|
+
;;
|
|
611
|
+
quality)
|
|
612
|
+
exec "$SCRIPT_DIR/sw-quality.sh" "$@"
|
|
613
|
+
;;
|
|
614
|
+
oversight)
|
|
615
|
+
exec "$SCRIPT_DIR/sw-oversight.sh" "$@"
|
|
616
|
+
;;
|
|
617
|
+
code-review)
|
|
618
|
+
exec "$SCRIPT_DIR/sw-code-review.sh" "$@"
|
|
619
|
+
;;
|
|
620
|
+
pm)
|
|
621
|
+
exec "$SCRIPT_DIR/sw-pm.sh" "$@"
|
|
622
|
+
;;
|
|
623
|
+
team-stages)
|
|
624
|
+
exec "$SCRIPT_DIR/sw-team-stages.sh" "$@"
|
|
625
|
+
;;
|
|
626
|
+
ux)
|
|
627
|
+
exec "$SCRIPT_DIR/sw-ux.sh" "$@"
|
|
628
|
+
;;
|
|
629
|
+
recruit)
|
|
630
|
+
exec "$SCRIPT_DIR/sw-recruit.sh" "$@"
|
|
631
|
+
;;
|
|
632
|
+
testgen)
|
|
633
|
+
exec "$SCRIPT_DIR/sw-testgen.sh" "$@"
|
|
634
|
+
;;
|
|
635
|
+
e2e)
|
|
636
|
+
exec "$SCRIPT_DIR/sw-e2e-orchestrator.sh" "$@"
|
|
637
|
+
;;
|
|
638
|
+
security-audit|audit)
|
|
639
|
+
exec "$SCRIPT_DIR/sw-security-audit.sh" "$@"
|
|
640
|
+
;;
|
|
320
641
|
help|--help|-h)
|
|
321
642
|
show_help
|
|
322
643
|
;;
|