shipwright-cli 1.7.1 → 1.10.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 (115) 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 +45 -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} +118 -22
  30. package/scripts/sw-adversarial.sh +274 -0
  31. package/scripts/sw-architecture-enforcer.sh +330 -0
  32. package/scripts/sw-checkpoint.sh +468 -0
  33. package/scripts/sw-cleanup.sh +359 -0
  34. package/scripts/sw-connect.sh +619 -0
  35. package/scripts/{cct-cost.sh → sw-cost.sh} +368 -34
  36. package/scripts/sw-daemon.sh +5574 -0
  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/{cct-init.sh → sw-init.sh} +144 -11
  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/sw-loop.sh +2217 -0
  54. package/scripts/{cct-memory.sh → sw-memory.sh} +514 -36
  55. package/scripts/sw-patrol-meta.sh +417 -0
  56. package/scripts/sw-pipeline-composer.sh +455 -0
  57. package/scripts/sw-pipeline-vitals.sh +1096 -0
  58. package/scripts/sw-pipeline.sh +7593 -0
  59. package/scripts/sw-predictive.sh +820 -0
  60. package/scripts/{cct-prep.sh → sw-prep.sh} +339 -49
  61. package/scripts/{cct-ps.sh → sw-ps.sh} +9 -6
  62. package/scripts/{cct-reaper.sh → sw-reaper.sh} +10 -6
  63. package/scripts/sw-remote.sh +687 -0
  64. package/scripts/sw-self-optimize.sh +1048 -0
  65. package/scripts/sw-session.sh +541 -0
  66. package/scripts/sw-setup.sh +234 -0
  67. package/scripts/sw-status.sh +796 -0
  68. package/scripts/{cct-templates.sh → sw-templates.sh} +9 -4
  69. package/scripts/sw-tmux.sh +591 -0
  70. package/scripts/sw-tracker-jira.sh +277 -0
  71. package/scripts/sw-tracker-linear.sh +292 -0
  72. package/scripts/sw-tracker.sh +409 -0
  73. package/scripts/{cct-upgrade.sh → sw-upgrade.sh} +103 -46
  74. package/scripts/{cct-worktree.sh → sw-worktree.sh} +3 -0
  75. package/templates/pipelines/autonomous.json +35 -6
  76. package/templates/pipelines/cost-aware.json +21 -0
  77. package/templates/pipelines/deployed.json +40 -6
  78. package/templates/pipelines/enterprise.json +16 -2
  79. package/templates/pipelines/fast.json +19 -0
  80. package/templates/pipelines/full.json +28 -2
  81. package/templates/pipelines/hotfix.json +19 -0
  82. package/templates/pipelines/standard.json +31 -0
  83. package/tmux/{claude-teams-overlay.conf → shipwright-overlay.conf} +27 -9
  84. package/tmux/templates/accessibility.json +34 -0
  85. package/tmux/templates/api-design.json +35 -0
  86. package/tmux/templates/architecture.json +1 -0
  87. package/tmux/templates/bug-fix.json +9 -0
  88. package/tmux/templates/code-review.json +1 -0
  89. package/tmux/templates/compliance.json +36 -0
  90. package/tmux/templates/data-pipeline.json +36 -0
  91. package/tmux/templates/debt-paydown.json +34 -0
  92. package/tmux/templates/devops.json +1 -0
  93. package/tmux/templates/documentation.json +1 -0
  94. package/tmux/templates/exploration.json +1 -0
  95. package/tmux/templates/feature-dev.json +1 -0
  96. package/tmux/templates/full-stack.json +8 -0
  97. package/tmux/templates/i18n.json +34 -0
  98. package/tmux/templates/incident-response.json +36 -0
  99. package/tmux/templates/migration.json +1 -0
  100. package/tmux/templates/observability.json +35 -0
  101. package/tmux/templates/onboarding.json +33 -0
  102. package/tmux/templates/performance.json +35 -0
  103. package/tmux/templates/refactor.json +1 -0
  104. package/tmux/templates/release.json +35 -0
  105. package/tmux/templates/security-audit.json +8 -0
  106. package/tmux/templates/spike.json +34 -0
  107. package/tmux/templates/testing.json +1 -0
  108. package/tmux/tmux.conf +98 -9
  109. package/scripts/cct-cleanup.sh +0 -172
  110. package/scripts/cct-daemon.sh +0 -3189
  111. package/scripts/cct-doctor.sh +0 -414
  112. package/scripts/cct-loop.sh +0 -1332
  113. package/scripts/cct-pipeline.sh +0 -3844
  114. package/scripts/cct-session.sh +0 -284
  115. package/scripts/cct-status.sh +0 -169
@@ -6,17 +6,37 @@
6
6
  "model": "opus",
7
7
  "agents": 1
8
8
  },
9
+ "intelligence": {
10
+ "adversarial_enabled": true,
11
+ "architecture_enabled": true,
12
+ "simulation_enabled": true
13
+ },
9
14
  "stages": [
10
15
  { "id": "intake", "enabled": true, "gate": "auto", "config": {} },
11
- { "id": "plan", "enabled": true, "gate": "auto", "config": { "model": "opus" } },
12
- { "id": "design", "enabled": true, "gate": "auto", "config": { "model": "opus" } },
16
+ {
17
+ "id": "plan",
18
+ "enabled": true,
19
+ "gate": "auto",
20
+ "config": { "model": "opus" }
21
+ },
22
+ {
23
+ "id": "design",
24
+ "enabled": true,
25
+ "gate": "auto",
26
+ "config": { "model": "opus" }
27
+ },
13
28
  {
14
29
  "id": "build",
15
30
  "enabled": true,
16
31
  "gate": "auto",
17
32
  "config": { "max_iterations": 20, "audit": true, "quality_gates": true }
18
33
  },
19
- { "id": "test", "enabled": true, "gate": "auto", "config": { "coverage_min": 80 } },
34
+ {
35
+ "id": "test",
36
+ "enabled": true,
37
+ "gate": "auto",
38
+ "config": { "coverage_min": 80 }
39
+ },
20
40
  { "id": "review", "enabled": true, "gate": "auto", "config": {} },
21
41
  {
22
42
  "id": "compound_quality",
@@ -27,10 +47,17 @@
27
47
  "negative": true,
28
48
  "e2e": true,
29
49
  "dod_audit": true,
30
- "max_cycles": 3
50
+ "max_cycles": 3,
51
+ "audit_intensity": "auto",
52
+ "compound_quality_blocking": true
31
53
  }
32
54
  },
33
- { "id": "pr", "enabled": true, "gate": "auto", "config": { "wait_ci": false } },
55
+ {
56
+ "id": "pr",
57
+ "enabled": true,
58
+ "gate": "auto",
59
+ "config": { "wait_ci": false }
60
+ },
34
61
  {
35
62
  "id": "merge",
36
63
  "enabled": true,
@@ -38,7 +65,9 @@
38
65
  "config": {
39
66
  "merge_method": "squash",
40
67
  "wait_ci_timeout_s": 600,
41
- "auto_delete_branch": true
68
+ "auto_delete_branch": true,
69
+ "auto_merge": true,
70
+ "auto_approve": true
42
71
  }
43
72
  },
44
73
  {
@@ -8,6 +8,11 @@
8
8
  "cost_tracking": true,
9
9
  "budget_check": true
10
10
  },
11
+ "intelligence": {
12
+ "adversarial_enabled": true,
13
+ "architecture_enabled": true,
14
+ "simulation_enabled": true
15
+ },
11
16
  "stages": [
12
17
  {
13
18
  "id": "intake",
@@ -59,6 +64,22 @@
59
64
  "cost_tracking": true
60
65
  }
61
66
  },
67
+ {
68
+ "id": "compound_quality",
69
+ "enabled": true,
70
+ "gate": "auto",
71
+ "config": {
72
+ "adversarial": true,
73
+ "negative": true,
74
+ "e2e": true,
75
+ "dod_audit": true,
76
+ "max_cycles": 2,
77
+ "audit_intensity": "auto",
78
+ "compound_quality_blocking": true,
79
+ "model": "sonnet",
80
+ "cost_tracking": true
81
+ }
82
+ },
62
83
  {
63
84
  "id": "pr",
64
85
  "enabled": true,
@@ -6,17 +6,37 @@
6
6
  "model": "opus",
7
7
  "agents": 1
8
8
  },
9
+ "intelligence": {
10
+ "adversarial_enabled": true,
11
+ "architecture_enabled": true,
12
+ "simulation_enabled": true
13
+ },
9
14
  "stages": [
10
15
  { "id": "intake", "enabled": true, "gate": "auto", "config": {} },
11
- { "id": "plan", "enabled": true, "gate": "auto", "config": { "model": "opus" } },
12
- { "id": "design", "enabled": true, "gate": "auto", "config": { "model": "opus" } },
16
+ {
17
+ "id": "plan",
18
+ "enabled": true,
19
+ "gate": "auto",
20
+ "config": { "model": "opus" }
21
+ },
22
+ {
23
+ "id": "design",
24
+ "enabled": true,
25
+ "gate": "auto",
26
+ "config": { "model": "opus" }
27
+ },
13
28
  {
14
29
  "id": "build",
15
30
  "enabled": true,
16
31
  "gate": "auto",
17
32
  "config": { "max_iterations": 20, "audit": true, "quality_gates": true }
18
33
  },
19
- { "id": "test", "enabled": true, "gate": "auto", "config": { "coverage_min": 80 } },
34
+ {
35
+ "id": "test",
36
+ "enabled": true,
37
+ "gate": "auto",
38
+ "config": { "coverage_min": 80 }
39
+ },
20
40
  { "id": "review", "enabled": true, "gate": "auto", "config": {} },
21
41
  {
22
42
  "id": "compound_quality",
@@ -27,10 +47,17 @@
27
47
  "negative": true,
28
48
  "e2e": true,
29
49
  "dod_audit": true,
30
- "max_cycles": 3
50
+ "max_cycles": 3,
51
+ "audit_intensity": "auto",
52
+ "compound_quality_blocking": true
31
53
  }
32
54
  },
33
- { "id": "pr", "enabled": true, "gate": "auto", "config": { "wait_ci": false } },
55
+ {
56
+ "id": "pr",
57
+ "enabled": true,
58
+ "gate": "auto",
59
+ "config": { "wait_ci": false }
60
+ },
34
61
  {
35
62
  "id": "merge",
36
63
  "enabled": true,
@@ -48,7 +75,14 @@
48
75
  "config": {
49
76
  "staging_cmd": "__STAGING_CMD__",
50
77
  "production_cmd": "__PRODUCTION_CMD__",
51
- "rollback_cmd": "__ROLLBACK_CMD__"
78
+ "rollback_cmd": "__ROLLBACK_CMD__",
79
+ "deploy_strategy": "direct",
80
+ "canary_cmd": "__CANARY_CMD__",
81
+ "promote_cmd": "__PROMOTE_CMD__",
82
+ "switch_cmd": "__SWITCH_CMD__",
83
+ "health_url": "__HEALTH_URL__",
84
+ "pre_deploy_ci_status": true,
85
+ "pre_deploy_min_coverage": 80
52
86
  }
53
87
  },
54
88
  {
@@ -6,6 +6,11 @@
6
6
  "model": "opus",
7
7
  "agents": 1
8
8
  },
9
+ "intelligence": {
10
+ "adversarial_enabled": true,
11
+ "architecture_enabled": true,
12
+ "simulation_enabled": true
13
+ },
9
14
  "stages": [
10
15
  {
11
16
  "id": "intake",
@@ -57,7 +62,9 @@
57
62
  "e2e": true,
58
63
  "dod_audit": true,
59
64
  "max_cycles": 5,
60
- "strict_quality": true
65
+ "strict_quality": true,
66
+ "audit_intensity": "auto",
67
+ "compound_quality_blocking": true
61
68
  }
62
69
  },
63
70
  {
@@ -83,7 +90,14 @@
83
90
  "config": {
84
91
  "staging_cmd": "",
85
92
  "production_cmd": "",
86
- "rollback_cmd": ""
93
+ "rollback_cmd": "",
94
+ "deploy_strategy": "direct",
95
+ "canary_cmd": "__CANARY_CMD__",
96
+ "promote_cmd": "__PROMOTE_CMD__",
97
+ "switch_cmd": "__SWITCH_CMD__",
98
+ "health_url": "__HEALTH_URL__",
99
+ "pre_deploy_ci_status": true,
100
+ "pre_deploy_min_coverage": 80
87
101
  }
88
102
  },
89
103
  {
@@ -6,6 +6,11 @@
6
6
  "model": "sonnet",
7
7
  "agents": 1
8
8
  },
9
+ "intelligence": {
10
+ "adversarial_enabled": true,
11
+ "architecture_enabled": true,
12
+ "simulation_enabled": true
13
+ },
9
14
  "stages": [
10
15
  {
11
16
  "id": "intake",
@@ -41,6 +46,20 @@
41
46
  "gate": "auto",
42
47
  "config": {}
43
48
  },
49
+ {
50
+ "id": "compound_quality",
51
+ "enabled": true,
52
+ "gate": "auto",
53
+ "config": {
54
+ "adversarial": true,
55
+ "negative": true,
56
+ "e2e": false,
57
+ "dod_audit": true,
58
+ "max_cycles": 1,
59
+ "audit_intensity": "auto",
60
+ "compound_quality_blocking": true
61
+ }
62
+ },
44
63
  {
45
64
  "id": "pr",
46
65
  "enabled": true,
@@ -6,6 +6,11 @@
6
6
  "model": "opus",
7
7
  "agents": 1
8
8
  },
9
+ "intelligence": {
10
+ "adversarial_enabled": true,
11
+ "architecture_enabled": true,
12
+ "simulation_enabled": true
13
+ },
9
14
  "stages": [
10
15
  {
11
16
  "id": "intake",
@@ -57,7 +62,9 @@
57
62
  "e2e": true,
58
63
  "dod_audit": true,
59
64
  "max_cycles": 3,
60
- "strict_quality": true
65
+ "strict_quality": true,
66
+ "audit_intensity": "auto",
67
+ "compound_quality_blocking": true
61
68
  }
62
69
  },
63
70
  {
@@ -66,6 +73,18 @@
66
73
  "gate": "approve",
67
74
  "config": { "wait_ci": true }
68
75
  },
76
+ {
77
+ "id": "merge",
78
+ "enabled": true,
79
+ "gate": "approve",
80
+ "config": {
81
+ "merge_method": "squash",
82
+ "wait_ci_timeout_s": 600,
83
+ "auto_delete_branch": true,
84
+ "auto_merge": false,
85
+ "auto_approve": false
86
+ }
87
+ },
69
88
  {
70
89
  "id": "deploy",
71
90
  "enabled": true,
@@ -73,7 +92,14 @@
73
92
  "config": {
74
93
  "staging_cmd": "",
75
94
  "production_cmd": "",
76
- "rollback_cmd": ""
95
+ "rollback_cmd": "",
96
+ "deploy_strategy": "direct",
97
+ "canary_cmd": "__CANARY_CMD__",
98
+ "promote_cmd": "__PROMOTE_CMD__",
99
+ "switch_cmd": "__SWITCH_CMD__",
100
+ "health_url": "__HEALTH_URL__",
101
+ "pre_deploy_ci_status": true,
102
+ "pre_deploy_min_coverage": 80
77
103
  }
78
104
  },
79
105
  {
@@ -6,6 +6,11 @@
6
6
  "model": "opus",
7
7
  "agents": 1
8
8
  },
9
+ "intelligence": {
10
+ "adversarial_enabled": true,
11
+ "architecture_enabled": true,
12
+ "simulation_enabled": true
13
+ },
9
14
  "stages": [
10
15
  {
11
16
  "id": "intake",
@@ -41,6 +46,20 @@
41
46
  "gate": "auto",
42
47
  "config": {}
43
48
  },
49
+ {
50
+ "id": "compound_quality",
51
+ "enabled": true,
52
+ "gate": "auto",
53
+ "config": {
54
+ "adversarial": true,
55
+ "negative": true,
56
+ "e2e": false,
57
+ "dod_audit": true,
58
+ "max_cycles": 1,
59
+ "audit_intensity": "auto",
60
+ "compound_quality_blocking": true
61
+ }
62
+ },
44
63
  {
45
64
  "id": "pr",
46
65
  "enabled": true,
@@ -6,6 +6,11 @@
6
6
  "model": "opus",
7
7
  "agents": 1
8
8
  },
9
+ "intelligence": {
10
+ "adversarial_enabled": true,
11
+ "architecture_enabled": true,
12
+ "simulation_enabled": true
13
+ },
9
14
  "stages": [
10
15
  {
11
16
  "id": "intake",
@@ -47,12 +52,38 @@
47
52
  "gate": "approve",
48
53
  "config": {}
49
54
  },
55
+ {
56
+ "id": "compound_quality",
57
+ "enabled": true,
58
+ "gate": "auto",
59
+ "config": {
60
+ "adversarial": true,
61
+ "negative": true,
62
+ "e2e": true,
63
+ "dod_audit": true,
64
+ "max_cycles": 3,
65
+ "audit_intensity": "auto",
66
+ "compound_quality_blocking": true
67
+ }
68
+ },
50
69
  {
51
70
  "id": "pr",
52
71
  "enabled": true,
53
72
  "gate": "approve",
54
73
  "config": { "wait_ci": false }
55
74
  },
75
+ {
76
+ "id": "merge",
77
+ "enabled": true,
78
+ "gate": "approve",
79
+ "config": {
80
+ "merge_method": "squash",
81
+ "wait_ci_timeout_s": 600,
82
+ "auto_delete_branch": true,
83
+ "auto_merge": true,
84
+ "auto_approve": true
85
+ }
86
+ },
56
87
  {
57
88
  "id": "deploy",
58
89
  "enabled": false,
@@ -1,25 +1,26 @@
1
1
  # ╔═══════════════════════════════════════════════════════════════════════════╗
2
- # ║ CLAUDE CODE TEAMS - TMUX OVERLAY CONFIGURATION
2
+ # ║ SHIPWRIGHT TMUX OVERLAY CONFIGURATION
3
3
  # ║ ║
4
4
  # ║ This overlay adds agent-aware pane styling and team keybindings to ║
5
5
  # ║ your existing tmux config. It is sourced automatically by tmux.conf ║
6
6
  # ║ but can also be used independently: ║
7
7
  # ║ ║
8
- # ║ tmux source-file ~/.tmux/claude-teams-overlay.conf
8
+ # ║ tmux source-file ~/.tmux/shipwright-overlay.conf
9
9
  # ║ ║
10
10
  # ║ What this overlay does: ║
11
11
  # ║ - Shows agent names in pane borders (pane_title) ║
12
12
  # ║ - Enables aggressive resize for better multi-agent layouts ║
13
13
  # ║ - Adds safety bindings to prevent accidentally killing agent panes ║
14
14
  # ║ - Provides team-specific keybindings for navigation and management ║
15
+ # ║ - Fixes known Claude Code + tmux compatibility issues ║
15
16
  # ║ ║
16
17
  # ║ Convention: Each Claude agent pane should set its title on startup via: ║
17
18
  # ║ printf '\033]2;agent-name\033\\' ║
18
- # ║ The shipwright CLI does this automatically when spawning agent panes.
19
+ # ║ The shipwright CLI does this automatically when spawning agent panes.
19
20
  # ╚═══════════════════════════════════════════════════════════════════════════╝
20
21
 
21
22
  # ═══════════════════════════════════════════════════════════════════════════
22
- # PANE TITLES - Show agent names in borders
23
+ # PANE TITLES Show agent names in borders
23
24
  # ═══════════════════════════════════════════════════════════════════════════
24
25
 
25
26
  # Display pane titles at the top of each pane border
@@ -27,10 +28,11 @@ set -g pane-border-status top
27
28
 
28
29
  # Format: pane index, agent name, running command, zoom indicator
29
30
  # Active pane gets cyan accent; inactive stays muted
31
+ # Uses #{pane_title} which each agent sets via OSC 2 escape sequence
30
32
  set -g pane-border-format "#{?pane_active,#[fg=#00d4ff]#[bold],#[fg=#71717a]} #P │ #{pane_title} #[fg=#333355]│#[default] #{?pane_active,#[fg=#e4e4e7],#[fg=#52525b]}#{pane_current_command} #{?window_zoomed_flag,#[fg=#facc15]#[bold]🔍 ZOOMED ,}"
31
33
 
32
34
  # ═══════════════════════════════════════════════════════════════════════════
33
- # LAYOUT - Optimize for multi-agent pane layouts
35
+ # LAYOUT Optimize for multi-agent pane layouts
34
36
  # ═══════════════════════════════════════════════════════════════════════════
35
37
 
36
38
  # Aggressive resize: let panes resize independently per client
@@ -46,13 +48,14 @@ set -g window-style 'bg=#1a1a2e,fg=#e4e4e7'
46
48
  set -g window-active-style 'bg=#1a1a2e,fg=#e4e4e7'
47
49
 
48
50
  # Hooks provide belt-and-suspenders coverage: explicitly set per-pane
49
- # colors whenever a pane is created, preventing white flash on creation
51
+ # colors whenever a pane is created, preventing white flash on creation.
52
+ # Also re-enable allow-passthrough per-pane (some tmux versions reset it).
50
53
  set-hook -g after-split-window "select-pane -P 'bg=#1a1a2e,fg=#e4e4e7'"
51
54
  set-hook -g after-new-window "select-pane -P 'bg=#1a1a2e,fg=#e4e4e7'"
52
55
  set-hook -g after-new-session "select-pane -P 'bg=#1a1a2e,fg=#e4e4e7'"
53
56
 
54
57
  # ═══════════════════════════════════════════════════════════════════════════
55
- # SAFETY - Confirm before killing agent panes
58
+ # SAFETY Confirm before killing agent panes
56
59
  # ═══════════════════════════════════════════════════════════════════════════
57
60
 
58
61
  # Override default kill-pane to require confirmation in team windows
@@ -64,12 +67,15 @@ bind X confirm-before -p "Kill ALL panes in window #W? (y/n)" kill-window
64
67
  # TEAM NAVIGATION
65
68
  # ═══════════════════════════════════════════════════════════════════════════
66
69
 
67
- # prefix + g → select a pane by agent name (uses choose-tree for visual picking)
70
+ # prefix + g → display pane numbers for 5 seconds (type number to select)
68
71
  bind g display-panes -d 5000
69
72
 
70
73
  # prefix + G → toggle zoom on current agent pane (focus on one agent's output)
71
74
  bind G resize-pane -Z
72
75
 
76
+ # prefix + w → choose window/pane from a tree (visual picker)
77
+ bind w choose-tree -Zw
78
+
73
79
  # ═══════════════════════════════════════════════════════════════════════════
74
80
  # TEAM MANAGEMENT
75
81
  # ═══════════════════════════════════════════════════════════════════════════
@@ -79,7 +85,6 @@ bind G resize-pane -Z
79
85
  bind M-t setw synchronize-panes \; display-message "Team sync #{?synchronize-panes,ON,OFF}"
80
86
 
81
87
  # prefix + M-l → rotate through even-horizontal, even-vertical, tiled layouts
82
- # Useful for reorganizing agent panes
83
88
  bind M-l next-layout
84
89
 
85
90
  # prefix + M-s → capture current pane's full scrollback to file
@@ -102,6 +107,19 @@ bind M-1 select-layout main-horizontal \; resize-pane -t 0 -x 65%
102
107
  bind M-2 select-layout main-vertical \; resize-pane -t 0 -y 60%
103
108
  bind M-3 select-layout tiled
104
109
 
110
+ # ═══════════════════════════════════════════════════════════════════════════
111
+ # SHIPWRIGHT POPUPS — Quick access to tools
112
+ # ═══════════════════════════════════════════════════════════════════════════
113
+
114
+ # prefix + M-d → Shipwright dashboard in floating popup
115
+ bind M-d display-popup -w 85% -h 80% -E "shipwright status 2>/dev/null; echo ''; shipwright ps 2>/dev/null; echo ''; echo 'Press ENTER to close'; read"
116
+
117
+ # prefix + M-m → Memory system in floating popup
118
+ bind M-m display-popup -w 80% -h 70% -E "shipwright memory show 2>/dev/null || echo 'No memories found'; echo ''; echo 'Press ENTER to close'; read"
119
+
120
+ # prefix + M-h → Heartbeat status in floating popup
121
+ bind M-h display-popup -w 70% -h 50% -E "shipwright heartbeat list 2>/dev/null || echo 'No active heartbeats'; echo ''; echo 'Press ENTER to close'; read"
122
+
105
123
  # ═══════════════════════════════════════════════════════════════════════════
106
124
  # PANE REAPER — Quick cleanup of dead agent panes
107
125
  # ═══════════════════════════════════════════════════════════════════════════
@@ -0,0 +1,34 @@
1
+ {
2
+ "name": "accessibility",
3
+ "description": "Accessibility audit and remediation with auditor, fixer, and verifier agents",
4
+ "keywords": [
5
+ "accessibility",
6
+ "a11y",
7
+ "wcag",
8
+ "aria",
9
+ "screen reader",
10
+ "keyboard",
11
+ "contrast",
12
+ "inclusive"
13
+ ],
14
+ "agents": [
15
+ {
16
+ "name": "auditor",
17
+ "role": "WCAG 2.1 compliance scanning, keyboard navigation audit, color contrast checks, missing ARIA labels",
18
+ "focus": "src/components/, apps/web/, *.tsx, *.jsx, *.html"
19
+ },
20
+ {
21
+ "name": "fixer",
22
+ "role": "Add ARIA labels, fix focus management, improve color contrast, add skip links, semantic HTML",
23
+ "focus": "src/components/, apps/web/, *.tsx, *.jsx, *.css"
24
+ },
25
+ {
26
+ "name": "verifier",
27
+ "role": "Accessibility regression tests, screen reader compatibility verification, keyboard-only flow testing",
28
+ "focus": "*.test.*, __tests__/, e2e/, cypress/"
29
+ }
30
+ ],
31
+ "layout": "tiled",
32
+ "layout_style": "main-horizontal",
33
+ "main_pane_percent": 65
34
+ }
@@ -0,0 +1,35 @@
1
+ {
2
+ "name": "api-design",
3
+ "description": "API design and implementation with designer, implementer, and consumer agents",
4
+ "keywords": [
5
+ "api",
6
+ "endpoint",
7
+ "rest",
8
+ "graphql",
9
+ "grpc",
10
+ "openapi",
11
+ "swagger",
12
+ "schema",
13
+ "contract"
14
+ ],
15
+ "agents": [
16
+ {
17
+ "name": "designer",
18
+ "role": "Schema design, OpenAPI/GraphQL spec, contract definition, versioning strategy",
19
+ "focus": "*.yaml, *.graphql, *.proto, docs/api/, openapi/"
20
+ },
21
+ {
22
+ "name": "implementer",
23
+ "role": "Routes, middleware, validation, serialization, error handling, rate limiting",
24
+ "focus": "src/api/, src/routes/, src/middleware/, src/controllers/"
25
+ },
26
+ {
27
+ "name": "consumer",
28
+ "role": "Client SDK, usage examples, integration tests, developer experience validation",
29
+ "focus": "src/client/, sdk/, examples/, *.test.*, __tests__/"
30
+ }
31
+ ],
32
+ "layout": "tiled",
33
+ "layout_style": "main-horizontal",
34
+ "main_pane_percent": 65
35
+ }
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "name": "architecture",
3
3
  "description": "Architecture planning with research and specification agents",
4
+ "keywords": ["architecture", "design", "structure", "system", "diagram"],
4
5
  "agents": [
5
6
  {
6
7
  "name": "researcher",
@@ -1,6 +1,15 @@
1
1
  {
2
2
  "name": "bug-fix",
3
3
  "description": "Bug fix with reproducer, fixer, and verifier agents",
4
+ "keywords": [
5
+ "bug",
6
+ "fix",
7
+ "error",
8
+ "crash",
9
+ "broken",
10
+ "failing",
11
+ "regression"
12
+ ],
4
13
  "agents": [
5
14
  {
6
15
  "name": "reproducer",
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "name": "code-review",
3
3
  "description": "Code review with quality, security, and test coverage agents",
4
+ "keywords": ["review", "audit", "quality", "check", "pr"],
4
5
  "agents": [
5
6
  {
6
7
  "name": "code-quality",
@@ -0,0 +1,36 @@
1
+ {
2
+ "name": "compliance",
3
+ "description": "Regulatory and license compliance with scanning, remediation, and documentation agents",
4
+ "keywords": [
5
+ "compliance",
6
+ "license",
7
+ "sbom",
8
+ "gdpr",
9
+ "hipaa",
10
+ "sox",
11
+ "pci",
12
+ "regulation",
13
+ "audit",
14
+ "legal"
15
+ ],
16
+ "agents": [
17
+ {
18
+ "name": "scanner",
19
+ "role": "License audit, SBOM generation, dependency risk assessment, known vulnerability scanning, policy violation detection",
20
+ "focus": "package.json, go.mod, Cargo.toml, *.lock, requirements.txt, LICENSE"
21
+ },
22
+ {
23
+ "name": "remediator",
24
+ "role": "Replace problematic dependencies, add required license notices, fix policy violations, update to compliant versions",
25
+ "focus": "src/, lib/, package.json, go.mod, LICENSE, NOTICE"
26
+ },
27
+ {
28
+ "name": "documenter",
29
+ "role": "Compliance reports, audit trail documentation, data flow diagrams, privacy impact assessments, policy documentation",
30
+ "focus": "docs/, compliance/, *.md, SECURITY.md, PRIVACY.md"
31
+ }
32
+ ],
33
+ "layout": "tiled",
34
+ "layout_style": "main-horizontal",
35
+ "main_pane_percent": 65
36
+ }