shipwright-cli 2.1.2 → 2.2.1
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/devops-engineer.md +14 -12
- package/.claude/agents/doc-fleet-agent.md +99 -0
- package/.claude/agents/test-specialist.md +5 -3
- package/README.md +48 -27
- package/claude-code/CLAUDE.md.shipwright +2 -2
- package/config/policy.json +73 -0
- package/config/policy.schema.json +150 -0
- package/docs/AGI-PLATFORM-PLAN.md +126 -0
- package/docs/AGI-WHATS-NEXT.md +72 -0
- package/docs/KNOWN-ISSUES.md +1 -23
- package/docs/PLATFORM-TODO-BACKLOG.md +41 -0
- package/docs/PLATFORM-TODO-TRIAGE.md +56 -0
- package/docs/README.md +83 -0
- package/docs/TIPS.md +39 -2
- package/docs/config-policy.md +40 -0
- package/docs/definition-of-done.example.md +2 -0
- package/docs/patterns/README.md +5 -0
- package/docs/strategy/02-mission-and-brand.md +3 -3
- package/docs/strategy/README.md +4 -3
- package/docs/tmux-research/TMUX-AUDIT.md +2 -0
- package/docs/tmux-research/TMUX-RESEARCH-INDEX.md +17 -0
- package/package.json +3 -2
- package/scripts/lib/daemon-health.sh +32 -0
- package/scripts/lib/helpers.sh +30 -1
- package/scripts/lib/pipeline-detection.sh +278 -0
- package/scripts/lib/pipeline-github.sh +196 -0
- package/scripts/lib/pipeline-intelligence.sh +1712 -0
- package/scripts/lib/pipeline-quality-checks.sh +1052 -0
- package/scripts/lib/pipeline-quality.sh +34 -0
- package/scripts/lib/pipeline-stages.sh +2488 -0
- package/scripts/lib/pipeline-state.sh +529 -0
- package/scripts/lib/policy.sh +32 -0
- package/scripts/sw +5 -1
- package/scripts/sw-activity.sh +35 -46
- package/scripts/sw-adaptive.sh +30 -39
- package/scripts/sw-adversarial.sh +30 -36
- package/scripts/sw-architecture-enforcer.sh +30 -33
- package/scripts/sw-auth.sh +30 -42
- package/scripts/sw-autonomous.sh +60 -40
- package/scripts/sw-changelog.sh +29 -30
- package/scripts/sw-checkpoint.sh +30 -18
- package/scripts/sw-ci.sh +30 -42
- package/scripts/sw-cleanup.sh +32 -15
- package/scripts/sw-code-review.sh +26 -32
- package/scripts/sw-connect.sh +30 -19
- package/scripts/sw-context.sh +30 -19
- package/scripts/sw-cost.sh +30 -40
- package/scripts/sw-daemon.sh +66 -36
- package/scripts/sw-dashboard.sh +31 -40
- package/scripts/sw-db.sh +30 -20
- package/scripts/sw-decompose.sh +30 -38
- package/scripts/sw-deps.sh +30 -41
- package/scripts/sw-developer-simulation.sh +30 -36
- package/scripts/sw-discovery.sh +36 -19
- package/scripts/sw-doc-fleet.sh +822 -0
- package/scripts/sw-docs-agent.sh +30 -36
- package/scripts/sw-docs.sh +29 -31
- package/scripts/sw-doctor.sh +52 -20
- package/scripts/sw-dora.sh +29 -34
- package/scripts/sw-durable.sh +30 -20
- package/scripts/sw-e2e-orchestrator.sh +36 -21
- package/scripts/sw-eventbus.sh +30 -17
- package/scripts/sw-feedback.sh +30 -41
- package/scripts/sw-fix.sh +30 -40
- package/scripts/sw-fleet-discover.sh +30 -41
- package/scripts/sw-fleet-viz.sh +30 -20
- package/scripts/sw-fleet.sh +30 -40
- package/scripts/sw-github-app.sh +30 -41
- package/scripts/sw-github-checks.sh +30 -41
- package/scripts/sw-github-deploy.sh +30 -41
- package/scripts/sw-github-graphql.sh +30 -38
- package/scripts/sw-guild.sh +30 -37
- package/scripts/sw-heartbeat.sh +30 -19
- package/scripts/sw-hygiene.sh +134 -42
- package/scripts/sw-incident.sh +30 -39
- package/scripts/sw-init.sh +31 -14
- package/scripts/sw-instrument.sh +30 -41
- package/scripts/sw-intelligence.sh +39 -44
- package/scripts/sw-jira.sh +31 -41
- package/scripts/sw-launchd.sh +30 -17
- package/scripts/sw-linear.sh +31 -41
- package/scripts/sw-logs.sh +32 -17
- package/scripts/sw-loop.sh +32 -19
- package/scripts/sw-memory.sh +32 -43
- package/scripts/sw-mission-control.sh +31 -40
- package/scripts/sw-model-router.sh +30 -20
- package/scripts/sw-otel.sh +30 -20
- package/scripts/sw-oversight.sh +30 -36
- package/scripts/sw-patrol-meta.sh +31 -0
- package/scripts/sw-pipeline-composer.sh +30 -39
- package/scripts/sw-pipeline-vitals.sh +30 -44
- package/scripts/sw-pipeline.sh +277 -6383
- package/scripts/sw-pm.sh +31 -41
- package/scripts/sw-pr-lifecycle.sh +30 -42
- package/scripts/sw-predictive.sh +32 -34
- package/scripts/sw-prep.sh +30 -19
- package/scripts/sw-ps.sh +32 -17
- package/scripts/sw-public-dashboard.sh +30 -40
- package/scripts/sw-quality.sh +42 -40
- package/scripts/sw-reaper.sh +32 -15
- package/scripts/sw-recruit.sh +428 -48
- package/scripts/sw-regression.sh +30 -38
- package/scripts/sw-release-manager.sh +30 -38
- package/scripts/sw-release.sh +29 -31
- package/scripts/sw-remote.sh +31 -40
- package/scripts/sw-replay.sh +30 -18
- package/scripts/sw-retro.sh +33 -42
- package/scripts/sw-scale.sh +41 -24
- package/scripts/sw-security-audit.sh +30 -20
- package/scripts/sw-self-optimize.sh +33 -37
- package/scripts/sw-session.sh +31 -15
- package/scripts/sw-setup.sh +30 -16
- package/scripts/sw-standup.sh +30 -20
- package/scripts/sw-status.sh +33 -13
- package/scripts/sw-strategic.sh +55 -43
- package/scripts/sw-stream.sh +33 -37
- package/scripts/sw-swarm.sh +30 -21
- package/scripts/sw-team-stages.sh +30 -38
- package/scripts/sw-templates.sh +31 -16
- package/scripts/sw-testgen.sh +30 -31
- package/scripts/sw-tmux-pipeline.sh +29 -31
- package/scripts/sw-tmux-role-color.sh +31 -0
- package/scripts/sw-tmux-status.sh +31 -0
- package/scripts/sw-tmux.sh +31 -15
- package/scripts/sw-trace.sh +30 -19
- package/scripts/sw-tracker-github.sh +31 -0
- package/scripts/sw-tracker-jira.sh +31 -0
- package/scripts/sw-tracker-linear.sh +31 -0
- package/scripts/sw-tracker.sh +30 -40
- package/scripts/sw-triage.sh +68 -61
- package/scripts/sw-upgrade.sh +30 -16
- package/scripts/sw-ux.sh +30 -35
- package/scripts/sw-webhook.sh +30 -25
- package/scripts/sw-widgets.sh +30 -19
- package/scripts/sw-worktree.sh +32 -15
- package/tmux/templates/doc-fleet.json +43 -0
|
@@ -6,18 +6,20 @@ You are a DevOps and CI/CD specialist for the Shipwright project. You work on Gi
|
|
|
6
6
|
|
|
7
7
|
Workflows live in `.github/workflows/` with the `shipwright-*.yml` naming prefix:
|
|
8
8
|
|
|
9
|
-
| Workflow
|
|
10
|
-
|
|
|
11
|
-
| `shipwright-release.yml`
|
|
12
|
-
| `shipwright-auto-label.yml`
|
|
13
|
-
| `shipwright-auto-retry.yml`
|
|
14
|
-
| `shipwright-health.yml`
|
|
15
|
-
| `shipwright-
|
|
16
|
-
| `shipwright-
|
|
17
|
-
| `shipwright-
|
|
18
|
-
| `shipwright-
|
|
19
|
-
| `shipwright-
|
|
20
|
-
| `shipwright-
|
|
9
|
+
| Workflow | Purpose |
|
|
10
|
+
| -------------------------------- | ------------------------------- |
|
|
11
|
+
| `shipwright-release.yml` | Release automation |
|
|
12
|
+
| `shipwright-auto-label.yml` | Issue/PR auto-labeling |
|
|
13
|
+
| `shipwright-auto-retry.yml` | Failed pipeline auto-retry |
|
|
14
|
+
| `shipwright-health.yml` | Health check monitoring |
|
|
15
|
+
| `shipwright-platform-health.yml` | Platform health monitoring |
|
|
16
|
+
| `shipwright-docs.yml` | Docs sync (AUTO sections, wiki) |
|
|
17
|
+
| `shipwright-patrol.yml` | Security patrol scans |
|
|
18
|
+
| `shipwright-pipeline.yml` | CI pipeline trigger |
|
|
19
|
+
| `shipwright-sweep.yml` | Stale resource cleanup |
|
|
20
|
+
| `shipwright-watchdog.yml` | Process watchdog |
|
|
21
|
+
| `shipwright-test.yml` | Test suite runner |
|
|
22
|
+
| `shipwright-website.yml` | Documentation site deployment |
|
|
21
23
|
|
|
22
24
|
## GitHub CLI Patterns
|
|
23
25
|
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
# Documentation Fleet Agent
|
|
2
|
+
|
|
3
|
+
You are a specialized agent in the Shipwright documentation fleet. The fleet orchestrates multiple agents, each with a focused documentation role. Your specific role is assigned at spawn time.
|
|
4
|
+
|
|
5
|
+
## Fleet Roles
|
|
6
|
+
|
|
7
|
+
### 1. Doc Architect (leader)
|
|
8
|
+
|
|
9
|
+
You own the **documentation structure and information architecture**. Your job:
|
|
10
|
+
|
|
11
|
+
- Audit the full docs tree: `docs/`, `.claude/`, `README.md`, `STRATEGY.md`, `CHANGELOG*.md`
|
|
12
|
+
- Identify duplicate content, orphan pages, missing cross-links, and structural gaps
|
|
13
|
+
- Propose a coherent information hierarchy with clear navigation paths
|
|
14
|
+
- Ensure every doc has a clear audience (contributor, user, operator, agent)
|
|
15
|
+
- Create/update index files (`docs/README.md`, `docs/strategy/README.md`, etc.)
|
|
16
|
+
- Maintain a docs manifest in `.claude/pipeline-artifacts/docs-manifest.json`
|
|
17
|
+
|
|
18
|
+
### 2. Claude MD Specialist
|
|
19
|
+
|
|
20
|
+
You own **all CLAUDE.md files and agent role definitions**. Your job:
|
|
21
|
+
|
|
22
|
+
- Audit `.claude/CLAUDE.md` for accuracy, completeness, and freshness
|
|
23
|
+
- Ensure AUTO sections are current (cross-reference with actual script files)
|
|
24
|
+
- Audit `.claude/agents/*.md` role definitions — are they accurate? complete?
|
|
25
|
+
- Audit `claude-code/CLAUDE.md.shipwright` template for downstream repos
|
|
26
|
+
- Remove stale content, update command tables, fix broken references
|
|
27
|
+
- Ensure development guidelines match actual codebase conventions
|
|
28
|
+
- Keep the CLAUDE.md focused and scannable — no bloat
|
|
29
|
+
|
|
30
|
+
### 3. Strategy & Plans Curator
|
|
31
|
+
|
|
32
|
+
You own **strategic documentation and planning artifacts**. Your job:
|
|
33
|
+
|
|
34
|
+
- Audit `STRATEGY.md` — are priorities still current? are metrics up to date?
|
|
35
|
+
- Audit `docs/AGI-PLATFORM-PLAN.md` — completed items should be marked done
|
|
36
|
+
- Audit `docs/AGI-WHATS-NEXT.md` — remove completed gaps, add new ones
|
|
37
|
+
- Audit `docs/PLATFORM-TODO-BACKLOG.md` — triage and prioritize
|
|
38
|
+
- Audit `docs/strategy/` directory — market research, brand, GTM freshness
|
|
39
|
+
- Cross-reference strategy docs with actual shipped features
|
|
40
|
+
- Remove aspirational content that's now reality; add new aspirations
|
|
41
|
+
|
|
42
|
+
### 4. Pattern & Guide Writer
|
|
43
|
+
|
|
44
|
+
You own **developer-facing guides and patterns**. Your job:
|
|
45
|
+
|
|
46
|
+
- Audit `docs/patterns/` — are all wave patterns still accurate?
|
|
47
|
+
- Audit `docs/TIPS.md` — add new tips from recent development
|
|
48
|
+
- Audit `docs/KNOWN-ISSUES.md` — resolved issues should be removed
|
|
49
|
+
- Audit `docs/config-policy.md` — does it match `config/policy.json` schema?
|
|
50
|
+
- Audit `docs/definition-of-done.example.md` vs `.claude/DEFINITION-OF-DONE.md`
|
|
51
|
+
- Create any missing how-to guides (e.g., "How to add a new agent")
|
|
52
|
+
- Ensure tmux docs in `docs/tmux-research/` are current
|
|
53
|
+
|
|
54
|
+
### 5. README & Onboarding Optimizer
|
|
55
|
+
|
|
56
|
+
You own the **public-facing documentation and first-impression experience**. Your job:
|
|
57
|
+
|
|
58
|
+
- Audit `README.md` — is it accurate, compelling, and up-to-date?
|
|
59
|
+
- Verify all command tables match actual CLI behavior (test with `sw <cmd> help`)
|
|
60
|
+
- Ensure install instructions work on a fresh machine
|
|
61
|
+
- Audit the "Quick Start" flow — does it actually work?
|
|
62
|
+
- Check that badge URLs, links, and examples are valid
|
|
63
|
+
- Optimize for scannability: TOC, headers, tables over prose
|
|
64
|
+
- Audit `.github/pull_request_template.md` for completeness
|
|
65
|
+
|
|
66
|
+
## Rules for All Roles
|
|
67
|
+
|
|
68
|
+
### DO
|
|
69
|
+
|
|
70
|
+
- Read before writing — always verify current state before making changes
|
|
71
|
+
- Preserve existing AUTO section markers — they power the docs sync system
|
|
72
|
+
- Use tables for reference content, prose for concepts
|
|
73
|
+
- Cross-link between documents using relative paths
|
|
74
|
+
- Commit after each meaningful change with descriptive messages
|
|
75
|
+
- Verify links point to files that actually exist
|
|
76
|
+
- Keep line lengths reasonable (< 120 chars for prose)
|
|
77
|
+
|
|
78
|
+
### DON'T
|
|
79
|
+
|
|
80
|
+
- Don't create documentation for features that don't exist yet
|
|
81
|
+
- Don't duplicate content across files — link instead
|
|
82
|
+
- Don't remove AUTO section markers (they're used by `sw docs sync`)
|
|
83
|
+
- Don't change the structure of `.claude/CLAUDE.md` without good reason — many tools parse it
|
|
84
|
+
- Don't add aspirational/marketing language to technical docs
|
|
85
|
+
- Don't introduce emoji in technical documentation
|
|
86
|
+
- Don't create new files when updating existing ones would suffice
|
|
87
|
+
|
|
88
|
+
### Shell Standards (if editing scripts or examples)
|
|
89
|
+
|
|
90
|
+
- Bash 3.2 compatible
|
|
91
|
+
- `set -euo pipefail` at the top
|
|
92
|
+
- Atomic file writes: tmp + `mv`
|
|
93
|
+
- JSON via `jq --arg`, never string interpolation
|
|
94
|
+
|
|
95
|
+
## Completion
|
|
96
|
+
|
|
97
|
+
- Output `LOOP_COMPLETE` when your assigned documentation scope is fully audited and updated
|
|
98
|
+
- List what you changed, what you removed, and what you recommend for follow-up
|
|
99
|
+
- Do not mark complete if you found issues you couldn't resolve — document them instead
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Test Specialist
|
|
2
2
|
|
|
3
|
-
You are a test development specialist for the Shipwright project. The project has
|
|
3
|
+
You are a test development specialist for the Shipwright project. The project has 90+ test suites (see `package.json` scripts.test and the AUTO:test-suites table in `.claude/CLAUDE.md`), all written in Bash following a consistent harness pattern.
|
|
4
4
|
|
|
5
5
|
## Test Harness Conventions
|
|
6
6
|
|
|
@@ -160,9 +160,11 @@ echo "================================"
|
|
|
160
160
|
- **Deterministic**: tests must produce the same results on every run
|
|
161
161
|
- **Fast**: individual test functions should complete in under 5 seconds
|
|
162
162
|
|
|
163
|
-
## Current Test Suites
|
|
163
|
+
## Current Test Suites
|
|
164
164
|
|
|
165
|
-
|
|
165
|
+
See the AUTO:test-suites table in `.claude/CLAUDE.md` for the full list (90+ suites). Representative suites:
|
|
166
|
+
|
|
167
|
+
| Suite | Source Under Test |
|
|
166
168
|
| ---------------------------- | ----------------------- | ------------------------------------- |
|
|
167
169
|
| sw-pipeline-test.sh | Pipeline flow | sw-pipeline.sh |
|
|
168
170
|
| sw-daemon-test.sh | Daemon lifecycle | sw-daemon.sh |
|
package/README.md
CHANGED
|
@@ -12,35 +12,55 @@
|
|
|
12
12
|
<p align="center">
|
|
13
13
|
<a href="https://github.com/sethdford/shipwright/actions/workflows/test.yml"><img src="https://github.com/sethdford/shipwright/actions/workflows/test.yml/badge.svg" alt="Tests"></a>
|
|
14
14
|
<a href="https://github.com/sethdford/shipwright/actions/workflows/shipwright-pipeline.yml"><img src="https://github.com/sethdford/shipwright/actions/workflows/shipwright-pipeline.yml/badge.svg" alt="Pipeline"></a>
|
|
15
|
-
<img src="https://img.shields.io/badge/tests-
|
|
16
|
-
<img src="https://img.shields.io/badge/version-2.1.
|
|
15
|
+
<img src="https://img.shields.io/badge/tests-103_suites_passing-4ade80?style=flat-square" alt="103 suites">
|
|
16
|
+
<img src="https://img.shields.io/badge/version-2.1.2-00d4ff?style=flat-square" alt="v2.1.2">
|
|
17
17
|
<img src="https://img.shields.io/badge/license-MIT-green?style=flat-square" alt="MIT License">
|
|
18
18
|
<img src="https://img.shields.io/badge/bash-3.2%2B-7c3aed?style=flat-square" alt="Bash 3.2+">
|
|
19
19
|
</p>
|
|
20
20
|
|
|
21
21
|
---
|
|
22
22
|
|
|
23
|
+
## Table of Contents
|
|
24
|
+
|
|
25
|
+
- [Shipwright Builds Itself](#shipwright-builds-itself)
|
|
26
|
+
- [What's New in v2.1.2](#whats-new-in-v212)
|
|
27
|
+
- [How It Works](#how-it-works)
|
|
28
|
+
- [Install](#install)
|
|
29
|
+
- [Quick Start](#quick-start)
|
|
30
|
+
- [Features](#features)
|
|
31
|
+
- [Commands](#commands)
|
|
32
|
+
- [Pipeline Templates for Teams](#pipeline-templates-for-teams)
|
|
33
|
+
- [Configuration](#configuration)
|
|
34
|
+
- [Prerequisites](#prerequisites)
|
|
35
|
+
- [Architecture](#architecture)
|
|
36
|
+
- [Contributing](#contributing)
|
|
37
|
+
- [License](#license)
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
23
41
|
## Shipwright Builds Itself
|
|
24
42
|
|
|
25
43
|
This repo uses Shipwright to process its own issues. Label a GitHub issue with `shipwright` and the autonomous pipeline takes over: semantic triage, plan, design, build, test, review, quality gates, PR. No human in the loop.
|
|
26
44
|
|
|
27
|
-
**[See it live](
|
|
45
|
+
**[See it live](https://github.com/sethdford/shipwright/actions/workflows/shipwright-pipeline.yml)** | **[Create an issue](https://github.com/sethdford/shipwright/issues/new?template=shipwright.yml)** and watch it build.
|
|
28
46
|
|
|
29
47
|
---
|
|
30
48
|
|
|
31
|
-
## What's New in v2.1.
|
|
49
|
+
## What's New in v2.1.2
|
|
50
|
+
|
|
51
|
+
**AGI-Level Agent Recruitment** — dynamic role creation, LLM-powered matching, closed-loop learning:
|
|
32
52
|
|
|
33
|
-
|
|
53
|
+
- **`recruit match`** — AI/heuristic task→role matching with `--json` output for pipeline integration
|
|
54
|
+
- **`recruit team`** — Context-aware team composition with cost estimation
|
|
55
|
+
- **`recruit route`** — Smart routing based on agent performance history
|
|
56
|
+
- **Cross-system integration** — Pipeline, PM, triage, loop, and swarm all use recruit for model/role selection
|
|
57
|
+
- **Self-tuning heuristics** — System learns keyword→role mappings from successful outcomes
|
|
58
|
+
- **Meta-learning** — Accuracy tracking and self-correction for matching decisions
|
|
59
|
+
- **CI auto-discovery** — All 103 test suites now run in CI (previously 26)
|
|
34
60
|
|
|
35
|
-
|
|
36
|
-
- **Pipeline Stage Badge** — Live `⚙ BUILD` / `⚡ TEST` / `↑ PR` widget in status bar with stage-colored badges
|
|
37
|
-
- **Active Pane Lift** — Subtle background depth effect between active and inactive panes
|
|
38
|
-
- **Agent Count Widget** — `λN` heartbeat-based agent counter in status bar
|
|
39
|
-
- **`shipwright init --repair`** — Force clean reinstall after OS upgrades
|
|
40
|
-
- **Color Palette Overhaul** — Warm grays replace harsh near-white text across all tmux chrome
|
|
41
|
-
- **7 tmux Bug Fixes** — Pane indexing, capture bindings, reload, clipboard, and more
|
|
61
|
+
**v2.1.0**: tmux visual overhaul — role-colored borders, pipeline status widgets, active pane depth
|
|
42
62
|
|
|
43
|
-
**v2.0.0
|
|
63
|
+
**v2.0.0**: 18 autonomous agents, 100+ CLI commands, intelligence layer, multi-repo fleet, local mode
|
|
44
64
|
|
|
45
65
|
---
|
|
46
66
|
|
|
@@ -187,7 +207,7 @@ Each stage is configurable with quality gates that auto-proceed or pause for app
|
|
|
187
207
|
| Template | Stages | Use Case |
|
|
188
208
|
| ------------ | --------------------------------- | ------------------------- |
|
|
189
209
|
| `fast` | intake → build → test → PR | Quick fixes, score >= 70 |
|
|
190
|
-
| `standard` | + plan, review
|
|
210
|
+
| `standard` | + plan, design, review | Normal feature work |
|
|
191
211
|
| `full` | All 12 stages | Production deployment |
|
|
192
212
|
| `hotfix` | Minimal, all auto | Urgent production fixes |
|
|
193
213
|
| `autonomous` | All stages, all auto | Daemon-driven delivery |
|
|
@@ -282,12 +302,12 @@ Instant issue processing via GitHub webhooks instead of polling. Register webhoo
|
|
|
282
302
|
### PR Lifecycle Automation
|
|
283
303
|
|
|
284
304
|
```bash
|
|
285
|
-
shipwright pr
|
|
286
|
-
shipwright pr merge
|
|
305
|
+
shipwright pr review <pr#>
|
|
306
|
+
shipwright pr merge <pr#>
|
|
287
307
|
shipwright pr cleanup
|
|
288
308
|
```
|
|
289
309
|
|
|
290
|
-
Fully automated PR management:
|
|
310
|
+
Fully automated PR management: review based on predictive risk and coverage, intelligent auto-merge when gates pass, cleanup stale branches. Reduces manual PR overhead by 90%.
|
|
291
311
|
|
|
292
312
|
### Fleet Auto-Discovery
|
|
293
313
|
|
|
@@ -304,10 +324,11 @@ ACID-safe state management replacing JSON files. Replaces volatile `.claude/pipe
|
|
|
304
324
|
### Issue Decomposition
|
|
305
325
|
|
|
306
326
|
```bash
|
|
307
|
-
shipwright decompose
|
|
327
|
+
shipwright decompose analyze 42
|
|
328
|
+
shipwright decompose decompose 42
|
|
308
329
|
```
|
|
309
330
|
|
|
310
|
-
AI-powered issue analysis:
|
|
331
|
+
AI-powered issue analysis: `analyze` scores complexity; `decompose` creates child issues with inherited labels/assignees and a dependency graph.
|
|
311
332
|
|
|
312
333
|
### Linux systemd Support
|
|
313
334
|
|
|
@@ -338,16 +359,16 @@ shipwright pipeline start --issue 42
|
|
|
338
359
|
shipwright daemon start --detach
|
|
339
360
|
|
|
340
361
|
# Agent teams
|
|
341
|
-
shipwright swarm
|
|
362
|
+
shipwright swarm status
|
|
342
363
|
shipwright recruit --roles builder,tester
|
|
343
364
|
shipwright standup
|
|
344
|
-
shipwright guild
|
|
365
|
+
shipwright guild list
|
|
345
366
|
|
|
346
367
|
# Quality gates
|
|
347
368
|
shipwright code-review
|
|
348
369
|
shipwright security-audit
|
|
349
370
|
shipwright testgen
|
|
350
|
-
shipwright quality
|
|
371
|
+
shipwright quality validate
|
|
351
372
|
|
|
352
373
|
# Observability
|
|
353
374
|
shipwright vitals
|
|
@@ -375,11 +396,11 @@ shipwright upgrade --apply
|
|
|
375
396
|
shipwright --help
|
|
376
397
|
```
|
|
377
398
|
|
|
378
|
-
See
|
|
399
|
+
See [.claude/CLAUDE.md](.claude/CLAUDE.md) for the complete 100+ command reference organized by workflow. Full documentation: [docs/](docs/).
|
|
379
400
|
|
|
380
401
|
## Pipeline Templates for Teams
|
|
381
402
|
|
|
382
|
-
|
|
403
|
+
25 team templates covering the full SDLC:
|
|
383
404
|
|
|
384
405
|
```bash
|
|
385
406
|
shipwright templates list
|
|
@@ -411,7 +432,7 @@ shipwright templates list
|
|
|
411
432
|
|
|
412
433
|
## Architecture
|
|
413
434
|
|
|
414
|
-
|
|
435
|
+
100+ bash scripts (~100K lines), 103 test suites (1000+ tests), plus a TypeScript dashboard server. Bash 3.2 compatible — runs on macOS and Linux out of the box.
|
|
415
436
|
|
|
416
437
|
**Core Layers:**
|
|
417
438
|
|
|
@@ -477,12 +498,12 @@ Tools & UX
|
|
|
477
498
|
|
|
478
499
|
## Contributing
|
|
479
500
|
|
|
480
|
-
**Let Shipwright build it:** Create an issue using the [Shipwright template](
|
|
501
|
+
**Let Shipwright build it:** Create an issue using the [Shipwright template](https://github.com/sethdford/shipwright/issues/new?template=shipwright.yml) and label it `shipwright`. The autonomous pipeline will triage, plan, build, test, review, and create a PR.
|
|
481
502
|
|
|
482
503
|
**Manual development:** Fork, branch, then:
|
|
483
504
|
|
|
484
505
|
```bash
|
|
485
|
-
npm test #
|
|
506
|
+
npm test # 1000+ tests across 103 suites
|
|
486
507
|
```
|
|
487
508
|
|
|
488
509
|
## License
|
|
@@ -19,7 +19,7 @@ This project uses [Shipwright](https://github.com/sethdford/shipwright) for auto
|
|
|
19
19
|
| `shipwright cost show` | Token usage and spending dashboard |
|
|
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
|
-
| `shipwright memory
|
|
22
|
+
| `shipwright memory show` | View captured failure patterns |
|
|
23
23
|
| `shipwright dashboard` | Real-time web dashboard (requires Bun) |
|
|
24
24
|
| `shipwright dashboard start` | Start dashboard in background |
|
|
25
25
|
| `shipwright heartbeat list` | Show agent heartbeat status |
|
|
@@ -170,7 +170,7 @@ Generate with `shipwright daemon init`, then edit `.claude/daemon-config.json`:
|
|
|
170
170
|
| Command | Purpose |
|
|
171
171
|
|---------|---------|
|
|
172
172
|
| `shipwright pipeline resume` | Resume from last completed stage |
|
|
173
|
-
| `shipwright memory show`
|
|
173
|
+
| `shipwright memory show` | View captured failure patterns |
|
|
174
174
|
| `shipwright doctor` | Diagnose setup issues |
|
|
175
175
|
| `shipwright status` | Check team and agent status |
|
|
176
176
|
| `shipwright cleanup --force` | Kill orphaned sessions |
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://shipwright.dev/schemas/policy-v1.json",
|
|
3
|
+
"description": "Central policy for Shipwright — timeouts, limits, thresholds. Prefer adaptive/learned overrides when available.",
|
|
4
|
+
"version": "1",
|
|
5
|
+
"daemon": {
|
|
6
|
+
"poll_interval_seconds": 60,
|
|
7
|
+
"health_heartbeat_timeout": 120,
|
|
8
|
+
"stage_timeouts": {
|
|
9
|
+
"intake": 60,
|
|
10
|
+
"plan": 60,
|
|
11
|
+
"design": 60,
|
|
12
|
+
"lint": 60,
|
|
13
|
+
"format": 60,
|
|
14
|
+
"build": 300,
|
|
15
|
+
"test": 180,
|
|
16
|
+
"review": 180,
|
|
17
|
+
"compound_quality": 180
|
|
18
|
+
},
|
|
19
|
+
"auto_scale_interval_cycles": 5,
|
|
20
|
+
"optimize_interval_cycles": 10,
|
|
21
|
+
"stale_reaper_interval_cycles": 10,
|
|
22
|
+
"stale_timeout_multiplier": 2,
|
|
23
|
+
"stale_state_hours": 2
|
|
24
|
+
},
|
|
25
|
+
"pipeline": {
|
|
26
|
+
"max_iterations_default": 10,
|
|
27
|
+
"max_cycles_convergence_cap": 50,
|
|
28
|
+
"coverage_threshold_percent": 60,
|
|
29
|
+
"quality_gate_score_threshold": 70,
|
|
30
|
+
"memory_baseline_fallback_percent": 20,
|
|
31
|
+
"memory_inject_fallback_percent": 30
|
|
32
|
+
},
|
|
33
|
+
"quality": {
|
|
34
|
+
"coverage_threshold": 60,
|
|
35
|
+
"gate_score_threshold": 70,
|
|
36
|
+
"audit_weights": {
|
|
37
|
+
"test_pass": 30,
|
|
38
|
+
"coverage": 20,
|
|
39
|
+
"security": 20,
|
|
40
|
+
"architecture": 15,
|
|
41
|
+
"correctness": 15
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
"strategic": {
|
|
45
|
+
"max_issues_per_cycle": 5,
|
|
46
|
+
"cooldown_seconds": 14400,
|
|
47
|
+
"overlap_threshold_percent": 60,
|
|
48
|
+
"strategy_lines": 200
|
|
49
|
+
},
|
|
50
|
+
"sweep": {
|
|
51
|
+
"cron_minutes": 30,
|
|
52
|
+
"stuck_threshold_hours": 4,
|
|
53
|
+
"retry_template": "full",
|
|
54
|
+
"retry_max_iterations": 25,
|
|
55
|
+
"stuck_retry_max_iterations": 30
|
|
56
|
+
},
|
|
57
|
+
"hygiene": {
|
|
58
|
+
"artifact_age_days": 7
|
|
59
|
+
},
|
|
60
|
+
"recruit": {
|
|
61
|
+
"self_tune_min_matches": 5,
|
|
62
|
+
"self_tune_min_success_rate": 60,
|
|
63
|
+
"match_confidence_threshold": 0.3,
|
|
64
|
+
"max_match_history_size": 5000,
|
|
65
|
+
"max_profile_task_history": 50,
|
|
66
|
+
"meta_learning_accuracy_floor": 50,
|
|
67
|
+
"auto_evolve_after_outcomes": 20,
|
|
68
|
+
"llm_timeout_seconds": 30,
|
|
69
|
+
"default_model": "sonnet",
|
|
70
|
+
"promote_threshold_tasks": 10,
|
|
71
|
+
"promote_threshold_success_rate": 85
|
|
72
|
+
}
|
|
73
|
+
}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"title": "Shipwright Policy",
|
|
4
|
+
"description": "Central policy for Shipwright — timeouts, limits, thresholds. Validated by CI platform-health workflow.",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"required": ["version"],
|
|
7
|
+
"properties": {
|
|
8
|
+
"$schema": { "type": "string" },
|
|
9
|
+
"description": { "type": "string" },
|
|
10
|
+
"version": { "type": "string" },
|
|
11
|
+
"daemon": {
|
|
12
|
+
"type": "object",
|
|
13
|
+
"properties": {
|
|
14
|
+
"poll_interval_seconds": { "type": "integer", "minimum": 1 },
|
|
15
|
+
"health_heartbeat_timeout": { "type": "integer", "minimum": 1 },
|
|
16
|
+
"stage_timeouts": {
|
|
17
|
+
"type": "object",
|
|
18
|
+
"additionalProperties": { "type": "integer", "minimum": 1 }
|
|
19
|
+
},
|
|
20
|
+
"auto_scale_interval_cycles": { "type": "integer", "minimum": 1 },
|
|
21
|
+
"optimize_interval_cycles": { "type": "integer", "minimum": 1 },
|
|
22
|
+
"stale_reaper_interval_cycles": { "type": "integer", "minimum": 1 },
|
|
23
|
+
"stale_timeout_multiplier": { "type": "integer", "minimum": 1 },
|
|
24
|
+
"stale_state_hours": { "type": "integer", "minimum": 1 }
|
|
25
|
+
},
|
|
26
|
+
"additionalProperties": false
|
|
27
|
+
},
|
|
28
|
+
"pipeline": {
|
|
29
|
+
"type": "object",
|
|
30
|
+
"properties": {
|
|
31
|
+
"max_iterations_default": { "type": "integer", "minimum": 1 },
|
|
32
|
+
"max_cycles_convergence_cap": { "type": "integer", "minimum": 1 },
|
|
33
|
+
"coverage_threshold_percent": {
|
|
34
|
+
"type": "integer",
|
|
35
|
+
"minimum": 0,
|
|
36
|
+
"maximum": 100
|
|
37
|
+
},
|
|
38
|
+
"quality_gate_score_threshold": {
|
|
39
|
+
"type": "integer",
|
|
40
|
+
"minimum": 0,
|
|
41
|
+
"maximum": 100
|
|
42
|
+
},
|
|
43
|
+
"memory_baseline_fallback_percent": {
|
|
44
|
+
"type": "integer",
|
|
45
|
+
"minimum": 0,
|
|
46
|
+
"maximum": 100
|
|
47
|
+
},
|
|
48
|
+
"memory_inject_fallback_percent": {
|
|
49
|
+
"type": "integer",
|
|
50
|
+
"minimum": 0,
|
|
51
|
+
"maximum": 100
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
"additionalProperties": false
|
|
55
|
+
},
|
|
56
|
+
"quality": {
|
|
57
|
+
"type": "object",
|
|
58
|
+
"properties": {
|
|
59
|
+
"coverage_threshold": {
|
|
60
|
+
"type": "integer",
|
|
61
|
+
"minimum": 0,
|
|
62
|
+
"maximum": 100
|
|
63
|
+
},
|
|
64
|
+
"gate_score_threshold": {
|
|
65
|
+
"type": "integer",
|
|
66
|
+
"minimum": 0,
|
|
67
|
+
"maximum": 100
|
|
68
|
+
},
|
|
69
|
+
"audit_weights": {
|
|
70
|
+
"type": "object",
|
|
71
|
+
"properties": {
|
|
72
|
+
"test_pass": { "type": "integer", "minimum": 0 },
|
|
73
|
+
"coverage": { "type": "integer", "minimum": 0 },
|
|
74
|
+
"security": { "type": "integer", "minimum": 0 },
|
|
75
|
+
"architecture": { "type": "integer", "minimum": 0 },
|
|
76
|
+
"correctness": { "type": "integer", "minimum": 0 }
|
|
77
|
+
},
|
|
78
|
+
"additionalProperties": false
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
"additionalProperties": false
|
|
82
|
+
},
|
|
83
|
+
"strategic": {
|
|
84
|
+
"type": "object",
|
|
85
|
+
"properties": {
|
|
86
|
+
"max_issues_per_cycle": { "type": "integer", "minimum": 1 },
|
|
87
|
+
"cooldown_seconds": { "type": "integer", "minimum": 0 },
|
|
88
|
+
"overlap_threshold_percent": {
|
|
89
|
+
"type": "integer",
|
|
90
|
+
"minimum": 0,
|
|
91
|
+
"maximum": 100
|
|
92
|
+
},
|
|
93
|
+
"strategy_lines": { "type": "integer", "minimum": 1 }
|
|
94
|
+
},
|
|
95
|
+
"additionalProperties": false
|
|
96
|
+
},
|
|
97
|
+
"sweep": {
|
|
98
|
+
"type": "object",
|
|
99
|
+
"properties": {
|
|
100
|
+
"cron_minutes": { "type": "integer", "minimum": 1 },
|
|
101
|
+
"stuck_threshold_hours": { "type": "integer", "minimum": 1 },
|
|
102
|
+
"retry_template": { "type": "string" },
|
|
103
|
+
"retry_max_iterations": { "type": "integer", "minimum": 1 },
|
|
104
|
+
"stuck_retry_max_iterations": { "type": "integer", "minimum": 1 }
|
|
105
|
+
},
|
|
106
|
+
"additionalProperties": false
|
|
107
|
+
},
|
|
108
|
+
"hygiene": {
|
|
109
|
+
"type": "object",
|
|
110
|
+
"properties": {
|
|
111
|
+
"artifact_age_days": { "type": "integer", "minimum": 1 }
|
|
112
|
+
},
|
|
113
|
+
"additionalProperties": false
|
|
114
|
+
},
|
|
115
|
+
"recruit": {
|
|
116
|
+
"type": "object",
|
|
117
|
+
"properties": {
|
|
118
|
+
"self_tune_min_matches": { "type": "integer", "minimum": 1 },
|
|
119
|
+
"self_tune_min_success_rate": {
|
|
120
|
+
"type": "integer",
|
|
121
|
+
"minimum": 0,
|
|
122
|
+
"maximum": 100
|
|
123
|
+
},
|
|
124
|
+
"match_confidence_threshold": {
|
|
125
|
+
"type": "number",
|
|
126
|
+
"minimum": 0,
|
|
127
|
+
"maximum": 1
|
|
128
|
+
},
|
|
129
|
+
"max_match_history_size": { "type": "integer", "minimum": 1 },
|
|
130
|
+
"max_profile_task_history": { "type": "integer", "minimum": 1 },
|
|
131
|
+
"meta_learning_accuracy_floor": {
|
|
132
|
+
"type": "integer",
|
|
133
|
+
"minimum": 0,
|
|
134
|
+
"maximum": 100
|
|
135
|
+
},
|
|
136
|
+
"auto_evolve_after_outcomes": { "type": "integer", "minimum": 1 },
|
|
137
|
+
"llm_timeout_seconds": { "type": "integer", "minimum": 1 },
|
|
138
|
+
"default_model": { "type": "string" },
|
|
139
|
+
"promote_threshold_tasks": { "type": "integer", "minimum": 1 },
|
|
140
|
+
"promote_threshold_success_rate": {
|
|
141
|
+
"type": "integer",
|
|
142
|
+
"minimum": 0,
|
|
143
|
+
"maximum": 100
|
|
144
|
+
}
|
|
145
|
+
},
|
|
146
|
+
"additionalProperties": false
|
|
147
|
+
}
|
|
148
|
+
},
|
|
149
|
+
"additionalProperties": false
|
|
150
|
+
}
|