shipwright-cli 1.7.1 → 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.
- package/.claude/agents/code-reviewer.md +90 -0
- package/.claude/agents/devops-engineer.md +142 -0
- package/.claude/agents/pipeline-agent.md +80 -0
- package/.claude/agents/shell-script-specialist.md +150 -0
- package/.claude/agents/test-specialist.md +196 -0
- package/.claude/hooks/post-tool-use.sh +38 -0
- package/.claude/hooks/pre-tool-use.sh +25 -0
- package/.claude/hooks/session-started.sh +37 -0
- package/README.md +212 -814
- package/claude-code/CLAUDE.md.shipwright +54 -0
- package/claude-code/hooks/notify-idle.sh +2 -2
- package/claude-code/hooks/session-start.sh +24 -0
- package/claude-code/hooks/task-completed.sh +6 -2
- package/claude-code/settings.json.template +12 -0
- package/dashboard/public/app.js +4422 -0
- package/dashboard/public/index.html +816 -0
- package/dashboard/public/styles.css +4755 -0
- package/dashboard/server.ts +4315 -0
- package/docs/KNOWN-ISSUES.md +18 -10
- package/docs/TIPS.md +38 -26
- package/docs/patterns/README.md +33 -23
- package/package.json +9 -5
- package/scripts/adapters/iterm2-adapter.sh +1 -1
- package/scripts/adapters/tmux-adapter.sh +52 -23
- package/scripts/adapters/wezterm-adapter.sh +26 -14
- package/scripts/lib/compat.sh +200 -0
- package/scripts/lib/helpers.sh +72 -0
- package/scripts/postinstall.mjs +72 -13
- package/scripts/{cct → sw} +109 -21
- package/scripts/sw-adversarial.sh +274 -0
- package/scripts/sw-architecture-enforcer.sh +330 -0
- package/scripts/sw-checkpoint.sh +390 -0
- package/scripts/{cct-cleanup.sh → sw-cleanup.sh} +3 -1
- package/scripts/sw-connect.sh +619 -0
- package/scripts/{cct-cost.sh → sw-cost.sh} +368 -34
- package/scripts/{cct-daemon.sh → sw-daemon.sh} +2217 -204
- package/scripts/sw-dashboard.sh +477 -0
- package/scripts/sw-developer-simulation.sh +252 -0
- package/scripts/sw-docs.sh +635 -0
- package/scripts/sw-doctor.sh +907 -0
- package/scripts/{cct-fix.sh → sw-fix.sh} +10 -6
- package/scripts/{cct-fleet.sh → sw-fleet.sh} +498 -22
- package/scripts/sw-github-checks.sh +521 -0
- package/scripts/sw-github-deploy.sh +533 -0
- package/scripts/sw-github-graphql.sh +972 -0
- package/scripts/sw-heartbeat.sh +293 -0
- package/scripts/{cct-init.sh → sw-init.sh} +144 -11
- package/scripts/sw-intelligence.sh +1196 -0
- package/scripts/sw-jira.sh +643 -0
- package/scripts/sw-launchd.sh +364 -0
- package/scripts/sw-linear.sh +648 -0
- package/scripts/{cct-logs.sh → sw-logs.sh} +72 -2
- package/scripts/{cct-loop.sh → sw-loop.sh} +534 -44
- package/scripts/{cct-memory.sh → sw-memory.sh} +321 -38
- package/scripts/sw-patrol-meta.sh +417 -0
- package/scripts/sw-pipeline-composer.sh +455 -0
- package/scripts/{cct-pipeline.sh → sw-pipeline.sh} +2319 -178
- package/scripts/sw-predictive.sh +820 -0
- package/scripts/{cct-prep.sh → sw-prep.sh} +339 -49
- package/scripts/{cct-ps.sh → sw-ps.sh} +6 -4
- package/scripts/{cct-reaper.sh → sw-reaper.sh} +6 -4
- package/scripts/sw-remote.sh +687 -0
- package/scripts/sw-self-optimize.sh +947 -0
- package/scripts/sw-session.sh +519 -0
- package/scripts/sw-setup.sh +234 -0
- package/scripts/sw-status.sh +605 -0
- package/scripts/{cct-templates.sh → sw-templates.sh} +9 -4
- package/scripts/sw-tmux.sh +591 -0
- package/scripts/sw-tracker-jira.sh +277 -0
- package/scripts/sw-tracker-linear.sh +292 -0
- package/scripts/sw-tracker.sh +409 -0
- package/scripts/{cct-upgrade.sh → sw-upgrade.sh} +103 -46
- package/scripts/{cct-worktree.sh → sw-worktree.sh} +3 -0
- package/templates/pipelines/autonomous.json +27 -5
- package/templates/pipelines/full.json +12 -0
- package/templates/pipelines/standard.json +12 -0
- package/tmux/{claude-teams-overlay.conf → shipwright-overlay.conf} +27 -9
- package/tmux/templates/accessibility.json +34 -0
- package/tmux/templates/api-design.json +35 -0
- package/tmux/templates/architecture.json +1 -0
- package/tmux/templates/bug-fix.json +9 -0
- package/tmux/templates/code-review.json +1 -0
- package/tmux/templates/compliance.json +36 -0
- package/tmux/templates/data-pipeline.json +36 -0
- package/tmux/templates/debt-paydown.json +34 -0
- package/tmux/templates/devops.json +1 -0
- package/tmux/templates/documentation.json +1 -0
- package/tmux/templates/exploration.json +1 -0
- package/tmux/templates/feature-dev.json +1 -0
- package/tmux/templates/full-stack.json +8 -0
- package/tmux/templates/i18n.json +34 -0
- package/tmux/templates/incident-response.json +36 -0
- package/tmux/templates/migration.json +1 -0
- package/tmux/templates/observability.json +35 -0
- package/tmux/templates/onboarding.json +33 -0
- package/tmux/templates/performance.json +35 -0
- package/tmux/templates/refactor.json +1 -0
- package/tmux/templates/release.json +35 -0
- package/tmux/templates/security-audit.json +8 -0
- package/tmux/templates/spike.json +34 -0
- package/tmux/templates/testing.json +1 -0
- package/tmux/tmux.conf +98 -9
- package/scripts/cct-doctor.sh +0 -414
- package/scripts/cct-session.sh +0 -284
- 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 "
|
|
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 "
|
|
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
|
-
|
|
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
|
|