groundwork-method 0.0.1 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (629) hide show
  1. package/CHANGELOG.md +781 -0
  2. package/LICENSE +21 -0
  3. package/README.md +44 -29
  4. package/bin/groundwork.js +1654 -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 +125 -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 +68 -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 +82 -0
  106. package/src/docs/principles/index.md +23 -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 +118 -0
  128. package/src/engineer-skills/groundwork-electron-engineer/references/ipc-contracts.md +138 -0
  129. package/src/engineer-skills/groundwork-electron-engineer/references/packaging-and-updates.md +82 -0
  130. package/src/engineer-skills/groundwork-electron-engineer/references/process-model.md +94 -0
  131. package/src/engineer-skills/groundwork-electron-engineer/references/security.md +107 -0
  132. package/src/engineer-skills/groundwork-electron-engineer/references/testing-and-smoke.md +107 -0
  133. package/src/engineer-skills/groundwork-electron-engineer/references/theming-and-tokens.md +74 -0
  134. package/src/engineer-skills/groundwork-electron-engineer/sync-anchor.md +14 -0
  135. package/src/engineer-skills/groundwork-flutter-engineer/SKILL.md +108 -0
  136. package/src/engineer-skills/groundwork-flutter-engineer/references/accessibility.md +92 -0
  137. package/src/engineer-skills/groundwork-flutter-engineer/references/architecture.md +189 -0
  138. package/src/engineer-skills/groundwork-flutter-engineer/references/data-and-contracts.md +136 -0
  139. package/src/engineer-skills/groundwork-flutter-engineer/references/navigation.md +122 -0
  140. package/src/engineer-skills/groundwork-flutter-engineer/references/platform-channels.md +93 -0
  141. package/src/engineer-skills/groundwork-flutter-engineer/references/releases-and-distribution.md +84 -0
  142. package/src/engineer-skills/groundwork-flutter-engineer/references/state-management.md +166 -0
  143. package/src/engineer-skills/groundwork-flutter-engineer/references/testing.md +135 -0
  144. package/src/engineer-skills/groundwork-flutter-engineer/references/theming-and-design-tokens.md +109 -0
  145. package/src/engineer-skills/groundwork-flutter-engineer/references/widgets-and-composition.md +123 -0
  146. package/src/engineer-skills/groundwork-flutter-engineer/sync-anchor.md +15 -0
  147. package/src/engineer-skills/groundwork-go-engineer/SKILL.md +171 -0
  148. package/src/engineer-skills/groundwork-go-engineer/references/api-design.md +82 -0
  149. package/src/engineer-skills/groundwork-go-engineer/references/architecture.md +42 -0
  150. package/src/engineer-skills/groundwork-go-engineer/references/capability-ports.md +50 -0
  151. package/src/engineer-skills/groundwork-go-engineer/references/code-craft-security.md +34 -0
  152. package/src/engineer-skills/groundwork-go-engineer/references/concurrency.md +108 -0
  153. package/src/engineer-skills/groundwork-go-engineer/references/go-services.md +77 -0
  154. package/src/engineer-skills/groundwork-go-engineer/references/http-handlers.md +172 -0
  155. package/src/engineer-skills/groundwork-go-engineer/references/implementation-patterns.md +156 -0
  156. package/src/engineer-skills/groundwork-go-engineer/references/integration-realtime-data.md +57 -0
  157. package/src/engineer-skills/groundwork-go-engineer/references/observability.md +49 -0
  158. package/src/engineer-skills/groundwork-go-engineer/references/postgres.md +41 -0
  159. package/src/engineer-skills/groundwork-go-engineer/references/reliability-performance.md +105 -0
  160. package/src/engineer-skills/groundwork-go-engineer/references/testing.md +139 -0
  161. package/src/engineer-skills/groundwork-go-engineer/sync-anchor.md +11 -0
  162. package/src/engineer-skills/groundwork-nextjs-engineer/SKILL.md +107 -0
  163. package/src/engineer-skills/groundwork-nextjs-engineer/references/architecture.md +323 -0
  164. package/src/engineer-skills/groundwork-nextjs-engineer/references/data-fetching.md +458 -0
  165. package/src/engineer-skills/groundwork-nextjs-engineer/references/documentation.md +324 -0
  166. package/src/engineer-skills/groundwork-nextjs-engineer/references/error-boundaries.md +383 -0
  167. package/src/engineer-skills/groundwork-nextjs-engineer/references/mutations-and-forms.md +396 -0
  168. package/src/engineer-skills/groundwork-nextjs-engineer/references/performance-and-deployment.md +947 -0
  169. package/src/engineer-skills/groundwork-nextjs-engineer/references/routing-and-navigation.md +405 -0
  170. package/src/engineer-skills/groundwork-nextjs-engineer/references/server-components.md +394 -0
  171. package/src/engineer-skills/groundwork-nextjs-engineer/references/tailwind-and-styling.md +134 -0
  172. package/src/engineer-skills/groundwork-nextjs-engineer/references/testing.md +433 -0
  173. package/src/engineer-skills/groundwork-nextjs-engineer/references/type-system.md +368 -0
  174. package/src/engineer-skills/groundwork-nextjs-engineer/references/ux-principles.md +278 -0
  175. package/src/engineer-skills/groundwork-nextjs-engineer/references/visual-language.md +69 -0
  176. package/src/engineer-skills/groundwork-nextjs-engineer/sync-anchor.md +9 -0
  177. package/src/engineer-skills/groundwork-python-engineer/SKILL.md +196 -0
  178. package/src/engineer-skills/groundwork-python-engineer/references/api-standards.md +88 -0
  179. package/src/engineer-skills/groundwork-python-engineer/references/architecture.md +57 -0
  180. package/src/engineer-skills/groundwork-python-engineer/references/async-patterns.md +103 -0
  181. package/src/engineer-skills/groundwork-python-engineer/references/capability-ports.md +44 -0
  182. package/src/engineer-skills/groundwork-python-engineer/references/database.md +88 -0
  183. package/src/engineer-skills/groundwork-python-engineer/references/documentation-mcp.md +167 -0
  184. package/src/engineer-skills/groundwork-python-engineer/references/implementation-patterns.md +166 -0
  185. package/src/engineer-skills/groundwork-python-engineer/references/ml-pipelines.md +119 -0
  186. package/src/engineer-skills/groundwork-python-engineer/references/ml-systems-ai-engineering.md +74 -0
  187. package/src/engineer-skills/groundwork-python-engineer/references/observability.md +57 -0
  188. package/src/engineer-skills/groundwork-python-engineer/references/resilience.md +126 -0
  189. package/src/engineer-skills/groundwork-python-engineer/references/testing.md +177 -0
  190. package/src/engineer-skills/groundwork-python-engineer/sync-anchor.md +13 -0
  191. package/src/generators/add-capability/generator.ts +70 -0
  192. package/src/generators/add-capability/schema.json +30 -0
  193. package/src/generators/capabilities/llm/capability.json +28 -0
  194. package/src/generators/capabilities/llm/providers/anthropic/footprint.json +13 -0
  195. package/src/generators/capabilities/llm/providers/anthropic/stacks/go/internal/llm/llm.go.template +102 -0
  196. package/src/generators/capabilities/llm/providers/anthropic/stacks/python/src/__packageName__/adapters/llm.py.template +61 -0
  197. package/src/generators/capabilities/llm/providers/local/footprint.json +13 -0
  198. package/src/generators/capabilities/llm/providers/local/stacks/go/internal/llm/llm.go.template +102 -0
  199. package/src/generators/capabilities/llm/providers/local/stacks/python/src/__packageName__/adapters/llm.py.template +53 -0
  200. package/src/generators/capabilities/llm/providers/localai/footprint.json +29 -0
  201. package/src/generators/capabilities/llm/providers/localai/stacks/go/internal/llm/llm.go.template +102 -0
  202. package/src/generators/capabilities/llm/providers/localai/stacks/python/src/__packageName__/adapters/llm.py.template +53 -0
  203. package/src/generators/capabilities/llm/providers/none/footprint.json +9 -0
  204. package/src/generators/capabilities/llm/providers/none/stacks/go/internal/llm/llm.go.template +35 -0
  205. package/src/generators/capabilities/llm/providers/none/stacks/python/src/__packageName__/adapters/llm.py.template +25 -0
  206. package/src/generators/capabilities/llm/providers/ollama/footprint.json +20 -0
  207. package/src/generators/capabilities/llm/providers/ollama/stacks/go/internal/llm/llm.go.template +102 -0
  208. package/src/generators/capabilities/llm/providers/ollama/stacks/python/src/__packageName__/adapters/llm.py.template +53 -0
  209. package/src/generators/capabilities/llm/providers/openai/footprint.json +13 -0
  210. package/src/generators/capabilities/llm/providers/openai/stacks/go/internal/llm/llm.go.template +98 -0
  211. package/src/generators/capabilities/llm/providers/openai/stacks/python/src/__packageName__/adapters/llm.py.template +60 -0
  212. package/src/generators/capabilities/llm/stacks/go/internal/core/service/llm.go.template +12 -0
  213. package/src/generators/capabilities/llm/stacks/go/internal/llm/llm_test.go.template +33 -0
  214. package/src/generators/capabilities/llm/stacks/python/src/__packageName__/core/llm.py.template +15 -0
  215. package/src/generators/capabilities/llm/stacks/python/tests/contracts/test_llm.py.template +37 -0
  216. package/src/generators/cli-app/files/README.md.template +76 -0
  217. package/src/generators/cli-app/files/build.mjs.template +15 -0
  218. package/src/generators/cli-app/files/package.json.template +21 -0
  219. package/src/generators/cli-app/files/src/cli.ts.template +67 -0
  220. package/src/generators/cli-app/files/src/commands/hello.ts.template +17 -0
  221. package/src/generators/cli-app/files/src/commands/status.ts.template +23 -0
  222. package/src/generators/cli-app/files/src/core/client.test.ts.template +80 -0
  223. package/src/generators/cli-app/files/src/core/client.ts.template +64 -0
  224. package/src/generators/cli-app/files/src/registry.test.ts.template +35 -0
  225. package/src/generators/cli-app/files/src/registry.ts.template +31 -0
  226. package/src/generators/cli-app/files/tsconfig.json.template +16 -0
  227. package/src/generators/cli-app/files/tsconfig.test.json.template +11 -0
  228. package/src/generators/cli-app/generator.ts +138 -0
  229. package/src/generators/cli-app/schema.json +24 -0
  230. package/src/generators/docs-site/files/.gitignore.ejs +40 -0
  231. package/src/generators/docs-site/files/app/docs/__slug__/page.tsx +101 -0
  232. package/src/generators/docs-site/files/app/docs/layout.tsx +14 -0
  233. package/src/generators/docs-site/files/app/docs.css +43 -0
  234. package/src/generators/docs-site/files/app/layout.tsx +24 -0
  235. package/src/generators/docs-site/files/app/page.tsx +135 -0
  236. package/src/generators/docs-site/files/app/source.ts +8 -0
  237. package/src/generators/docs-site/files/components/mermaid.tsx +67 -0
  238. package/src/generators/docs-site/files/next.config.mjs +10 -0
  239. package/src/generators/docs-site/files/package.json +32 -0
  240. package/src/generators/docs-site/files/pnpm-workspace.yaml +7 -0
  241. package/src/generators/docs-site/files/postcss.config.mjs +6 -0
  242. package/src/generators/docs-site/files/source.config.ts +77 -0
  243. package/src/generators/docs-site/files/tailwind.config.js +10 -0
  244. package/src/generators/docs-site/files/tsconfig.json +27 -0
  245. package/src/generators/docs-site/generator.ts +476 -0
  246. package/src/generators/docs-site/schema.json +17 -0
  247. package/src/generators/electron-app/docs/principles/stack/electron/index.md +47 -0
  248. package/src/generators/electron-app/docs/principles/stack/electron/ipc-contracts.md +71 -0
  249. package/src/generators/electron-app/docs/principles/stack/electron/packaging-and-updates.md +59 -0
  250. package/src/generators/electron-app/docs/principles/stack/electron/process-model.md +53 -0
  251. package/src/generators/electron-app/docs/principles/stack/electron/security.md +70 -0
  252. package/src/generators/electron-app/docs/principles/stack/typescript/frontend.md +65 -0
  253. package/src/generators/electron-app/files/.gitignore.template +20 -0
  254. package/src/generators/electron-app/files/README.md.template +125 -0
  255. package/src/generators/electron-app/files/electron.vite.config.ts +31 -0
  256. package/src/generators/electron-app/files/eslint.config.mjs +92 -0
  257. package/src/generators/electron-app/files/forge.config.ts.template +44 -0
  258. package/src/generators/electron-app/files/package.json.template +54 -0
  259. package/src/generators/electron-app/files/playwright.config.ts +18 -0
  260. package/src/generators/electron-app/files/project.json.template +65 -0
  261. package/src/generators/electron-app/files/src/main/core-client.test.ts +81 -0
  262. package/src/generators/electron-app/files/src/main/core-client.ts +55 -0
  263. package/src/generators/electron-app/files/src/main/index.ts +157 -0
  264. package/src/generators/electron-app/files/src/main/ipc.ts +52 -0
  265. package/src/generators/electron-app/files/src/main/policy.test.ts +71 -0
  266. package/src/generators/electron-app/files/src/main/policy.ts +73 -0
  267. package/src/generators/electron-app/files/src/preload/index.ts +23 -0
  268. package/src/generators/electron-app/files/src/renderer/index.html.template +20 -0
  269. package/src/generators/electron-app/files/src/renderer/src/App.test.tsx +61 -0
  270. package/src/generators/electron-app/files/src/renderer/src/App.tsx.template +43 -0
  271. package/src/generators/electron-app/files/src/renderer/src/assets/main.css +40 -0
  272. package/src/generators/electron-app/files/src/renderer/src/env.d.ts +14 -0
  273. package/src/generators/electron-app/files/src/renderer/src/main.tsx +25 -0
  274. package/src/generators/electron-app/files/src/shared/ipc.ts +54 -0
  275. package/src/generators/electron-app/files/tests/smoke/app.spec.ts.template +68 -0
  276. package/src/generators/electron-app/files/tool/electron_exec.sh.template +83 -0
  277. package/src/generators/electron-app/files/tsconfig.json +7 -0
  278. package/src/generators/electron-app/files/tsconfig.node.json +27 -0
  279. package/src/generators/electron-app/files/tsconfig.web.json +22 -0
  280. package/src/generators/electron-app/files/vitest.config.ts +32 -0
  281. package/src/generators/electron-app/files/vitest.setup.ts +1 -0
  282. package/src/generators/electron-app/generator.ts +288 -0
  283. package/src/generators/electron-app/schema.json +23 -0
  284. package/src/generators/flutter-app/docs/principles/stack/flutter/architecture.md +78 -0
  285. package/src/generators/flutter-app/docs/principles/stack/flutter/index.md +38 -0
  286. package/src/generators/flutter-app/docs/principles/stack/flutter/platform-channels.md +51 -0
  287. package/src/generators/flutter-app/docs/principles/stack/flutter/releases-and-distribution.md +59 -0
  288. package/src/generators/flutter-app/docs/principles/stack/flutter/state-management.md +85 -0
  289. package/src/generators/flutter-app/docs/principles/stack/flutter/testing.md +74 -0
  290. package/src/generators/flutter-app/docs/principles/stack/flutter/widgets-and-composition.md +69 -0
  291. package/src/generators/flutter-app/files/.gitignore.template +30 -0
  292. package/src/generators/flutter-app/files/README.md.template +100 -0
  293. package/src/generators/flutter-app/files/analysis_options.yaml.template +18 -0
  294. package/src/generators/flutter-app/files/integration_test/app_test.dart.template +30 -0
  295. package/src/generators/flutter-app/files/lib/app.dart.template +24 -0
  296. package/src/generators/flutter-app/files/lib/config/app_config.dart +15 -0
  297. package/src/generators/flutter-app/files/lib/data/repositories/status_repository.dart +36 -0
  298. package/src/generators/flutter-app/files/lib/data/services/api_client.dart +71 -0
  299. package/src/generators/flutter-app/files/lib/domain/models/health_status.dart +23 -0
  300. package/src/generators/flutter-app/files/lib/main.dart +11 -0
  301. package/src/generators/flutter-app/files/lib/router.dart +23 -0
  302. package/src/generators/flutter-app/files/lib/ui/core/theme/app_theme.dart +110 -0
  303. package/src/generators/flutter-app/files/lib/ui/home/home_view.dart +89 -0
  304. package/src/generators/flutter-app/files/lib/ui/home/home_view_model.dart.template +38 -0
  305. package/src/generators/flutter-app/files/project.json.template +51 -0
  306. package/src/generators/flutter-app/files/pubspec.yaml.template +47 -0
  307. package/src/generators/flutter-app/files/test/api_client_test.dart.template +63 -0
  308. package/src/generators/flutter-app/files/test/fakes/fake_status_repository.dart.template +19 -0
  309. package/src/generators/flutter-app/files/test/home_view_test.dart.template +58 -0
  310. package/src/generators/flutter-app/files/tool/flutter_exec.sh.template +60 -0
  311. package/src/generators/flutter-app/generator.ts +362 -0
  312. package/src/generators/flutter-app/schema.json +23 -0
  313. package/src/generators/go-microservice/docs/principles/stack/go/concurrency.md +123 -0
  314. package/src/generators/go-microservice/docs/principles/stack/go/index.md +70 -0
  315. package/src/generators/go-microservice/docs/principles/stack/go/testing.md +152 -0
  316. package/src/generators/go-microservice/files/.air.toml.template +38 -0
  317. package/src/generators/go-microservice/files/.env.template +4 -0
  318. package/src/generators/go-microservice/files/.golangci.yml.template +82 -0
  319. package/src/generators/go-microservice/files/Dockerfile.dev.template +12 -0
  320. package/src/generators/go-microservice/files/asyncapi-pubsub.yaml.template +33 -0
  321. package/src/generators/go-microservice/files/asyncapi-ws.yaml.template +34 -0
  322. package/src/generators/go-microservice/files/cmd/api/main.go.template +149 -0
  323. package/src/generators/go-microservice/files/cmd/api/main_test.go.template +99 -0
  324. package/src/generators/go-microservice/files/cmd/worker/cleanup/main.go.template +39 -0
  325. package/src/generators/go-microservice/files/db/schema.sql.template +24 -0
  326. package/src/generators/go-microservice/files/go.mod.template +39 -0
  327. package/src/generators/go-microservice/files/internal/config/config.go.template +52 -0
  328. package/src/generators/go-microservice/files/internal/config/otel.go.template +93 -0
  329. package/src/generators/go-microservice/files/internal/core/domain/errors.go.template +16 -0
  330. package/src/generators/go-microservice/files/internal/core/domain/model.go.template +28 -0
  331. package/src/generators/go-microservice/files/internal/core/domain/user.go.template +13 -0
  332. package/src/generators/go-microservice/files/internal/core/pagination.go.template +16 -0
  333. package/src/generators/go-microservice/files/internal/core/service/app_service.go.template +79 -0
  334. package/src/generators/go-microservice/files/internal/core/service/event_hub.go.template +9 -0
  335. package/src/generators/go-microservice/files/internal/core/service/message_queue.go.template +10 -0
  336. package/src/generators/go-microservice/files/internal/core/service/outbox_repository.go.template +31 -0
  337. package/src/generators/go-microservice/files/internal/core/service/repository.go.template +23 -0
  338. package/src/generators/go-microservice/files/internal/core/service/user_repository.go.template +15 -0
  339. package/src/generators/go-microservice/files/internal/core/service/user_service.go.template +43 -0
  340. package/src/generators/go-microservice/files/internal/entrypoints/api/app_handler.go.template +108 -0
  341. package/src/generators/go-microservice/files/internal/entrypoints/api/auth_middleware_test.go.template +52 -0
  342. package/src/generators/go-microservice/files/internal/entrypoints/api/clerk_webhook.go.template +202 -0
  343. package/src/generators/go-microservice/files/internal/entrypoints/api/clerk_webhook_test.go.template +82 -0
  344. package/src/generators/go-microservice/files/internal/entrypoints/api/health_handler.go.template +80 -0
  345. package/src/generators/go-microservice/files/internal/entrypoints/api/idempotency/middleware.go.template +87 -0
  346. package/src/generators/go-microservice/files/internal/entrypoints/api/idempotency/middleware_test.go.template +76 -0
  347. package/src/generators/go-microservice/files/internal/entrypoints/api/idempotency/repository.go.template +37 -0
  348. package/src/generators/go-microservice/files/internal/entrypoints/api/middleware_auth.go.template +40 -0
  349. package/src/generators/go-microservice/files/internal/entrypoints/api/middleware_loadshed.go.template +38 -0
  350. package/src/generators/go-microservice/files/internal/entrypoints/api/middleware_logging.go.template +40 -0
  351. package/src/generators/go-microservice/files/internal/entrypoints/api/middleware_ratelimit.go.template +48 -0
  352. package/src/generators/go-microservice/files/internal/entrypoints/api/middleware_test.go.template +81 -0
  353. package/src/generators/go-microservice/files/internal/entrypoints/api/router.go.template +105 -0
  354. package/src/generators/go-microservice/files/internal/entrypoints/api/types.go.template +70 -0
  355. package/src/generators/go-microservice/files/internal/entrypoints/api/websocket_handler.go.template +39 -0
  356. package/src/generators/go-microservice/files/internal/httpclient/http_client.go.template +87 -0
  357. package/src/generators/go-microservice/files/internal/kafka/kafka.go.template +34 -0
  358. package/src/generators/go-microservice/files/internal/postgres/postgres.go.template +195 -0
  359. package/src/generators/go-microservice/files/internal/postgres/postgres_test.go.template +156 -0
  360. package/src/generators/go-microservice/files/internal/postgres/user_repository.go.template +56 -0
  361. package/src/generators/go-microservice/files/internal/pubsub/gcp_pubsub.go.template +35 -0
  362. package/src/generators/go-microservice/files/internal/websocket/client.go.template +151 -0
  363. package/src/generators/go-microservice/files/internal/websocket/hub.go.template +261 -0
  364. package/src/generators/go-microservice/files/scripts/apply-schema.sh.template +21 -0
  365. package/src/generators/go-microservice/files/tools/tools.go.template +10 -0
  366. package/src/generators/go-microservice/generator.ts +240 -0
  367. package/src/generators/go-microservice/schema.json +63 -0
  368. package/src/generators/nextjs-app/docs/principles/stack/typescript/frontend.md +65 -0
  369. package/src/generators/nextjs-app/files/.dockerignore.template +7 -0
  370. package/src/generators/nextjs-app/files/.env.example.template +24 -0
  371. package/src/generators/nextjs-app/files/.gitignore.template +5 -0
  372. package/src/generators/nextjs-app/files/Dockerfile +53 -0
  373. package/src/generators/nextjs-app/files/app/(auth)/sign-in/__sign-in__/page.tsx.template +9 -0
  374. package/src/generators/nextjs-app/files/app/(auth)/sign-up/__sign-up__/page.tsx.template +9 -0
  375. package/src/generators/nextjs-app/files/app/api/config/route.ts.template +39 -0
  376. package/src/generators/nextjs-app/files/app/api/healthz/route.test.ts +15 -0
  377. package/src/generators/nextjs-app/files/app/api/healthz/route.ts +5 -0
  378. package/src/generators/nextjs-app/files/app/api/proxy/__path__/route.test.ts.template +55 -0
  379. package/src/generators/nextjs-app/files/app/api/proxy/__path__/route.ts.template +126 -0
  380. package/src/generators/nextjs-app/files/app/error.tsx +39 -0
  381. package/src/generators/nextjs-app/files/app/global-error.tsx +68 -0
  382. package/src/generators/nextjs-app/files/app/globals.css +105 -0
  383. package/src/generators/nextjs-app/files/app/layout.tsx +59 -0
  384. package/src/generators/nextjs-app/files/app/loading.tsx +13 -0
  385. package/src/generators/nextjs-app/files/app/not-found.tsx +30 -0
  386. package/src/generators/nextjs-app/files/app/page.tsx +20 -0
  387. package/src/generators/nextjs-app/files/components/providers/default.tsx +19 -0
  388. package/src/generators/nextjs-app/files/components/providers/production.tsx +32 -0
  389. package/src/generators/nextjs-app/files/components/providers/telemetry.tsx +76 -0
  390. package/src/generators/nextjs-app/files/components/render-smoke.test.tsx +29 -0
  391. package/src/generators/nextjs-app/files/components/theme-provider.tsx +11 -0
  392. package/src/generators/nextjs-app/files/components.json +21 -0
  393. package/src/generators/nextjs-app/files/eslint.config.mjs +120 -0
  394. package/src/generators/nextjs-app/files/hooks/use-toast.ts +7 -0
  395. package/src/generators/nextjs-app/files/instrumentation.ts +90 -0
  396. package/src/generators/nextjs-app/files/lib/api/fetcher.ts.template +130 -0
  397. package/src/generators/nextjs-app/files/lib/config.ts +21 -0
  398. package/src/generators/nextjs-app/files/lib/logger.ts +29 -0
  399. package/src/generators/nextjs-app/files/lib/schemas/index.ts +19 -0
  400. package/src/generators/nextjs-app/files/lib/utils.ts +6 -0
  401. package/src/generators/nextjs-app/files/next.config.mjs +9 -0
  402. package/src/generators/nextjs-app/files/package.json +70 -0
  403. package/src/generators/nextjs-app/files/postcss.config.mjs +8 -0
  404. package/src/generators/nextjs-app/files/proxy.test.ts.template +30 -0
  405. package/src/generators/nextjs-app/files/proxy.ts +31 -0
  406. package/src/generators/nextjs-app/files/public/.gitkeep +1 -0
  407. package/src/generators/nextjs-app/files/tsconfig.json +42 -0
  408. package/src/generators/nextjs-app/files/vitest.config.mts +15 -0
  409. package/src/generators/nextjs-app/files/vitest.setup.ts +7 -0
  410. package/src/generators/nextjs-app/generator.ts +307 -0
  411. package/src/generators/nextjs-app/schema.json +44 -0
  412. package/src/generators/python-microservice/docs/principles/stack/python/async.md +168 -0
  413. package/src/generators/python-microservice/docs/principles/stack/python/documentation.md +240 -0
  414. package/src/generators/python-microservice/docs/principles/stack/python/mcp.md +147 -0
  415. package/src/generators/python-microservice/docs/principles/stack/python/resilience.md +193 -0
  416. package/src/generators/python-microservice/docs/principles/stack/python/testing.md +281 -0
  417. package/src/generators/python-microservice/files/.env.example.template +30 -0
  418. package/src/generators/python-microservice/files/Dockerfile.template +36 -0
  419. package/src/generators/python-microservice/files/db/schema.sql.template +19 -0
  420. package/src/generators/python-microservice/files/pyproject.toml.template +76 -0
  421. package/src/generators/python-microservice/files/scripts/apply-schema.sh.template +25 -0
  422. package/src/generators/python-microservice/files/src/__packageName__/adapters/comfyui.py.template +87 -0
  423. package/src/generators/python-microservice/files/src/__packageName__/adapters/config.py.template +48 -0
  424. package/src/generators/python-microservice/files/src/__packageName__/adapters/database.py.template +21 -0
  425. package/src/generators/python-microservice/files/src/__packageName__/adapters/message_queue.py.template +29 -0
  426. package/src/generators/python-microservice/files/src/__packageName__/adapters/repository.py.template +130 -0
  427. package/src/generators/python-microservice/files/src/__packageName__/adapters/telemetry.py.template +68 -0
  428. package/src/generators/python-microservice/files/src/__packageName__/adapters/websocket_hub.py.template +36 -0
  429. package/src/generators/python-microservice/files/src/__packageName__/core/domain/entities.py.template +22 -0
  430. package/src/generators/python-microservice/files/src/__packageName__/core/domain/exceptions.py.template +43 -0
  431. package/src/generators/python-microservice/files/src/__packageName__/core/ports.py.template +42 -0
  432. package/src/generators/python-microservice/files/src/__packageName__/core/service/example_service.py.template +68 -0
  433. package/src/generators/python-microservice/files/src/__packageName__/entrypoints/api/dependencies.py.template +50 -0
  434. package/src/generators/python-microservice/files/src/__packageName__/entrypoints/api/middleware.py.template +131 -0
  435. package/src/generators/python-microservice/files/src/__packageName__/entrypoints/api/router.py.template +37 -0
  436. package/src/generators/python-microservice/files/src/__packageName__/entrypoints/api/websocket_handler.py.template +20 -0
  437. package/src/generators/python-microservice/files/src/__packageName__/entrypoints/worker/cleanup.py.template +35 -0
  438. package/src/generators/python-microservice/files/src/__packageName__/entrypoints/worker/worker.py.template +28 -0
  439. package/src/generators/python-microservice/files/src/__packageName__/main.py.template +108 -0
  440. package/src/generators/python-microservice/files/tests/test_main.py.template +74 -0
  441. package/src/generators/python-microservice/files/tests/test_middleware.py.template +109 -0
  442. package/src/generators/python-microservice/files/tests/test_worker.py.template +16 -0
  443. package/src/generators/python-microservice/generator.ts +286 -0
  444. package/src/generators/python-microservice/schema.json +86 -0
  445. package/src/generators/shared/brand-tokens.ts +301 -0
  446. package/src/generators/shared/capabilities.ts +349 -0
  447. package/src/generators/shared/provenance.ts +61 -0
  448. package/src/generators/shared/scaffold-helpers.ts +309 -0
  449. package/src/generators/system-test-runner/files/tests/bets/.gitkeep +0 -0
  450. package/src/generators/system-test-runner/files/tests/bets/_archive/.gitkeep +0 -0
  451. package/src/generators/system-test-runner/files/tests/conftest.py.template +503 -0
  452. package/src/generators/system-test-runner/files/tests/pyproject.toml.template +20 -0
  453. package/src/generators/system-test-runner/files/tests/system/pages/__init__.py.template +9 -0
  454. package/src/generators/system-test-runner/files/tests/system/pages/base_page.py.template +36 -0
  455. package/src/generators/system-test-runner/files/tests/system/test_a11y_smoke.py.template +132 -0
  456. package/src/generators/system-test-runner/files/tests/system/test_contract_conformance.py.template +140 -0
  457. package/src/generators/system-test-runner/files/tests/system/test_layout_geometry.py.template +109 -0
  458. package/src/generators/system-test-runner/files/tests/system/test_render_smoke.py.template +227 -0
  459. package/src/generators/system-test-runner/files/tests/system/test_system.py.template +158 -0
  460. package/src/generators/system-test-runner/files/tests/system/test_token_conformance.py.template +206 -0
  461. package/src/generators/system-test-runner/files/tests/system/test_visual_regression.py.template +104 -0
  462. package/src/generators/system-test-runner/generator.ts +142 -0
  463. package/src/generators/system-test-runner/schema.json +24 -0
  464. package/src/generators/workspace-dev-cli/cli-src/build.mjs +42 -0
  465. package/src/generators/workspace-dev-cli/cli-src/dist/dev-bundle.js +2168 -0
  466. package/src/generators/workspace-dev-cli/cli-src/src/commands/bet.ts +442 -0
  467. package/src/generators/workspace-dev-cli/cli-src/src/commands/completion.ts +87 -0
  468. package/src/generators/workspace-dev-cli/cli-src/src/commands/doctor.ts +139 -0
  469. package/src/generators/workspace-dev-cli/cli-src/src/commands/lifecycle.ts +548 -0
  470. package/src/generators/workspace-dev-cli/cli-src/src/commands/quality.ts +127 -0
  471. package/src/generators/workspace-dev-cli/cli-src/src/commands/surface.ts +214 -0
  472. package/src/generators/workspace-dev-cli/cli-src/src/index.ts +127 -0
  473. package/src/generators/workspace-dev-cli/cli-src/src/registry.ts +194 -0
  474. package/src/generators/workspace-dev-cli/cli-src/src/theme/color.ts +130 -0
  475. package/src/generators/workspace-dev-cli/cli-src/src/theme/render.ts +158 -0
  476. package/src/generators/workspace-dev-cli/cli-src/src/theme/tokens.ts +122 -0
  477. package/src/generators/workspace-dev-cli/cli-src/src/util/context.ts +43 -0
  478. package/src/generators/workspace-dev-cli/cli-src/src/util/extensions.ts +99 -0
  479. package/src/generators/workspace-dev-cli/cli-src/src/util/paths.ts +46 -0
  480. package/src/generators/workspace-dev-cli/cli-src/src/util/proc.ts +106 -0
  481. package/src/generators/workspace-dev-cli/cli-src/src/util/prompt.ts +108 -0
  482. package/src/generators/workspace-dev-cli/cli-src/src/util/runners.ts +70 -0
  483. package/src/generators/workspace-dev-cli/cli-src/src/util/services.ts +221 -0
  484. package/src/generators/workspace-dev-cli/cli-src/src/util/version.ts +21 -0
  485. package/src/generators/workspace-dev-cli/cli-src/tsconfig.json +16 -0
  486. package/src/generators/workspace-dev-cli/files/.agents/skills/workspace-cli/SKILL.md.template +74 -0
  487. package/src/generators/workspace-dev-cli/files/dev.template +16 -0
  488. package/src/generators/workspace-dev-cli/files/docker-compose.yml.template +20 -0
  489. package/src/generators/workspace-dev-cli/files/scripts/cli/templates/milestone-test.pytmpl.template +46 -0
  490. package/src/generators/workspace-dev-cli/files/scripts/cli/templates/slice-test.pytmpl.template +38 -0
  491. package/src/generators/workspace-dev-cli/generator.ts +136 -0
  492. package/src/generators/workspace-dev-cli/schema.json +22 -0
  493. package/src/hidden-skills/code-intelligence.md +129 -0
  494. package/src/hidden-skills/groundwork-architect/SKILL.md +114 -0
  495. package/src/hidden-skills/groundwork-architect/references/agentic-systems.md +44 -0
  496. package/src/hidden-skills/groundwork-architect/references/ai-native-architecture.md +37 -0
  497. package/src/hidden-skills/groundwork-architect/references/api-and-contracts.md +45 -0
  498. package/src/hidden-skills/groundwork-architect/references/core-and-boundaries.md +45 -0
  499. package/src/hidden-skills/groundwork-architect/references/data-architecture.md +33 -0
  500. package/src/hidden-skills/groundwork-architect/references/decision-records.md +34 -0
  501. package/src/hidden-skills/groundwork-architect/references/durable-execution.md +45 -0
  502. package/src/hidden-skills/groundwork-architect/references/evolutionary-architecture.md +37 -0
  503. package/src/hidden-skills/groundwork-architect/references/identity-and-access.md +41 -0
  504. package/src/hidden-skills/groundwork-architect/references/integration-patterns.md +39 -0
  505. package/src/hidden-skills/groundwork-architect/references/observability.md +36 -0
  506. package/src/hidden-skills/groundwork-architect/references/performance-and-scale.md +41 -0
  507. package/src/hidden-skills/groundwork-architect/references/platform-and-delivery.md +47 -0
  508. package/src/hidden-skills/groundwork-architect/references/realtime-and-async.md +28 -0
  509. package/src/hidden-skills/groundwork-architect/references/reliability.md +31 -0
  510. package/src/hidden-skills/groundwork-architect/references/security-and-trust.md +47 -0
  511. package/src/hidden-skills/groundwork-architect/references/surface-architecture.md +40 -0
  512. package/src/hidden-skills/groundwork-architect/sync-anchor.md +34 -0
  513. package/src/hidden-skills/groundwork-architecture/architecture-template.md +50 -0
  514. package/src/hidden-skills/groundwork-architecture/instructions.md +139 -0
  515. package/src/hidden-skills/groundwork-architecture/phases/01-context-ingestion.md +18 -0
  516. package/src/hidden-skills/groundwork-architecture/phases/02-technical-constraints.md +27 -0
  517. package/src/hidden-skills/groundwork-architecture/phases/03-service-design.md +19 -0
  518. package/src/hidden-skills/groundwork-architecture/phases/04-data-flow-communication.md +23 -0
  519. package/src/hidden-skills/groundwork-architecture/phases/05-component-boundaries-contracts.md +17 -0
  520. package/src/hidden-skills/groundwork-architecture/phases/06-draft-review-present.md +38 -0
  521. package/src/hidden-skills/groundwork-architecture/phases/07-commit.md +33 -0
  522. package/src/hidden-skills/groundwork-architecture/templates/architecture-cache.md +43 -0
  523. package/src/hidden-skills/groundwork-architecture-extract/instructions.md +163 -0
  524. package/src/hidden-skills/groundwork-architecture-extract/templates/architecture-extract-cache.md +21 -0
  525. package/src/hidden-skills/groundwork-bet/briefs/slice-worker.md +191 -0
  526. package/src/hidden-skills/groundwork-bet/instructions.md +88 -0
  527. package/src/hidden-skills/groundwork-bet/templates/bet-progress-test.md +126 -0
  528. package/src/hidden-skills/groundwork-bet/templates/change-proposal.md +38 -0
  529. package/src/hidden-skills/groundwork-bet/templates/decomposition/meta.json +4 -0
  530. package/src/hidden-skills/groundwork-bet/templates/decomposition/milestone-index.md +35 -0
  531. package/src/hidden-skills/groundwork-bet/templates/decomposition/slice.md +35 -0
  532. package/src/hidden-skills/groundwork-bet/templates/pitch.md +45 -0
  533. package/src/hidden-skills/groundwork-bet/templates/technical-design/01-ui-design.md +51 -0
  534. package/src/hidden-skills/groundwork-bet/templates/technical-design/02-data-flows.md +36 -0
  535. package/src/hidden-skills/groundwork-bet/templates/technical-design/03-api-design.md +90 -0
  536. package/src/hidden-skills/groundwork-bet/templates/technical-design/04-data-design.md +29 -0
  537. package/src/hidden-skills/groundwork-bet/workflows/01-discovery.md +198 -0
  538. package/src/hidden-skills/groundwork-bet/workflows/02-design.md +168 -0
  539. package/src/hidden-skills/groundwork-bet/workflows/03-decomposition.md +246 -0
  540. package/src/hidden-skills/groundwork-bet/workflows/04-delivery.md +193 -0
  541. package/src/hidden-skills/groundwork-bet/workflows/05-validation.md +199 -0
  542. package/src/hidden-skills/groundwork-design-system/instructions.md +125 -0
  543. package/src/hidden-skills/groundwork-design-system/templates/brand-tokens.md +182 -0
  544. package/src/hidden-skills/groundwork-design-system/templates/design-system-cache.md +64 -0
  545. package/src/hidden-skills/groundwork-design-system/tracks/_foundation.md +136 -0
  546. package/src/hidden-skills/groundwork-design-system/tracks/agentic-protocol.md +269 -0
  547. package/src/hidden-skills/groundwork-design-system/tracks/cli.md +355 -0
  548. package/src/hidden-skills/groundwork-design-system/tracks/graphical-ui.md +330 -0
  549. package/src/hidden-skills/groundwork-design-system-extract/instructions.md +124 -0
  550. package/src/hidden-skills/groundwork-design-system-extract/templates/design-system-extract-cache.md +19 -0
  551. package/src/hidden-skills/groundwork-designer/SKILL.md +108 -0
  552. package/src/hidden-skills/groundwork-designer/references/accessibility.md +33 -0
  553. package/src/hidden-skills/groundwork-designer/references/ai-native-design.md +37 -0
  554. package/src/hidden-skills/groundwork-designer/references/design-review.md +29 -0
  555. package/src/hidden-skills/groundwork-designer/references/design-systems-and-tokens.md +33 -0
  556. package/src/hidden-skills/groundwork-designer/references/interaction-and-motion.md +37 -0
  557. package/src/hidden-skills/groundwork-designer/references/layout-and-space.md +33 -0
  558. package/src/hidden-skills/groundwork-designer/references/usability-and-ux.md +33 -0
  559. package/src/hidden-skills/groundwork-designer/references/visual-craft.md +49 -0
  560. package/src/hidden-skills/groundwork-designer/sync-anchor.md +20 -0
  561. package/src/hidden-skills/groundwork-doc-sync/instructions.md +100 -0
  562. package/src/hidden-skills/groundwork-elicit/instructions.md +66 -0
  563. package/src/hidden-skills/groundwork-elicit/methods.md +65 -0
  564. package/src/hidden-skills/groundwork-infra-adopt/instructions.md +168 -0
  565. package/src/hidden-skills/groundwork-infra-adopt/templates/infra-adopt-cache.md +21 -0
  566. package/src/hidden-skills/groundwork-mvp/instructions.md +223 -0
  567. package/src/hidden-skills/groundwork-mvp/templates/mvp-cache.md +9 -0
  568. package/src/hidden-skills/groundwork-patch/instructions.md +40 -0
  569. package/src/hidden-skills/groundwork-persona/instructions.md +54 -0
  570. package/src/hidden-skills/groundwork-product/SKILL.md +102 -0
  571. package/src/hidden-skills/groundwork-product/references/ai-native-product.md +45 -0
  572. package/src/hidden-skills/groundwork-product/references/discovery-and-opportunity.md +38 -0
  573. package/src/hidden-skills/groundwork-product/references/product-risks.md +52 -0
  574. package/src/hidden-skills/groundwork-product/references/requirements-and-specs.md +39 -0
  575. package/src/hidden-skills/groundwork-product/references/scope-and-sequencing.md +35 -0
  576. package/src/hidden-skills/groundwork-product/references/shaping-and-appetite.md +48 -0
  577. package/src/hidden-skills/groundwork-product/references/success-metrics-and-signals.md +37 -0
  578. package/src/hidden-skills/groundwork-product/sync-anchor.md +19 -0
  579. package/src/hidden-skills/groundwork-product-brief/instructions.md +231 -0
  580. package/src/hidden-skills/groundwork-product-brief-extract/instructions.md +139 -0
  581. package/src/hidden-skills/groundwork-product-brief-extract/templates/product-brief-extract-cache.md +17 -0
  582. package/src/hidden-skills/groundwork-review/checklists/architecture.md +93 -0
  583. package/src/hidden-skills/groundwork-review/checklists/bet-pitch.md +94 -0
  584. package/src/hidden-skills/groundwork-review/checklists/decomposition.md +135 -0
  585. package/src/hidden-skills/groundwork-review/checklists/design-system.md +85 -0
  586. package/src/hidden-skills/groundwork-review/checklists/domain-entity.md +66 -0
  587. package/src/hidden-skills/groundwork-review/checklists/implementation-readiness.md +46 -0
  588. package/src/hidden-skills/groundwork-review/checklists/infrastructure.md +68 -0
  589. package/src/hidden-skills/groundwork-review/checklists/maturity.md +71 -0
  590. package/src/hidden-skills/groundwork-review/checklists/product-brief.md +69 -0
  591. package/src/hidden-skills/groundwork-review/checklists/technical-design.md +112 -0
  592. package/src/hidden-skills/groundwork-review/instructions.md +181 -0
  593. package/src/hidden-skills/groundwork-scaffold/instructions.md +254 -0
  594. package/src/hidden-skills/groundwork-scaffold/phases/01-ingestion-service-mapping.md +87 -0
  595. package/src/hidden-skills/groundwork-scaffold/phases/02-scaffolding-execution.md +15 -0
  596. package/src/hidden-skills/groundwork-scaffold/phases/03-service-documentation-api-stubs.md +100 -0
  597. package/src/hidden-skills/groundwork-scaffold/phases/04-infrastructure-verification.md +17 -0
  598. package/src/hidden-skills/groundwork-scaffold/phases/05-draft-review.md +19 -0
  599. package/src/hidden-skills/groundwork-scaffold/phases/06-commit.md +19 -0
  600. package/src/hidden-skills/groundwork-scaffold/templates/scaffold-cache.md +23 -0
  601. package/src/hidden-skills/groundwork-scan/instructions.md +164 -0
  602. package/src/hidden-skills/groundwork-scan/references/digest-schema.md +66 -0
  603. package/src/hidden-skills/groundwork-scan/references/exclusions.md +44 -0
  604. package/src/hidden-skills/groundwork-scan/templates/architecture-findings.md +42 -0
  605. package/src/hidden-skills/groundwork-scan/templates/design-findings.md +23 -0
  606. package/src/hidden-skills/groundwork-scan/templates/overview.md +26 -0
  607. package/src/hidden-skills/groundwork-scan/templates/product-findings.md +23 -0
  608. package/src/hidden-skills/groundwork-scan/templates/scan-state.json +19 -0
  609. package/src/hidden-skills/groundwork-stack-forge/instructions.md +150 -0
  610. package/src/hidden-skills/groundwork-stack-forge/references/authoring-engineer-skills.md +107 -0
  611. package/src/hidden-skills/groundwork-surface-activation/instructions.md +138 -0
  612. package/src/hidden-skills/groundwork-update/briefs/reconcile-worker.md +196 -0
  613. package/src/hidden-skills/groundwork-update/instructions.md +200 -0
  614. package/src/hidden-skills/groundwork-writer/SKILL.md +278 -0
  615. package/src/hidden-skills/maturity-model.md +125 -0
  616. package/src/hidden-skills/operating-contract.md +400 -0
  617. package/src/hidden-skills/repo-map-schema.md +90 -0
  618. package/src/hidden-skills/templates/adr.md +57 -0
  619. package/src/hidden-skills/templates/capability-ports.md +71 -0
  620. package/src/hidden-skills/templates/discovery-notes.md +33 -0
  621. package/src/hidden-skills/templates/domain-entity.md +80 -0
  622. package/src/hidden-skills/templates/gap-ledger.md +21 -0
  623. package/src/hidden-skills/templates/handoff.md +37 -0
  624. package/src/hidden-skills/templates/maturity.md +39 -0
  625. package/src/hidden-skills/templates/surfaces.md +207 -0
  626. package/src/skills/groundwork-check/SKILL.md +56 -0
  627. package/src/skills/groundwork-check/instructions.md +70 -0
  628. package/src/skills/groundwork-orchestrator/SKILL.md +176 -0
  629. package/src/skills/groundwork-orchestrator/workflow-index.md +50 -0
@@ -0,0 +1,42 @@
1
+ # Architecture Findings
2
+
3
+ > Consumed by `groundwork-architecture-extract`. Exact structural facts extracted from the codebase and the `repo-map.json` code map. The heaviest findings slice — the architecture phase reverse-engineers `docs/architecture/index.md`, domain stubs, and contract docs from it.
4
+
5
+ ## Service / Partition Map
6
+
7
+ <!-- One row per service or partition: name, root path, language, runtime, responsibility, and — for partitions a consumer interacts with — the interface surface type (graphical-ui | cli | agentic-protocol); `—` for core services. Record every surface-bearing partition: the architecture extract writes the surface registry from this column, and a surface missing here is missing from the registry. -->
8
+
9
+ | Service | Root | Language | Responsibility | Surface |
10
+ |---|---|---|---|---|
11
+
12
+ ## Entry Points
13
+
14
+ <!-- Per service: the process entry point(s) — main.go, the server bootstrap, the worker loop. -->
15
+
16
+ ## External Contracts
17
+
18
+ <!-- Every machine-readable contract found, with its path: OpenAPI/Swagger specs, AsyncAPI schemas, Protobuf/gRPC definitions, GraphQL SDL. When a service exposes HTTP routes with NO formal spec, record that gap explicitly — it is a candidate gap-ledger entry. -->
19
+
20
+ ## Data Models & Persistence
21
+
22
+ <!-- Entities from schemas, migrations, ORM models. The datastores in use (Postgres, Redis, etc.) and where each service's schema/migrations live. -->
23
+
24
+ ## Dependencies
25
+
26
+ <!-- Internal: which service depends on which (from the code map). External: third-party services and SDKs each service calls (Stripe, Clerk, a message broker, an LLM provider). -->
27
+
28
+ ## Communication Patterns
29
+
30
+ <!-- Sync (HTTP/gRPC) vs async (queue/stream/pubsub) edges between services, with the transport. -->
31
+
32
+ ## Infrastructure & Deployment
33
+
34
+ <!-- docker-compose services and ports, IaC (Terraform/k8s/helm), CI workflows, env examples. Whether a system-test harness exists. -->
35
+
36
+ ## Notable Patterns
37
+
38
+ <!-- Architectural patterns observed: hexagonal layering, transactional outbox, CQRS, repository pattern, etc. -->
39
+
40
+ ## Risks & TODOs
41
+
42
+ <!-- TODO/FIXME markers of architectural weight, deprecated paths, obvious divergences from a clean service standard. Feeds the gap ledger. -->
@@ -0,0 +1,23 @@
1
+ # Design Findings
2
+
3
+ > Consumed by `groundwork-design-system-extract`. Raw design signals extracted from config and code. Not a design system — the extract phase distils them and interviews to fill aesthetic-intent gaps.
4
+
5
+ ## Interface Surfaces
6
+
7
+ <!-- One line per interface surface found: partition, type (graphical-ui | cli | agentic-protocol), platform evidence. Record every surface — a repo can carry a web app AND a CLI, and one omitted here is lost to the design and registry phases. A repo with one surface gets one line. -->
8
+
9
+ ## Design Tokens
10
+
11
+ <!-- Colour, spacing, typography, radius, shadow values found in Tailwind config, CSS variables, theme files, or a tokens source. Quote concrete values with their source path. -->
12
+
13
+ ## Component Library
14
+
15
+ <!-- UI component inventory: a design-system package, shadcn/MUI/Chakra, custom components. Where they live. -->
16
+
17
+ ## Theme & Framework
18
+
19
+ <!-- UI framework, styling approach (Tailwind, CSS-in-JS, CSS modules), dark-mode handling, terminal theming for a CLI. -->
20
+
21
+ ## Interaction & Accessibility Signals
22
+
23
+ <!-- Motion/animation conventions, focus handling, ARIA usage, keyboard support, reduced-motion handling — anything signalling interaction and accessibility posture. -->
@@ -0,0 +1,26 @@
1
+ # Scan Overview
2
+
3
+ > Shared scan baseline. Read by every brownfield extract phase. Not a canonical doc — deleted at the end of setup.
4
+
5
+ ## Repository Shape
6
+
7
+ <!-- single-service | multi-part | monorepo -->
8
+
9
+ ## Parts
10
+
11
+ <!-- One row per part: id, root path, language, framework -->
12
+
13
+ | Part | Root | Language | Framework |
14
+ |---|---|---|---|
15
+
16
+ ## Partition Map
17
+
18
+ <!-- One line per partition: id — one-sentence purpose -->
19
+
20
+ ## Scan Depth
21
+
22
+ <!-- quick | deep | exhaustive -->
23
+
24
+ ## Coverage & Gaps
25
+
26
+ <!-- What was read fully vs sampled. Name any directory only sampled at the chosen depth, and anything excluded that a downstream phase might need. Honest gaps here let the extract phases ask the user; silent omission reads as completeness. -->
@@ -0,0 +1,23 @@
1
+ # Product Findings
2
+
3
+ > Consumed by `groundwork-product-brief-extract`. Raw signals about what the product does and for whom, extracted from code and docs. Not a brief — the extract phase distils and interviews to fill gaps.
4
+
5
+ ## Value Proposition
6
+
7
+ <!-- What the README, landing copy, and package description claim the product is and does. -->
8
+
9
+ ## User-Facing Capabilities
10
+
11
+ <!-- Features inferred from routes, pages, commands, public API surface. One bullet each, with the evidence path. -->
12
+
13
+ ## Product Surface
14
+
15
+ <!-- The interaction medium(s) detected: web UI, CLI, API/protocol, mobile. -->
16
+
17
+ ## Inferred Users
18
+
19
+ <!-- Who the product appears built for, inferred from copy, auth model, and feature shape. Mark as inference. -->
20
+
21
+ ## Licensing & Monetisation Signals
22
+
23
+ <!-- LICENSE, pricing/billing integrations, tiers, paywalls — anything signalling the commercial model. -->
@@ -0,0 +1,19 @@
1
+ {
2
+ "status": "scanning",
3
+ "schema_version": 1,
4
+ "scan_depth": null,
5
+ "fan_out_mode": null,
6
+ "classification": {
7
+ "repo_shape": null,
8
+ "parts": []
9
+ },
10
+ "exclusions": ["node_modules", ".git", "dist", "build", "coverage", "vendor", "target", ".next", "*.min.js", "*.map", "lockfiles"],
11
+ "partitions": [],
12
+ "findings_files": [
13
+ "scan/overview.md",
14
+ "scan/product-findings.md",
15
+ "scan/design-findings.md",
16
+ "scan/architecture-findings.md"
17
+ ],
18
+ "resume_pointer": null
19
+ }
@@ -0,0 +1,150 @@
1
+ ---
2
+ name: groundwork-stack-forge
3
+ description: >
4
+ Forge a first-class starting point when the architecture's chosen stack has no
5
+ GroundWork generator — a native desktop app (AppKit, WinUI), an embedded daemon, an
6
+ unsupported language or framework. Researches the stack, authors a self-contained
7
+ engineer skill for it, and builds a Day-2 seed wired into `./dev`, then hands the
8
+ Day-2 checklist to MVP planning. Invoked from the scaffold phase's unsupported-stack
9
+ branch so going off the paved road still lands the project in a good place.
10
+ ---
11
+
12
+ # groundwork-stack-forge
13
+
14
+ The paved road is the set of stacks GroundWork has a generator for. This skill is what
15
+ happens when the architecture, deliberately, goes off it — a macOS-native app, a Rust
16
+ service, an embedded firmware target, a language the generators do not produce. The wrong
17
+ answer is a passive shrug: "no generator, you're on your own." The right answer — the one
18
+ that makes GroundWork worth using off-script — is to do everything a generator would have
19
+ done, by hand and to the same bar: a real engineering skill for the stack, and a seed that
20
+ clears the Day-2 baseline.
21
+
22
+ You are a staff engineer who has shipped in this stack and is setting up a teammate to
23
+ succeed in it. Two artifacts come out of this: **an engineer skill** the project's agent
24
+ loads on every task in this stack, and **a seed** — a small, real, running starting point
25
+ that already does config validation, error handling, debugging, and the rest of the Day-2
26
+ baseline in this stack's idiom. The seed is a skeleton, not a finished product; the first
27
+ bets grow it. Both must be good enough that a senior practitioner in the stack would nod.
28
+
29
+ Apply the `groundwork-writer` skill when producing any output document — the engineer
30
+ skill, infrastructure notes, the hand-off. Declarative, assertive, zero-hedging.
31
+
32
+ ## Operating Contract
33
+
34
+ **Load and apply all protocols from `.groundwork/skills/operating-contract.md`
35
+ (contract v1).** This skill runs inside the scaffold phase, so the Phase Lifecycle, Living
36
+ Documents, and Hand-off protocols bind it: what you forge is recorded in the canonical docs
37
+ and carried to MVP, never left as undocumented local cleverness.
38
+
39
+ The governing rule is the Day-2 baseline: read
40
+ `docs/principles/delivery/day-2-operational-baseline.md` now. It is the bar the seed is held
41
+ to and the source of the checklist you hand to MVP — its two rules (**no empty capabilities**,
42
+ **off-script still lands well**) are why this skill exists.
43
+
44
+ ## When this runs
45
+
46
+ The scaffold phase routes here from Phase 1 when it maps a service or surface to a stack no
47
+ generator can produce and the user chooses to build it properly (rather than reverse the
48
+ architecture onto a supported stack, or hand-roll it with no support). You inherit the
49
+ chosen stack from `docs/architecture/index.md` and `docs/surfaces.md`; do not re-litigate the
50
+ choice — the architecture made it. Your job is to honour it well.
51
+
52
+ ## The forge pipeline
53
+
54
+ Run these in order. Each stage feeds the next; do not skip ahead.
55
+
56
+ ### Stage 1 — Frame the stack and classify the target
57
+
58
+ Read the architecture and the surface registry for what was actually chosen: the language,
59
+ the framework, the platform, and what this component *is* — a service, a daemon, a CLI, a
60
+ native UI surface. Classify it, because the classification drives everything downstream: it
61
+ picks the engineer-skill family (Backend or Surface — see
62
+ `references/authoring-engineer-skills.md`), and it decides which Day-2 items apply in this
63
+ idiom and which are genuinely N/A.
64
+
65
+ State the frame back in two or three lines — "a native macOS menu-bar app in Swift/AppKit; a
66
+ Surface-family target; no server, so the API and schema baseline items are N/A, but config,
67
+ errors, debugging, logging, graceful teardown, a pure core, a test harness, and `./dev`
68
+ integration all apply." Confirm it with the user before researching.
69
+
70
+ ### Stage 2 — Research the stack
71
+
72
+ Invoke the `deep-research` skill to build a cited, current picture of how this stack is built
73
+ *well*. Scope the research to the decisions the engineer skill and seed must get right:
74
+
75
+ - The idiomatic project layout and the one golden-path way to structure a pure core behind a
76
+ thin shell in this stack.
77
+ - The build / run / debug loop — how a developer attaches a debugger and reads logs (the
78
+ highest-leverage DX affordance).
79
+ - The error model — how errors are typed, propagated, and surfaced.
80
+ - Concurrency / event model, configuration, graceful teardown, and packaging.
81
+ - The test harness that runs in seconds, and how it is driven headlessly (for `./dev` and the
82
+ system-test runner).
83
+ - The plausible-but-wrong idioms — what a strong general model writes that a senior
84
+ practitioner would reject.
85
+
86
+ Do not author from memory where the stack has moved; the research is what keeps the skill
87
+ from being confidently out of date.
88
+
89
+ ### Stage 3 — Author the engineer skill
90
+
91
+ Write `.agents/skills/groundwork-<stack>-engineer/` to the standard in
92
+ `references/authoring-engineer-skills.md` — the right family, the section spine, self-contained
93
+ references (no sync-anchor), the house style, and the **eval-before-accept loop**. Do not
94
+ accept the skill until you have run it against two or three realistic first tasks and it comes
95
+ out senior-grade against both the Day-2 baseline and stack idiom. Read the nearest shipped
96
+ engineer skill in the project as a worked example of shape.
97
+
98
+ ### Stage 4 — Build the Day-2 seed by adopting the skill
99
+
100
+ Now build the seed — and build it *as* the engineer skill you just wrote would have you build
101
+ it. This dogfoods the skill: if it cannot guide a good seed, it is not done, so loop back to
102
+ Stage 3. The seed is a skeleton that clears the **applicable** Day-2 baseline items in this
103
+ stack's idiom — a pure core with a thin shell, config loaded and validated at startup, typed
104
+ errors handled at the boundary, a debugging entry point, structured logs, graceful teardown,
105
+ and a test that runs in seconds and proves the wired thing does something real. It is not a
106
+ product; it is the smallest real thing that is already operable and debuggable.
107
+
108
+ ### Stage 5 — Wire the seed into `./dev` and the test loop
109
+
110
+ A seed outside `./dev` is a side process, not a first-class citizen — exactly the failure the
111
+ Day-2 baseline forbids. Wire it in:
112
+
113
+ - **`./dev`** — register the seed so `./dev start` runs it. If it is a process `./dev` can
114
+ launch, register a runner in `.dev/dev.config.json` (name + launch command). If it needs a
115
+ build-then-run or a richer verb, add a project command under `.dev/commands/` (it appears in
116
+ `./dev help` and may shadow a built-in). Never leave `./dev start` with nothing to do for
117
+ this project.
118
+ - **Surface registry** — if the target is a surface, register it in `docs/surfaces.md` and
119
+ `.groundwork/surfaces.json` with `scaffold: forged` and its `testMedium`; if it is a service,
120
+ record it in `docs/architecture/infrastructure.md` like any other managed unit.
121
+ - **System tests** — give it a headless test medium the `system-test-runner` can drive
122
+ (the harness from Stage 2), so it joins the system test loop rather than sitting outside it.
123
+
124
+ Then verify: `./dev start` brings the seed up, `./dev status` shows it, and its test runs
125
+ green. Debug and fix anything that does not — a forged seed that does not boot is not done.
126
+
127
+ ### Stage 6 — Hand the Day-2 checklist to MVP
128
+
129
+ The seed proves the shape; the first bets earn the depth. Walk the Day-2 baseline once for this
130
+ stack and, for each item, record *satisfied by the seed*, *to be built by a bet*, or *N/A
131
+ because…*. Write that list into the scaffold cache (`.groundwork/cache/scaffold-cache.md`) under
132
+ a `## Forged Stack Checklist` heading — the scaffold commit folds it into the MVP hand-off, and
133
+ MVP scopes the to-be-built items into the first bets. This is how "the checklist becomes part of
134
+ the MVP."
135
+
136
+ Record the forged stack in `docs/architecture/infrastructure.md` (its run command, its debug entry point, its
137
+ test command) so the next developer runs it without asking, then return control to the scaffold
138
+ phase to finish its mapping and commit.
139
+
140
+ ## Output Expectations
141
+
142
+ - An engineer skill at `.agents/skills/groundwork-<stack>-engineer/` that passes its own
143
+ eval loop and reads like a senior practitioner wrote it — self-contained, no sync-anchor.
144
+ - A seed that boots through `./dev start`, clears the applicable Day-2 baseline in the stack's
145
+ idiom, and has a test that runs green.
146
+ - The seed registered in `./dev`, the surface/infra docs, and the system-test loop — a
147
+ first-class citizen, never a side process.
148
+ - A Day-2 checklist in the scaffold hand-off so the first bets are scoped to finish the job.
149
+ - No empty capabilities anywhere in what you forged — every command, endpoint, and test medium
150
+ you materialised does something real.
@@ -0,0 +1,107 @@
1
+ # Authoring an Engineer Skill (runtime standard)
2
+
3
+ This reference is how the forge writes an engineer skill that holds up. It distils the
4
+ two dev-time skills GroundWork builds with — `skill-writer` (how a skill should read) and
5
+ `skill-creator` (how a skill is tested before it is trusted) — into a standard you apply
6
+ inside a user's project, where neither of those skills is installed. Treat it as the bar:
7
+ a forged engineer skill that does not meet it is not finished.
8
+
9
+ ## What you are building
10
+
11
+ An engineer skill is a **persistent implementation expert for one stack**, delivered into
12
+ the project at `.agents/skills/groundwork-<stack>-engineer/` so the team's agent loads it
13
+ on every relevant task. It is not documentation about the stack — it is the senior
14
+ engineer's judgement, written so an agent makes the calls a senior engineer would: where
15
+ code goes, what to never do, how to verify, which idiom is right and which is plausible
16
+ but wrong.
17
+
18
+ It mirrors the three engineer skills GroundWork ships (`groundwork-go-engineer`,
19
+ `groundwork-python-engineer`, `groundwork-nextjs-engineer`). Read the nearest one in the
20
+ project (or, if scaffolding has not run, the closest sibling you can find) as a worked
21
+ example before you write — match its shape, not its content.
22
+
23
+ ## Pick the family
24
+
25
+ Engineer skills come in two shapes. Choose by what the engineer is wired into, then keep
26
+ that family's section order so a reader predicts the skill's internals.
27
+
28
+ | Family | Use for | Section spine |
29
+ |---|---|---|
30
+ | **Backend** | services, daemons, CLIs, anything gated by specs and sibling components | Operating Contract → Required First Checks → Context Routing → Skill Handoffs → Execution Checklist → Safety Gates → Quick Reference → Output Expectations |
31
+ | **Surface** | desktop, mobile, native UI, anything whose failure mode is plausible-but-wrong UI idiom | Operating Contract → Core Pillars → How to Use This Skill → Task Routing → Safety Gates → Hallucination Controls → Output Expectations → Antipatterns |
32
+
33
+ A native macOS AppKit app is **Surface**. A Rust HTTP service is **Backend**. A headless
34
+ sync daemon is **Backend**. When a target straddles both (a desktop app with a real local
35
+ backend), pick by the larger risk and fold the other family's concerns into a section.
36
+
37
+ ## The anatomy
38
+
39
+ ```
40
+ groundwork-<stack>-engineer/
41
+ ├── SKILL.md # the spine above; frontmatter name + a pushy description
42
+ └── references/ # 8–14 files, each a decision-time lens on one area
43
+ ```
44
+
45
+ - **`SKILL.md`** carries the spine, kept tight — it routes to references, it does not inline
46
+ them. The frontmatter `description` must be *pushy*: it decides whether the agent loads
47
+ the skill at all, so name the stack and the trigger work explicitly.
48
+ - **`references/`** are written for that stack's decision points — its project layout, its
49
+ error model, its concurrency/event model, its build/debug loop, its test harness, its
50
+ idiomatic libraries, its packaging. Each file is a lens an engineer reaches for mid-task,
51
+ not a tutorial.
52
+ - **No `sync-anchor.md`.** The shipped engineer skills pin GroundWork's in-repo principle
53
+ files by hash; a forged skill lives in a user project with no such source to pin, so it is
54
+ **self-contained** — its references stand on their own. Do not fabricate a sync-anchor.
55
+
56
+ ## How it must read (the house style)
57
+
58
+ These are the `skill-writer` rules. They are why the shipped skills work; hold to them.
59
+
60
+ - **Write intent, not scripts.** Never quote phrases for the agent to repeat. "Verify the
61
+ build is green before opening a slice," not a canned sentence to print.
62
+ - **Explain why each rule exists.** A constraint with its reason is adopted; one imposed is
63
+ worked around. "Keep view state out of the model layer — it makes the model untestable and
64
+ ties redraws to business logic," not "don't put state in the model."
65
+ - **No hedging.** Drop "should," "typically," "you might want to." State the call or cut it.
66
+ - **Lead with the belief, not the rejection.** Say what the right idiom is and why, before
67
+ what to avoid.
68
+ - **Calibrate with examples, not adjectives.** Show a shallow handling next to the deep one.
69
+ Agents match examples; they cannot match "be idiomatic."
70
+ - **Front-load the mental model.** Open the skill with the stack's shape — its core
71
+ abstraction, its golden path — so every later rule lands against a frame.
72
+ - **Expert peer stance.** The skill proposes and explains; it does not bark orders.
73
+
74
+ ## Earn the skill before you trust it (the eval loop)
75
+
76
+ This is the `skill-creator` discipline, adapted for runtime: a skill you wrote and never
77
+ tested is a draft, not an expert. Before you accept a forged engineer skill, prove it.
78
+
79
+ 1. **Draft** the SKILL.md and references against the family and the house style.
80
+ 2. **Pose 2–3 realistic tasks** the skill will face — the first real bets for this stack
81
+ (e.g. "add a window that lists records from the local store," "handle a failed network
82
+ call without crashing the UI"). These are the test, kept small for speed; do not overfit
83
+ the skill to them.
84
+ 3. **Run each task against the skill** — actually reason through how an agent loaded with the
85
+ skill would do it. Judge the output against two yardsticks: the **Day-2 baseline**
86
+ (`docs/principles/delivery/day-2-operational-baseline.md` — config, errors, debugging,
87
+ observability, shutdown, pure core, tests, `./dev`) and **stack idiom** (would a senior
88
+ practitioner in this stack recognise it as right, not just compiling?).
89
+ 4. **Find the gaps and generalise.** Where the skill let the task drift shallow or off-idiom,
90
+ fix the skill — but fix the *general* rule, not the specific case, since the skill runs on
91
+ tasks you did not test.
92
+ 5. **Re-run and repeat** until the tasks come out senior-grade and the user agrees the skill
93
+ reads like an expert. Then accept it.
94
+
95
+ ## What "good" looks like
96
+
97
+ A forged engineer skill is done when:
98
+
99
+ - A reader who knows the stack would say "yes, that is how you build this here" — not "that is
100
+ a reasonable summary."
101
+ - It names the **plausible-but-wrong** idioms specific to this stack (the traps a strong
102
+ general model falls into) and rules them out with reasons.
103
+ - Its references cover the Day-2 baseline in this stack's idiom — including the build/run/debug
104
+ loop and the test harness, the two affordances a seed lives or dies by.
105
+ - It is self-contained: nothing it needs lives only in your head or only in `docs/principles/`.
106
+ - It would still be right for the tenth bet, not just the first — the rules are general, the
107
+ examples concrete.
@@ -0,0 +1,138 @@
1
+ ---
2
+ name: groundwork-surface-activation
3
+ description: >
4
+ Activates a new surface on a live product — the mobile app eighteen months in,
5
+ the CLI alongside an existing web app. Registers the surface, runs its type's
6
+ design track when no section for that type exists, scaffolds the app (or records
7
+ `scaffold: manual`), and triages every capability ledger row so divergence from
8
+ the existing surfaces is a decision on record, never silent drift. On a
9
+ pre-restructure product with GroundWork docs but no surface registry, it
10
+ bootstraps `docs/surfaces.md` first.
11
+ ---
12
+
13
+ # groundwork-surface-activation
14
+
15
+ Adding a surface to a live product is the moment silent divergence is born. Every capability the product shipped before this surface existed now carries an unasked question — does it reach the new surface, and when? Left unanswered, those questions resolve themselves by accident: the surface launches with whatever subset was convenient, users discover the gaps, and no document can say whether any gap is a plan, a choice, or an oversight.
16
+
17
+ This skill makes the sync decision deliberate, once, recorded. Steps 1–3 — register, design, scaffold — are the per-surface increments of setup phases that already ran; the ledger triage (Step 4) is the skill's reason to exist: every existing capability row gets the new surface's column filled as `planned`, `omitted`, or `n/a`, and every future bet inherits those decisions instead of re-deciding them from memory.
18
+
19
+ The registry and ledger contract lives at `.groundwork/skills/templates/surfaces.md`. Read it before touching either artifact — `docs/surfaces.md` and `.groundwork/surfaces.json` are projections of the same decisions, written together in every change this skill makes.
20
+
21
+ Apply the `groundwork-writer` skill when producing or modifying any document. Declarative, assertive, zero-hedging.
22
+
23
+ ---
24
+
25
+ ## Operating Contract
26
+
27
+ The shared operating contract at `.groundwork/skills/operating-contract.md` (contract v1) governs this skill. Read it before taking any other action. This is a **Maintenance** skill (see Lifecycle Modes): Protocols 1 (Discovery Notes), 2 (Living Documents), and 4 (Pacing) apply throughout; Protocols 8 and 9 (Review Gate, Review Invocation) fire when a Living Documents update is a reversal — establishing a contract-compatibility stance that overturns an architecture Key Decision is the case this skill is most likely to hit. There is no phase cache, no hand-off file, and no fresh-context recommendation — an activation starts and finishes inside one conversation. From `.groundwork/cache/` it reads only `discovery-notes.md`.
28
+
29
+ Any working file — a bootstrap reconstruction awaiting the user's confirmation, a triage draft for a long ledger — lives at `.groundwork/cache/surface-activation-draft.md` and is deleted when the activation completes. Final artifacts go to `docs/` and `.groundwork/surfaces.json`, never to the cache.
30
+
31
+ ---
32
+
33
+ ## Registry bootstrap — pre-restructure products only
34
+
35
+ A product that adopted GroundWork before the surface model exists has canonical docs but no `docs/surfaces.md` — neither the architecture commit nor the brownfield extract wrote a registry for it, so without this bridge it never gains one. When `docs/surfaces.md` does not exist, bootstrap before anything else. When it exists, skip this section entirely — re-running the bootstrap on a registry project would overwrite decisions already on record.
36
+
37
+ Reconstruct the registry from what the project already proves:
38
+
39
+ - **`docs/architecture/index.md`** — read its body for the surface detail: it names the services, the surface apps among them, the access paths, and the core's deployment as decided. (This skill runs after setup, so there is no Downstream Context file to read first — the published doc body is the record.)
40
+ - **`docs/architecture/infrastructure.md`** — the scaffold's record of what actually exists: the apps, ports, run commands, test mediums. Where the architecture and the infrastructure doc disagree, the infrastructure doc describes today and wins.
41
+
42
+ Enter every current surface as `active`, with the fields the docs support: type, platform, core access, auth, scaffold (the generator that produced it, or `manual`), test medium, design-track reference into `docs/design-system.md`. Write the Capability Core section from the deployment as observed. Leave the Capability Ledger **empty — table headers, zero rows**. Reconstructing capability parity from a live product is expensive and fuzzy; an empty ledger is honest ("parity unknown until a bet touches it") where a synthesized one would be confidently wrong. Rows grow per-bet from here, written by bet validation.
43
+
44
+ Present the reconstruction to the user before writing — the docs cannot reveal everything (the auth model a surface really uses, a half-abandoned app that should enter `dormant`), and a registry born wrong propagates wrong into every consumer. On confirmation, write `docs/surfaces.md` and `.groundwork/surfaces.json` together per the template contract. Then proceed to Step 1 for the new surface.
45
+
46
+ ---
47
+
48
+ ## Step 1: Register
49
+
50
+ Establish the new surface's registry entry with the user: slug (kebab-case, never renamed — rename means retire and add), type, platform, status, core-access path, auth model, scaffold target, test medium, design-track reference. Most fields are settled by inspection; two are architecture decisions wearing registry fields, and they get a real conversation:
51
+
52
+ - **Core access.** Direct, gateway, or BFF is asked, not presumed. Surface the trade-space against what the architecture already runs — an existing gateway argues for joining it; a surface with needs the shared API cannot serve cleanly argues for a BFF — and let the user decide.
53
+ - **Auth.** The new surface's auth model against the core, in the architecture's terms. A surface that cannot use the existing auth path (a CLI that needs tokens where the web app uses session cookies) is a real decision, not a field to fill.
54
+
55
+ **Contract compatibility.** A new surface that deploys independently of the core — and a second deployed artifact does — turns "we changed the contract" from a refactor into an incident the moment release cadences diverge. If `docs/architecture/index.md` carries no contract-compatibility stance, establish one with the user now and record it under the architecture's Binding Constraints via Living Documents. When the stance overturns a committed Key Decision, that is a reversal: the full Reversal Protocol applies, review re-gate included.
56
+
57
+ Write the registry entry and the JSON twin in the same change.
58
+
59
+ ## Step 2: Design
60
+
61
+ A surface needs its type's design vocabulary, not a design system of its own. When `docs/design-system.md` already carries a section for the surface's type, design is done — point the registry's design-track reference at it and move on; type sections are shared by every surface of that type.
62
+
63
+ When no section for the type exists, run the type's track lazily against the existing foundation: load the track file at `.groundwork/skills/groundwork-design-system/tracks/<type>.md` and execute its Phase 5 in full — translation, independent review, guided walkthrough. The brand conversation (the foundation's Phases 1–4) ran once at setup and is not re-run: a product has one personality no matter how many types express it. This skill stands in for the foundation flow the track normally returns to — where the track expects the brand synthesis from the design-system cache, read the committed foundation sections of `docs/design-system.md` instead (they are the durable form of the same decisions), and the commit below replaces the foundation's Phase 6.
64
+
65
+ On the user's approval, append the new type section to `docs/design-system.md` and add the type's Tier 2 block to `.groundwork/config/brand-tokens.json` (`terminal` from the cli track, `visual` from graphical-ui; agentic-protocol contributes none), following the contract at `.groundwork/skills/groundwork-design-system/templates/brand-tokens.md`. The block carries the same values as the section just written — a mechanical projection, not a second conversation. Delete the track's draft directory (`.groundwork/cache/design-system-draft/`) once the section is committed.
66
+
67
+ ## Step 3: Scaffold
68
+
69
+ When the surface's `scaffold` field names a generator, generate the app: one invocation, named by the surface's slug, parameters per the per-surface pattern in `.groundwork/skills/groundwork-scaffold/phases/01-ingestion-service-mapping.md` — its Generator Capability Mapping table is the contract between architectural language and generator flags. Confirm the invocation with the user before running it; fixing generated code is harder than correcting a flag.
70
+
71
+ When the field is `manual`, no generator runs. `manual` is first-class — the surface participates fully in design, bets, the ledger, and tests before tooling exists for its platform.
72
+
73
+ Either way, the operational expectations are the same and go on the record: a health endpoint (or the medium's equivalent liveness probe), `./dev` integration so the surface boots with the rest of the topology, and registration in the `surfaces` test fixture — re-invoke `system-test-runner --surfaces` with the full active set from `.groundwork/surfaces.json` so the fixture map gains the new slug with its medium and reach. For a generated surface these arrive with the scaffold; for a manual surface they are obligations its implementation must meet to keep the registration honest. Update `docs/architecture/infrastructure.md`'s Surfaces group with the new entry either way (Living Documents).
74
+
75
+ ## Step 4: Triage the ledger
76
+
77
+ The step that earns this skill its existence. Walk every existing capability row with the user and fill the new surface's column. Each cell takes exactly one state:
78
+
79
+ - `planned` — will ship here; carries a bet ref or a discovery-notes pointer. The `planned` cells are the new surface's bet backlog.
80
+ - `omitted` — a deliberate product decision not to ship here, with a one-line rationale a future bet may revisit.
81
+ - `n/a` — structurally meaningless on this surface; no payload.
82
+
83
+ No cell is left empty — an empty cell is an undecided divergence, the exact thing this skill exists to prevent. `delivered` is not a triage outcome: nothing has shipped on a surface that was just born. The one exception is registering an artifact that already exists and already carries a capability (a brownfield CLI brought into the registry late) — there `delivered` is legal with the delivering bet named, claimed only where the evidence exists.
84
+
85
+ Pace the walk as proposals, not interrogation. Read the rows, propose dispositions for clusters of related capabilities with the reasoning attached, and let the user react. Row-by-row questioning exhausts the user before the interesting decisions arrive; per-cluster proposals surface the pattern and reserve conversation for the rows where the user pushes back. Every row still gets decided — clustering is pacing, not skipping.
86
+
87
+ Update both registry twins in the same change: the prose ledger gains the column, and every entry in `.groundwork/surfaces.json`'s `capabilities` array gains a cell keyed by the new slug — a missing cell key is the machine form of the illegal empty cell.
88
+
89
+ On a bootstrap run the ledger has headers and zero rows, so the triage is complete by construction. Say so plainly; do not invent rows. The honest-unknown stance holds — rows arrive as bets touch capabilities.
90
+
91
+ ## Step 5: Hand off
92
+
93
+ `planned` cells are commitments, and commitments that live only in a table get rediscovered instead of delivered. Cross-post every `planned` cell as a bullet under `## Bets` in `.groundwork/cache/discovery-notes.md`, naming the capability key and the target surface — bet discovery reads that section, so each deferral becomes candidate scope for the next pitch instead of a memory. Ordinary bets deliver them; activation never starts delivery itself.
94
+
95
+ Close out:
96
+
97
+ 1. **Report what the activation produced**: the registry entry (and the bootstrap, when it ran), the design section appended or found existing, the scaffold result (generator output, or the manual obligations recorded), the triage in numbers (rows walked, cells per state), the discovery-notes entries added, and every doc updated via Living Documents.
98
+ 2. **Capture stray signals** under their headers in `.groundwork/cache/discovery-notes.md` (Protocol 1).
99
+ 3. **Delete** `.groundwork/cache/surface-activation-draft.md` if it was created.
100
+ 4. Hand off to the `groundwork-orchestrator` skill.
101
+
102
+ ---
103
+
104
+ ## Quality Standard: What a Real Triage Looks Like
105
+
106
+ The triage fails when it fills cells without recording decisions. A column of bare states is a parity nag wearing a ledger — it points nowhere, and the next bet inherits nothing.
107
+
108
+ **Shallow triage (insufficient):**
109
+
110
+ ```markdown
111
+ | Capability | web-app | support-cli |
112
+ |---|---|---|
113
+ | `order-flow/place-order` | delivered (`order-flow`) | planned |
114
+ | `order-flow/order-status` | delivered (`order-flow`) | planned |
115
+ | `account-recovery/reset-credentials` | delivered (`account-recovery`) | planned |
116
+ | `storefront/theme-preview` | delivered (`storefront`) | planned |
117
+ ```
118
+
119
+ Every cell `planned`, no refs, no rationale, nothing cross-posted to discovery notes, the JSON twin untouched. No decision was made — the column says "sync everything eventually," which is the silent drift the triage exists to replace, now with a timestamp.
120
+
121
+ **Deep triage (required standard):**
122
+
123
+ ```markdown
124
+ | Capability | web-app | support-cli |
125
+ |---|---|---|
126
+ | `order-flow/place-order` | delivered (`order-flow`) | omitted — operators support orders, they never place them |
127
+ | `order-flow/order-status` | delivered (`order-flow`) | planned (discovery-notes — first capability the support team asked for) |
128
+ | `account-recovery/reset-credentials` | delivered (`account-recovery`) | planned (discovery-notes — pairs with order-status in one support bet) |
129
+ | `storefront/theme-preview` | delivered (`storefront`) | n/a |
130
+ ```
131
+
132
+ Plus, in the same change: two `## Bets` bullets in discovery notes naming each capability key and the target surface with the reasoning, and every `capabilities` entry in `.groundwork/surfaces.json` gaining a `support-cli` cell with identical states and payloads. Every column decided, every decision findable.
133
+
134
+ The same depth standard applies to the other outputs:
135
+
136
+ - **Registry entries** carry every field with a real value — an `active` surface with no test medium, or a design-track reference pointing at a section that does not exist, is an entry that will fail its first consumer.
137
+ - **The bootstrap** names what each reconstructed field was read from (which architecture decision, which infrastructure row) so the user confirms evidence, not guesses.
138
+ - **Manual-scaffold obligations** are concrete and checkable — the health endpoint's path, the `./dev` target, the fixture slug — not a sentence saying the surface should integrate eventually.