shipwright-cli 3.1.0 → 3.3.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 (283) hide show
  1. package/.claude/agents/code-reviewer.md +2 -0
  2. package/.claude/agents/devops-engineer.md +2 -0
  3. package/.claude/agents/doc-fleet-agent.md +2 -0
  4. package/.claude/agents/pipeline-agent.md +2 -0
  5. package/.claude/agents/shell-script-specialist.md +2 -0
  6. package/.claude/agents/test-specialist.md +2 -0
  7. package/.claude/hooks/agent-crash-capture.sh +32 -0
  8. package/.claude/hooks/post-tool-use.sh +3 -2
  9. package/.claude/hooks/pre-tool-use.sh +35 -3
  10. package/README.md +22 -8
  11. package/claude-code/hooks/config-change.sh +18 -0
  12. package/claude-code/hooks/instructions-reloaded.sh +7 -0
  13. package/claude-code/hooks/worktree-create.sh +25 -0
  14. package/claude-code/hooks/worktree-remove.sh +20 -0
  15. package/config/code-constitution.json +130 -0
  16. package/config/defaults.json +25 -2
  17. package/config/policy.json +1 -1
  18. package/dashboard/middleware/auth.ts +134 -0
  19. package/dashboard/middleware/constants.ts +21 -0
  20. package/dashboard/public/index.html +8 -6
  21. package/dashboard/public/styles.css +176 -97
  22. package/dashboard/routes/auth.ts +38 -0
  23. package/dashboard/server.ts +117 -25
  24. package/dashboard/services/config.ts +26 -0
  25. package/dashboard/services/db.ts +118 -0
  26. package/dashboard/src/canvas/pixel-agent.ts +298 -0
  27. package/dashboard/src/canvas/pixel-sprites.ts +440 -0
  28. package/dashboard/src/canvas/shipyard-effects.ts +367 -0
  29. package/dashboard/src/canvas/shipyard-scene.ts +616 -0
  30. package/dashboard/src/canvas/submarine-layout.ts +267 -0
  31. package/dashboard/src/components/header.ts +8 -7
  32. package/dashboard/src/core/api.ts +5 -0
  33. package/dashboard/src/core/router.ts +1 -0
  34. package/dashboard/src/design/submarine-theme.ts +253 -0
  35. package/dashboard/src/main.ts +2 -0
  36. package/dashboard/src/types/api.ts +12 -1
  37. package/dashboard/src/views/activity.ts +2 -1
  38. package/dashboard/src/views/metrics.ts +69 -1
  39. package/dashboard/src/views/shipyard.ts +39 -0
  40. package/dashboard/types/index.ts +166 -0
  41. package/docs/plans/2026-02-28-compound-audit-and-shipyard-design.md +186 -0
  42. package/docs/plans/2026-02-28-skipper-shipwright-implementation-plan.md +1182 -0
  43. package/docs/plans/2026-02-28-skipper-shipwright-integration-design.md +531 -0
  44. package/docs/plans/2026-03-01-ai-powered-skill-injection-design.md +298 -0
  45. package/docs/plans/2026-03-01-ai-powered-skill-injection-plan.md +1109 -0
  46. package/docs/plans/2026-03-01-capabilities-cleanup-plan.md +658 -0
  47. package/docs/plans/2026-03-01-clean-architecture-plan.md +924 -0
  48. package/docs/plans/2026-03-01-compound-audit-cascade-design.md +191 -0
  49. package/docs/plans/2026-03-01-compound-audit-cascade-plan.md +921 -0
  50. package/docs/plans/2026-03-01-deep-integration-plan.md +851 -0
  51. package/docs/plans/2026-03-01-pipeline-audit-trail-design.md +145 -0
  52. package/docs/plans/2026-03-01-pipeline-audit-trail-plan.md +770 -0
  53. package/docs/plans/2026-03-01-refined-depths-brand-design.md +382 -0
  54. package/docs/plans/2026-03-01-refined-depths-implementation.md +599 -0
  55. package/docs/plans/2026-03-01-skipper-kernel-integration-design.md +203 -0
  56. package/docs/plans/2026-03-01-unified-platform-design.md +272 -0
  57. package/docs/plans/2026-03-07-claude-code-feature-integration-design.md +189 -0
  58. package/docs/plans/2026-03-07-claude-code-feature-integration-plan.md +1165 -0
  59. package/docs/research/BACKLOG_QUICK_REFERENCE.md +352 -0
  60. package/docs/research/CUTTING_EDGE_RESEARCH_2026.md +546 -0
  61. package/docs/research/RESEARCH_INDEX.md +439 -0
  62. package/docs/research/RESEARCH_SOURCES.md +440 -0
  63. package/docs/research/RESEARCH_SUMMARY.txt +275 -0
  64. package/docs/superpowers/specs/2026-03-10-pipeline-quality-revolution-design.md +341 -0
  65. package/package.json +2 -2
  66. package/scripts/lib/adaptive-model.sh +427 -0
  67. package/scripts/lib/adaptive-timeout.sh +316 -0
  68. package/scripts/lib/audit-trail.sh +309 -0
  69. package/scripts/lib/auto-recovery.sh +471 -0
  70. package/scripts/lib/bandit-selector.sh +431 -0
  71. package/scripts/lib/bootstrap.sh +104 -2
  72. package/scripts/lib/causal-graph.sh +455 -0
  73. package/scripts/lib/compat.sh +126 -0
  74. package/scripts/lib/compound-audit.sh +337 -0
  75. package/scripts/lib/constitutional.sh +454 -0
  76. package/scripts/lib/context-budget.sh +359 -0
  77. package/scripts/lib/convergence.sh +594 -0
  78. package/scripts/lib/cost-optimizer.sh +634 -0
  79. package/scripts/lib/daemon-adaptive.sh +14 -2
  80. package/scripts/lib/daemon-dispatch.sh +106 -17
  81. package/scripts/lib/daemon-failure.sh +34 -4
  82. package/scripts/lib/daemon-patrol.sh +25 -4
  83. package/scripts/lib/daemon-poll-github.sh +361 -0
  84. package/scripts/lib/daemon-poll-health.sh +299 -0
  85. package/scripts/lib/daemon-poll.sh +27 -611
  86. package/scripts/lib/daemon-state.sh +119 -66
  87. package/scripts/lib/daemon-triage.sh +10 -0
  88. package/scripts/lib/dod-scorecard.sh +442 -0
  89. package/scripts/lib/error-actionability.sh +300 -0
  90. package/scripts/lib/formal-spec.sh +461 -0
  91. package/scripts/lib/helpers.sh +180 -5
  92. package/scripts/lib/intent-analysis.sh +409 -0
  93. package/scripts/lib/loop-convergence.sh +350 -0
  94. package/scripts/lib/loop-iteration.sh +682 -0
  95. package/scripts/lib/loop-progress.sh +48 -0
  96. package/scripts/lib/loop-restart.sh +185 -0
  97. package/scripts/lib/memory-effectiveness.sh +506 -0
  98. package/scripts/lib/mutation-executor.sh +352 -0
  99. package/scripts/lib/outcome-feedback.sh +521 -0
  100. package/scripts/lib/pipeline-cli.sh +336 -0
  101. package/scripts/lib/pipeline-commands.sh +1216 -0
  102. package/scripts/lib/pipeline-detection.sh +101 -3
  103. package/scripts/lib/pipeline-execution.sh +897 -0
  104. package/scripts/lib/pipeline-github.sh +28 -3
  105. package/scripts/lib/pipeline-intelligence-compound.sh +431 -0
  106. package/scripts/lib/pipeline-intelligence-scoring.sh +407 -0
  107. package/scripts/lib/pipeline-intelligence-skip.sh +181 -0
  108. package/scripts/lib/pipeline-intelligence.sh +104 -1138
  109. package/scripts/lib/pipeline-quality-bash-compat.sh +182 -0
  110. package/scripts/lib/pipeline-quality-checks.sh +17 -711
  111. package/scripts/lib/pipeline-quality-gates.sh +563 -0
  112. package/scripts/lib/pipeline-stages-build.sh +730 -0
  113. package/scripts/lib/pipeline-stages-delivery.sh +965 -0
  114. package/scripts/lib/pipeline-stages-intake.sh +1133 -0
  115. package/scripts/lib/pipeline-stages-monitor.sh +407 -0
  116. package/scripts/lib/pipeline-stages-review.sh +1022 -0
  117. package/scripts/lib/pipeline-stages.sh +161 -2901
  118. package/scripts/lib/pipeline-state.sh +36 -5
  119. package/scripts/lib/pipeline-util.sh +487 -0
  120. package/scripts/lib/policy-learner.sh +438 -0
  121. package/scripts/lib/process-reward.sh +493 -0
  122. package/scripts/lib/project-detect.sh +649 -0
  123. package/scripts/lib/quality-profile.sh +334 -0
  124. package/scripts/lib/recruit-commands.sh +885 -0
  125. package/scripts/lib/recruit-learning.sh +739 -0
  126. package/scripts/lib/recruit-roles.sh +648 -0
  127. package/scripts/lib/reward-aggregator.sh +458 -0
  128. package/scripts/lib/rl-optimizer.sh +362 -0
  129. package/scripts/lib/root-cause.sh +427 -0
  130. package/scripts/lib/scope-enforcement.sh +445 -0
  131. package/scripts/lib/session-restart.sh +493 -0
  132. package/scripts/lib/skill-memory.sh +300 -0
  133. package/scripts/lib/skill-registry.sh +775 -0
  134. package/scripts/lib/spec-driven.sh +476 -0
  135. package/scripts/lib/test-helpers.sh +18 -7
  136. package/scripts/lib/test-holdout.sh +429 -0
  137. package/scripts/lib/test-optimizer.sh +511 -0
  138. package/scripts/shipwright-file-suggest.sh +45 -0
  139. package/scripts/skills/adversarial-quality.md +61 -0
  140. package/scripts/skills/api-design.md +44 -0
  141. package/scripts/skills/architecture-design.md +50 -0
  142. package/scripts/skills/brainstorming.md +43 -0
  143. package/scripts/skills/data-pipeline.md +44 -0
  144. package/scripts/skills/deploy-safety.md +64 -0
  145. package/scripts/skills/documentation.md +38 -0
  146. package/scripts/skills/frontend-design.md +45 -0
  147. package/scripts/skills/generated/.gitkeep +0 -0
  148. package/scripts/skills/generated/_refinements/.gitkeep +0 -0
  149. package/scripts/skills/generated/_refinements/adversarial-quality.patch.md +3 -0
  150. package/scripts/skills/generated/_refinements/architecture-design.patch.md +3 -0
  151. package/scripts/skills/generated/_refinements/brainstorming.patch.md +3 -0
  152. package/scripts/skills/generated/cli-version-management.md +29 -0
  153. package/scripts/skills/generated/collection-system-validation.md +99 -0
  154. package/scripts/skills/generated/large-scale-c-refactoring-coordination.md +97 -0
  155. package/scripts/skills/generated/pattern-matching-similarity-scoring.md +195 -0
  156. package/scripts/skills/generated/test-parallelization-detection.md +65 -0
  157. package/scripts/skills/observability.md +79 -0
  158. package/scripts/skills/performance.md +48 -0
  159. package/scripts/skills/pr-quality.md +49 -0
  160. package/scripts/skills/product-thinking.md +43 -0
  161. package/scripts/skills/security-audit.md +49 -0
  162. package/scripts/skills/systematic-debugging.md +40 -0
  163. package/scripts/skills/testing-strategy.md +47 -0
  164. package/scripts/skills/two-stage-review.md +52 -0
  165. package/scripts/skills/validation-thoroughness.md +55 -0
  166. package/scripts/sw +9 -3
  167. package/scripts/sw-activity.sh +9 -8
  168. package/scripts/sw-adaptive.sh +8 -7
  169. package/scripts/sw-adversarial.sh +2 -1
  170. package/scripts/sw-architecture-enforcer.sh +3 -1
  171. package/scripts/sw-auth.sh +12 -2
  172. package/scripts/sw-autonomous.sh +5 -1
  173. package/scripts/sw-changelog.sh +4 -1
  174. package/scripts/sw-checkpoint.sh +2 -1
  175. package/scripts/sw-ci.sh +15 -6
  176. package/scripts/sw-cleanup.sh +4 -26
  177. package/scripts/sw-code-review.sh +45 -20
  178. package/scripts/sw-connect.sh +2 -1
  179. package/scripts/sw-context.sh +2 -1
  180. package/scripts/sw-cost.sh +107 -5
  181. package/scripts/sw-daemon.sh +71 -11
  182. package/scripts/sw-dashboard.sh +3 -1
  183. package/scripts/sw-db.sh +71 -20
  184. package/scripts/sw-decide.sh +8 -2
  185. package/scripts/sw-decompose.sh +360 -17
  186. package/scripts/sw-deps.sh +4 -1
  187. package/scripts/sw-developer-simulation.sh +4 -1
  188. package/scripts/sw-discovery.sh +378 -5
  189. package/scripts/sw-doc-fleet.sh +4 -1
  190. package/scripts/sw-docs-agent.sh +3 -1
  191. package/scripts/sw-docs.sh +2 -1
  192. package/scripts/sw-doctor.sh +453 -2
  193. package/scripts/sw-dora.sh +4 -1
  194. package/scripts/sw-durable.sh +12 -7
  195. package/scripts/sw-e2e-orchestrator.sh +17 -16
  196. package/scripts/sw-eventbus.sh +13 -4
  197. package/scripts/sw-evidence.sh +364 -12
  198. package/scripts/sw-feedback.sh +550 -9
  199. package/scripts/sw-fix.sh +20 -1
  200. package/scripts/sw-fleet-discover.sh +6 -2
  201. package/scripts/sw-fleet-viz.sh +9 -4
  202. package/scripts/sw-fleet.sh +5 -1
  203. package/scripts/sw-github-app.sh +18 -4
  204. package/scripts/sw-github-checks.sh +3 -2
  205. package/scripts/sw-github-deploy.sh +3 -2
  206. package/scripts/sw-github-graphql.sh +18 -7
  207. package/scripts/sw-guild.sh +5 -1
  208. package/scripts/sw-heartbeat.sh +5 -30
  209. package/scripts/sw-hello.sh +67 -0
  210. package/scripts/sw-hygiene.sh +10 -3
  211. package/scripts/sw-incident.sh +273 -5
  212. package/scripts/sw-init.sh +18 -2
  213. package/scripts/sw-instrument.sh +10 -2
  214. package/scripts/sw-intelligence.sh +44 -7
  215. package/scripts/sw-jira.sh +5 -1
  216. package/scripts/sw-launchd.sh +2 -1
  217. package/scripts/sw-linear.sh +4 -1
  218. package/scripts/sw-logs.sh +4 -1
  219. package/scripts/sw-loop.sh +436 -1076
  220. package/scripts/sw-memory.sh +357 -3
  221. package/scripts/sw-mission-control.sh +6 -1
  222. package/scripts/sw-model-router.sh +483 -27
  223. package/scripts/sw-otel.sh +15 -4
  224. package/scripts/sw-oversight.sh +14 -5
  225. package/scripts/sw-patrol-meta.sh +334 -0
  226. package/scripts/sw-pipeline-composer.sh +7 -1
  227. package/scripts/sw-pipeline-vitals.sh +12 -6
  228. package/scripts/sw-pipeline.sh +54 -2653
  229. package/scripts/sw-pm.sh +16 -8
  230. package/scripts/sw-pr-lifecycle.sh +2 -1
  231. package/scripts/sw-predictive.sh +17 -5
  232. package/scripts/sw-prep.sh +185 -2
  233. package/scripts/sw-ps.sh +5 -25
  234. package/scripts/sw-public-dashboard.sh +17 -4
  235. package/scripts/sw-quality.sh +14 -6
  236. package/scripts/sw-reaper.sh +8 -25
  237. package/scripts/sw-recruit.sh +156 -2303
  238. package/scripts/sw-regression.sh +19 -12
  239. package/scripts/sw-release-manager.sh +3 -1
  240. package/scripts/sw-release.sh +4 -1
  241. package/scripts/sw-remote.sh +3 -1
  242. package/scripts/sw-replay.sh +7 -1
  243. package/scripts/sw-retro.sh +158 -1
  244. package/scripts/sw-review-rerun.sh +3 -1
  245. package/scripts/sw-scale.sh +14 -5
  246. package/scripts/sw-security-audit.sh +6 -1
  247. package/scripts/sw-self-optimize.sh +173 -6
  248. package/scripts/sw-session.sh +9 -3
  249. package/scripts/sw-setup.sh +3 -1
  250. package/scripts/sw-stall-detector.sh +406 -0
  251. package/scripts/sw-standup.sh +15 -7
  252. package/scripts/sw-status.sh +3 -1
  253. package/scripts/sw-strategic.sh +14 -6
  254. package/scripts/sw-stream.sh +13 -4
  255. package/scripts/sw-swarm.sh +20 -7
  256. package/scripts/sw-team-stages.sh +13 -6
  257. package/scripts/sw-templates.sh +7 -31
  258. package/scripts/sw-testgen.sh +17 -6
  259. package/scripts/sw-tmux-pipeline.sh +4 -1
  260. package/scripts/sw-tmux-role-color.sh +2 -0
  261. package/scripts/sw-tmux-status.sh +1 -1
  262. package/scripts/sw-tmux.sh +37 -1
  263. package/scripts/sw-trace.sh +3 -1
  264. package/scripts/sw-tracker-github.sh +3 -0
  265. package/scripts/sw-tracker-jira.sh +3 -0
  266. package/scripts/sw-tracker-linear.sh +3 -0
  267. package/scripts/sw-tracker.sh +3 -1
  268. package/scripts/sw-triage.sh +3 -2
  269. package/scripts/sw-upgrade.sh +3 -1
  270. package/scripts/sw-ux.sh +5 -2
  271. package/scripts/sw-webhook.sh +5 -2
  272. package/scripts/sw-widgets.sh +9 -4
  273. package/scripts/sw-worktree.sh +15 -3
  274. package/scripts/test-skill-injection.sh +1233 -0
  275. package/templates/pipelines/autonomous.json +27 -3
  276. package/templates/pipelines/cost-aware.json +34 -8
  277. package/templates/pipelines/deployed.json +12 -0
  278. package/templates/pipelines/enterprise.json +12 -0
  279. package/templates/pipelines/fast.json +6 -0
  280. package/templates/pipelines/full.json +27 -3
  281. package/templates/pipelines/hotfix.json +6 -0
  282. package/templates/pipelines/standard.json +12 -0
  283. package/templates/pipelines/tdd.json +12 -0
@@ -0,0 +1,382 @@
1
+ # Shipwright Design System — Refined Depths
2
+
3
+ Version 3.0 — March 2026
4
+
5
+ ---
6
+
7
+ ## 1. Brand Strategy
8
+
9
+ ### Direction
10
+
11
+ "Refined Depths" — Apple-level restraint applied to the existing nautical identity. The ocean palette stays, but gets quieter and deeper. One primary accent color (cyan) carries the entire brand. Purple and blue exist only as gradient endpoints for hero moments.
12
+
13
+ ### Brand Voice
14
+
15
+ Short. Confident. Let the product speak.
16
+
17
+ - **Before:** "Your fleet awaits, captain. Set sail with a single command."
18
+ - **After:** "One command. Issue to production."
19
+
20
+ Nautical metaphors live in naming (fleet, crew, shipwright, launch) not in UI copy. The metaphor is architectural, not decorative.
21
+
22
+ ### Brand Pillars
23
+
24
+ - **Autonomy** — Zero human intervention from issue to PR
25
+ - **Quality** — Compound quality loops, self-healing builds, automated review
26
+ - **Scale** — One daemon, one fleet, one org — the architecture grows with you
27
+ - **Intelligence** — Persistent memory, adaptive templates, self-optimizing metrics
28
+
29
+ ### Scope
30
+
31
+ Unified across all surfaces:
32
+
33
+ - Website / marketing pages
34
+ - Skipper dashboard (light + dark modes)
35
+ - Terminal output (ANSI colors, box-drawing)
36
+ - README / documentation
37
+ - Public dashboard
38
+
39
+ ---
40
+
41
+ ## 2. Color Palette
42
+
43
+ ### Dark Mode (Default)
44
+
45
+ #### Backgrounds — Ocean Depths, Quieted
46
+
47
+ Near-black with subtle cool undertones. Less saturated than V2.
48
+
49
+ | Token | Hex | Usage |
50
+ | ----------- | --------- | -------------------------------------- |
51
+ | `--abyss` | `#050508` | Page background, deepest layer |
52
+ | `--deep` | `#0a0d14` | Card backgrounds, nav backdrop |
53
+ | `--ocean` | `#111520` | Elevated surfaces, hover states |
54
+ | `--surface` | `#171c28` | Active states, input fields |
55
+ | `--foam` | `#1e2536` | Tooltips, dropdowns, highest elevation |
56
+
57
+ #### Accent — Cyan Primary
58
+
59
+ | Token | Value | Usage |
60
+ | --------------- | ------------------------- | ------------------------------------------ |
61
+ | `--cyan` | `#00d4ff` | Primary accent, CTAs, active states, links |
62
+ | `--cyan-subtle` | `rgba(0, 212, 255, 0.08)` | Hover backgrounds, active nav items |
63
+ | `--cyan-muted` | `rgba(0, 212, 255, 0.25)` | Borders, dividers, scrollbar thumbs |
64
+ | `--purple` | `#7c3aed` | Gradient endpoints only. Never standalone. |
65
+ | `--blue` | `#0066ff` | Gradient endpoints only. Never standalone. |
66
+
67
+ #### Status
68
+
69
+ | Token | Hex | Usage |
70
+ | --------- | --------- | --------------------------- |
71
+ | `--green` | `#4ade80` | Success, completed, passing |
72
+ | `--amber` | `#fbbf24` | Warning, in-progress |
73
+ | `--rose` | `#f43f5e` | Error, failed, critical |
74
+
75
+ #### Text
76
+
77
+ | Token | Hex | Usage |
78
+ | ------------------ | --------- | ---------------------------- |
79
+ | `--text-primary` | `#e8eaed` | Headlines, body text |
80
+ | `--text-secondary` | `#8b8f9a` | Descriptions, subtitles |
81
+ | `--text-muted` | `#555a66` | Labels, timestamps, disabled |
82
+
83
+ ### Light Mode
84
+
85
+ Cool grays with ocean undertones. No warm beige.
86
+
87
+ | Token | Hex | Usage |
88
+ | ------------------ | --------- | ----------------------------------- |
89
+ | `--abyss` | `#f8f9fa` | Page background |
90
+ | `--deep` | `#ffffff` | Card backgrounds |
91
+ | `--ocean` | `#f1f3f5` | Elevated surfaces |
92
+ | `--surface` | `#e9ecef` | Active states, inputs |
93
+ | `--foam` | `#dee2e6` | Tooltips, dropdowns |
94
+ | `--cyan` | `#0091b3` | Darker cyan for light-mode contrast |
95
+ | `--text-primary` | `#1a1d21` | Body text |
96
+ | `--text-secondary` | `#495057` | Secondary text |
97
+ | `--text-muted` | `#868e96` | Labels, timestamps |
98
+
99
+ ### Gradients — Restrained
100
+
101
+ One primary gradient for hero moments and primary CTAs:
102
+
103
+ ```css
104
+ background: linear-gradient(135deg, #00d4ff, #7c3aed);
105
+ ```
106
+
107
+ No shimmer animations. No gradient text on body copy. One or two anchor moments per page.
108
+
109
+ ### ANSI Terminal Colors
110
+
111
+ | Role | ANSI | Hex equivalent |
112
+ | -------------- | ----------- | -------------- |
113
+ | Primary accent | Cyan (36) | `#00d4ff` |
114
+ | Success | Green (32) | `#4ade80` |
115
+ | Warning | Yellow (33) | `#fbbf24` |
116
+ | Error | Red (31) | `#f43f5e` |
117
+ | Muted text | Dim (2) | — |
118
+ | Box-drawing | Cyan dim | — |
119
+
120
+ ---
121
+
122
+ ## 3. Typography
123
+
124
+ ### Font Stacks
125
+
126
+ Zero web fonts. Native platform rendering.
127
+
128
+ ```css
129
+ --font-body:
130
+ -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, "Helvetica Neue",
131
+ sans-serif;
132
+ --font-mono: "SF Mono", ui-monospace, "Cascadia Code", "Geist Mono", monospace;
133
+ ```
134
+
135
+ No `--font-display`. Headlines use the same sans-serif stack at heavier weights.
136
+
137
+ ### Type Scale
138
+
139
+ Base: 16px. Ratio: 1.200 (minor third).
140
+
141
+ | Token | Size | Weight | Line-height | Letter-spacing |
142
+ | ------------- | ----------------- | ------ | ----------- | -------------- |
143
+ | `--text-5xl` | `3rem` (48px) | 700 | 1.1 | `-0.02em` |
144
+ | `--text-4xl` | `2.5rem` (40px) | 700 | 1.1 | `-0.02em` |
145
+ | `--text-3xl` | `2rem` (32px) | 600 | 1.15 | `-0.02em` |
146
+ | `--text-2xl` | `1.5rem` (24px) | 600 | 1.2 | `-0.02em` |
147
+ | `--text-xl` | `1.25rem` (20px) | 500 | 1.3 | `-0.01em` |
148
+ | `--text-lg` | `1.125rem` (18px) | 400 | 1.5 | `0` |
149
+ | `--text-base` | `1rem` (16px) | 400 | 1.6 | `0` |
150
+ | `--text-sm` | `0.875rem` (14px) | 400 | 1.5 | `0` |
151
+ | `--text-xs` | `0.75rem` (12px) | 500 | 1.4 | `0.02em` |
152
+
153
+ ### Rules
154
+
155
+ - No gradient text on headlines. Solid `--text-primary`.
156
+ - Body text max-width: `65ch`.
157
+ - Mono reserved for: code blocks, CLI output, metric values, keyboard shortcuts.
158
+
159
+ ---
160
+
161
+ ## 4. Spacing
162
+
163
+ 4px base unit. Same scale as V2, stricter usage.
164
+
165
+ | Token | Value | Usage |
166
+ | ------------ | ------ | -------------------------- |
167
+ | `--space-1` | `4px` | Inline gaps, icon padding |
168
+ | `--space-2` | `8px` | Tight gaps, badge padding |
169
+ | `--space-3` | `12px` | Compact internal padding |
170
+ | `--space-4` | `16px` | Standard component spacing |
171
+ | `--space-5` | `20px` | — |
172
+ | `--space-6` | `24px` | Section labels, list gaps |
173
+ | `--space-8` | `32px` | Card padding |
174
+ | `--space-10` | `40px` | — |
175
+ | `--space-12` | `48px` | Large section padding |
176
+ | `--space-16` | `64px` | Section gaps |
177
+ | `--space-20` | `80px` | Page vertical rhythm |
178
+ | `--space-24` | `96px` | Hero sections |
179
+
180
+ **Rule:** When in doubt, more space. Apple pages breathe.
181
+
182
+ ---
183
+
184
+ ## 5. Shadows & Effects
185
+
186
+ ### Shadows — Dark Mode
187
+
188
+ Layered, subtle:
189
+
190
+ ```css
191
+ --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.3), 0 0 1px rgba(0, 0, 0, 0.1);
192
+ --shadow-md: 0 4px 8px rgba(0, 0, 0, 0.3), 0 0 1px rgba(0, 0, 0, 0.1);
193
+ --shadow-lg: 0 12px 24px rgba(0, 0, 0, 0.4), 0 0 1px rgba(0, 0, 0, 0.1);
194
+ --shadow-xl: 0 24px 48px rgba(0, 0, 0, 0.5), 0 0 1px rgba(0, 0, 0, 0.1);
195
+ ```
196
+
197
+ ### Shadows — Light Mode
198
+
199
+ ```css
200
+ --shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.08), 0 0 1px rgba(0, 0, 0, 0.04);
201
+ --shadow-md: 0 4px 12px rgba(0, 0, 0, 0.08), 0 1px 2px rgba(0, 0, 0, 0.04);
202
+ --shadow-lg: 0 12px 28px rgba(0, 0, 0, 0.1), 0 4px 8px rgba(0, 0, 0, 0.04);
203
+ --shadow-xl: 0 24px 48px rgba(0, 0, 0, 0.12), 0 8px 16px rgba(0, 0, 0, 0.06);
204
+ ```
205
+
206
+ No accent-colored shadows.
207
+
208
+ ### Frosted Glass
209
+
210
+ ```css
211
+ --glass-bg: rgba(10, 13, 20, 0.7);
212
+ --glass-blur: blur(20px) saturate(180%);
213
+ --glass-border: 1px solid rgba(255, 255, 255, 0.06);
214
+ ```
215
+
216
+ Used for: nav bars, modals, floating panels, tooltips. Not every card.
217
+
218
+ ### Transitions
219
+
220
+ ```css
221
+ --ease: cubic-bezier(0.4, 0, 0.2, 1);
222
+ --ease-out: cubic-bezier(0, 0, 0.2, 1);
223
+ --ease-spring: cubic-bezier(0.34, 1.2, 0.64, 1);
224
+ --duration-fast: 150ms;
225
+ --duration-normal: 250ms;
226
+ --duration-slow: 400ms;
227
+ ```
228
+
229
+ Removed: shimmer, pulse-ring, bouncy spring (1.56). Stagger delays stay for list entries.
230
+
231
+ ### Border Radius
232
+
233
+ ```css
234
+ --radius-sm: 6px; /* Badges, tags */
235
+ --radius-md: 10px; /* Buttons, inputs */
236
+ --radius-lg: 14px; /* Cards */
237
+ --radius-xl: 20px; /* Panels, modals */
238
+ --radius-full: 9999px; /* Pills */
239
+ ```
240
+
241
+ ---
242
+
243
+ ## 6. Components
244
+
245
+ ### Buttons
246
+
247
+ **Primary:**
248
+
249
+ ```css
250
+ background: var(--cyan);
251
+ color: #050508;
252
+ font-weight: 600;
253
+ border-radius: var(--radius-md);
254
+ padding: 10px 20px;
255
+ transition: opacity var(--duration-fast) var(--ease);
256
+ ```
257
+
258
+ Hover: `opacity: 0.85`. No glow, no gradient.
259
+
260
+ **Secondary:**
261
+
262
+ ```css
263
+ background: var(--cyan-subtle);
264
+ border: 1px solid var(--cyan-muted);
265
+ color: var(--cyan);
266
+ ```
267
+
268
+ **Ghost:** Text-only, subtle hover background.
269
+
270
+ **Destructive:** Rose-tinted variant of secondary.
271
+
272
+ ### Cards
273
+
274
+ ```css
275
+ background: var(--deep);
276
+ border: 1px solid rgba(255, 255, 255, 0.06);
277
+ border-radius: var(--radius-lg);
278
+ padding: var(--space-8);
279
+ transition:
280
+ transform var(--duration-normal) var(--ease),
281
+ box-shadow var(--duration-normal) var(--ease);
282
+ ```
283
+
284
+ Hover: `translateY(-1px)` + `--shadow-md`. No colored border reveals.
285
+
286
+ ### Navigation (Sidebar)
287
+
288
+ Frosted glass background. Active item: `--cyan-subtle` background + `2px` left border in `--cyan`.
289
+
290
+ ### Terminal Blocks
291
+
292
+ ```css
293
+ background: var(--abyss);
294
+ border: 1px solid rgba(255, 255, 255, 0.06);
295
+ border-radius: var(--radius-lg);
296
+ font-family: var(--font-mono);
297
+ font-size: 0.82rem;
298
+ line-height: 1.8;
299
+ ```
300
+
301
+ Traffic light dots: `#ff5f57` (red), `#febc2e` (yellow), `#28c840` (green).
302
+
303
+ Syntax: `--cyan` for prompts/commands, `--text-secondary` for output, `--green`/`--rose` for pass/fail.
304
+
305
+ ### Status Badges
306
+
307
+ Minimal pills with tinted backgrounds:
308
+
309
+ ```css
310
+ /* Running */
311
+ background: rgba(0, 212, 255, 0.1);
312
+ color: var(--cyan);
313
+
314
+ /* Success */
315
+ background: rgba(74, 222, 128, 0.1);
316
+ color: var(--green);
317
+
318
+ /* Failed */
319
+ background: rgba(244, 63, 94, 0.1);
320
+ color: var(--rose);
321
+
322
+ /* Warning */
323
+ background: rgba(251, 191, 36, 0.1);
324
+ color: var(--amber);
325
+ ```
326
+
327
+ ---
328
+
329
+ ## 7. Logo & Brand Mark
330
+
331
+ Simplified ship silhouette — geometric, works at 16x16 favicon size. Clean stroke or fill, no gradients in the mark itself. Cyan on dark, dark on light.
332
+
333
+ SVG uses a 32x32 viewBox. No gradient fills in the logo mark — solid `--cyan` or `--text-primary` depending on context.
334
+
335
+ ---
336
+
337
+ ## 8. README Badge Colors
338
+
339
+ | Badge | Color |
340
+ | -------- | --------- |
341
+ | Tests | `#4ade80` |
342
+ | Version | `#00d4ff` |
343
+ | Platform | `#555a66` |
344
+
345
+ ---
346
+
347
+ ## 9. Migration Notes
348
+
349
+ ### What Changes
350
+
351
+ | Surface | From | To |
352
+ | --------------------- | ------------------------------------------------------------------- | ---------------------------------------- |
353
+ | Dashboard backgrounds | Warm beige (light) / charcoal (dark) | Cool gray (light) / near-black (dark) |
354
+ | Dashboard accent | Orange `#FF5C00` | Cyan `#00d4ff` (dark), `#0091b3` (light) |
355
+ | Dashboard fonts | Inter + Geist Mono (web fonts) | System stack + SF Mono (zero loading) |
356
+ | Website backgrounds | Heavy ocean-blue tints | Subtle cool undertones |
357
+ | Website fonts | Instrument Serif + Plus Jakarta Sans + JetBrains Mono (3 web fonts) | System stack (zero loading) |
358
+ | Gradients | Shimmer animations, gradient text throughout | One hero gradient, no animations |
359
+ | Glow effects | Cyan/purple glows on hover | Frosted glass + subtle shadows |
360
+ | Button style | Gradient CTAs | Solid cyan, no gradient |
361
+
362
+ ### What Stays
363
+
364
+ - Cyan `#00d4ff` as primary accent
365
+ - Purple `#7c3aed` and blue `#0066ff` as gradient accents
366
+ - Status colors (green, amber, rose)
367
+ - 4px spacing base unit
368
+ - Terminal traffic light dots
369
+ - Nautical naming conventions
370
+ - Stagger animation delays for lists
371
+
372
+ ### Files to Update
373
+
374
+ 1. `website/design-system.md` — Replace with this spec
375
+ 2. `skipper/crates/skipper-api/static/css/theme.css` — New unified tokens
376
+ 3. `skipper/crates/skipper-api/static/css/layout.css` — Updated spacing/layout
377
+ 4. `skipper/crates/skipper-api/static/css/components.css` — Updated component styles
378
+ 5. `skipper/crates/skipper-api/static/index_head.html` — Remove Google Fonts import
379
+ 6. `dashboard/public/` — Shipwright dashboard styles
380
+ 7. `.claude/CLAUDE.md` — Update color references
381
+ 8. `README.md` — Update badge colors
382
+ 9. Shell scripts — Update ANSI color helpers if needed