groundwork-method 0.0.1 → 0.11.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 (647) hide show
  1. package/CHANGELOG.md +823 -0
  2. package/LICENSE +21 -0
  3. package/README.md +44 -29
  4. package/bin/groundwork.js +1723 -0
  5. package/dist/src/generators/add-capability/generator.d.ts +8 -0
  6. package/dist/src/generators/add-capability/generator.js +60 -0
  7. package/dist/src/generators/add-capability/generator.js.map +1 -0
  8. package/dist/src/generators/cli-app/generator.d.ts +9 -0
  9. package/dist/src/generators/cli-app/generator.js +140 -0
  10. package/dist/src/generators/cli-app/generator.js.map +1 -0
  11. package/dist/src/generators/docs-site/generator.d.ts +5 -0
  12. package/dist/src/generators/docs-site/generator.js +441 -0
  13. package/dist/src/generators/docs-site/generator.js.map +1 -0
  14. package/dist/src/generators/electron-app/generator.d.ts +6 -0
  15. package/dist/src/generators/electron-app/generator.js +261 -0
  16. package/dist/src/generators/electron-app/generator.js.map +1 -0
  17. package/dist/src/generators/flutter-app/generator.d.ts +6 -0
  18. package/dist/src/generators/flutter-app/generator.js +314 -0
  19. package/dist/src/generators/flutter-app/generator.js.map +1 -0
  20. package/dist/src/generators/go-microservice/generator.d.ts +8 -0
  21. package/dist/src/generators/go-microservice/generator.js +232 -0
  22. package/dist/src/generators/go-microservice/generator.js.map +1 -0
  23. package/dist/src/generators/nextjs-app/generator.d.ts +8 -0
  24. package/dist/src/generators/nextjs-app/generator.js +294 -0
  25. package/dist/src/generators/nextjs-app/generator.js.map +1 -0
  26. package/dist/src/generators/python-microservice/generator.d.ts +13 -0
  27. package/dist/src/generators/python-microservice/generator.js +265 -0
  28. package/dist/src/generators/python-microservice/generator.js.map +1 -0
  29. package/dist/src/generators/shared/brand-tokens.d.ts +89 -0
  30. package/dist/src/generators/shared/brand-tokens.js +308 -0
  31. package/dist/src/generators/shared/brand-tokens.js.map +1 -0
  32. package/dist/src/generators/shared/capabilities.d.ts +101 -0
  33. package/dist/src/generators/shared/capabilities.js +279 -0
  34. package/dist/src/generators/shared/capabilities.js.map +1 -0
  35. package/dist/src/generators/shared/provenance.d.ts +2 -0
  36. package/dist/src/generators/shared/provenance.js +85 -0
  37. package/dist/src/generators/shared/provenance.js.map +1 -0
  38. package/dist/src/generators/shared/scaffold-helpers.d.ts +72 -0
  39. package/dist/src/generators/shared/scaffold-helpers.js +309 -0
  40. package/dist/src/generators/shared/scaffold-helpers.js.map +1 -0
  41. package/dist/src/generators/system-test-runner/generator.d.ts +23 -0
  42. package/dist/src/generators/system-test-runner/generator.js +173 -0
  43. package/dist/src/generators/system-test-runner/generator.js.map +1 -0
  44. package/dist/src/generators/workspace-dev-cli/generator.d.ts +7 -0
  45. package/dist/src/generators/workspace-dev-cli/generator.js +138 -0
  46. package/dist/src/generators/workspace-dev-cli/generator.js.map +1 -0
  47. package/generators.json +57 -0
  48. package/lib/repo-map/grammars/tree-sitter-c.wasm +0 -0
  49. package/lib/repo-map/grammars/tree-sitter-cpp.wasm +0 -0
  50. package/lib/repo-map/grammars/tree-sitter-csharp.wasm +0 -0
  51. package/lib/repo-map/grammars/tree-sitter-dart.wasm +0 -0
  52. package/lib/repo-map/grammars/tree-sitter-go.wasm +0 -0
  53. package/lib/repo-map/grammars/tree-sitter-java.wasm +0 -0
  54. package/lib/repo-map/grammars/tree-sitter-javascript.wasm +0 -0
  55. package/lib/repo-map/grammars/tree-sitter-kotlin.wasm +0 -0
  56. package/lib/repo-map/grammars/tree-sitter-lua.wasm +0 -0
  57. package/lib/repo-map/grammars/tree-sitter-php.wasm +0 -0
  58. package/lib/repo-map/grammars/tree-sitter-python.wasm +0 -0
  59. package/lib/repo-map/grammars/tree-sitter-ruby.wasm +0 -0
  60. package/lib/repo-map/grammars/tree-sitter-rust.wasm +0 -0
  61. package/lib/repo-map/grammars/tree-sitter-scala.wasm +0 -0
  62. package/lib/repo-map/grammars/tree-sitter-swift.wasm +0 -0
  63. package/lib/repo-map/grammars/tree-sitter-tsx.wasm +0 -0
  64. package/lib/repo-map/grammars/tree-sitter-typescript.wasm +0 -0
  65. package/lib/repo-map/index.js +386 -0
  66. package/lib/repo-map/languages.js +514 -0
  67. package/lib/repo-map/pagerank.js +59 -0
  68. package/migrations/README.md +60 -0
  69. package/migrations/_template/cli-migration.js +27 -0
  70. package/migrations/gw-bet-prose-redesign.js +105 -0
  71. package/migrations/gw-drop-test-manifest.js +37 -0
  72. package/migrations/gw-register-serena-mcp.js +42 -0
  73. package/migrations/gw-relocate-hidden-skills.js +40 -0
  74. package/migrations/gw-seed-config-toml.js +24 -0
  75. package/migrations/index.json +40 -0
  76. package/package.json +70 -6
  77. package/src/AGENTS.md +36 -0
  78. package/src/config/config.toml +30 -0
  79. package/src/config/groundwork-state.json +5 -0
  80. package/src/docs/llms.txt +72 -0
  81. package/src/docs/principles/ai-native/agent-native-systems.md +90 -0
  82. package/src/docs/principles/ai-native/agentic-systems.md +78 -0
  83. package/src/docs/principles/ai-native/ai-engineering.md +100 -0
  84. package/src/docs/principles/ai-native/ai-native-product.md +76 -0
  85. package/src/docs/principles/delivery/cost-engineering.md +89 -0
  86. package/src/docs/principles/delivery/day-2-operational-baseline.md +57 -0
  87. package/src/docs/principles/delivery/devex.md +88 -0
  88. package/src/docs/principles/delivery/platform.md +101 -0
  89. package/src/docs/principles/delivery/progressive-delivery.md +92 -0
  90. package/src/docs/principles/design/ai-native-design.md +73 -0
  91. package/src/docs/principles/design/design-foundations.md +80 -0
  92. package/src/docs/principles/design/design-systems-and-tokens.md +72 -0
  93. package/src/docs/principles/design/interaction-and-motion.md +69 -0
  94. package/src/docs/principles/design/layout-and-space.md +72 -0
  95. package/src/docs/principles/design/usability-and-ux.md +79 -0
  96. package/src/docs/principles/design/visual-design.md +84 -0
  97. package/src/docs/principles/foundations/code-craft.md +86 -0
  98. package/src/docs/principles/foundations/continuous-discovery.md +75 -0
  99. package/src/docs/principles/foundations/documentation.md +102 -0
  100. package/src/docs/principles/foundations/prioritization-and-appetite.md +78 -0
  101. package/src/docs/principles/foundations/product-engineering.md +90 -0
  102. package/src/docs/principles/foundations/product-risks.md +89 -0
  103. package/src/docs/principles/foundations/requirements-and-specs.md +80 -0
  104. package/src/docs/principles/foundations/success-metrics.md +66 -0
  105. package/src/docs/principles/foundations/testing.md +108 -0
  106. package/src/docs/principles/index.md +24 -0
  107. package/src/docs/principles/quality/accessibility.md +88 -0
  108. package/src/docs/principles/quality/observability.md +84 -0
  109. package/src/docs/principles/quality/performance.md +84 -0
  110. package/src/docs/principles/quality/privacy.md +92 -0
  111. package/src/docs/principles/quality/reliability.md +89 -0
  112. package/src/docs/principles/quality/security.md +78 -0
  113. package/src/docs/principles/stack/postgres.md +100 -0
  114. package/src/docs/principles/system-design/api-design.md +86 -0
  115. package/src/docs/principles/system-design/architecture-decisions.md +81 -0
  116. package/src/docs/principles/system-design/code-structure.md +104 -0
  117. package/src/docs/principles/system-design/data-engineering.md +87 -0
  118. package/src/docs/principles/system-design/durable-execution.md +89 -0
  119. package/src/docs/principles/system-design/evolutionary-architecture.md +81 -0
  120. package/src/docs/principles/system-design/identity-and-access.md +76 -0
  121. package/src/docs/principles/system-design/integration-patterns.md +84 -0
  122. package/src/docs/principles/system-design/real-time.md +83 -0
  123. package/src/docs/principles/system-design/surface-architecture.md +74 -0
  124. package/src/docs/ways-of-working/documentation.md +69 -0
  125. package/src/docs/ways-of-working/how-we-work.md +76 -0
  126. package/src/docs/ways-of-working/units-of-work.md +40 -0
  127. package/src/engineer-skills/groundwork-electron-engineer/SKILL.md +123 -0
  128. package/src/engineer-skills/groundwork-electron-engineer/references/documentation.md +126 -0
  129. package/src/engineer-skills/groundwork-electron-engineer/references/ipc-contracts.md +138 -0
  130. package/src/engineer-skills/groundwork-electron-engineer/references/observability.md +37 -0
  131. package/src/engineer-skills/groundwork-electron-engineer/references/packaging-and-updates.md +82 -0
  132. package/src/engineer-skills/groundwork-electron-engineer/references/performance-and-reliability.md +80 -0
  133. package/src/engineer-skills/groundwork-electron-engineer/references/process-model.md +94 -0
  134. package/src/engineer-skills/groundwork-electron-engineer/references/security.md +107 -0
  135. package/src/engineer-skills/groundwork-electron-engineer/references/testing-and-smoke.md +129 -0
  136. package/src/engineer-skills/groundwork-electron-engineer/references/theming-and-tokens.md +74 -0
  137. package/src/engineer-skills/groundwork-electron-engineer/sync-anchor.md +22 -0
  138. package/src/engineer-skills/groundwork-flutter-engineer/SKILL.md +114 -0
  139. package/src/engineer-skills/groundwork-flutter-engineer/references/accessibility.md +92 -0
  140. package/src/engineer-skills/groundwork-flutter-engineer/references/architecture.md +189 -0
  141. package/src/engineer-skills/groundwork-flutter-engineer/references/data-and-contracts.md +136 -0
  142. package/src/engineer-skills/groundwork-flutter-engineer/references/documentation.md +122 -0
  143. package/src/engineer-skills/groundwork-flutter-engineer/references/navigation.md +122 -0
  144. package/src/engineer-skills/groundwork-flutter-engineer/references/observability.md +37 -0
  145. package/src/engineer-skills/groundwork-flutter-engineer/references/performance-and-reliability.md +100 -0
  146. package/src/engineer-skills/groundwork-flutter-engineer/references/platform-channels.md +93 -0
  147. package/src/engineer-skills/groundwork-flutter-engineer/references/releases-and-distribution.md +84 -0
  148. package/src/engineer-skills/groundwork-flutter-engineer/references/security.md +96 -0
  149. package/src/engineer-skills/groundwork-flutter-engineer/references/state-management.md +166 -0
  150. package/src/engineer-skills/groundwork-flutter-engineer/references/testing.md +160 -0
  151. package/src/engineer-skills/groundwork-flutter-engineer/references/theming-and-design-tokens.md +109 -0
  152. package/src/engineer-skills/groundwork-flutter-engineer/references/widgets-and-composition.md +123 -0
  153. package/src/engineer-skills/groundwork-flutter-engineer/sync-anchor.md +24 -0
  154. package/src/engineer-skills/groundwork-go-engineer/SKILL.md +174 -0
  155. package/src/engineer-skills/groundwork-go-engineer/references/api-design.md +82 -0
  156. package/src/engineer-skills/groundwork-go-engineer/references/architecture.md +42 -0
  157. package/src/engineer-skills/groundwork-go-engineer/references/capability-ports.md +50 -0
  158. package/src/engineer-skills/groundwork-go-engineer/references/code-craft-security.md +34 -0
  159. package/src/engineer-skills/groundwork-go-engineer/references/concurrency.md +108 -0
  160. package/src/engineer-skills/groundwork-go-engineer/references/documentation.md +130 -0
  161. package/src/engineer-skills/groundwork-go-engineer/references/go-services.md +77 -0
  162. package/src/engineer-skills/groundwork-go-engineer/references/http-handlers.md +172 -0
  163. package/src/engineer-skills/groundwork-go-engineer/references/implementation-patterns.md +156 -0
  164. package/src/engineer-skills/groundwork-go-engineer/references/integration-realtime-data.md +57 -0
  165. package/src/engineer-skills/groundwork-go-engineer/references/observability.md +49 -0
  166. package/src/engineer-skills/groundwork-go-engineer/references/postgres.md +41 -0
  167. package/src/engineer-skills/groundwork-go-engineer/references/reliability-performance.md +105 -0
  168. package/src/engineer-skills/groundwork-go-engineer/references/testing.md +201 -0
  169. package/src/engineer-skills/groundwork-go-engineer/sync-anchor.md +20 -0
  170. package/src/engineer-skills/groundwork-nextjs-engineer/SKILL.md +112 -0
  171. package/src/engineer-skills/groundwork-nextjs-engineer/references/accessibility.md +111 -0
  172. package/src/engineer-skills/groundwork-nextjs-engineer/references/architecture.md +323 -0
  173. package/src/engineer-skills/groundwork-nextjs-engineer/references/data-fetching.md +458 -0
  174. package/src/engineer-skills/groundwork-nextjs-engineer/references/documentation.md +324 -0
  175. package/src/engineer-skills/groundwork-nextjs-engineer/references/error-boundaries.md +383 -0
  176. package/src/engineer-skills/groundwork-nextjs-engineer/references/mutations-and-forms.md +396 -0
  177. package/src/engineer-skills/groundwork-nextjs-engineer/references/observability.md +48 -0
  178. package/src/engineer-skills/groundwork-nextjs-engineer/references/performance-and-deployment.md +947 -0
  179. package/src/engineer-skills/groundwork-nextjs-engineer/references/routing-and-navigation.md +405 -0
  180. package/src/engineer-skills/groundwork-nextjs-engineer/references/security.md +131 -0
  181. package/src/engineer-skills/groundwork-nextjs-engineer/references/server-components.md +394 -0
  182. package/src/engineer-skills/groundwork-nextjs-engineer/references/tailwind-and-styling.md +134 -0
  183. package/src/engineer-skills/groundwork-nextjs-engineer/references/testing.md +491 -0
  184. package/src/engineer-skills/groundwork-nextjs-engineer/references/type-system.md +368 -0
  185. package/src/engineer-skills/groundwork-nextjs-engineer/references/ux-principles.md +230 -0
  186. package/src/engineer-skills/groundwork-nextjs-engineer/references/visual-language.md +69 -0
  187. package/src/engineer-skills/groundwork-nextjs-engineer/sync-anchor.md +16 -0
  188. package/src/engineer-skills/groundwork-python-engineer/SKILL.md +199 -0
  189. package/src/engineer-skills/groundwork-python-engineer/references/api-standards.md +88 -0
  190. package/src/engineer-skills/groundwork-python-engineer/references/architecture.md +57 -0
  191. package/src/engineer-skills/groundwork-python-engineer/references/async-patterns.md +103 -0
  192. package/src/engineer-skills/groundwork-python-engineer/references/capability-ports.md +44 -0
  193. package/src/engineer-skills/groundwork-python-engineer/references/database.md +88 -0
  194. package/src/engineer-skills/groundwork-python-engineer/references/documentation-mcp.md +167 -0
  195. package/src/engineer-skills/groundwork-python-engineer/references/implementation-patterns.md +166 -0
  196. package/src/engineer-skills/groundwork-python-engineer/references/ml-pipelines.md +119 -0
  197. package/src/engineer-skills/groundwork-python-engineer/references/ml-systems-ai-engineering.md +74 -0
  198. package/src/engineer-skills/groundwork-python-engineer/references/observability.md +57 -0
  199. package/src/engineer-skills/groundwork-python-engineer/references/resilience.md +126 -0
  200. package/src/engineer-skills/groundwork-python-engineer/references/security.md +148 -0
  201. package/src/engineer-skills/groundwork-python-engineer/references/testing.md +216 -0
  202. package/src/engineer-skills/groundwork-python-engineer/sync-anchor.md +20 -0
  203. package/src/generators/add-capability/generator.ts +70 -0
  204. package/src/generators/add-capability/schema.json +30 -0
  205. package/src/generators/capabilities/llm/capability.json +28 -0
  206. package/src/generators/capabilities/llm/providers/anthropic/footprint.json +13 -0
  207. package/src/generators/capabilities/llm/providers/anthropic/stacks/go/internal/llm/llm.go.template +102 -0
  208. package/src/generators/capabilities/llm/providers/anthropic/stacks/python/src/__packageName__/adapters/llm.py.template +61 -0
  209. package/src/generators/capabilities/llm/providers/local/footprint.json +13 -0
  210. package/src/generators/capabilities/llm/providers/local/stacks/go/internal/llm/llm.go.template +102 -0
  211. package/src/generators/capabilities/llm/providers/local/stacks/python/src/__packageName__/adapters/llm.py.template +53 -0
  212. package/src/generators/capabilities/llm/providers/localai/footprint.json +29 -0
  213. package/src/generators/capabilities/llm/providers/localai/stacks/go/internal/llm/llm.go.template +102 -0
  214. package/src/generators/capabilities/llm/providers/localai/stacks/python/src/__packageName__/adapters/llm.py.template +53 -0
  215. package/src/generators/capabilities/llm/providers/none/footprint.json +9 -0
  216. package/src/generators/capabilities/llm/providers/none/stacks/go/internal/llm/llm.go.template +35 -0
  217. package/src/generators/capabilities/llm/providers/none/stacks/python/src/__packageName__/adapters/llm.py.template +25 -0
  218. package/src/generators/capabilities/llm/providers/ollama/footprint.json +20 -0
  219. package/src/generators/capabilities/llm/providers/ollama/stacks/go/internal/llm/llm.go.template +102 -0
  220. package/src/generators/capabilities/llm/providers/ollama/stacks/python/src/__packageName__/adapters/llm.py.template +53 -0
  221. package/src/generators/capabilities/llm/providers/openai/footprint.json +13 -0
  222. package/src/generators/capabilities/llm/providers/openai/stacks/go/internal/llm/llm.go.template +98 -0
  223. package/src/generators/capabilities/llm/providers/openai/stacks/python/src/__packageName__/adapters/llm.py.template +60 -0
  224. package/src/generators/capabilities/llm/stacks/go/internal/core/service/llm.go.template +12 -0
  225. package/src/generators/capabilities/llm/stacks/go/internal/llm/llm_test.go.template +33 -0
  226. package/src/generators/capabilities/llm/stacks/python/src/__packageName__/core/llm.py.template +15 -0
  227. package/src/generators/capabilities/llm/stacks/python/tests/contracts/test_llm.py.template +37 -0
  228. package/src/generators/cli-app/files/README.md.template +76 -0
  229. package/src/generators/cli-app/files/build.mjs.template +15 -0
  230. package/src/generators/cli-app/files/package.json.template +21 -0
  231. package/src/generators/cli-app/files/src/cli.ts.template +67 -0
  232. package/src/generators/cli-app/files/src/commands/hello.ts.template +17 -0
  233. package/src/generators/cli-app/files/src/commands/status.ts.template +23 -0
  234. package/src/generators/cli-app/files/src/core/client.test.ts.template +80 -0
  235. package/src/generators/cli-app/files/src/core/client.ts.template +64 -0
  236. package/src/generators/cli-app/files/src/registry.test.ts.template +35 -0
  237. package/src/generators/cli-app/files/src/registry.ts.template +31 -0
  238. package/src/generators/cli-app/files/tsconfig.json.template +16 -0
  239. package/src/generators/cli-app/files/tsconfig.test.json.template +11 -0
  240. package/src/generators/cli-app/generator.ts +138 -0
  241. package/src/generators/cli-app/schema.json +24 -0
  242. package/src/generators/docs-site/files/.gitignore.ejs +40 -0
  243. package/src/generators/docs-site/files/app/docs/__slug__/page.tsx +101 -0
  244. package/src/generators/docs-site/files/app/docs/layout.tsx +14 -0
  245. package/src/generators/docs-site/files/app/docs.css +43 -0
  246. package/src/generators/docs-site/files/app/layout.tsx +24 -0
  247. package/src/generators/docs-site/files/app/page.tsx +135 -0
  248. package/src/generators/docs-site/files/app/source.ts +8 -0
  249. package/src/generators/docs-site/files/components/mermaid.tsx +67 -0
  250. package/src/generators/docs-site/files/next.config.mjs +10 -0
  251. package/src/generators/docs-site/files/package.json +32 -0
  252. package/src/generators/docs-site/files/pnpm-workspace.yaml +7 -0
  253. package/src/generators/docs-site/files/postcss.config.mjs +6 -0
  254. package/src/generators/docs-site/files/source.config.ts +77 -0
  255. package/src/generators/docs-site/files/tailwind.config.js +10 -0
  256. package/src/generators/docs-site/files/tsconfig.json +27 -0
  257. package/src/generators/docs-site/generator.ts +476 -0
  258. package/src/generators/docs-site/schema.json +17 -0
  259. package/src/generators/electron-app/docs/principles/stack/electron/index.md +49 -0
  260. package/src/generators/electron-app/docs/principles/stack/electron/ipc-contracts.md +71 -0
  261. package/src/generators/electron-app/docs/principles/stack/electron/packaging-and-updates.md +59 -0
  262. package/src/generators/electron-app/docs/principles/stack/electron/process-model.md +53 -0
  263. package/src/generators/electron-app/docs/principles/stack/electron/security.md +70 -0
  264. package/src/generators/electron-app/docs/principles/stack/typescript/frontend.md +65 -0
  265. package/src/generators/electron-app/files/.gitignore.template +20 -0
  266. package/src/generators/electron-app/files/README.md.template +125 -0
  267. package/src/generators/electron-app/files/electron.vite.config.ts +31 -0
  268. package/src/generators/electron-app/files/eslint.config.mjs +92 -0
  269. package/src/generators/electron-app/files/forge.config.ts.template +44 -0
  270. package/src/generators/electron-app/files/package.json.template +54 -0
  271. package/src/generators/electron-app/files/playwright.config.ts +18 -0
  272. package/src/generators/electron-app/files/project.json.template +65 -0
  273. package/src/generators/electron-app/files/src/main/core-client.test.ts +81 -0
  274. package/src/generators/electron-app/files/src/main/core-client.ts +55 -0
  275. package/src/generators/electron-app/files/src/main/index.ts +157 -0
  276. package/src/generators/electron-app/files/src/main/ipc.ts +52 -0
  277. package/src/generators/electron-app/files/src/main/policy.test.ts +71 -0
  278. package/src/generators/electron-app/files/src/main/policy.ts +73 -0
  279. package/src/generators/electron-app/files/src/preload/index.ts +23 -0
  280. package/src/generators/electron-app/files/src/renderer/index.html.template +20 -0
  281. package/src/generators/electron-app/files/src/renderer/src/App.test.tsx +61 -0
  282. package/src/generators/electron-app/files/src/renderer/src/App.tsx.template +43 -0
  283. package/src/generators/electron-app/files/src/renderer/src/assets/main.css +40 -0
  284. package/src/generators/electron-app/files/src/renderer/src/env.d.ts +14 -0
  285. package/src/generators/electron-app/files/src/renderer/src/main.tsx +25 -0
  286. package/src/generators/electron-app/files/src/shared/ipc.ts +54 -0
  287. package/src/generators/electron-app/files/tests/smoke/app.spec.ts.template +133 -0
  288. package/src/generators/electron-app/files/tool/electron_exec.sh.template +83 -0
  289. package/src/generators/electron-app/files/tsconfig.json +7 -0
  290. package/src/generators/electron-app/files/tsconfig.node.json +27 -0
  291. package/src/generators/electron-app/files/tsconfig.web.json +22 -0
  292. package/src/generators/electron-app/files/vitest.config.ts +32 -0
  293. package/src/generators/electron-app/files/vitest.setup.ts +1 -0
  294. package/src/generators/electron-app/generator.ts +288 -0
  295. package/src/generators/electron-app/schema.json +23 -0
  296. package/src/generators/flutter-app/docs/principles/stack/flutter/architecture.md +78 -0
  297. package/src/generators/flutter-app/docs/principles/stack/flutter/index.md +38 -0
  298. package/src/generators/flutter-app/docs/principles/stack/flutter/platform-channels.md +51 -0
  299. package/src/generators/flutter-app/docs/principles/stack/flutter/releases-and-distribution.md +59 -0
  300. package/src/generators/flutter-app/docs/principles/stack/flutter/state-management.md +85 -0
  301. package/src/generators/flutter-app/docs/principles/stack/flutter/testing.md +86 -0
  302. package/src/generators/flutter-app/docs/principles/stack/flutter/widgets-and-composition.md +69 -0
  303. package/src/generators/flutter-app/files/.gitignore.template +30 -0
  304. package/src/generators/flutter-app/files/README.md.template +100 -0
  305. package/src/generators/flutter-app/files/analysis_options.yaml.template +18 -0
  306. package/src/generators/flutter-app/files/integration_test/app_test.dart.template +64 -0
  307. package/src/generators/flutter-app/files/lib/app.dart.template +24 -0
  308. package/src/generators/flutter-app/files/lib/config/app_config.dart +15 -0
  309. package/src/generators/flutter-app/files/lib/data/repositories/status_repository.dart +36 -0
  310. package/src/generators/flutter-app/files/lib/data/services/api_client.dart +71 -0
  311. package/src/generators/flutter-app/files/lib/domain/models/health_status.dart +23 -0
  312. package/src/generators/flutter-app/files/lib/main.dart +11 -0
  313. package/src/generators/flutter-app/files/lib/router.dart +23 -0
  314. package/src/generators/flutter-app/files/lib/ui/core/theme/app_theme.dart +110 -0
  315. package/src/generators/flutter-app/files/lib/ui/home/home_view.dart +89 -0
  316. package/src/generators/flutter-app/files/lib/ui/home/home_view_model.dart.template +38 -0
  317. package/src/generators/flutter-app/files/project.json.template +51 -0
  318. package/src/generators/flutter-app/files/pubspec.yaml.template +47 -0
  319. package/src/generators/flutter-app/files/test/api_client_test.dart.template +63 -0
  320. package/src/generators/flutter-app/files/test/fakes/fake_status_repository.dart.template +19 -0
  321. package/src/generators/flutter-app/files/test/home_view_test.dart.template +58 -0
  322. package/src/generators/flutter-app/files/tool/flutter_exec.sh.template +60 -0
  323. package/src/generators/flutter-app/generator.ts +362 -0
  324. package/src/generators/flutter-app/schema.json +23 -0
  325. package/src/generators/go-microservice/docs/principles/stack/go/concurrency.md +123 -0
  326. package/src/generators/go-microservice/docs/principles/stack/go/index.md +70 -0
  327. package/src/generators/go-microservice/docs/principles/stack/go/testing.md +168 -0
  328. package/src/generators/go-microservice/files/.air.toml.template +38 -0
  329. package/src/generators/go-microservice/files/.env.template +4 -0
  330. package/src/generators/go-microservice/files/.golangci.yml.template +82 -0
  331. package/src/generators/go-microservice/files/Dockerfile.dev.template +12 -0
  332. package/src/generators/go-microservice/files/asyncapi-pubsub.yaml.template +33 -0
  333. package/src/generators/go-microservice/files/asyncapi-ws.yaml.template +34 -0
  334. package/src/generators/go-microservice/files/cmd/api/main.go.template +149 -0
  335. package/src/generators/go-microservice/files/cmd/api/main_test.go.template +99 -0
  336. package/src/generators/go-microservice/files/cmd/worker/cleanup/main.go.template +39 -0
  337. package/src/generators/go-microservice/files/db/schema.sql.template +24 -0
  338. package/src/generators/go-microservice/files/go.mod.template +39 -0
  339. package/src/generators/go-microservice/files/internal/config/config.go.template +52 -0
  340. package/src/generators/go-microservice/files/internal/config/otel.go.template +93 -0
  341. package/src/generators/go-microservice/files/internal/core/domain/errors.go.template +16 -0
  342. package/src/generators/go-microservice/files/internal/core/domain/model.go.template +28 -0
  343. package/src/generators/go-microservice/files/internal/core/domain/user.go.template +13 -0
  344. package/src/generators/go-microservice/files/internal/core/pagination.go.template +16 -0
  345. package/src/generators/go-microservice/files/internal/core/service/app_service.go.template +79 -0
  346. package/src/generators/go-microservice/files/internal/core/service/event_hub.go.template +9 -0
  347. package/src/generators/go-microservice/files/internal/core/service/message_queue.go.template +10 -0
  348. package/src/generators/go-microservice/files/internal/core/service/outbox_repository.go.template +31 -0
  349. package/src/generators/go-microservice/files/internal/core/service/repository.go.template +23 -0
  350. package/src/generators/go-microservice/files/internal/core/service/user_repository.go.template +15 -0
  351. package/src/generators/go-microservice/files/internal/core/service/user_service.go.template +43 -0
  352. package/src/generators/go-microservice/files/internal/entrypoints/api/app_handler.go.template +108 -0
  353. package/src/generators/go-microservice/files/internal/entrypoints/api/auth_middleware_test.go.template +52 -0
  354. package/src/generators/go-microservice/files/internal/entrypoints/api/clerk_webhook.go.template +202 -0
  355. package/src/generators/go-microservice/files/internal/entrypoints/api/clerk_webhook_test.go.template +82 -0
  356. package/src/generators/go-microservice/files/internal/entrypoints/api/health_handler.go.template +80 -0
  357. package/src/generators/go-microservice/files/internal/entrypoints/api/idempotency/middleware.go.template +87 -0
  358. package/src/generators/go-microservice/files/internal/entrypoints/api/idempotency/middleware_test.go.template +76 -0
  359. package/src/generators/go-microservice/files/internal/entrypoints/api/idempotency/repository.go.template +37 -0
  360. package/src/generators/go-microservice/files/internal/entrypoints/api/middleware_auth.go.template +40 -0
  361. package/src/generators/go-microservice/files/internal/entrypoints/api/middleware_loadshed.go.template +38 -0
  362. package/src/generators/go-microservice/files/internal/entrypoints/api/middleware_logging.go.template +40 -0
  363. package/src/generators/go-microservice/files/internal/entrypoints/api/middleware_ratelimit.go.template +48 -0
  364. package/src/generators/go-microservice/files/internal/entrypoints/api/middleware_test.go.template +81 -0
  365. package/src/generators/go-microservice/files/internal/entrypoints/api/router.go.template +105 -0
  366. package/src/generators/go-microservice/files/internal/entrypoints/api/types.go.template +70 -0
  367. package/src/generators/go-microservice/files/internal/entrypoints/api/websocket_handler.go.template +39 -0
  368. package/src/generators/go-microservice/files/internal/httpclient/http_client.go.template +87 -0
  369. package/src/generators/go-microservice/files/internal/kafka/kafka.go.template +34 -0
  370. package/src/generators/go-microservice/files/internal/postgres/postgres.go.template +195 -0
  371. package/src/generators/go-microservice/files/internal/postgres/postgres_test.go.template +156 -0
  372. package/src/generators/go-microservice/files/internal/postgres/user_repository.go.template +56 -0
  373. package/src/generators/go-microservice/files/internal/pubsub/gcp_pubsub.go.template +35 -0
  374. package/src/generators/go-microservice/files/internal/websocket/client.go.template +151 -0
  375. package/src/generators/go-microservice/files/internal/websocket/hub.go.template +261 -0
  376. package/src/generators/go-microservice/files/scripts/apply-schema.sh.template +21 -0
  377. package/src/generators/go-microservice/files/tools/tools.go.template +10 -0
  378. package/src/generators/go-microservice/generator.ts +240 -0
  379. package/src/generators/go-microservice/schema.json +63 -0
  380. package/src/generators/nextjs-app/docs/principles/stack/typescript/frontend.md +65 -0
  381. package/src/generators/nextjs-app/files/.dockerignore.template +7 -0
  382. package/src/generators/nextjs-app/files/.env.example.template +24 -0
  383. package/src/generators/nextjs-app/files/.gitignore.template +5 -0
  384. package/src/generators/nextjs-app/files/Dockerfile +53 -0
  385. package/src/generators/nextjs-app/files/app/(auth)/sign-in/__sign-in__/page.tsx.template +9 -0
  386. package/src/generators/nextjs-app/files/app/(auth)/sign-up/__sign-up__/page.tsx.template +9 -0
  387. package/src/generators/nextjs-app/files/app/api/config/route.ts.template +39 -0
  388. package/src/generators/nextjs-app/files/app/api/healthz/route.test.ts +15 -0
  389. package/src/generators/nextjs-app/files/app/api/healthz/route.ts +5 -0
  390. package/src/generators/nextjs-app/files/app/api/proxy/__path__/route.test.ts.template +55 -0
  391. package/src/generators/nextjs-app/files/app/api/proxy/__path__/route.ts.template +126 -0
  392. package/src/generators/nextjs-app/files/app/error.tsx +39 -0
  393. package/src/generators/nextjs-app/files/app/global-error.tsx +68 -0
  394. package/src/generators/nextjs-app/files/app/globals.css +105 -0
  395. package/src/generators/nextjs-app/files/app/layout.tsx +59 -0
  396. package/src/generators/nextjs-app/files/app/loading.tsx +13 -0
  397. package/src/generators/nextjs-app/files/app/not-found.tsx +30 -0
  398. package/src/generators/nextjs-app/files/app/page.tsx +20 -0
  399. package/src/generators/nextjs-app/files/components/providers/default.tsx +19 -0
  400. package/src/generators/nextjs-app/files/components/providers/production.tsx +32 -0
  401. package/src/generators/nextjs-app/files/components/providers/telemetry.tsx +76 -0
  402. package/src/generators/nextjs-app/files/components/render-smoke.test.tsx +29 -0
  403. package/src/generators/nextjs-app/files/components/theme-provider.tsx +11 -0
  404. package/src/generators/nextjs-app/files/components.json +21 -0
  405. package/src/generators/nextjs-app/files/eslint.config.mjs +120 -0
  406. package/src/generators/nextjs-app/files/hooks/use-toast.ts +7 -0
  407. package/src/generators/nextjs-app/files/instrumentation.ts +90 -0
  408. package/src/generators/nextjs-app/files/lib/api/fetcher.ts.template +130 -0
  409. package/src/generators/nextjs-app/files/lib/config.ts +21 -0
  410. package/src/generators/nextjs-app/files/lib/logger.ts +29 -0
  411. package/src/generators/nextjs-app/files/lib/schemas/index.ts +19 -0
  412. package/src/generators/nextjs-app/files/lib/utils.ts +6 -0
  413. package/src/generators/nextjs-app/files/next.config.mjs +9 -0
  414. package/src/generators/nextjs-app/files/package.json +70 -0
  415. package/src/generators/nextjs-app/files/postcss.config.mjs +8 -0
  416. package/src/generators/nextjs-app/files/proxy.test.ts.template +30 -0
  417. package/src/generators/nextjs-app/files/proxy.ts +31 -0
  418. package/src/generators/nextjs-app/files/public/.gitkeep +1 -0
  419. package/src/generators/nextjs-app/files/tsconfig.json +42 -0
  420. package/src/generators/nextjs-app/files/vitest.config.mts +15 -0
  421. package/src/generators/nextjs-app/files/vitest.setup.ts +7 -0
  422. package/src/generators/nextjs-app/generator.ts +307 -0
  423. package/src/generators/nextjs-app/schema.json +44 -0
  424. package/src/generators/python-microservice/docs/principles/stack/python/async.md +168 -0
  425. package/src/generators/python-microservice/docs/principles/stack/python/documentation.md +240 -0
  426. package/src/generators/python-microservice/docs/principles/stack/python/mcp.md +147 -0
  427. package/src/generators/python-microservice/docs/principles/stack/python/resilience.md +193 -0
  428. package/src/generators/python-microservice/docs/principles/stack/python/testing.md +322 -0
  429. package/src/generators/python-microservice/files/.env.example.template +30 -0
  430. package/src/generators/python-microservice/files/Dockerfile.template +36 -0
  431. package/src/generators/python-microservice/files/db/schema.sql.template +19 -0
  432. package/src/generators/python-microservice/files/pyproject.toml.template +76 -0
  433. package/src/generators/python-microservice/files/scripts/apply-schema.sh.template +25 -0
  434. package/src/generators/python-microservice/files/src/__packageName__/adapters/comfyui.py.template +87 -0
  435. package/src/generators/python-microservice/files/src/__packageName__/adapters/config.py.template +48 -0
  436. package/src/generators/python-microservice/files/src/__packageName__/adapters/database.py.template +21 -0
  437. package/src/generators/python-microservice/files/src/__packageName__/adapters/message_queue.py.template +29 -0
  438. package/src/generators/python-microservice/files/src/__packageName__/adapters/repository.py.template +130 -0
  439. package/src/generators/python-microservice/files/src/__packageName__/adapters/telemetry.py.template +68 -0
  440. package/src/generators/python-microservice/files/src/__packageName__/adapters/websocket_hub.py.template +36 -0
  441. package/src/generators/python-microservice/files/src/__packageName__/core/domain/entities.py.template +22 -0
  442. package/src/generators/python-microservice/files/src/__packageName__/core/domain/exceptions.py.template +43 -0
  443. package/src/generators/python-microservice/files/src/__packageName__/core/ports.py.template +42 -0
  444. package/src/generators/python-microservice/files/src/__packageName__/core/service/example_service.py.template +68 -0
  445. package/src/generators/python-microservice/files/src/__packageName__/entrypoints/api/dependencies.py.template +50 -0
  446. package/src/generators/python-microservice/files/src/__packageName__/entrypoints/api/middleware.py.template +131 -0
  447. package/src/generators/python-microservice/files/src/__packageName__/entrypoints/api/router.py.template +37 -0
  448. package/src/generators/python-microservice/files/src/__packageName__/entrypoints/api/websocket_handler.py.template +20 -0
  449. package/src/generators/python-microservice/files/src/__packageName__/entrypoints/worker/cleanup.py.template +35 -0
  450. package/src/generators/python-microservice/files/src/__packageName__/entrypoints/worker/worker.py.template +28 -0
  451. package/src/generators/python-microservice/files/src/__packageName__/main.py.template +108 -0
  452. package/src/generators/python-microservice/files/tests/test_main.py.template +74 -0
  453. package/src/generators/python-microservice/files/tests/test_middleware.py.template +109 -0
  454. package/src/generators/python-microservice/files/tests/test_worker.py.template +16 -0
  455. package/src/generators/python-microservice/generator.ts +286 -0
  456. package/src/generators/python-microservice/schema.json +86 -0
  457. package/src/generators/shared/brand-tokens.ts +301 -0
  458. package/src/generators/shared/capabilities.ts +349 -0
  459. package/src/generators/shared/provenance.ts +61 -0
  460. package/src/generators/shared/scaffold-helpers.ts +309 -0
  461. package/src/generators/system-test-runner/NATIVE-CHECK-CONTRACT.md +20 -0
  462. package/src/generators/system-test-runner/files/tests/bets/.gitkeep +0 -0
  463. package/src/generators/system-test-runner/files/tests/bets/_archive/.gitkeep +0 -0
  464. package/src/generators/system-test-runner/files/tests/conftest.py.template +503 -0
  465. package/src/generators/system-test-runner/files/tests/pyproject.toml.template +20 -0
  466. package/src/generators/system-test-runner/files/tests/system/pages/__init__.py.template +9 -0
  467. package/src/generators/system-test-runner/files/tests/system/pages/base_page.py.template +36 -0
  468. package/src/generators/system-test-runner/files/tests/system/test_a11y_smoke.py.template +132 -0
  469. package/src/generators/system-test-runner/files/tests/system/test_contract_conformance.py.template +140 -0
  470. package/src/generators/system-test-runner/files/tests/system/test_layout_geometry.py.template +109 -0
  471. package/src/generators/system-test-runner/files/tests/system/test_render_smoke.py.template +257 -0
  472. package/src/generators/system-test-runner/files/tests/system/test_system.py.template +158 -0
  473. package/src/generators/system-test-runner/files/tests/system/test_token_conformance.py.template +206 -0
  474. package/src/generators/system-test-runner/files/tests/system/test_visual_regression.py.template +104 -0
  475. package/src/generators/system-test-runner/generator.ts +196 -0
  476. package/src/generators/system-test-runner/schema.json +24 -0
  477. package/src/generators/workspace-dev-cli/cli-src/build.mjs +42 -0
  478. package/src/generators/workspace-dev-cli/cli-src/dist/dev-bundle.js +2168 -0
  479. package/src/generators/workspace-dev-cli/cli-src/src/commands/bet.ts +442 -0
  480. package/src/generators/workspace-dev-cli/cli-src/src/commands/completion.ts +87 -0
  481. package/src/generators/workspace-dev-cli/cli-src/src/commands/doctor.ts +139 -0
  482. package/src/generators/workspace-dev-cli/cli-src/src/commands/lifecycle.ts +548 -0
  483. package/src/generators/workspace-dev-cli/cli-src/src/commands/quality.ts +127 -0
  484. package/src/generators/workspace-dev-cli/cli-src/src/commands/surface.ts +214 -0
  485. package/src/generators/workspace-dev-cli/cli-src/src/index.ts +127 -0
  486. package/src/generators/workspace-dev-cli/cli-src/src/registry.ts +194 -0
  487. package/src/generators/workspace-dev-cli/cli-src/src/theme/color.ts +130 -0
  488. package/src/generators/workspace-dev-cli/cli-src/src/theme/render.ts +158 -0
  489. package/src/generators/workspace-dev-cli/cli-src/src/theme/tokens.ts +122 -0
  490. package/src/generators/workspace-dev-cli/cli-src/src/util/context.ts +43 -0
  491. package/src/generators/workspace-dev-cli/cli-src/src/util/extensions.ts +99 -0
  492. package/src/generators/workspace-dev-cli/cli-src/src/util/paths.ts +46 -0
  493. package/src/generators/workspace-dev-cli/cli-src/src/util/proc.ts +106 -0
  494. package/src/generators/workspace-dev-cli/cli-src/src/util/prompt.ts +108 -0
  495. package/src/generators/workspace-dev-cli/cli-src/src/util/runners.ts +70 -0
  496. package/src/generators/workspace-dev-cli/cli-src/src/util/services.ts +221 -0
  497. package/src/generators/workspace-dev-cli/cli-src/src/util/version.ts +21 -0
  498. package/src/generators/workspace-dev-cli/cli-src/tsconfig.json +16 -0
  499. package/src/generators/workspace-dev-cli/files/.agents/skills/workspace-cli/SKILL.md.template +74 -0
  500. package/src/generators/workspace-dev-cli/files/dev.template +16 -0
  501. package/src/generators/workspace-dev-cli/files/docker-compose.yml.template +20 -0
  502. package/src/generators/workspace-dev-cli/files/scripts/cli/templates/milestone-test.pytmpl.template +46 -0
  503. package/src/generators/workspace-dev-cli/files/scripts/cli/templates/slice-test.pytmpl.template +38 -0
  504. package/src/generators/workspace-dev-cli/generator.ts +136 -0
  505. package/src/generators/workspace-dev-cli/schema.json +22 -0
  506. package/src/hidden-skills/code-intelligence.md +135 -0
  507. package/src/hidden-skills/groundwork-architect/SKILL.md +114 -0
  508. package/src/hidden-skills/groundwork-architect/references/agentic-systems.md +44 -0
  509. package/src/hidden-skills/groundwork-architect/references/ai-native-architecture.md +37 -0
  510. package/src/hidden-skills/groundwork-architect/references/api-and-contracts.md +45 -0
  511. package/src/hidden-skills/groundwork-architect/references/core-and-boundaries.md +45 -0
  512. package/src/hidden-skills/groundwork-architect/references/data-architecture.md +33 -0
  513. package/src/hidden-skills/groundwork-architect/references/decision-records.md +34 -0
  514. package/src/hidden-skills/groundwork-architect/references/durable-execution.md +45 -0
  515. package/src/hidden-skills/groundwork-architect/references/evolutionary-architecture.md +37 -0
  516. package/src/hidden-skills/groundwork-architect/references/identity-and-access.md +41 -0
  517. package/src/hidden-skills/groundwork-architect/references/integration-patterns.md +39 -0
  518. package/src/hidden-skills/groundwork-architect/references/observability.md +36 -0
  519. package/src/hidden-skills/groundwork-architect/references/performance-and-scale.md +41 -0
  520. package/src/hidden-skills/groundwork-architect/references/platform-and-delivery.md +47 -0
  521. package/src/hidden-skills/groundwork-architect/references/realtime-and-async.md +28 -0
  522. package/src/hidden-skills/groundwork-architect/references/reliability.md +31 -0
  523. package/src/hidden-skills/groundwork-architect/references/security-and-trust.md +47 -0
  524. package/src/hidden-skills/groundwork-architect/references/surface-architecture.md +40 -0
  525. package/src/hidden-skills/groundwork-architect/sync-anchor.md +34 -0
  526. package/src/hidden-skills/groundwork-architecture/architecture-template.md +50 -0
  527. package/src/hidden-skills/groundwork-architecture/instructions.md +139 -0
  528. package/src/hidden-skills/groundwork-architecture/phases/01-context-ingestion.md +18 -0
  529. package/src/hidden-skills/groundwork-architecture/phases/02-technical-constraints.md +27 -0
  530. package/src/hidden-skills/groundwork-architecture/phases/03-service-design.md +19 -0
  531. package/src/hidden-skills/groundwork-architecture/phases/04-data-flow-communication.md +23 -0
  532. package/src/hidden-skills/groundwork-architecture/phases/05-component-boundaries-contracts.md +17 -0
  533. package/src/hidden-skills/groundwork-architecture/phases/06-draft-review-present.md +38 -0
  534. package/src/hidden-skills/groundwork-architecture/phases/07-commit.md +33 -0
  535. package/src/hidden-skills/groundwork-architecture/templates/architecture-cache.md +43 -0
  536. package/src/hidden-skills/groundwork-architecture-extract/instructions.md +163 -0
  537. package/src/hidden-skills/groundwork-architecture-extract/templates/architecture-extract-cache.md +21 -0
  538. package/src/hidden-skills/groundwork-bet/briefs/acceptance-auditor.md +68 -0
  539. package/src/hidden-skills/groundwork-bet/briefs/blind-reviewer.md +56 -0
  540. package/src/hidden-skills/groundwork-bet/briefs/coverage-auditor.md +95 -0
  541. package/src/hidden-skills/groundwork-bet/briefs/edge-case-tracer.md +64 -0
  542. package/src/hidden-skills/groundwork-bet/briefs/experience-auditor.md +83 -0
  543. package/src/hidden-skills/groundwork-bet/briefs/slice-worker.md +257 -0
  544. package/src/hidden-skills/groundwork-bet/instructions.md +88 -0
  545. package/src/hidden-skills/groundwork-bet/templates/bet-progress-test.md +115 -0
  546. package/src/hidden-skills/groundwork-bet/templates/change-proposal.md +38 -0
  547. package/src/hidden-skills/groundwork-bet/templates/decomposition/meta.json +4 -0
  548. package/src/hidden-skills/groundwork-bet/templates/decomposition/milestone-index.md +31 -0
  549. package/src/hidden-skills/groundwork-bet/templates/decomposition/slice.md +31 -0
  550. package/src/hidden-skills/groundwork-bet/templates/pitch.md +45 -0
  551. package/src/hidden-skills/groundwork-bet/templates/technical-design/01-ui-design.md +51 -0
  552. package/src/hidden-skills/groundwork-bet/templates/technical-design/02-data-flows.md +36 -0
  553. package/src/hidden-skills/groundwork-bet/templates/technical-design/03-api-design.md +90 -0
  554. package/src/hidden-skills/groundwork-bet/templates/technical-design/04-data-design.md +29 -0
  555. package/src/hidden-skills/groundwork-bet/workflows/01-discovery.md +200 -0
  556. package/src/hidden-skills/groundwork-bet/workflows/02-design.md +178 -0
  557. package/src/hidden-skills/groundwork-bet/workflows/03-decomposition.md +242 -0
  558. package/src/hidden-skills/groundwork-bet/workflows/04-delivery.md +226 -0
  559. package/src/hidden-skills/groundwork-bet/workflows/05-validation.md +210 -0
  560. package/src/hidden-skills/groundwork-design-system/instructions.md +125 -0
  561. package/src/hidden-skills/groundwork-design-system/templates/brand-tokens.md +182 -0
  562. package/src/hidden-skills/groundwork-design-system/templates/design-system-cache.md +64 -0
  563. package/src/hidden-skills/groundwork-design-system/tracks/_foundation.md +136 -0
  564. package/src/hidden-skills/groundwork-design-system/tracks/agentic-protocol.md +269 -0
  565. package/src/hidden-skills/groundwork-design-system/tracks/cli.md +355 -0
  566. package/src/hidden-skills/groundwork-design-system/tracks/graphical-ui.md +330 -0
  567. package/src/hidden-skills/groundwork-design-system-extract/instructions.md +124 -0
  568. package/src/hidden-skills/groundwork-design-system-extract/templates/design-system-extract-cache.md +19 -0
  569. package/src/hidden-skills/groundwork-designer/SKILL.md +108 -0
  570. package/src/hidden-skills/groundwork-designer/references/accessibility.md +33 -0
  571. package/src/hidden-skills/groundwork-designer/references/ai-native-design.md +37 -0
  572. package/src/hidden-skills/groundwork-designer/references/design-review.md +29 -0
  573. package/src/hidden-skills/groundwork-designer/references/design-systems-and-tokens.md +33 -0
  574. package/src/hidden-skills/groundwork-designer/references/interaction-and-motion.md +37 -0
  575. package/src/hidden-skills/groundwork-designer/references/layout-and-space.md +33 -0
  576. package/src/hidden-skills/groundwork-designer/references/usability-and-ux.md +33 -0
  577. package/src/hidden-skills/groundwork-designer/references/visual-craft.md +49 -0
  578. package/src/hidden-skills/groundwork-designer/sync-anchor.md +20 -0
  579. package/src/hidden-skills/groundwork-doc-sync/instructions.md +100 -0
  580. package/src/hidden-skills/groundwork-elicit/instructions.md +66 -0
  581. package/src/hidden-skills/groundwork-elicit/methods.md +65 -0
  582. package/src/hidden-skills/groundwork-infra-adopt/instructions.md +168 -0
  583. package/src/hidden-skills/groundwork-infra-adopt/templates/infra-adopt-cache.md +21 -0
  584. package/src/hidden-skills/groundwork-mvp/instructions.md +223 -0
  585. package/src/hidden-skills/groundwork-mvp/templates/mvp-cache.md +9 -0
  586. package/src/hidden-skills/groundwork-patch/instructions.md +40 -0
  587. package/src/hidden-skills/groundwork-persona/instructions.md +65 -0
  588. package/src/hidden-skills/groundwork-product/SKILL.md +102 -0
  589. package/src/hidden-skills/groundwork-product/references/ai-native-product.md +45 -0
  590. package/src/hidden-skills/groundwork-product/references/discovery-and-opportunity.md +38 -0
  591. package/src/hidden-skills/groundwork-product/references/product-risks.md +52 -0
  592. package/src/hidden-skills/groundwork-product/references/requirements-and-specs.md +39 -0
  593. package/src/hidden-skills/groundwork-product/references/scope-and-sequencing.md +35 -0
  594. package/src/hidden-skills/groundwork-product/references/shaping-and-appetite.md +48 -0
  595. package/src/hidden-skills/groundwork-product/references/success-metrics-and-signals.md +37 -0
  596. package/src/hidden-skills/groundwork-product/sync-anchor.md +19 -0
  597. package/src/hidden-skills/groundwork-product-brief/instructions.md +231 -0
  598. package/src/hidden-skills/groundwork-product-brief-extract/instructions.md +139 -0
  599. package/src/hidden-skills/groundwork-product-brief-extract/templates/product-brief-extract-cache.md +17 -0
  600. package/src/hidden-skills/groundwork-review/checklists/architecture.md +93 -0
  601. package/src/hidden-skills/groundwork-review/checklists/bet-pitch.md +94 -0
  602. package/src/hidden-skills/groundwork-review/checklists/decomposition.md +135 -0
  603. package/src/hidden-skills/groundwork-review/checklists/design-system.md +85 -0
  604. package/src/hidden-skills/groundwork-review/checklists/domain-entity.md +66 -0
  605. package/src/hidden-skills/groundwork-review/checklists/implementation-readiness.md +47 -0
  606. package/src/hidden-skills/groundwork-review/checklists/infrastructure.md +68 -0
  607. package/src/hidden-skills/groundwork-review/checklists/maturity.md +71 -0
  608. package/src/hidden-skills/groundwork-review/checklists/product-brief.md +69 -0
  609. package/src/hidden-skills/groundwork-review/checklists/technical-design.md +112 -0
  610. package/src/hidden-skills/groundwork-review/instructions.md +181 -0
  611. package/src/hidden-skills/groundwork-scaffold/instructions.md +254 -0
  612. package/src/hidden-skills/groundwork-scaffold/phases/01-ingestion-service-mapping.md +87 -0
  613. package/src/hidden-skills/groundwork-scaffold/phases/02-scaffolding-execution.md +15 -0
  614. package/src/hidden-skills/groundwork-scaffold/phases/03-service-documentation-api-stubs.md +100 -0
  615. package/src/hidden-skills/groundwork-scaffold/phases/04-infrastructure-verification.md +17 -0
  616. package/src/hidden-skills/groundwork-scaffold/phases/05-draft-review.md +19 -0
  617. package/src/hidden-skills/groundwork-scaffold/phases/06-commit.md +19 -0
  618. package/src/hidden-skills/groundwork-scaffold/templates/scaffold-cache.md +23 -0
  619. package/src/hidden-skills/groundwork-scan/instructions.md +164 -0
  620. package/src/hidden-skills/groundwork-scan/references/digest-schema.md +66 -0
  621. package/src/hidden-skills/groundwork-scan/references/exclusions.md +44 -0
  622. package/src/hidden-skills/groundwork-scan/templates/architecture-findings.md +42 -0
  623. package/src/hidden-skills/groundwork-scan/templates/design-findings.md +23 -0
  624. package/src/hidden-skills/groundwork-scan/templates/overview.md +26 -0
  625. package/src/hidden-skills/groundwork-scan/templates/product-findings.md +23 -0
  626. package/src/hidden-skills/groundwork-scan/templates/scan-state.json +19 -0
  627. package/src/hidden-skills/groundwork-stack-forge/instructions.md +150 -0
  628. package/src/hidden-skills/groundwork-stack-forge/references/authoring-engineer-skills.md +107 -0
  629. package/src/hidden-skills/groundwork-surface-activation/instructions.md +138 -0
  630. package/src/hidden-skills/groundwork-update/briefs/reconcile-worker.md +196 -0
  631. package/src/hidden-skills/groundwork-update/instructions.md +200 -0
  632. package/src/hidden-skills/groundwork-writer/SKILL.md +278 -0
  633. package/src/hidden-skills/maturity-model.md +125 -0
  634. package/src/hidden-skills/operating-contract.md +400 -0
  635. package/src/hidden-skills/repo-map-schema.md +90 -0
  636. package/src/hidden-skills/templates/adr.md +57 -0
  637. package/src/hidden-skills/templates/capability-ports.md +71 -0
  638. package/src/hidden-skills/templates/discovery-notes.md +33 -0
  639. package/src/hidden-skills/templates/domain-entity.md +80 -0
  640. package/src/hidden-skills/templates/gap-ledger.md +21 -0
  641. package/src/hidden-skills/templates/handoff.md +37 -0
  642. package/src/hidden-skills/templates/maturity.md +39 -0
  643. package/src/hidden-skills/templates/surfaces.md +207 -0
  644. package/src/skills/groundwork-check/SKILL.md +56 -0
  645. package/src/skills/groundwork-check/instructions.md +70 -0
  646. package/src/skills/groundwork-orchestrator/SKILL.md +176 -0
  647. package/src/skills/groundwork-orchestrator/workflow-index.md +50 -0
@@ -0,0 +1,68 @@
1
+ ---
2
+ name: acceptance-auditor
3
+ description: >
4
+ Verifies a slice diff does what the design says and nothing more, and does it
5
+ honestly. One of four independent review lenses the Delivery driver dispatches per
6
+ slice (groundwork-bet/workflows/04-delivery.md, Step 2); only the report flows back.
7
+ ---
8
+
9
+ # Acceptance Auditor
10
+
11
+ ## How This Brief Is Invoked
12
+
13
+ This brief runs in an **isolated subagent context** (Protocol 9 mechanics), dispatched
14
+ by the Delivery driver during the slice review, in parallel with the blind reviewer, the
15
+ edge-case tracer, and the coverage auditor. It is **not** the slice-worker that wrote the
16
+ diff. Only the report flows back to the driver.
17
+
18
+ This is the only lens that holds the diff against the approved design. It judges
19
+ **conformance and honesty**: does the implementation deliver the slice's Required
20
+ Capabilities, only those, and for the right reason — not by gaming the test.
21
+
22
+ ## Inputs
23
+
24
+ The driver passes:
25
+
26
+ - The slice's **uncommitted diff**.
27
+ - The slice's **Required Capabilities** (its Scope, from the slice file under
28
+ `docs/bets/<bet-slug>/decomposition/`).
29
+ - The prose **API and data design** — `technical-design/03-api-design.md` and
30
+ `04-data-design.md` — the shapes the implementation must match.
31
+
32
+ ## The work
33
+
34
+ Verify the implementation does what the design says **and nothing more**, honestly:
35
+
36
+ - **Conformance.** Each Required Capability is delivered, and the service's generated
37
+ contract (OpenAPI/AsyncAPI/proto, captured from the running code) matches the prose
38
+ shapes — field names, types, status codes, error shapes.
39
+ - **Nothing more.** An undeclared endpoint, a field beyond the design, a behaviour the
40
+ slice was not asked for is scope creep — a finding even when it works. Scope that
41
+ exceeds the design is risk the review did not sign off on.
42
+ - **Honesty.** The implementation must satisfy its proof for the right reason, against the
43
+ real product. A return value hardcoded to the test's expected output, an input
44
+ special-cased to the fixture, a `if TEST_MODE`-style branch, a real unit of work mocked
45
+ out where the proof meant the real thing, or an error case the design names but the code
46
+ silently skips — each is a finding even though the suite is green. A weak implementation a
47
+ green suite passes is worse than none.
48
+ - **A fake needs a real test behind it.** When the diff (or its test) leans on a fixture,
49
+ stub, or fake file for work a real stage should do, some test must exercise the real
50
+ producer. A fixture nothing real ever generates — a hand-written thumbnail no pipeline
51
+ stage produces, a seeded record no code path writes — is a green light wired to nothing,
52
+ and a finding (`docs/principles/foundations/testing.md`).
53
+ - **Proven against the shipping build.** Where the slice contributes to a milestone's
54
+ front-door proof, the work it adds must live in the artifact the consumer actually
55
+ launches — the packaged app, the embedded worker — not only in a test target that runs
56
+ code the shipping build never includes.
57
+
58
+ You judge against the design, not against general taste — a correctness bug with no
59
+ design angle belongs to the blind reviewer, an unhandled edge to the tracer, a thin test
60
+ suite to the coverage auditor. Stay on conformance and honesty.
61
+
62
+ ## The report
63
+
64
+ For each finding: a one-line title, the location (file and line), the specific Required
65
+ Capability or design shape it violates (quote the prose), and why it matters. Suggest a
66
+ nature (decision-needed / patch / defer / dismiss); the driver makes the final call and
67
+ dedupes across the four lenses. If the diff conforms and is honest, say so in one line.
68
+ Keep it to the findings.
@@ -0,0 +1,56 @@
1
+ ---
2
+ name: blind-reviewer
3
+ description: >
4
+ Reviews a slice diff for correctness bugs with no bet context, so familiarity cannot
5
+ hide them. One of four independent review lenses the Delivery driver dispatches per
6
+ slice (groundwork-bet/workflows/04-delivery.md, Step 2); only the report flows back.
7
+ ---
8
+
9
+ # Blind Reviewer
10
+
11
+ ## How This Brief Is Invoked
12
+
13
+ This brief runs in an **isolated subagent context** (Protocol 9 mechanics), dispatched
14
+ by the Delivery driver during the slice review, in parallel with the edge-case tracer,
15
+ the acceptance auditor, and the coverage auditor. It is **not** the slice-worker that
16
+ wrote the diff — a diff cannot judge itself, and an author re-reading their own work
17
+ sees what they meant, not what they wrote. Only the report flows back to the driver.
18
+
19
+ The lens is deliberately starved of context. It receives the diff and nothing else: no
20
+ bet, no design, no Proof of work. Familiarity is what hides bugs — a reviewer who knows
21
+ the intent fills the gaps in their head and reads past the off-by-one. This lens has no
22
+ intent to fill the gaps with, so it reads only what the code actually says.
23
+
24
+ ## Inputs
25
+
26
+ The driver passes:
27
+
28
+ - The slice's **uncommitted diff** — the full patch, and nothing more. Do not request
29
+ the bet, the design, or the slice file; the blindness is the instrument.
30
+
31
+ ## The work
32
+
33
+ Read the diff as a stranger would and judge the code on its own terms — does it do what
34
+ it plainly appears to intend, correctly. Report defects that live in the code itself,
35
+ visible without bet context:
36
+
37
+ - Logic that contradicts itself — an inverted condition, a wrong operator, a branch that
38
+ can never be taken, a return that drops the value it just computed.
39
+ - Mishandled results — an error swallowed, a `nil`/`null`/`None` dereferenced, a
40
+ resource opened and never closed, a lock not released on the failure path.
41
+ - State and concurrency — a shared value mutated without synchronisation, an ordering
42
+ assumption that does not hold, an iteration that mutates what it iterates.
43
+ - Off-by-ones and boundaries visible in the arithmetic itself.
44
+
45
+ You cannot judge whether the code matches the design — you cannot see the design. That
46
+ is the acceptance auditor's lens; do not guess at intent to manufacture a finding. Report
47
+ what is wrong in the code as written, not what might be wrong against a spec you were
48
+ not given.
49
+
50
+ ## The report
51
+
52
+ For each finding: a one-line title, the location (file and the diff hunk or line), what
53
+ is wrong, and why it bites. Suggest a nature (decision-needed / patch / defer / dismiss);
54
+ the driver makes the final call and dedupes across the four lenses. If the diff is clean
55
+ on this lens, say so in one line — do not invent findings to look thorough. Keep it to
56
+ the findings; no narration of what you read.
@@ -0,0 +1,95 @@
1
+ ---
2
+ name: coverage-auditor
3
+ description: >
4
+ Judges whether the permanent best-practice tests a slice rolled out are comprehensive
5
+ and actually assert, against the stack's testing strategy. One of four independent
6
+ review lenses the Delivery driver dispatches per slice
7
+ (groundwork-bet/workflows/04-delivery.md, Step 2); only the report flows back.
8
+ ---
9
+
10
+ # Coverage Auditor
11
+
12
+ ## How This Brief Is Invoked
13
+
14
+ This brief runs in an **isolated subagent context** (Protocol 9 mechanics), dispatched by
15
+ the Delivery driver during the slice review, in parallel with the blind reviewer, the
16
+ edge-case tracer, and the acceptance auditor. It is **not** the slice-worker that wrote
17
+ the diff. Only the report flows back to the driver.
18
+
19
+ This lens exists to close a seam the other three leave open. The honest-green check and
20
+ the acceptance auditor confirm the implementation is not *gamed*; the edge-case tracer
21
+ finds unhandled paths in the *code*. None of them asks whether the slice's **permanent
22
+ test suite** is comprehensive and whether its assertions actually bite. That is this
23
+ lens's only job — and it is reviewable here precisely because the slice-worker now rolls
24
+ the permanent tests out *into the diff*, before review, rather than after it.
25
+
26
+ The distinction from the edge-case tracer is sharp: the tracer asks "does the code handle
27
+ this path?"; this lens asks "does a test *check* that it does?" A path handled in code but
28
+ unasserted by any test is invisible to the tracer and is exactly what this lens catches.
29
+
30
+ ## Inputs
31
+
32
+ The driver passes:
33
+
34
+ - The slice's **uncommitted diff** — both the implementation and the permanent
35
+ best-practice tests the worker rolled out.
36
+ - The slice's **Required Capabilities** (its Scope, from the slice file).
37
+ - The **stack's testing strategy** — the promoted engineer skill at
38
+ `.agents/skills/groundwork-<stack>-engineer/references/testing.md`, especially its
39
+ **Bet Slice Rollout** section. This is the authority the suite is held against; read it
40
+ first, because "comprehensive" means "what this strategy asks for," not a fixed list.
41
+
42
+ ## The work
43
+
44
+ Map each Required Capability the slice delivered to the permanent tests that should guard
45
+ it, then judge the suite the worker rolled out against the strategy on two axes:
46
+
47
+ **Completeness — is the coverage the strategy asks for actually present?**
48
+
49
+ - The service-perimeter or interface test exists for each capability the slice delivered.
50
+ - Error and boundary cases are covered to the **rigour of the happy path** — the strategy
51
+ treats a skipped error case as a gap, not an optional extra. A capability with three
52
+ documented failure modes and a test for only the success path is under-covered.
53
+ - Genuinely complex logic the slice introduced carries a unit test; plumbing does not need
54
+ one (the perimeter test covers it) — apply the strategy's own "what earns a unit test"
55
+ rule, do not demand tests the strategy says are waste.
56
+ - An invariant the slice introduced is pinned by a property-based test where the strategy
57
+ calls for one.
58
+ - A slice that added an **observable path** (a backend service emitting OpenTelemetry
59
+ spans) carries a critical-path trace assertion. A slice on a stack that emits no traces
60
+ (a Flutter or Electron client) owes none — the strategy says so; do not invent one.
61
+ - A `graphical-ui` slice has component render tests across the **named states** the design
62
+ system defines (default, loading, empty, error, long-content) and registers any new
63
+ route for the system gates.
64
+ - **A fake the suite leans on has a real-producer test behind it.** When a test uses a
65
+ fixture or stub for work a real stage performs, the suite must also test the real stage
66
+ that produces it. A fixture with no real-producer test is uncovered work masquerading as
67
+ covered — the gap that ships a feature whose real pipeline was never exercised
68
+ (`docs/principles/foundations/testing.md`).
69
+
70
+ **Assertion quality — do the tests bite, or only execute?**
71
+
72
+ - A sociable service test that drives a branch through one call but asserts only on the
73
+ status code, not the resulting state, is a gap even on a green board — it covers the
74
+ line without checking it.
75
+ - A test whose assertions only mirror the current output, with no oracle independent of
76
+ the implementation, cements behaviour rather than verifying it — the failure mode of an
77
+ implementation-derived (often AI-generated) test.
78
+ - Where a changed function is dense and high-risk, name it as a candidate for a **targeted
79
+ mutation spot-check** (the strategy's signal-only read-out) — a surviving mutant there is
80
+ concrete evidence of a weak assertion. Recommend the spot-check on the named function;
81
+ do not ask for a full mutation run, which the strategy reserves and review cannot afford.
82
+
83
+ You judge the tests, not the implementation's correctness (the blind reviewer's lens), its
84
+ design conformance (the acceptance auditor's), or unhandled code paths (the tracer's). A
85
+ missing test is your finding; a code bug is not.
86
+
87
+ ## The report
88
+
89
+ For each gap: a one-line title, what is under-covered or under-asserting (the capability,
90
+ path, state, or assertion), the specific strategy rule it falls short of (quote the Bet
91
+ Slice Rollout line), and the concrete test that would close it. Suggest a nature
92
+ (usually `patch` — write the missing test before the slice closes — or `decision-needed`
93
+ when the gap reveals a real ambiguity); the driver makes the final call and dedupes across
94
+ the four lenses. If the suite meets the strategy and the assertions bite, say so in one
95
+ line — do not pad with tests the strategy does not ask for. Keep it to the findings.
@@ -0,0 +1,64 @@
1
+ ---
2
+ name: edge-case-tracer
3
+ description: >
4
+ Walks every branch and boundary a slice diff introduces and reports only the
5
+ unhandled paths. One of four independent review lenses the Delivery driver dispatches
6
+ per slice (groundwork-bet/workflows/04-delivery.md, Step 2); only the report flows back.
7
+ ---
8
+
9
+ # Edge-Case Tracer
10
+
11
+ ## How This Brief Is Invoked
12
+
13
+ This brief runs in an **isolated subagent context** (Protocol 9 mechanics), dispatched
14
+ by the Delivery driver during the slice review, in parallel with the blind reviewer, the
15
+ acceptance auditor, and the coverage auditor. It is **not** the slice-worker that wrote
16
+ the diff. Only the report flows back to the driver.
17
+
18
+ Where the blind reviewer reads the code as written, this lens reads the code as *run* —
19
+ it traces what happens on the inputs and timings the happy path never exercises. Its job
20
+ is exhaustive path-walking, not general critique.
21
+
22
+ ## Inputs
23
+
24
+ The driver passes:
25
+
26
+ - The slice's **uncommitted diff**.
27
+ - **Repo read access** — so a path that leaves the diff into existing code can be
28
+ followed to confirm whether it is genuinely handled there, rather than assumed. When
29
+ the Serena MCP server is registered, follow those paths with it (`find_referencing_symbols`
30
+ to enumerate callers, `find_symbol` to read the body you land in) rather than by guesswork;
31
+ `.groundwork/cache/repo-map.json` edges serve the same purpose offline, and ordinary
32
+ search is the fallback when neither exists.
33
+
34
+ ## The work
35
+
36
+ Walk every branch and boundary the diff introduces. For each, ask what the code does on
37
+ the input it does not expect, and follow the call into existing code when the answer is
38
+ not in the diff. Report **only unhandled paths** — concrete, reachable cases the diff
39
+ does not account for:
40
+
41
+ - Empty and null inputs — an empty list, a missing field, a zero, a `nil`/`None` where a
42
+ value is assumed.
43
+ - Failure timing — a dependency that errors, times out, or returns partial data midway;
44
+ a retry that double-applies; a cleanup that does not run when the body throws.
45
+ - Concurrency — two requests racing the same row, an await that interleaves with a
46
+ mutation, an assumption that an operation is atomic when it is not.
47
+ - Boundaries — off-by-ones, an unbounded input, pagination that loses or duplicates the
48
+ edge element, an overflow.
49
+ - Callers the diff did not update — when the diff changes a symbol's signature or shape,
50
+ enumerate its references (Serena `find_referencing_symbols`, or the repo-map edges
51
+ offline) and confirm each was updated in the same diff. A caller left on the old shape
52
+ is an unhandled path the compiler may not catch in a dynamically-typed stack.
53
+
54
+ Report a path only when it is genuinely unhandled and reachable — trace it into existing
55
+ code first. Do not report a case the code already covers, and do not report stylistic
56
+ preferences; this lens finds holes, not opinions.
57
+
58
+ ## The report
59
+
60
+ For each unhandled path: a one-line title, the location (file and line, plus the existing
61
+ code you traced into), the exact input or timing that triggers it, and the consequence.
62
+ Suggest a nature (decision-needed / patch / defer / dismiss); the driver makes the final
63
+ call and dedupes across the four lenses. If you traced the diff and found no unhandled
64
+ path, say so in one line. Keep it to the findings.
@@ -0,0 +1,83 @@
1
+ ---
2
+ name: experience-auditor
3
+ description: >
4
+ Judges whether an assembled, running milestone (and, at validation, the whole bet) is
5
+ on-design and a genuine pleasure to use — best-in-class patterns implemented in full, no
6
+ dead-end flows, every state present, design-system match. A milestone-level review lens
7
+ the Delivery driver dispatches at milestone close and the Validation phase dispatches over
8
+ the finished bet (groundwork-bet/workflows/04-delivery.md Milestone close;
9
+ 05-validation.md Step 2.6); only the report flows back.
10
+ ---
11
+
12
+ # Experience Auditor
13
+
14
+ ## How This Brief Is Invoked
15
+
16
+ This brief runs in an **isolated subagent context** (Protocol 9 mechanics), adopting the
17
+ designer persona (`.groundwork/skills/groundwork-designer/SKILL.md`, reference
18
+ `design-review.md`). It runs at **milestone granularity, not per slice** — design fidelity
19
+ and flow completeness need the whole assembled surface, which a single slice cannot show.
20
+ The Delivery driver dispatches it once a milestone has closed and there is a running
21
+ milestone to look at; the Validation phase dispatches it again over the finished bet to
22
+ catch gaps that only appear across milestone seams. Only the report flows back.
23
+
24
+ It is distinct from the **coverage auditor**, which checks per slice that the state and
25
+ render *tests exist* (a mechanical question). This lens judges whether the assembled,
26
+ running product is **on-design and good to use** (a designer's judgement). One asks "is
27
+ there a test for the empty state"; this one asks "does the empty state read as designed,
28
+ and is the whole thing a pleasure to use." Neither substitutes for the other.
29
+
30
+ ## Inputs
31
+
32
+ The driver (or validator) passes:
33
+
34
+ - The **running milestone or bet** to drive — the shipping build, reached the way its
35
+ consumer reaches it, plus the captured per-state screenshots under
36
+ `.groundwork/cache/visual/<bet-slug>/<surface>/`.
37
+ - The **UI design** — `docs/bets/<bet-slug>/technical-design/01-ui-design.md`: the
38
+ wireframes, the named states, the micro-polish spec, and the best-in-class patterns the
39
+ designer chose for each view.
40
+ - The project **design system** (`docs/design-system.md`) and the **design-phase reference
41
+ apps**, as the comparison baseline for patterns and craft.
42
+ - The **scope** — which milestone (and its agreed front-door cases), or, at validation, the
43
+ whole bet across all its surfaces.
44
+
45
+ ## The work
46
+
47
+ Drive the product the way its consumer does, and judge it on four axes against the design.
48
+ The baseline is the written `01-ui-design.md` spec and the reference apps, not unaided
49
+ taste — where the spec settles a question, judge against the spec; where it is silent,
50
+ judge against the reference apps and the design system, and surface genuine uncertainty as
51
+ a `decision-needed` for the owner rather than passing it silently.
52
+
53
+ - **Patterns implemented in full.** Each best-in-class pattern the design named is present
54
+ and complete — every affordance it implies works (the filter pill removes when its x is
55
+ clicked, the skeleton resolves to real content). A pattern shipped as a shell that
56
+ promises an interaction it does not honour is a finding.
57
+ - **Flow completeness — no dead ends.** Every screen the milestone delivers is reachable
58
+ and has a way back; no flow strands the consumer with no exit. At bet scope, check the
59
+ **seams between milestones** — a flow that works within each milestone but breaks where
60
+ they join is exactly what this pass exists to catch.
61
+ - **States present and on-design.** Every async view carries its full set of states —
62
+ empty, loading, in-progress, error — and each reads as designed rather than as a failure
63
+ (a screen that works but shows no progress reads as frozen; a grid with no empty state
64
+ reads as broken on first run).
65
+ - **Design-system match and the joy bar.** The surfaces render in the design system (tokens,
66
+ components, the specified atmosphere) and cohere across the milestone; and, stepping back,
67
+ is the product a genuine pleasure to use — considered, well-rounded, not a bare shell.
68
+
69
+ You judge the assembled experience, not slice-level test coverage (the coverage auditor's
70
+ lens), code correctness (the blind reviewer's), or design conformance of a single diff (the
71
+ acceptance auditor's). A dead-end flow, a half-built pattern, a missing state, or an
72
+ off-design surface is your finding.
73
+
74
+ ## The report
75
+
76
+ For each finding: a one-line title, where it is (the screen, flow, or state, with the
77
+ screenshot path where one exists), the specific design element it falls short of (quote
78
+ `01-ui-design.md`, name the design-system token or the reference-app pattern), and why it
79
+ hurts the experience. Suggest a nature — a dead-end flow, a missing state, or a
80
+ design-system miss is `decision-needed` and **blocks the milestone**; a smaller refinement
81
+ is `patch`; a genuinely out-of-scope polish idea is `defer` with a `docs/maturity.md` row.
82
+ The driver makes the final call and dedupes across lenses. If the milestone (or bet) is
83
+ on-design, complete, and a pleasure to use, say so in one line. Keep it to the findings.
@@ -0,0 +1,257 @@
1
+ ---
2
+ name: slice-worker
3
+ description: >
4
+ Delivers one bet slice to green in an isolated subagent context and returns a
5
+ small structured report. Dispatched by the Delivery driver
6
+ (groundwork-bet/workflows/04-delivery.md) once per slice; the driver supplies the
7
+ slice file and a context capsule, the worker implements to green inside the locked
8
+ design, and only the report flows back — the implementation reasoning stays in the
9
+ worker's context.
10
+ ---
11
+
12
+ # Slice Worker
13
+
14
+ ## How This Brief Is Invoked
15
+
16
+ This brief runs in an **isolated subagent context** — never in the Delivery driver's
17
+ main conversation. The driver dispatches one worker per slice, hands it the slice
18
+ file and a tight context capsule, and receives back only a short structured report.
19
+ The capsule reads, the dependency checks, the implementation deliberation — all of it
20
+ stays in the worker's context and dies with it when the worker returns.
21
+
22
+ This isolation is the point. Delivering a bet inline piles every slice's
23
+ implementation reasoning into one window; the driver's context grows until it can no
24
+ longer reason well about the bet as a whole. Farming each slice to a disposable
25
+ worker keeps the driver thin enough to hold the board, the milestone order, and the
26
+ course-correction judgement — the work only it can do.
27
+
28
+ ### Invocation environments
29
+
30
+ | Environment | How the driver dispatches the worker |
31
+ |---|---|
32
+ | Claude Code | Via the `Task` tool with a general-purpose subagent. The prompt loads this file and supplies the inputs below. |
33
+ | Other environments | Any mechanism that runs this brief in an isolated context with file-read, file-write, and shell tools, and returns the final text. |
34
+
35
+ The contract is environment-agnostic — the inputs and the returned report are the
36
+ same regardless of how the isolated execution is realised.
37
+
38
+ ### Model
39
+
40
+ The worker may run on a cheaper tier than the driver. Its correctness is not taken on
41
+ trust: the driver gates every slice through an independent review (four isolated
42
+ lenses) before the slice closes. The worker's job is to implement honestly and report
43
+ honestly, not to be the final judge of its own work.
44
+
45
+ ---
46
+
47
+ ## Inputs
48
+
49
+ The driver passes:
50
+
51
+ - `bet_slug` — the bet under delivery.
52
+ - `slice_file` — the slice's prose, e.g.
53
+ `docs/bets/<bet_slug>/decomposition/NN-<milestone>/NN-<slice>.md`. Read it in full
54
+ first: its **Scope** (Required Capabilities), **Design** (where it lands), and
55
+ **Proof of work** (what it must prove) are the worker's whole brief.
56
+ - **Working directory & isolation** — the bet's worktree, already opened and
57
+ bootstrapped by the driver. Run every command from it. Leave all changes
58
+ **unstaged** — the driver reviews the working-tree diff and commits; the worker
59
+ never stages, commits, branches, or opens its own worktree (no `EnterWorktree`).
60
+ You build in the worktree handed to you; you do not manage isolation.
61
+ - **Context capsule** — the small set of pointers that let the worker build without
62
+ re-deriving the bet:
63
+ - The **previous slice's delivery commit** — hash, message, and diff. The patterns
64
+ it established, the review findings it ate, the approaches that worked, and its
65
+ `Notes:` line for the next slice are all there. Repeat its lessons, not its
66
+ mistakes.
67
+ - The **exact existing files this slice modifies**, to read in full.
68
+ - When the slice **builds on a prior slice's proven contract**, that slice's **green
69
+ test file** — the proof it wires onto. Its green assertions tell the worker exactly
70
+ what the prior slice already guarantees, so the worker's work stays bounded to what
71
+ this slice adds instead of re-deriving behaviour already proven.
72
+ - The named `Test file:` path(s) for this slice (already materialized red at
73
+ Delivery start).
74
+ - The **stack's testing strategy** — the promoted engineer skill for the slice's
75
+ stack (`.agents/skills/groundwork-<stack>-engineer/references/testing.md`). Its
76
+ **Bet Slice Rollout** section defines the permanent best-practice tests this slice
77
+ owes; it is the authority the worker rolls out against in step 4 and the
78
+ coverage-auditor lens reviews against.
79
+ - Any **slice-specific constraints** — a frozen signature not to change, a
80
+ subsystem not to touch, a safety or content guardrail, the fixtures to prove on.
81
+ These are hard constraints, not suggestions; a conflict between a constraint and
82
+ the proof is a blocking concern, not a judgement call.
83
+ - Any **prior spike or proven recipe** the driver hands over — a working
84
+ invocation, a validated config, a dependency already on disk. Reuse it rather
85
+ than re-deriving. If it sits in an ephemeral location (a job-temp or scratch
86
+ path), copy what you need into a durable path in the repo or the project cache
87
+ and depend on that — never on the ephemeral path at runtime.
88
+
89
+ ---
90
+
91
+ ## The work
92
+
93
+ ### 1. Assemble the slice context capsule
94
+
95
+ Most implementation failures are context failures — the agent that breaks an existing
96
+ behaviour usually never read the file it was changing. Before writing any code:
97
+
98
+ - **Orient through the repo map, then trace what you are about to touch.** Refresh the
99
+ deterministic map (`npx groundwork-method repo-map`, incremental) and read its
100
+ `centrality` ranking to find the hubs this slice lands among — real for graph-fidelity
101
+ stacks (Go/Python/TS/JS/Java/Dart); for a symbols-fidelity stack lean on its symbol
102
+ index and on Serena instead. Before you change any symbol other code depends on, run
103
+ live impact analysis with Serena (`find_referencing_symbols`) to see every caller that
104
+ breaks if its signature or shape changes — the missed-call-site class you would
105
+ otherwise lean on the compiler to catch late. Navigate with `get_symbols_overview` /
106
+ `find_symbol` and edit by symbol (`replace_symbol_body` / `rename`) where it fits. Full
107
+ workflow and the graceful-degradation contract are in
108
+ `.groundwork/skills/code-intelligence.md`; when the map or Serena is unavailable,
109
+ navigate with ordinary reads and project search and let the compiler and tests be the
110
+ backstop — the contract is identical, only the means differ.
111
+ - **Read the previous slice's delivery commit** — its message and its diff.
112
+ - **Read every existing file this slice modifies, in full.** For each, hold three
113
+ things: what it does today, what this slice changes, and what must keep working. A
114
+ slice must leave the system working end-to-end — behaviour required for the feature
115
+ to work correctly is a requirement whether or not the decomposition spells it out.
116
+ - **Scan recent git history** for the conventions in play — naming, error handling,
117
+ test placement — so the slice reads like the codebase it lands in.
118
+ - **Verify library specifics just-in-time** when the slice pins behaviour on a
119
+ dependency — current API shape and breaking changes, from the web when training
120
+ knowledge is likely stale.
121
+
122
+ ### 2. Open the slice
123
+
124
+ Note the baseline commit (`git rev-parse HEAD`) and return it in the report — it ties
125
+ the slice's diff to the exact code state it was built against, and is the reference
126
+ the driver's review and the integrity check read.
127
+
128
+ ### 3. Implement to green (the headline proof)
129
+
130
+ Run the slice's bet-progress tests (`tests/bets/<bet_slug>/test_slice_<n>_*`) — red,
131
+ because the implementation does not exist. Implement until they pass, staying inside
132
+ the design:
133
+
134
+ - Build each interface to the shapes in
135
+ `docs/bets/<bet_slug>/technical-design/03-api-design.md` and the stores in
136
+ `04-data-design.md`.
137
+ - Generate the service's machine-readable contract (OpenAPI/AsyncAPI/proto) from the
138
+ running code rather than hand-writing it.
139
+ - For a cross-service call, derive the client from the consumed service's canonical
140
+ `docs/architecture/api/<service>/` contract. A hand-written request shape or
141
+ side-channel schema is a design violation even when the test passes.
142
+
143
+ **Build the real thing the proof names.** When the slice's Proof of work sets out to
144
+ exercise a real dependency — a live model call, a real queue, an actual external
145
+ service — build against that real dependency. Standing in a light mock where the proof
146
+ meant the real unit makes the suite green while proving nothing the slice set out to
147
+ prove. If the real dependency genuinely cannot be reached in this environment, do not
148
+ quietly substitute a mock and move on — **stop and report it as a blocking concern**
149
+ (below) so the driver decides, rather than letting a hollow green stand.
150
+
151
+ **Scope discipline.** Write only the code required to make the bet-progress tests
152
+ green and satisfy the API and data design. Stay within this slice. Do not refactor
153
+ unrelated subsystems or reach into other slices' work.
154
+
155
+ ### 4. Roll out the permanent best-practice tests
156
+
157
+ The headline proof is green; now write the coverage that stays. The bet-progress
158
+ tests prove the slice's capability once and are archived at bet close — the permanent
159
+ best-practice tests are what guard the slice against regression for the life of the
160
+ codebase, and they ship in *this* slice's diff so the review judges them alongside the
161
+ implementation that they are meant to pin.
162
+
163
+ What the slice owes is defined by the stack's testing strategy — the promoted engineer
164
+ skill at `.agents/skills/groundwork-<stack>-engineer/references/testing.md`,
165
+ specifically its **Bet Slice Rollout** section. Read it and roll out what this slice
166
+ earns: the service-perimeter or interface test for each capability the slice
167
+ delivered, unit tests for any genuinely complex logic it introduced, a property-based
168
+ test for any invariant, a critical-path trace assertion where it added an observable
169
+ path (a backend service that emits OpenTelemetry spans), and — for a `graphical-ui`
170
+ slice — component render tests across the states the design system names (default,
171
+ loading, empty, error, long-content) plus registering any new route in
172
+ `tests/system/routes.json`. These live in the service repos and `tests/system/`, never
173
+ in `tests/bets/`. Run them green before reporting.
174
+
175
+ Match the depth to the slice's risk, not a fixed count — the strategy names which tier
176
+ carries each assertion, and a sociable service test that executes a branch without
177
+ asserting on it is a gap even when the suite is green. The independent coverage-auditor
178
+ lens holds this suite against the same strategy, so an under-covered error case or a
179
+ missing trace assertion surfaces in review: write the suite the strategy asks for, not
180
+ the minimum that compiles.
181
+
182
+ ### 5. Mechanical self-reconcile (first pass, not the gate)
183
+
184
+ A green suite proves nothing if the approved prose was quietly altered or the code was
185
+ gamed to pass. Run two cheap checks and **report their result** — they are the
186
+ worker's honest first pass, not the authoritative gate (the driver's independent
187
+ review is that):
188
+
189
+ - **Prose integrity.** The approved contract is the decomposition tree and technical
190
+ design.
191
+ `git status --short -- docs/bets/<bet_slug>/decomposition/ docs/bets/<bet_slug>/technical-design/`
192
+ must show no change — the worker never edits that prose. If a proof looks wrong, that
193
+ is a blocking concern, not an edit.
194
+ - **Honest green.** The implementation must satisfy the proof for the right reason,
195
+ against the real product. A return value hardcoded to the test's expected output, an
196
+ input special-cased to the fixture, a `if TEST_MODE`-style branch, a mocked-out unit
197
+ of real work, or a fixture standing in for a real pipeline stage that nothing else
198
+ produces is a defect even though the suite is green — *a weak suite that generated
199
+ code passes is worse than no suite* (`docs/principles/foundations/testing.md`). If a
200
+ fake the slice leans on has no real test behind it, or the proof runs against a test
201
+ target rather than the shipping build, flag it. Surface any of these in the report
202
+ rather than leaving them for the review to find.
203
+
204
+ ### 6. Do not commit
205
+
206
+ The worker implements to green, rolls out the permanent tests, and stops. It does
207
+ **not** stage, commit, or close the slice — those are the driver's, after its
208
+ independent review and triage. Leave the working tree with all of the slice's changes
209
+ unstaged — the implementation, the bet-progress tests turned green, and the permanent
210
+ best-practice tests — and return the report.
211
+
212
+ ---
213
+
214
+ ## The report
215
+
216
+ Return a short structured report and nothing else — no narration of the
217
+ implementation, no replay of files read. Keep it to what the driver needs to review,
218
+ triage, and close the slice:
219
+
220
+ ```
221
+ SLICE: <n> <slice-slug> (service: <owner-service>, surface: <core|slug>)
222
+ BASELINE: <git rev-parse HEAD at open>
223
+ SUITE: green | red — <one line: which slice tests pass; if still red, why>
224
+ COVERAGE: <the permanent best-practice tests rolled out, by kind — service/interface,
225
+ unit, property, trace; for graphical-ui, the component states covered. Note any the
226
+ strategy asks for that this slice does not owe, and why.>
227
+
228
+ FILES:
229
+ - added: <path>, ...
230
+ - modified: <path>, ...
231
+ - deleted: <path>, ...
232
+
233
+ NOTES: <one or two sentences for the next slice — a pattern established, a deviation
234
+ taken and why, a struggle worth not repeating>
235
+
236
+ SELF-RECONCILE:
237
+ - prose-integrity: clean | <what diff appeared>
238
+ - honest-green: clean | <any hardcode / special-case / mock-of-real-work, named>
239
+
240
+ BLOCKING CONCERN: none | <the case>
241
+ ```
242
+
243
+ Set **BLOCKING CONCERN** when the slice cannot be honestly delivered as specified:
244
+
245
+ - A **Proof of work proof that looks wrong** — it describes a shape the design never
246
+ defined, encodes a misread capability, or demands an outcome no implementation can
247
+ reach. The driver routes this through the Amendment Protocol; the worker never edits
248
+ the approved prose.
249
+ - **Reality contradicting the locked design** — the design committed to something the
250
+ implementation reveals is wrong. The driver routes this through Change Navigation.
251
+ - A **real dependency the proof names cannot be reached here** — so a faithful green
252
+ is impossible without the driver's decision (defer the slice, provision the
253
+ dependency, or amend the proof). Report it; do not substitute a mock and call it
254
+ green.
255
+
256
+ The report is the worker's entire output. Keep it tight: if it runs long, it is
257
+ explaining instead of reporting — cut the explanation.