shipwright-cli 1.7.0 → 1.9.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.
Files changed (106) hide show
  1. package/.claude/agents/code-reviewer.md +90 -0
  2. package/.claude/agents/devops-engineer.md +142 -0
  3. package/.claude/agents/pipeline-agent.md +80 -0
  4. package/.claude/agents/shell-script-specialist.md +150 -0
  5. package/.claude/agents/test-specialist.md +196 -0
  6. package/.claude/hooks/post-tool-use.sh +38 -0
  7. package/.claude/hooks/pre-tool-use.sh +25 -0
  8. package/.claude/hooks/session-started.sh +37 -0
  9. package/README.md +212 -814
  10. package/claude-code/CLAUDE.md.shipwright +54 -0
  11. package/claude-code/hooks/notify-idle.sh +2 -2
  12. package/claude-code/hooks/session-start.sh +24 -0
  13. package/claude-code/hooks/task-completed.sh +6 -2
  14. package/claude-code/settings.json.template +12 -0
  15. package/dashboard/public/app.js +4422 -0
  16. package/dashboard/public/index.html +816 -0
  17. package/dashboard/public/styles.css +4755 -0
  18. package/dashboard/server.ts +4315 -0
  19. package/docs/KNOWN-ISSUES.md +18 -10
  20. package/docs/TIPS.md +38 -26
  21. package/docs/patterns/README.md +33 -23
  22. package/package.json +9 -5
  23. package/scripts/adapters/iterm2-adapter.sh +1 -1
  24. package/scripts/adapters/tmux-adapter.sh +52 -23
  25. package/scripts/adapters/wezterm-adapter.sh +26 -14
  26. package/scripts/lib/compat.sh +200 -0
  27. package/scripts/lib/helpers.sh +72 -0
  28. package/scripts/postinstall.mjs +72 -13
  29. package/scripts/{cct → sw} +109 -21
  30. package/scripts/sw-adversarial.sh +274 -0
  31. package/scripts/sw-architecture-enforcer.sh +330 -0
  32. package/scripts/sw-checkpoint.sh +390 -0
  33. package/scripts/{cct-cleanup.sh → sw-cleanup.sh} +3 -1
  34. package/scripts/sw-connect.sh +619 -0
  35. package/scripts/{cct-cost.sh → sw-cost.sh} +368 -34
  36. package/scripts/{cct-daemon.sh → sw-daemon.sh} +2217 -204
  37. package/scripts/sw-dashboard.sh +477 -0
  38. package/scripts/sw-developer-simulation.sh +252 -0
  39. package/scripts/sw-docs.sh +635 -0
  40. package/scripts/sw-doctor.sh +907 -0
  41. package/scripts/{cct-fix.sh → sw-fix.sh} +10 -6
  42. package/scripts/{cct-fleet.sh → sw-fleet.sh} +498 -22
  43. package/scripts/sw-github-checks.sh +521 -0
  44. package/scripts/sw-github-deploy.sh +533 -0
  45. package/scripts/sw-github-graphql.sh +972 -0
  46. package/scripts/sw-heartbeat.sh +293 -0
  47. package/scripts/sw-init.sh +522 -0
  48. package/scripts/sw-intelligence.sh +1196 -0
  49. package/scripts/sw-jira.sh +643 -0
  50. package/scripts/sw-launchd.sh +364 -0
  51. package/scripts/sw-linear.sh +648 -0
  52. package/scripts/{cct-logs.sh → sw-logs.sh} +72 -2
  53. package/scripts/{cct-loop.sh → sw-loop.sh} +534 -44
  54. package/scripts/{cct-memory.sh → sw-memory.sh} +321 -38
  55. package/scripts/sw-patrol-meta.sh +417 -0
  56. package/scripts/sw-pipeline-composer.sh +455 -0
  57. package/scripts/{cct-pipeline.sh → sw-pipeline.sh} +2319 -178
  58. package/scripts/sw-predictive.sh +820 -0
  59. package/scripts/{cct-prep.sh → sw-prep.sh} +339 -49
  60. package/scripts/{cct-ps.sh → sw-ps.sh} +6 -4
  61. package/scripts/{cct-reaper.sh → sw-reaper.sh} +6 -4
  62. package/scripts/sw-remote.sh +687 -0
  63. package/scripts/sw-self-optimize.sh +947 -0
  64. package/scripts/sw-session.sh +519 -0
  65. package/scripts/sw-setup.sh +234 -0
  66. package/scripts/sw-status.sh +605 -0
  67. package/scripts/{cct-templates.sh → sw-templates.sh} +9 -4
  68. package/scripts/sw-tmux.sh +591 -0
  69. package/scripts/sw-tracker-jira.sh +277 -0
  70. package/scripts/sw-tracker-linear.sh +292 -0
  71. package/scripts/sw-tracker.sh +409 -0
  72. package/scripts/{cct-upgrade.sh → sw-upgrade.sh} +103 -46
  73. package/scripts/{cct-worktree.sh → sw-worktree.sh} +3 -0
  74. package/templates/pipelines/autonomous.json +27 -5
  75. package/templates/pipelines/full.json +12 -0
  76. package/templates/pipelines/standard.json +12 -0
  77. package/tmux/{claude-teams-overlay.conf → shipwright-overlay.conf} +27 -9
  78. package/tmux/templates/accessibility.json +34 -0
  79. package/tmux/templates/api-design.json +35 -0
  80. package/tmux/templates/architecture.json +1 -0
  81. package/tmux/templates/bug-fix.json +9 -0
  82. package/tmux/templates/code-review.json +1 -0
  83. package/tmux/templates/compliance.json +36 -0
  84. package/tmux/templates/data-pipeline.json +36 -0
  85. package/tmux/templates/debt-paydown.json +34 -0
  86. package/tmux/templates/devops.json +1 -0
  87. package/tmux/templates/documentation.json +1 -0
  88. package/tmux/templates/exploration.json +1 -0
  89. package/tmux/templates/feature-dev.json +1 -0
  90. package/tmux/templates/full-stack.json +8 -0
  91. package/tmux/templates/i18n.json +34 -0
  92. package/tmux/templates/incident-response.json +36 -0
  93. package/tmux/templates/migration.json +1 -0
  94. package/tmux/templates/observability.json +35 -0
  95. package/tmux/templates/onboarding.json +33 -0
  96. package/tmux/templates/performance.json +35 -0
  97. package/tmux/templates/refactor.json +1 -0
  98. package/tmux/templates/release.json +35 -0
  99. package/tmux/templates/security-audit.json +8 -0
  100. package/tmux/templates/spike.json +34 -0
  101. package/tmux/templates/testing.json +1 -0
  102. package/tmux/tmux.conf +98 -9
  103. package/scripts/cct-doctor.sh +0 -328
  104. package/scripts/cct-init.sh +0 -282
  105. package/scripts/cct-session.sh +0 -284
  106. package/scripts/cct-status.sh +0 -169
@@ -20,6 +20,12 @@ This project uses [Shipwright](https://github.com/sethdford/shipwright) for auto
20
20
  | `shipwright cost budget set <amount>` | Set daily budget limit |
21
21
  | `shipwright cost remaining-budget` | Check remaining daily budget (used by auto-scaler) |
22
22
  | `shipwright memory list` | View captured failure patterns |
23
+ | `shipwright dashboard` | Real-time web dashboard (requires Bun) |
24
+ | `shipwright dashboard start` | Start dashboard in background |
25
+ | `shipwright heartbeat list` | Show agent heartbeat status |
26
+ | `shipwright checkpoint list` | Show saved pipeline checkpoints |
27
+ | `shipwright remote list` | Show registered machines |
28
+ | `shipwright remote add <name> --host <h>` | Register a remote worker machine |
23
29
 
24
30
  ## Pipeline Stages
25
31
 
@@ -123,3 +129,51 @@ Generate with `shipwright daemon init`, then edit `.claude/daemon-config.json`:
123
129
  | `auto_template` | `false` | Pick pipeline template by issue complexity |
124
130
  | `max_retries` | `2` | Retry failed pipelines with escalation |
125
131
  | `priority_lane` | `false` | Reserve a slot for urgent/hotfix issues |
132
+
133
+ ## Failure Recovery
134
+
135
+ ### When Tests Fail
136
+
137
+ 1. Read the full test output — don't guess at the failure
138
+ 2. Identify the failing test and the assertion that broke
139
+ 3. Fix the code (not the test, unless the test is wrong)
140
+ 4. Re-run the specific failing test first, then the full suite
141
+ 5. If the fix touches shared code, check for regressions in related tests
142
+ 6. Document what caused the failure in your task update
143
+
144
+ ### When Merge Conflicts Arise
145
+
146
+ 1. Run `git status` to see all conflicted files
147
+ 2. Resolve one file at a time — read both versions before choosing
148
+ 3. Check `.claude/CLAUDE.md` for project conventions that may affect resolution
149
+ 4. After resolving, run the test suite to verify nothing broke
150
+ 5. If unsure about a resolution, ask the team lead before committing
151
+
152
+ ### When Context Window Gets Tight
153
+
154
+ 1. The PreCompact hook automatically saves context before compaction
155
+ 2. Summarize your progress and next steps before context is lost
156
+ 3. Break remaining work into smaller, self-contained tasks
157
+ 4. Use `shipwright memory show` to review captured learnings
158
+ 5. Focus on completing the current task rather than starting new ones
159
+
160
+ ### When a Pipeline Fails
161
+
162
+ 1. Check the pipeline state: `cat .claude/pipeline-state.md`
163
+ 2. Review logs for the failed stage
164
+ 3. Fix the issue, then resume: `shipwright pipeline resume`
165
+ 4. If the failure is infrastructure-related, use `--worktree` for isolation
166
+ 5. Use `shipwright memory show` — previous failures may have relevant fixes
167
+
168
+ ### Recovery Commands
169
+
170
+ | Command | Purpose |
171
+ |---------|---------|
172
+ | `shipwright pipeline resume` | Resume from last completed stage |
173
+ | `shipwright memory show` | View captured failure patterns |
174
+ | `shipwright doctor` | Diagnose setup issues |
175
+ | `shipwright status` | Check team and agent status |
176
+ | `shipwright cleanup --force` | Kill orphaned sessions |
177
+ | `shipwright worktree create <branch>` | Isolate work in a git worktree |
178
+ | `git stash` | Temporarily save uncommitted changes |
179
+ | `git diff --name-only HEAD~1` | See files changed in last commit |
@@ -27,9 +27,9 @@
27
27
  set -euo pipefail
28
28
 
29
29
  if [[ "$(uname)" == "Darwin" ]]; then
30
- osascript -e 'display notification "An agent needs your attention" with title "Claude Code Teams" sound name "Ping"'
30
+ osascript -e 'display notification "An agent needs your attention" with title "Shipwright" sound name "Ping"'
31
31
  elif command -v notify-send &>/dev/null; then
32
- notify-send "Claude Code Teams" "An agent needs your attention" --urgency=normal
32
+ notify-send "Shipwright" "An agent needs your attention" --urgency=normal
33
33
  fi
34
34
 
35
35
  exit 0
@@ -0,0 +1,24 @@
1
+ #!/usr/bin/env bash
2
+ # SessionStart hook — inject Shipwright project context at session start
3
+ # Timeout: 5s | Exit: always 0 (never blocks)
4
+ set -euo pipefail
5
+
6
+ # Only activate in Shipwright-managed projects
7
+ CLAUDE_DIR=".claude"
8
+ [[ -f "$CLAUDE_DIR/pipeline-state.md" || -f "$CLAUDE_DIR/CLAUDE.md" ]] || exit 0
9
+
10
+ echo "Shipwright project detected."
11
+
12
+ # Show last pipeline status if available
13
+ if [[ -f "$CLAUDE_DIR/pipeline-state.md" ]]; then
14
+ echo "Last pipeline status:"
15
+ head -5 "$CLAUDE_DIR/pipeline-state.md" 2>/dev/null || true
16
+ echo ""
17
+ fi
18
+
19
+ # Remind about project conventions
20
+ if [[ -f "$CLAUDE_DIR/CLAUDE.md" ]]; then
21
+ echo "Project conventions available in .claude/CLAUDE.md"
22
+ fi
23
+
24
+ exit 0
@@ -131,8 +131,12 @@ while IFS= read -r file; do
131
131
  done <<< "$CHANGED_FILES"
132
132
 
133
133
  if [[ ${#TEST_FILES[@]} -gt 0 ]]; then
134
- # Deduplicate
135
- readarray -t TEST_FILES < <(printf '%s\n' "${TEST_FILES[@]}" | sort -u)
134
+ # Deduplicate (bash 3.2 compatible — no readarray)
135
+ _deduped=()
136
+ while IFS= read -r _f; do
137
+ [[ -n "$_f" ]] && _deduped+=("$_f")
138
+ done < <(printf '%s\n' "${TEST_FILES[@]}" | sort -u)
139
+ TEST_FILES=("${_deduped[@]}")
136
140
 
137
141
  echo "Running ${#TEST_FILES[@]} related test file(s)..."
138
142
 
@@ -99,6 +99,18 @@
99
99
  }
100
100
  ]
101
101
  }
102
+ ],
103
+ // Project context injection at session start
104
+ "SessionStart": [
105
+ {
106
+ "hooks": [
107
+ {
108
+ "type": "command",
109
+ "command": "~/.claude/hooks/session-start.sh",
110
+ "timeout": 5
111
+ }
112
+ ]
113
+ }
102
114
  ]
103
115
  },
104
116