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.
- package/CHANGELOG.md +823 -0
- package/LICENSE +21 -0
- package/README.md +44 -29
- package/bin/groundwork.js +1723 -0
- package/dist/src/generators/add-capability/generator.d.ts +8 -0
- package/dist/src/generators/add-capability/generator.js +60 -0
- package/dist/src/generators/add-capability/generator.js.map +1 -0
- package/dist/src/generators/cli-app/generator.d.ts +9 -0
- package/dist/src/generators/cli-app/generator.js +140 -0
- package/dist/src/generators/cli-app/generator.js.map +1 -0
- package/dist/src/generators/docs-site/generator.d.ts +5 -0
- package/dist/src/generators/docs-site/generator.js +441 -0
- package/dist/src/generators/docs-site/generator.js.map +1 -0
- package/dist/src/generators/electron-app/generator.d.ts +6 -0
- package/dist/src/generators/electron-app/generator.js +261 -0
- package/dist/src/generators/electron-app/generator.js.map +1 -0
- package/dist/src/generators/flutter-app/generator.d.ts +6 -0
- package/dist/src/generators/flutter-app/generator.js +314 -0
- package/dist/src/generators/flutter-app/generator.js.map +1 -0
- package/dist/src/generators/go-microservice/generator.d.ts +8 -0
- package/dist/src/generators/go-microservice/generator.js +232 -0
- package/dist/src/generators/go-microservice/generator.js.map +1 -0
- package/dist/src/generators/nextjs-app/generator.d.ts +8 -0
- package/dist/src/generators/nextjs-app/generator.js +294 -0
- package/dist/src/generators/nextjs-app/generator.js.map +1 -0
- package/dist/src/generators/python-microservice/generator.d.ts +13 -0
- package/dist/src/generators/python-microservice/generator.js +265 -0
- package/dist/src/generators/python-microservice/generator.js.map +1 -0
- package/dist/src/generators/shared/brand-tokens.d.ts +89 -0
- package/dist/src/generators/shared/brand-tokens.js +308 -0
- package/dist/src/generators/shared/brand-tokens.js.map +1 -0
- package/dist/src/generators/shared/capabilities.d.ts +101 -0
- package/dist/src/generators/shared/capabilities.js +279 -0
- package/dist/src/generators/shared/capabilities.js.map +1 -0
- package/dist/src/generators/shared/provenance.d.ts +2 -0
- package/dist/src/generators/shared/provenance.js +85 -0
- package/dist/src/generators/shared/provenance.js.map +1 -0
- package/dist/src/generators/shared/scaffold-helpers.d.ts +72 -0
- package/dist/src/generators/shared/scaffold-helpers.js +309 -0
- package/dist/src/generators/shared/scaffold-helpers.js.map +1 -0
- package/dist/src/generators/system-test-runner/generator.d.ts +23 -0
- package/dist/src/generators/system-test-runner/generator.js +173 -0
- package/dist/src/generators/system-test-runner/generator.js.map +1 -0
- package/dist/src/generators/workspace-dev-cli/generator.d.ts +7 -0
- package/dist/src/generators/workspace-dev-cli/generator.js +138 -0
- package/dist/src/generators/workspace-dev-cli/generator.js.map +1 -0
- package/generators.json +57 -0
- package/lib/repo-map/grammars/tree-sitter-c.wasm +0 -0
- package/lib/repo-map/grammars/tree-sitter-cpp.wasm +0 -0
- package/lib/repo-map/grammars/tree-sitter-csharp.wasm +0 -0
- package/lib/repo-map/grammars/tree-sitter-dart.wasm +0 -0
- package/lib/repo-map/grammars/tree-sitter-go.wasm +0 -0
- package/lib/repo-map/grammars/tree-sitter-java.wasm +0 -0
- package/lib/repo-map/grammars/tree-sitter-javascript.wasm +0 -0
- package/lib/repo-map/grammars/tree-sitter-kotlin.wasm +0 -0
- package/lib/repo-map/grammars/tree-sitter-lua.wasm +0 -0
- package/lib/repo-map/grammars/tree-sitter-php.wasm +0 -0
- package/lib/repo-map/grammars/tree-sitter-python.wasm +0 -0
- package/lib/repo-map/grammars/tree-sitter-ruby.wasm +0 -0
- package/lib/repo-map/grammars/tree-sitter-rust.wasm +0 -0
- package/lib/repo-map/grammars/tree-sitter-scala.wasm +0 -0
- package/lib/repo-map/grammars/tree-sitter-swift.wasm +0 -0
- package/lib/repo-map/grammars/tree-sitter-tsx.wasm +0 -0
- package/lib/repo-map/grammars/tree-sitter-typescript.wasm +0 -0
- package/lib/repo-map/index.js +386 -0
- package/lib/repo-map/languages.js +514 -0
- package/lib/repo-map/pagerank.js +59 -0
- package/migrations/README.md +60 -0
- package/migrations/_template/cli-migration.js +27 -0
- package/migrations/gw-bet-prose-redesign.js +105 -0
- package/migrations/gw-drop-test-manifest.js +37 -0
- package/migrations/gw-register-serena-mcp.js +42 -0
- package/migrations/gw-relocate-hidden-skills.js +40 -0
- package/migrations/gw-seed-config-toml.js +24 -0
- package/migrations/index.json +40 -0
- package/package.json +70 -6
- package/src/AGENTS.md +36 -0
- package/src/config/config.toml +30 -0
- package/src/config/groundwork-state.json +5 -0
- package/src/docs/llms.txt +72 -0
- package/src/docs/principles/ai-native/agent-native-systems.md +90 -0
- package/src/docs/principles/ai-native/agentic-systems.md +78 -0
- package/src/docs/principles/ai-native/ai-engineering.md +100 -0
- package/src/docs/principles/ai-native/ai-native-product.md +76 -0
- package/src/docs/principles/delivery/cost-engineering.md +89 -0
- package/src/docs/principles/delivery/day-2-operational-baseline.md +57 -0
- package/src/docs/principles/delivery/devex.md +88 -0
- package/src/docs/principles/delivery/platform.md +101 -0
- package/src/docs/principles/delivery/progressive-delivery.md +92 -0
- package/src/docs/principles/design/ai-native-design.md +73 -0
- package/src/docs/principles/design/design-foundations.md +80 -0
- package/src/docs/principles/design/design-systems-and-tokens.md +72 -0
- package/src/docs/principles/design/interaction-and-motion.md +69 -0
- package/src/docs/principles/design/layout-and-space.md +72 -0
- package/src/docs/principles/design/usability-and-ux.md +79 -0
- package/src/docs/principles/design/visual-design.md +84 -0
- package/src/docs/principles/foundations/code-craft.md +86 -0
- package/src/docs/principles/foundations/continuous-discovery.md +75 -0
- package/src/docs/principles/foundations/documentation.md +102 -0
- package/src/docs/principles/foundations/prioritization-and-appetite.md +78 -0
- package/src/docs/principles/foundations/product-engineering.md +90 -0
- package/src/docs/principles/foundations/product-risks.md +89 -0
- package/src/docs/principles/foundations/requirements-and-specs.md +80 -0
- package/src/docs/principles/foundations/success-metrics.md +66 -0
- package/src/docs/principles/foundations/testing.md +108 -0
- package/src/docs/principles/index.md +24 -0
- package/src/docs/principles/quality/accessibility.md +88 -0
- package/src/docs/principles/quality/observability.md +84 -0
- package/src/docs/principles/quality/performance.md +84 -0
- package/src/docs/principles/quality/privacy.md +92 -0
- package/src/docs/principles/quality/reliability.md +89 -0
- package/src/docs/principles/quality/security.md +78 -0
- package/src/docs/principles/stack/postgres.md +100 -0
- package/src/docs/principles/system-design/api-design.md +86 -0
- package/src/docs/principles/system-design/architecture-decisions.md +81 -0
- package/src/docs/principles/system-design/code-structure.md +104 -0
- package/src/docs/principles/system-design/data-engineering.md +87 -0
- package/src/docs/principles/system-design/durable-execution.md +89 -0
- package/src/docs/principles/system-design/evolutionary-architecture.md +81 -0
- package/src/docs/principles/system-design/identity-and-access.md +76 -0
- package/src/docs/principles/system-design/integration-patterns.md +84 -0
- package/src/docs/principles/system-design/real-time.md +83 -0
- package/src/docs/principles/system-design/surface-architecture.md +74 -0
- package/src/docs/ways-of-working/documentation.md +69 -0
- package/src/docs/ways-of-working/how-we-work.md +76 -0
- package/src/docs/ways-of-working/units-of-work.md +40 -0
- package/src/engineer-skills/groundwork-electron-engineer/SKILL.md +123 -0
- package/src/engineer-skills/groundwork-electron-engineer/references/documentation.md +126 -0
- package/src/engineer-skills/groundwork-electron-engineer/references/ipc-contracts.md +138 -0
- package/src/engineer-skills/groundwork-electron-engineer/references/observability.md +37 -0
- package/src/engineer-skills/groundwork-electron-engineer/references/packaging-and-updates.md +82 -0
- package/src/engineer-skills/groundwork-electron-engineer/references/performance-and-reliability.md +80 -0
- package/src/engineer-skills/groundwork-electron-engineer/references/process-model.md +94 -0
- package/src/engineer-skills/groundwork-electron-engineer/references/security.md +107 -0
- package/src/engineer-skills/groundwork-electron-engineer/references/testing-and-smoke.md +129 -0
- package/src/engineer-skills/groundwork-electron-engineer/references/theming-and-tokens.md +74 -0
- package/src/engineer-skills/groundwork-electron-engineer/sync-anchor.md +22 -0
- package/src/engineer-skills/groundwork-flutter-engineer/SKILL.md +114 -0
- package/src/engineer-skills/groundwork-flutter-engineer/references/accessibility.md +92 -0
- package/src/engineer-skills/groundwork-flutter-engineer/references/architecture.md +189 -0
- package/src/engineer-skills/groundwork-flutter-engineer/references/data-and-contracts.md +136 -0
- package/src/engineer-skills/groundwork-flutter-engineer/references/documentation.md +122 -0
- package/src/engineer-skills/groundwork-flutter-engineer/references/navigation.md +122 -0
- package/src/engineer-skills/groundwork-flutter-engineer/references/observability.md +37 -0
- package/src/engineer-skills/groundwork-flutter-engineer/references/performance-and-reliability.md +100 -0
- package/src/engineer-skills/groundwork-flutter-engineer/references/platform-channels.md +93 -0
- package/src/engineer-skills/groundwork-flutter-engineer/references/releases-and-distribution.md +84 -0
- package/src/engineer-skills/groundwork-flutter-engineer/references/security.md +96 -0
- package/src/engineer-skills/groundwork-flutter-engineer/references/state-management.md +166 -0
- package/src/engineer-skills/groundwork-flutter-engineer/references/testing.md +160 -0
- package/src/engineer-skills/groundwork-flutter-engineer/references/theming-and-design-tokens.md +109 -0
- package/src/engineer-skills/groundwork-flutter-engineer/references/widgets-and-composition.md +123 -0
- package/src/engineer-skills/groundwork-flutter-engineer/sync-anchor.md +24 -0
- package/src/engineer-skills/groundwork-go-engineer/SKILL.md +174 -0
- package/src/engineer-skills/groundwork-go-engineer/references/api-design.md +82 -0
- package/src/engineer-skills/groundwork-go-engineer/references/architecture.md +42 -0
- package/src/engineer-skills/groundwork-go-engineer/references/capability-ports.md +50 -0
- package/src/engineer-skills/groundwork-go-engineer/references/code-craft-security.md +34 -0
- package/src/engineer-skills/groundwork-go-engineer/references/concurrency.md +108 -0
- package/src/engineer-skills/groundwork-go-engineer/references/documentation.md +130 -0
- package/src/engineer-skills/groundwork-go-engineer/references/go-services.md +77 -0
- package/src/engineer-skills/groundwork-go-engineer/references/http-handlers.md +172 -0
- package/src/engineer-skills/groundwork-go-engineer/references/implementation-patterns.md +156 -0
- package/src/engineer-skills/groundwork-go-engineer/references/integration-realtime-data.md +57 -0
- package/src/engineer-skills/groundwork-go-engineer/references/observability.md +49 -0
- package/src/engineer-skills/groundwork-go-engineer/references/postgres.md +41 -0
- package/src/engineer-skills/groundwork-go-engineer/references/reliability-performance.md +105 -0
- package/src/engineer-skills/groundwork-go-engineer/references/testing.md +201 -0
- package/src/engineer-skills/groundwork-go-engineer/sync-anchor.md +20 -0
- package/src/engineer-skills/groundwork-nextjs-engineer/SKILL.md +112 -0
- package/src/engineer-skills/groundwork-nextjs-engineer/references/accessibility.md +111 -0
- package/src/engineer-skills/groundwork-nextjs-engineer/references/architecture.md +323 -0
- package/src/engineer-skills/groundwork-nextjs-engineer/references/data-fetching.md +458 -0
- package/src/engineer-skills/groundwork-nextjs-engineer/references/documentation.md +324 -0
- package/src/engineer-skills/groundwork-nextjs-engineer/references/error-boundaries.md +383 -0
- package/src/engineer-skills/groundwork-nextjs-engineer/references/mutations-and-forms.md +396 -0
- package/src/engineer-skills/groundwork-nextjs-engineer/references/observability.md +48 -0
- package/src/engineer-skills/groundwork-nextjs-engineer/references/performance-and-deployment.md +947 -0
- package/src/engineer-skills/groundwork-nextjs-engineer/references/routing-and-navigation.md +405 -0
- package/src/engineer-skills/groundwork-nextjs-engineer/references/security.md +131 -0
- package/src/engineer-skills/groundwork-nextjs-engineer/references/server-components.md +394 -0
- package/src/engineer-skills/groundwork-nextjs-engineer/references/tailwind-and-styling.md +134 -0
- package/src/engineer-skills/groundwork-nextjs-engineer/references/testing.md +491 -0
- package/src/engineer-skills/groundwork-nextjs-engineer/references/type-system.md +368 -0
- package/src/engineer-skills/groundwork-nextjs-engineer/references/ux-principles.md +230 -0
- package/src/engineer-skills/groundwork-nextjs-engineer/references/visual-language.md +69 -0
- package/src/engineer-skills/groundwork-nextjs-engineer/sync-anchor.md +16 -0
- package/src/engineer-skills/groundwork-python-engineer/SKILL.md +199 -0
- package/src/engineer-skills/groundwork-python-engineer/references/api-standards.md +88 -0
- package/src/engineer-skills/groundwork-python-engineer/references/architecture.md +57 -0
- package/src/engineer-skills/groundwork-python-engineer/references/async-patterns.md +103 -0
- package/src/engineer-skills/groundwork-python-engineer/references/capability-ports.md +44 -0
- package/src/engineer-skills/groundwork-python-engineer/references/database.md +88 -0
- package/src/engineer-skills/groundwork-python-engineer/references/documentation-mcp.md +167 -0
- package/src/engineer-skills/groundwork-python-engineer/references/implementation-patterns.md +166 -0
- package/src/engineer-skills/groundwork-python-engineer/references/ml-pipelines.md +119 -0
- package/src/engineer-skills/groundwork-python-engineer/references/ml-systems-ai-engineering.md +74 -0
- package/src/engineer-skills/groundwork-python-engineer/references/observability.md +57 -0
- package/src/engineer-skills/groundwork-python-engineer/references/resilience.md +126 -0
- package/src/engineer-skills/groundwork-python-engineer/references/security.md +148 -0
- package/src/engineer-skills/groundwork-python-engineer/references/testing.md +216 -0
- package/src/engineer-skills/groundwork-python-engineer/sync-anchor.md +20 -0
- package/src/generators/add-capability/generator.ts +70 -0
- package/src/generators/add-capability/schema.json +30 -0
- package/src/generators/capabilities/llm/capability.json +28 -0
- package/src/generators/capabilities/llm/providers/anthropic/footprint.json +13 -0
- package/src/generators/capabilities/llm/providers/anthropic/stacks/go/internal/llm/llm.go.template +102 -0
- package/src/generators/capabilities/llm/providers/anthropic/stacks/python/src/__packageName__/adapters/llm.py.template +61 -0
- package/src/generators/capabilities/llm/providers/local/footprint.json +13 -0
- package/src/generators/capabilities/llm/providers/local/stacks/go/internal/llm/llm.go.template +102 -0
- package/src/generators/capabilities/llm/providers/local/stacks/python/src/__packageName__/adapters/llm.py.template +53 -0
- package/src/generators/capabilities/llm/providers/localai/footprint.json +29 -0
- package/src/generators/capabilities/llm/providers/localai/stacks/go/internal/llm/llm.go.template +102 -0
- package/src/generators/capabilities/llm/providers/localai/stacks/python/src/__packageName__/adapters/llm.py.template +53 -0
- package/src/generators/capabilities/llm/providers/none/footprint.json +9 -0
- package/src/generators/capabilities/llm/providers/none/stacks/go/internal/llm/llm.go.template +35 -0
- package/src/generators/capabilities/llm/providers/none/stacks/python/src/__packageName__/adapters/llm.py.template +25 -0
- package/src/generators/capabilities/llm/providers/ollama/footprint.json +20 -0
- package/src/generators/capabilities/llm/providers/ollama/stacks/go/internal/llm/llm.go.template +102 -0
- package/src/generators/capabilities/llm/providers/ollama/stacks/python/src/__packageName__/adapters/llm.py.template +53 -0
- package/src/generators/capabilities/llm/providers/openai/footprint.json +13 -0
- package/src/generators/capabilities/llm/providers/openai/stacks/go/internal/llm/llm.go.template +98 -0
- package/src/generators/capabilities/llm/providers/openai/stacks/python/src/__packageName__/adapters/llm.py.template +60 -0
- package/src/generators/capabilities/llm/stacks/go/internal/core/service/llm.go.template +12 -0
- package/src/generators/capabilities/llm/stacks/go/internal/llm/llm_test.go.template +33 -0
- package/src/generators/capabilities/llm/stacks/python/src/__packageName__/core/llm.py.template +15 -0
- package/src/generators/capabilities/llm/stacks/python/tests/contracts/test_llm.py.template +37 -0
- package/src/generators/cli-app/files/README.md.template +76 -0
- package/src/generators/cli-app/files/build.mjs.template +15 -0
- package/src/generators/cli-app/files/package.json.template +21 -0
- package/src/generators/cli-app/files/src/cli.ts.template +67 -0
- package/src/generators/cli-app/files/src/commands/hello.ts.template +17 -0
- package/src/generators/cli-app/files/src/commands/status.ts.template +23 -0
- package/src/generators/cli-app/files/src/core/client.test.ts.template +80 -0
- package/src/generators/cli-app/files/src/core/client.ts.template +64 -0
- package/src/generators/cli-app/files/src/registry.test.ts.template +35 -0
- package/src/generators/cli-app/files/src/registry.ts.template +31 -0
- package/src/generators/cli-app/files/tsconfig.json.template +16 -0
- package/src/generators/cli-app/files/tsconfig.test.json.template +11 -0
- package/src/generators/cli-app/generator.ts +138 -0
- package/src/generators/cli-app/schema.json +24 -0
- package/src/generators/docs-site/files/.gitignore.ejs +40 -0
- package/src/generators/docs-site/files/app/docs/__slug__/page.tsx +101 -0
- package/src/generators/docs-site/files/app/docs/layout.tsx +14 -0
- package/src/generators/docs-site/files/app/docs.css +43 -0
- package/src/generators/docs-site/files/app/layout.tsx +24 -0
- package/src/generators/docs-site/files/app/page.tsx +135 -0
- package/src/generators/docs-site/files/app/source.ts +8 -0
- package/src/generators/docs-site/files/components/mermaid.tsx +67 -0
- package/src/generators/docs-site/files/next.config.mjs +10 -0
- package/src/generators/docs-site/files/package.json +32 -0
- package/src/generators/docs-site/files/pnpm-workspace.yaml +7 -0
- package/src/generators/docs-site/files/postcss.config.mjs +6 -0
- package/src/generators/docs-site/files/source.config.ts +77 -0
- package/src/generators/docs-site/files/tailwind.config.js +10 -0
- package/src/generators/docs-site/files/tsconfig.json +27 -0
- package/src/generators/docs-site/generator.ts +476 -0
- package/src/generators/docs-site/schema.json +17 -0
- package/src/generators/electron-app/docs/principles/stack/electron/index.md +49 -0
- package/src/generators/electron-app/docs/principles/stack/electron/ipc-contracts.md +71 -0
- package/src/generators/electron-app/docs/principles/stack/electron/packaging-and-updates.md +59 -0
- package/src/generators/electron-app/docs/principles/stack/electron/process-model.md +53 -0
- package/src/generators/electron-app/docs/principles/stack/electron/security.md +70 -0
- package/src/generators/electron-app/docs/principles/stack/typescript/frontend.md +65 -0
- package/src/generators/electron-app/files/.gitignore.template +20 -0
- package/src/generators/electron-app/files/README.md.template +125 -0
- package/src/generators/electron-app/files/electron.vite.config.ts +31 -0
- package/src/generators/electron-app/files/eslint.config.mjs +92 -0
- package/src/generators/electron-app/files/forge.config.ts.template +44 -0
- package/src/generators/electron-app/files/package.json.template +54 -0
- package/src/generators/electron-app/files/playwright.config.ts +18 -0
- package/src/generators/electron-app/files/project.json.template +65 -0
- package/src/generators/electron-app/files/src/main/core-client.test.ts +81 -0
- package/src/generators/electron-app/files/src/main/core-client.ts +55 -0
- package/src/generators/electron-app/files/src/main/index.ts +157 -0
- package/src/generators/electron-app/files/src/main/ipc.ts +52 -0
- package/src/generators/electron-app/files/src/main/policy.test.ts +71 -0
- package/src/generators/electron-app/files/src/main/policy.ts +73 -0
- package/src/generators/electron-app/files/src/preload/index.ts +23 -0
- package/src/generators/electron-app/files/src/renderer/index.html.template +20 -0
- package/src/generators/electron-app/files/src/renderer/src/App.test.tsx +61 -0
- package/src/generators/electron-app/files/src/renderer/src/App.tsx.template +43 -0
- package/src/generators/electron-app/files/src/renderer/src/assets/main.css +40 -0
- package/src/generators/electron-app/files/src/renderer/src/env.d.ts +14 -0
- package/src/generators/electron-app/files/src/renderer/src/main.tsx +25 -0
- package/src/generators/electron-app/files/src/shared/ipc.ts +54 -0
- package/src/generators/electron-app/files/tests/smoke/app.spec.ts.template +133 -0
- package/src/generators/electron-app/files/tool/electron_exec.sh.template +83 -0
- package/src/generators/electron-app/files/tsconfig.json +7 -0
- package/src/generators/electron-app/files/tsconfig.node.json +27 -0
- package/src/generators/electron-app/files/tsconfig.web.json +22 -0
- package/src/generators/electron-app/files/vitest.config.ts +32 -0
- package/src/generators/electron-app/files/vitest.setup.ts +1 -0
- package/src/generators/electron-app/generator.ts +288 -0
- package/src/generators/electron-app/schema.json +23 -0
- package/src/generators/flutter-app/docs/principles/stack/flutter/architecture.md +78 -0
- package/src/generators/flutter-app/docs/principles/stack/flutter/index.md +38 -0
- package/src/generators/flutter-app/docs/principles/stack/flutter/platform-channels.md +51 -0
- package/src/generators/flutter-app/docs/principles/stack/flutter/releases-and-distribution.md +59 -0
- package/src/generators/flutter-app/docs/principles/stack/flutter/state-management.md +85 -0
- package/src/generators/flutter-app/docs/principles/stack/flutter/testing.md +86 -0
- package/src/generators/flutter-app/docs/principles/stack/flutter/widgets-and-composition.md +69 -0
- package/src/generators/flutter-app/files/.gitignore.template +30 -0
- package/src/generators/flutter-app/files/README.md.template +100 -0
- package/src/generators/flutter-app/files/analysis_options.yaml.template +18 -0
- package/src/generators/flutter-app/files/integration_test/app_test.dart.template +64 -0
- package/src/generators/flutter-app/files/lib/app.dart.template +24 -0
- package/src/generators/flutter-app/files/lib/config/app_config.dart +15 -0
- package/src/generators/flutter-app/files/lib/data/repositories/status_repository.dart +36 -0
- package/src/generators/flutter-app/files/lib/data/services/api_client.dart +71 -0
- package/src/generators/flutter-app/files/lib/domain/models/health_status.dart +23 -0
- package/src/generators/flutter-app/files/lib/main.dart +11 -0
- package/src/generators/flutter-app/files/lib/router.dart +23 -0
- package/src/generators/flutter-app/files/lib/ui/core/theme/app_theme.dart +110 -0
- package/src/generators/flutter-app/files/lib/ui/home/home_view.dart +89 -0
- package/src/generators/flutter-app/files/lib/ui/home/home_view_model.dart.template +38 -0
- package/src/generators/flutter-app/files/project.json.template +51 -0
- package/src/generators/flutter-app/files/pubspec.yaml.template +47 -0
- package/src/generators/flutter-app/files/test/api_client_test.dart.template +63 -0
- package/src/generators/flutter-app/files/test/fakes/fake_status_repository.dart.template +19 -0
- package/src/generators/flutter-app/files/test/home_view_test.dart.template +58 -0
- package/src/generators/flutter-app/files/tool/flutter_exec.sh.template +60 -0
- package/src/generators/flutter-app/generator.ts +362 -0
- package/src/generators/flutter-app/schema.json +23 -0
- package/src/generators/go-microservice/docs/principles/stack/go/concurrency.md +123 -0
- package/src/generators/go-microservice/docs/principles/stack/go/index.md +70 -0
- package/src/generators/go-microservice/docs/principles/stack/go/testing.md +168 -0
- package/src/generators/go-microservice/files/.air.toml.template +38 -0
- package/src/generators/go-microservice/files/.env.template +4 -0
- package/src/generators/go-microservice/files/.golangci.yml.template +82 -0
- package/src/generators/go-microservice/files/Dockerfile.dev.template +12 -0
- package/src/generators/go-microservice/files/asyncapi-pubsub.yaml.template +33 -0
- package/src/generators/go-microservice/files/asyncapi-ws.yaml.template +34 -0
- package/src/generators/go-microservice/files/cmd/api/main.go.template +149 -0
- package/src/generators/go-microservice/files/cmd/api/main_test.go.template +99 -0
- package/src/generators/go-microservice/files/cmd/worker/cleanup/main.go.template +39 -0
- package/src/generators/go-microservice/files/db/schema.sql.template +24 -0
- package/src/generators/go-microservice/files/go.mod.template +39 -0
- package/src/generators/go-microservice/files/internal/config/config.go.template +52 -0
- package/src/generators/go-microservice/files/internal/config/otel.go.template +93 -0
- package/src/generators/go-microservice/files/internal/core/domain/errors.go.template +16 -0
- package/src/generators/go-microservice/files/internal/core/domain/model.go.template +28 -0
- package/src/generators/go-microservice/files/internal/core/domain/user.go.template +13 -0
- package/src/generators/go-microservice/files/internal/core/pagination.go.template +16 -0
- package/src/generators/go-microservice/files/internal/core/service/app_service.go.template +79 -0
- package/src/generators/go-microservice/files/internal/core/service/event_hub.go.template +9 -0
- package/src/generators/go-microservice/files/internal/core/service/message_queue.go.template +10 -0
- package/src/generators/go-microservice/files/internal/core/service/outbox_repository.go.template +31 -0
- package/src/generators/go-microservice/files/internal/core/service/repository.go.template +23 -0
- package/src/generators/go-microservice/files/internal/core/service/user_repository.go.template +15 -0
- package/src/generators/go-microservice/files/internal/core/service/user_service.go.template +43 -0
- package/src/generators/go-microservice/files/internal/entrypoints/api/app_handler.go.template +108 -0
- package/src/generators/go-microservice/files/internal/entrypoints/api/auth_middleware_test.go.template +52 -0
- package/src/generators/go-microservice/files/internal/entrypoints/api/clerk_webhook.go.template +202 -0
- package/src/generators/go-microservice/files/internal/entrypoints/api/clerk_webhook_test.go.template +82 -0
- package/src/generators/go-microservice/files/internal/entrypoints/api/health_handler.go.template +80 -0
- package/src/generators/go-microservice/files/internal/entrypoints/api/idempotency/middleware.go.template +87 -0
- package/src/generators/go-microservice/files/internal/entrypoints/api/idempotency/middleware_test.go.template +76 -0
- package/src/generators/go-microservice/files/internal/entrypoints/api/idempotency/repository.go.template +37 -0
- package/src/generators/go-microservice/files/internal/entrypoints/api/middleware_auth.go.template +40 -0
- package/src/generators/go-microservice/files/internal/entrypoints/api/middleware_loadshed.go.template +38 -0
- package/src/generators/go-microservice/files/internal/entrypoints/api/middleware_logging.go.template +40 -0
- package/src/generators/go-microservice/files/internal/entrypoints/api/middleware_ratelimit.go.template +48 -0
- package/src/generators/go-microservice/files/internal/entrypoints/api/middleware_test.go.template +81 -0
- package/src/generators/go-microservice/files/internal/entrypoints/api/router.go.template +105 -0
- package/src/generators/go-microservice/files/internal/entrypoints/api/types.go.template +70 -0
- package/src/generators/go-microservice/files/internal/entrypoints/api/websocket_handler.go.template +39 -0
- package/src/generators/go-microservice/files/internal/httpclient/http_client.go.template +87 -0
- package/src/generators/go-microservice/files/internal/kafka/kafka.go.template +34 -0
- package/src/generators/go-microservice/files/internal/postgres/postgres.go.template +195 -0
- package/src/generators/go-microservice/files/internal/postgres/postgres_test.go.template +156 -0
- package/src/generators/go-microservice/files/internal/postgres/user_repository.go.template +56 -0
- package/src/generators/go-microservice/files/internal/pubsub/gcp_pubsub.go.template +35 -0
- package/src/generators/go-microservice/files/internal/websocket/client.go.template +151 -0
- package/src/generators/go-microservice/files/internal/websocket/hub.go.template +261 -0
- package/src/generators/go-microservice/files/scripts/apply-schema.sh.template +21 -0
- package/src/generators/go-microservice/files/tools/tools.go.template +10 -0
- package/src/generators/go-microservice/generator.ts +240 -0
- package/src/generators/go-microservice/schema.json +63 -0
- package/src/generators/nextjs-app/docs/principles/stack/typescript/frontend.md +65 -0
- package/src/generators/nextjs-app/files/.dockerignore.template +7 -0
- package/src/generators/nextjs-app/files/.env.example.template +24 -0
- package/src/generators/nextjs-app/files/.gitignore.template +5 -0
- package/src/generators/nextjs-app/files/Dockerfile +53 -0
- package/src/generators/nextjs-app/files/app/(auth)/sign-in/__sign-in__/page.tsx.template +9 -0
- package/src/generators/nextjs-app/files/app/(auth)/sign-up/__sign-up__/page.tsx.template +9 -0
- package/src/generators/nextjs-app/files/app/api/config/route.ts.template +39 -0
- package/src/generators/nextjs-app/files/app/api/healthz/route.test.ts +15 -0
- package/src/generators/nextjs-app/files/app/api/healthz/route.ts +5 -0
- package/src/generators/nextjs-app/files/app/api/proxy/__path__/route.test.ts.template +55 -0
- package/src/generators/nextjs-app/files/app/api/proxy/__path__/route.ts.template +126 -0
- package/src/generators/nextjs-app/files/app/error.tsx +39 -0
- package/src/generators/nextjs-app/files/app/global-error.tsx +68 -0
- package/src/generators/nextjs-app/files/app/globals.css +105 -0
- package/src/generators/nextjs-app/files/app/layout.tsx +59 -0
- package/src/generators/nextjs-app/files/app/loading.tsx +13 -0
- package/src/generators/nextjs-app/files/app/not-found.tsx +30 -0
- package/src/generators/nextjs-app/files/app/page.tsx +20 -0
- package/src/generators/nextjs-app/files/components/providers/default.tsx +19 -0
- package/src/generators/nextjs-app/files/components/providers/production.tsx +32 -0
- package/src/generators/nextjs-app/files/components/providers/telemetry.tsx +76 -0
- package/src/generators/nextjs-app/files/components/render-smoke.test.tsx +29 -0
- package/src/generators/nextjs-app/files/components/theme-provider.tsx +11 -0
- package/src/generators/nextjs-app/files/components.json +21 -0
- package/src/generators/nextjs-app/files/eslint.config.mjs +120 -0
- package/src/generators/nextjs-app/files/hooks/use-toast.ts +7 -0
- package/src/generators/nextjs-app/files/instrumentation.ts +90 -0
- package/src/generators/nextjs-app/files/lib/api/fetcher.ts.template +130 -0
- package/src/generators/nextjs-app/files/lib/config.ts +21 -0
- package/src/generators/nextjs-app/files/lib/logger.ts +29 -0
- package/src/generators/nextjs-app/files/lib/schemas/index.ts +19 -0
- package/src/generators/nextjs-app/files/lib/utils.ts +6 -0
- package/src/generators/nextjs-app/files/next.config.mjs +9 -0
- package/src/generators/nextjs-app/files/package.json +70 -0
- package/src/generators/nextjs-app/files/postcss.config.mjs +8 -0
- package/src/generators/nextjs-app/files/proxy.test.ts.template +30 -0
- package/src/generators/nextjs-app/files/proxy.ts +31 -0
- package/src/generators/nextjs-app/files/public/.gitkeep +1 -0
- package/src/generators/nextjs-app/files/tsconfig.json +42 -0
- package/src/generators/nextjs-app/files/vitest.config.mts +15 -0
- package/src/generators/nextjs-app/files/vitest.setup.ts +7 -0
- package/src/generators/nextjs-app/generator.ts +307 -0
- package/src/generators/nextjs-app/schema.json +44 -0
- package/src/generators/python-microservice/docs/principles/stack/python/async.md +168 -0
- package/src/generators/python-microservice/docs/principles/stack/python/documentation.md +240 -0
- package/src/generators/python-microservice/docs/principles/stack/python/mcp.md +147 -0
- package/src/generators/python-microservice/docs/principles/stack/python/resilience.md +193 -0
- package/src/generators/python-microservice/docs/principles/stack/python/testing.md +322 -0
- package/src/generators/python-microservice/files/.env.example.template +30 -0
- package/src/generators/python-microservice/files/Dockerfile.template +36 -0
- package/src/generators/python-microservice/files/db/schema.sql.template +19 -0
- package/src/generators/python-microservice/files/pyproject.toml.template +76 -0
- package/src/generators/python-microservice/files/scripts/apply-schema.sh.template +25 -0
- package/src/generators/python-microservice/files/src/__packageName__/adapters/comfyui.py.template +87 -0
- package/src/generators/python-microservice/files/src/__packageName__/adapters/config.py.template +48 -0
- package/src/generators/python-microservice/files/src/__packageName__/adapters/database.py.template +21 -0
- package/src/generators/python-microservice/files/src/__packageName__/adapters/message_queue.py.template +29 -0
- package/src/generators/python-microservice/files/src/__packageName__/adapters/repository.py.template +130 -0
- package/src/generators/python-microservice/files/src/__packageName__/adapters/telemetry.py.template +68 -0
- package/src/generators/python-microservice/files/src/__packageName__/adapters/websocket_hub.py.template +36 -0
- package/src/generators/python-microservice/files/src/__packageName__/core/domain/entities.py.template +22 -0
- package/src/generators/python-microservice/files/src/__packageName__/core/domain/exceptions.py.template +43 -0
- package/src/generators/python-microservice/files/src/__packageName__/core/ports.py.template +42 -0
- package/src/generators/python-microservice/files/src/__packageName__/core/service/example_service.py.template +68 -0
- package/src/generators/python-microservice/files/src/__packageName__/entrypoints/api/dependencies.py.template +50 -0
- package/src/generators/python-microservice/files/src/__packageName__/entrypoints/api/middleware.py.template +131 -0
- package/src/generators/python-microservice/files/src/__packageName__/entrypoints/api/router.py.template +37 -0
- package/src/generators/python-microservice/files/src/__packageName__/entrypoints/api/websocket_handler.py.template +20 -0
- package/src/generators/python-microservice/files/src/__packageName__/entrypoints/worker/cleanup.py.template +35 -0
- package/src/generators/python-microservice/files/src/__packageName__/entrypoints/worker/worker.py.template +28 -0
- package/src/generators/python-microservice/files/src/__packageName__/main.py.template +108 -0
- package/src/generators/python-microservice/files/tests/test_main.py.template +74 -0
- package/src/generators/python-microservice/files/tests/test_middleware.py.template +109 -0
- package/src/generators/python-microservice/files/tests/test_worker.py.template +16 -0
- package/src/generators/python-microservice/generator.ts +286 -0
- package/src/generators/python-microservice/schema.json +86 -0
- package/src/generators/shared/brand-tokens.ts +301 -0
- package/src/generators/shared/capabilities.ts +349 -0
- package/src/generators/shared/provenance.ts +61 -0
- package/src/generators/shared/scaffold-helpers.ts +309 -0
- package/src/generators/system-test-runner/NATIVE-CHECK-CONTRACT.md +20 -0
- package/src/generators/system-test-runner/files/tests/bets/.gitkeep +0 -0
- package/src/generators/system-test-runner/files/tests/bets/_archive/.gitkeep +0 -0
- package/src/generators/system-test-runner/files/tests/conftest.py.template +503 -0
- package/src/generators/system-test-runner/files/tests/pyproject.toml.template +20 -0
- package/src/generators/system-test-runner/files/tests/system/pages/__init__.py.template +9 -0
- package/src/generators/system-test-runner/files/tests/system/pages/base_page.py.template +36 -0
- package/src/generators/system-test-runner/files/tests/system/test_a11y_smoke.py.template +132 -0
- package/src/generators/system-test-runner/files/tests/system/test_contract_conformance.py.template +140 -0
- package/src/generators/system-test-runner/files/tests/system/test_layout_geometry.py.template +109 -0
- package/src/generators/system-test-runner/files/tests/system/test_render_smoke.py.template +257 -0
- package/src/generators/system-test-runner/files/tests/system/test_system.py.template +158 -0
- package/src/generators/system-test-runner/files/tests/system/test_token_conformance.py.template +206 -0
- package/src/generators/system-test-runner/files/tests/system/test_visual_regression.py.template +104 -0
- package/src/generators/system-test-runner/generator.ts +196 -0
- package/src/generators/system-test-runner/schema.json +24 -0
- package/src/generators/workspace-dev-cli/cli-src/build.mjs +42 -0
- package/src/generators/workspace-dev-cli/cli-src/dist/dev-bundle.js +2168 -0
- package/src/generators/workspace-dev-cli/cli-src/src/commands/bet.ts +442 -0
- package/src/generators/workspace-dev-cli/cli-src/src/commands/completion.ts +87 -0
- package/src/generators/workspace-dev-cli/cli-src/src/commands/doctor.ts +139 -0
- package/src/generators/workspace-dev-cli/cli-src/src/commands/lifecycle.ts +548 -0
- package/src/generators/workspace-dev-cli/cli-src/src/commands/quality.ts +127 -0
- package/src/generators/workspace-dev-cli/cli-src/src/commands/surface.ts +214 -0
- package/src/generators/workspace-dev-cli/cli-src/src/index.ts +127 -0
- package/src/generators/workspace-dev-cli/cli-src/src/registry.ts +194 -0
- package/src/generators/workspace-dev-cli/cli-src/src/theme/color.ts +130 -0
- package/src/generators/workspace-dev-cli/cli-src/src/theme/render.ts +158 -0
- package/src/generators/workspace-dev-cli/cli-src/src/theme/tokens.ts +122 -0
- package/src/generators/workspace-dev-cli/cli-src/src/util/context.ts +43 -0
- package/src/generators/workspace-dev-cli/cli-src/src/util/extensions.ts +99 -0
- package/src/generators/workspace-dev-cli/cli-src/src/util/paths.ts +46 -0
- package/src/generators/workspace-dev-cli/cli-src/src/util/proc.ts +106 -0
- package/src/generators/workspace-dev-cli/cli-src/src/util/prompt.ts +108 -0
- package/src/generators/workspace-dev-cli/cli-src/src/util/runners.ts +70 -0
- package/src/generators/workspace-dev-cli/cli-src/src/util/services.ts +221 -0
- package/src/generators/workspace-dev-cli/cli-src/src/util/version.ts +21 -0
- package/src/generators/workspace-dev-cli/cli-src/tsconfig.json +16 -0
- package/src/generators/workspace-dev-cli/files/.agents/skills/workspace-cli/SKILL.md.template +74 -0
- package/src/generators/workspace-dev-cli/files/dev.template +16 -0
- package/src/generators/workspace-dev-cli/files/docker-compose.yml.template +20 -0
- package/src/generators/workspace-dev-cli/files/scripts/cli/templates/milestone-test.pytmpl.template +46 -0
- package/src/generators/workspace-dev-cli/files/scripts/cli/templates/slice-test.pytmpl.template +38 -0
- package/src/generators/workspace-dev-cli/generator.ts +136 -0
- package/src/generators/workspace-dev-cli/schema.json +22 -0
- package/src/hidden-skills/code-intelligence.md +135 -0
- package/src/hidden-skills/groundwork-architect/SKILL.md +114 -0
- package/src/hidden-skills/groundwork-architect/references/agentic-systems.md +44 -0
- package/src/hidden-skills/groundwork-architect/references/ai-native-architecture.md +37 -0
- package/src/hidden-skills/groundwork-architect/references/api-and-contracts.md +45 -0
- package/src/hidden-skills/groundwork-architect/references/core-and-boundaries.md +45 -0
- package/src/hidden-skills/groundwork-architect/references/data-architecture.md +33 -0
- package/src/hidden-skills/groundwork-architect/references/decision-records.md +34 -0
- package/src/hidden-skills/groundwork-architect/references/durable-execution.md +45 -0
- package/src/hidden-skills/groundwork-architect/references/evolutionary-architecture.md +37 -0
- package/src/hidden-skills/groundwork-architect/references/identity-and-access.md +41 -0
- package/src/hidden-skills/groundwork-architect/references/integration-patterns.md +39 -0
- package/src/hidden-skills/groundwork-architect/references/observability.md +36 -0
- package/src/hidden-skills/groundwork-architect/references/performance-and-scale.md +41 -0
- package/src/hidden-skills/groundwork-architect/references/platform-and-delivery.md +47 -0
- package/src/hidden-skills/groundwork-architect/references/realtime-and-async.md +28 -0
- package/src/hidden-skills/groundwork-architect/references/reliability.md +31 -0
- package/src/hidden-skills/groundwork-architect/references/security-and-trust.md +47 -0
- package/src/hidden-skills/groundwork-architect/references/surface-architecture.md +40 -0
- package/src/hidden-skills/groundwork-architect/sync-anchor.md +34 -0
- package/src/hidden-skills/groundwork-architecture/architecture-template.md +50 -0
- package/src/hidden-skills/groundwork-architecture/instructions.md +139 -0
- package/src/hidden-skills/groundwork-architecture/phases/01-context-ingestion.md +18 -0
- package/src/hidden-skills/groundwork-architecture/phases/02-technical-constraints.md +27 -0
- package/src/hidden-skills/groundwork-architecture/phases/03-service-design.md +19 -0
- package/src/hidden-skills/groundwork-architecture/phases/04-data-flow-communication.md +23 -0
- package/src/hidden-skills/groundwork-architecture/phases/05-component-boundaries-contracts.md +17 -0
- package/src/hidden-skills/groundwork-architecture/phases/06-draft-review-present.md +38 -0
- package/src/hidden-skills/groundwork-architecture/phases/07-commit.md +33 -0
- package/src/hidden-skills/groundwork-architecture/templates/architecture-cache.md +43 -0
- package/src/hidden-skills/groundwork-architecture-extract/instructions.md +163 -0
- package/src/hidden-skills/groundwork-architecture-extract/templates/architecture-extract-cache.md +21 -0
- package/src/hidden-skills/groundwork-bet/briefs/acceptance-auditor.md +68 -0
- package/src/hidden-skills/groundwork-bet/briefs/blind-reviewer.md +56 -0
- package/src/hidden-skills/groundwork-bet/briefs/coverage-auditor.md +95 -0
- package/src/hidden-skills/groundwork-bet/briefs/edge-case-tracer.md +64 -0
- package/src/hidden-skills/groundwork-bet/briefs/experience-auditor.md +83 -0
- package/src/hidden-skills/groundwork-bet/briefs/slice-worker.md +257 -0
- package/src/hidden-skills/groundwork-bet/instructions.md +88 -0
- package/src/hidden-skills/groundwork-bet/templates/bet-progress-test.md +115 -0
- package/src/hidden-skills/groundwork-bet/templates/change-proposal.md +38 -0
- package/src/hidden-skills/groundwork-bet/templates/decomposition/meta.json +4 -0
- package/src/hidden-skills/groundwork-bet/templates/decomposition/milestone-index.md +31 -0
- package/src/hidden-skills/groundwork-bet/templates/decomposition/slice.md +31 -0
- package/src/hidden-skills/groundwork-bet/templates/pitch.md +45 -0
- package/src/hidden-skills/groundwork-bet/templates/technical-design/01-ui-design.md +51 -0
- package/src/hidden-skills/groundwork-bet/templates/technical-design/02-data-flows.md +36 -0
- package/src/hidden-skills/groundwork-bet/templates/technical-design/03-api-design.md +90 -0
- package/src/hidden-skills/groundwork-bet/templates/technical-design/04-data-design.md +29 -0
- package/src/hidden-skills/groundwork-bet/workflows/01-discovery.md +200 -0
- package/src/hidden-skills/groundwork-bet/workflows/02-design.md +178 -0
- package/src/hidden-skills/groundwork-bet/workflows/03-decomposition.md +242 -0
- package/src/hidden-skills/groundwork-bet/workflows/04-delivery.md +226 -0
- package/src/hidden-skills/groundwork-bet/workflows/05-validation.md +210 -0
- package/src/hidden-skills/groundwork-design-system/instructions.md +125 -0
- package/src/hidden-skills/groundwork-design-system/templates/brand-tokens.md +182 -0
- package/src/hidden-skills/groundwork-design-system/templates/design-system-cache.md +64 -0
- package/src/hidden-skills/groundwork-design-system/tracks/_foundation.md +136 -0
- package/src/hidden-skills/groundwork-design-system/tracks/agentic-protocol.md +269 -0
- package/src/hidden-skills/groundwork-design-system/tracks/cli.md +355 -0
- package/src/hidden-skills/groundwork-design-system/tracks/graphical-ui.md +330 -0
- package/src/hidden-skills/groundwork-design-system-extract/instructions.md +124 -0
- package/src/hidden-skills/groundwork-design-system-extract/templates/design-system-extract-cache.md +19 -0
- package/src/hidden-skills/groundwork-designer/SKILL.md +108 -0
- package/src/hidden-skills/groundwork-designer/references/accessibility.md +33 -0
- package/src/hidden-skills/groundwork-designer/references/ai-native-design.md +37 -0
- package/src/hidden-skills/groundwork-designer/references/design-review.md +29 -0
- package/src/hidden-skills/groundwork-designer/references/design-systems-and-tokens.md +33 -0
- package/src/hidden-skills/groundwork-designer/references/interaction-and-motion.md +37 -0
- package/src/hidden-skills/groundwork-designer/references/layout-and-space.md +33 -0
- package/src/hidden-skills/groundwork-designer/references/usability-and-ux.md +33 -0
- package/src/hidden-skills/groundwork-designer/references/visual-craft.md +49 -0
- package/src/hidden-skills/groundwork-designer/sync-anchor.md +20 -0
- package/src/hidden-skills/groundwork-doc-sync/instructions.md +100 -0
- package/src/hidden-skills/groundwork-elicit/instructions.md +66 -0
- package/src/hidden-skills/groundwork-elicit/methods.md +65 -0
- package/src/hidden-skills/groundwork-infra-adopt/instructions.md +168 -0
- package/src/hidden-skills/groundwork-infra-adopt/templates/infra-adopt-cache.md +21 -0
- package/src/hidden-skills/groundwork-mvp/instructions.md +223 -0
- package/src/hidden-skills/groundwork-mvp/templates/mvp-cache.md +9 -0
- package/src/hidden-skills/groundwork-patch/instructions.md +40 -0
- package/src/hidden-skills/groundwork-persona/instructions.md +65 -0
- package/src/hidden-skills/groundwork-product/SKILL.md +102 -0
- package/src/hidden-skills/groundwork-product/references/ai-native-product.md +45 -0
- package/src/hidden-skills/groundwork-product/references/discovery-and-opportunity.md +38 -0
- package/src/hidden-skills/groundwork-product/references/product-risks.md +52 -0
- package/src/hidden-skills/groundwork-product/references/requirements-and-specs.md +39 -0
- package/src/hidden-skills/groundwork-product/references/scope-and-sequencing.md +35 -0
- package/src/hidden-skills/groundwork-product/references/shaping-and-appetite.md +48 -0
- package/src/hidden-skills/groundwork-product/references/success-metrics-and-signals.md +37 -0
- package/src/hidden-skills/groundwork-product/sync-anchor.md +19 -0
- package/src/hidden-skills/groundwork-product-brief/instructions.md +231 -0
- package/src/hidden-skills/groundwork-product-brief-extract/instructions.md +139 -0
- package/src/hidden-skills/groundwork-product-brief-extract/templates/product-brief-extract-cache.md +17 -0
- package/src/hidden-skills/groundwork-review/checklists/architecture.md +93 -0
- package/src/hidden-skills/groundwork-review/checklists/bet-pitch.md +94 -0
- package/src/hidden-skills/groundwork-review/checklists/decomposition.md +135 -0
- package/src/hidden-skills/groundwork-review/checklists/design-system.md +85 -0
- package/src/hidden-skills/groundwork-review/checklists/domain-entity.md +66 -0
- package/src/hidden-skills/groundwork-review/checklists/implementation-readiness.md +47 -0
- package/src/hidden-skills/groundwork-review/checklists/infrastructure.md +68 -0
- package/src/hidden-skills/groundwork-review/checklists/maturity.md +71 -0
- package/src/hidden-skills/groundwork-review/checklists/product-brief.md +69 -0
- package/src/hidden-skills/groundwork-review/checklists/technical-design.md +112 -0
- package/src/hidden-skills/groundwork-review/instructions.md +181 -0
- package/src/hidden-skills/groundwork-scaffold/instructions.md +254 -0
- package/src/hidden-skills/groundwork-scaffold/phases/01-ingestion-service-mapping.md +87 -0
- package/src/hidden-skills/groundwork-scaffold/phases/02-scaffolding-execution.md +15 -0
- package/src/hidden-skills/groundwork-scaffold/phases/03-service-documentation-api-stubs.md +100 -0
- package/src/hidden-skills/groundwork-scaffold/phases/04-infrastructure-verification.md +17 -0
- package/src/hidden-skills/groundwork-scaffold/phases/05-draft-review.md +19 -0
- package/src/hidden-skills/groundwork-scaffold/phases/06-commit.md +19 -0
- package/src/hidden-skills/groundwork-scaffold/templates/scaffold-cache.md +23 -0
- package/src/hidden-skills/groundwork-scan/instructions.md +164 -0
- package/src/hidden-skills/groundwork-scan/references/digest-schema.md +66 -0
- package/src/hidden-skills/groundwork-scan/references/exclusions.md +44 -0
- package/src/hidden-skills/groundwork-scan/templates/architecture-findings.md +42 -0
- package/src/hidden-skills/groundwork-scan/templates/design-findings.md +23 -0
- package/src/hidden-skills/groundwork-scan/templates/overview.md +26 -0
- package/src/hidden-skills/groundwork-scan/templates/product-findings.md +23 -0
- package/src/hidden-skills/groundwork-scan/templates/scan-state.json +19 -0
- package/src/hidden-skills/groundwork-stack-forge/instructions.md +150 -0
- package/src/hidden-skills/groundwork-stack-forge/references/authoring-engineer-skills.md +107 -0
- package/src/hidden-skills/groundwork-surface-activation/instructions.md +138 -0
- package/src/hidden-skills/groundwork-update/briefs/reconcile-worker.md +196 -0
- package/src/hidden-skills/groundwork-update/instructions.md +200 -0
- package/src/hidden-skills/groundwork-writer/SKILL.md +278 -0
- package/src/hidden-skills/maturity-model.md +125 -0
- package/src/hidden-skills/operating-contract.md +400 -0
- package/src/hidden-skills/repo-map-schema.md +90 -0
- package/src/hidden-skills/templates/adr.md +57 -0
- package/src/hidden-skills/templates/capability-ports.md +71 -0
- package/src/hidden-skills/templates/discovery-notes.md +33 -0
- package/src/hidden-skills/templates/domain-entity.md +80 -0
- package/src/hidden-skills/templates/gap-ledger.md +21 -0
- package/src/hidden-skills/templates/handoff.md +37 -0
- package/src/hidden-skills/templates/maturity.md +39 -0
- package/src/hidden-skills/templates/surfaces.md +207 -0
- package/src/skills/groundwork-check/SKILL.md +56 -0
- package/src/skills/groundwork-check/instructions.md +70 -0
- package/src/skills/groundwork-orchestrator/SKILL.md +176 -0
- package/src/skills/groundwork-orchestrator/workflow-index.md +50 -0
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: decomposition-checklist
|
|
3
|
+
description: >
|
|
4
|
+
Type-specific failure modes for reviewing a bet's decomposition — the
|
|
5
|
+
milestone map, slice specs, and prose proofs the bet executes against.
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Decomposition Checklist
|
|
9
|
+
|
|
10
|
+
This checklist checks a bet's decomposition tree under `docs/bets/<slug>/decomposition/`. It
|
|
11
|
+
answers one question: **does every milestone name consumer-visible value — proven once at the
|
|
12
|
+
contract, then per surface — every slice cut vertically, and every capability trace to the
|
|
13
|
+
technical design with a falsifiable prose proof?**
|
|
14
|
+
|
|
15
|
+
Each item names a violation. Match it against the tree's milestone `index.md` and slice files and
|
|
16
|
+
the design under `docs/bets/<slug>/technical-design/`. Bet documents carry no Downstream Context
|
|
17
|
+
file and no summary section — do not flag the absence of either.
|
|
18
|
+
|
|
19
|
+
## Milestone Shape
|
|
20
|
+
|
|
21
|
+
- [ ] 🔴 **Horizontal milestone**: a milestone names a layer of the stack ("Backend", "Build all
|
|
22
|
+
the schemas", "Integration") rather than a demonstrable state in the product's interface — it
|
|
23
|
+
is invisible to the user and proves nothing end-to-end.
|
|
24
|
+
- [ ] 🔴 **Goal not traceable to the design**: a milestone's goal corresponds to nothing in
|
|
25
|
+
`technical-design/` — a surface milestone's user-visible goal traces to no UI Design
|
|
26
|
+
subsection, or a capability milestone's contract state traces to no API Design interface or
|
|
27
|
+
Schema & Data Design store. The milestone proves something the design never committed to.
|
|
28
|
+
- [ ] 🔴 **No acceptance criteria**: a milestone carries no concrete, observable acceptance
|
|
29
|
+
criteria a reviewer could check against the running product.
|
|
30
|
+
- [ ] 🟡 **No sequencing rationale**: a milestone does not state why it sits where it does — what
|
|
31
|
+
the first milestone proves architecturally, why the next can only follow it.
|
|
32
|
+
- [ ] 🟡 **Milestone count outside 2–5**: one milestone suggests the bet is not scoped in
|
|
33
|
+
user-visible increments; six or more suggests it is a roadmap, not a bet. Exception: a
|
|
34
|
+
headless delivery legitimately carries a single capability milestone with every surface
|
|
35
|
+
milestone deferred — when the pitch's surface no-gos say so, do not flag it.
|
|
36
|
+
|
|
37
|
+
## Milestone and Slice Typing
|
|
38
|
+
|
|
39
|
+
These items apply only when the project carries a surface registry (`docs/surfaces.md`). A
|
|
40
|
+
project with no registry decomposes against its single implicit surface — untyped milestones,
|
|
41
|
+
no slice `Surface` field — and none of these items fire.
|
|
42
|
+
|
|
43
|
+
- [ ] 🔴 **Milestone untyped or mistyped**: a milestone carries no `Type:`, or its type
|
|
44
|
+
contradicts its content — a milestone whose demonstrable state is a contract exercised
|
|
45
|
+
headless is a capability milestone; one asserting in a surface's medium is a surface
|
|
46
|
+
milestone, and the surface slug it names must exist in the registry.
|
|
47
|
+
- [ ] 🔴 **Capability proof not first**: the bet introduces new capability but does not open
|
|
48
|
+
with the capability milestone proving it at the contract — surface milestones are sequenced
|
|
49
|
+
before the contract proof they depend on.
|
|
50
|
+
- [ ] 🔴 **Surface milestone asserting business outcomes**: a surface milestone's goal or
|
|
51
|
+
acceptance criteria assert business rules rather than wiring, rendering, and interaction —
|
|
52
|
+
the milestone is re-litigating what the capability milestone proves at the contract.
|
|
53
|
+
- [ ] 🟡 **Consumer unnamed**: a capability milestone does not record who its consumer is — the
|
|
54
|
+
in-scope surfaces that build on it, or the latent agentic surface for a headless delivery.
|
|
55
|
+
- [ ] 🔴 **Slice surface missing or invalid**: a slice file carries no `Surface` field, or its
|
|
56
|
+
value is neither `core` nor a registry slug — delivery cannot sequence core-before-surface, and
|
|
57
|
+
the slice's test discipline is undeclared.
|
|
58
|
+
|
|
59
|
+
## Slice Verticality
|
|
60
|
+
|
|
61
|
+
- [ ] 🔴 **Horizontal slice**: a slice is a horizontal pass ("all schemas", "all APIs", "all UI")
|
|
62
|
+
rather than a vertical column delivering a testable capability end-to-end.
|
|
63
|
+
- [ ] 🔴 **Slice that needs the future**: a slice cannot be deployed and verified without a later
|
|
64
|
+
slice existing — it fails the vertical-slice test and must be merged up or reframed.
|
|
65
|
+
- [ ] 🟡 **Orphan slice or empty milestone**: a slice belongs to no milestone, or a milestone
|
|
66
|
+
decomposes into no slices.
|
|
67
|
+
- [ ] 🟡 **Anatomy incomplete**: a slice file is missing one of its parts — Owner service,
|
|
68
|
+
Surface (`core` or a registry slug; registry projects only), Complexity (S/M/L),
|
|
69
|
+
Prerequisite, Scope (one-paragraph intro plus Required Capabilities), Design, Proof of work.
|
|
70
|
+
- [ ] 🟡 **Vague prerequisite**: a prerequisite does not name the exact prior merge gate (e.g.
|
|
71
|
+
"Slice 1.2 merged") — "after the backend work" sequences nothing.
|
|
72
|
+
|
|
73
|
+
## Capabilities and Proofs
|
|
74
|
+
|
|
75
|
+
- [ ] 🔴 **Unfalsifiable capability**: a Required Capability cannot fail — "The endpoint exists"
|
|
76
|
+
is not falsifiable; "POST `/api/sessions` returns 201 with a `session_id` field when given a
|
|
77
|
+
valid request body matching the API design" is.
|
|
78
|
+
- [ ] 🔴 **Capability without a design anchor**: a Required Capability traces to no interface in
|
|
79
|
+
`technical-design/03-api-design.md` or store in `04-data-design.md` — the slice commits to
|
|
80
|
+
behaviour the design never specified.
|
|
81
|
+
- [ ] 🔴 **Missing test file link**: a milestone `index.md` or slice file names no `Test file:`
|
|
82
|
+
path in its Proof of work at `tests/bets/<bet-slug>/test_milestone_<N>_<milestone-slug>.<ext>`
|
|
83
|
+
or `tests/bets/<bet-slug>/test_slice_<N>_<service>_<slice-slug>.<ext>`. The path is named at
|
|
84
|
+
decomposition; Delivery materializes the red stub from it.
|
|
85
|
+
- [ ] 🟡 **Proof without an observable condition**: a Proof of work's `How we prove it` states no
|
|
86
|
+
specific, falsifiable observation — "verify it works" gives the reviewer nothing to check
|
|
87
|
+
against the milestone's acceptance criteria.
|
|
88
|
+
- [ ] 🔴 **Decomposition tree incomplete**: the tree is missing a piece — `meta.json`, a milestone
|
|
89
|
+
`index.md`, or a slice file the milestone links — so the bet has no complete plan to execute
|
|
90
|
+
against.
|
|
91
|
+
|
|
92
|
+
## Proof Semantics
|
|
93
|
+
|
|
94
|
+
Tests do not exist at decomposition — they are materialized red at Delivery start (Step 0.5)
|
|
95
|
+
from this approved prose. So these checks read the **Proof of work** prose, not test code: a
|
|
96
|
+
proof that describes the wrong thing sends Delivery to the wrong destination with a green light.
|
|
97
|
+
The purely code-level failures are enforced at Delivery — Step 0.5 confirms each materialized
|
|
98
|
+
stub is red for the feature's absence, and Step 4's honest-green reconciliation catches
|
|
99
|
+
white-box assertions and gamed implementations — so here the review checks the prose.
|
|
100
|
+
|
|
101
|
+
- [ ] 🔴 **Proof does not match the capability**: a Proof of work proves something other than the
|
|
102
|
+
Required Capability it rests on — the capability says 202-and-idempotent, the proof shows
|
|
103
|
+
200-and-exists. Delivery will satisfy the proof and miss the capability.
|
|
104
|
+
- [ ] 🔴 **Shape not in the prose design**: a proof references a request body, response field, or
|
|
105
|
+
table shape that `technical-design/03-api-design.md` / `04-data-design.md` does not define — the
|
|
106
|
+
proof rests on a contract that does not exist.
|
|
107
|
+
- [ ] 🔴 **Tautological proof**: a Proof of work that cannot fail once any implementation exists —
|
|
108
|
+
observing that a response is received without observing its content, or describing the failure
|
|
109
|
+
it should surface as the success it checks for.
|
|
110
|
+
- [ ] 🔴 **Core logic re-proven at a surface**: a surface milestone's or surface slice's Proof of
|
|
111
|
+
work re-asserts a business rule the capability milestone already proves at the contract —
|
|
112
|
+
prove-once is the principle that keeps surface count from multiplying the test pyramid; surface
|
|
113
|
+
proofs cover wiring, rendering, and interaction only. (Registry projects only; an untyped
|
|
114
|
+
decomposition pairs interface and API layers per milestone as before.)
|
|
115
|
+
- [ ] 🟡 **Headline error case missing**: a milestone whose demonstrable outcome depends on an
|
|
116
|
+
error case (e.g. the dependency being unavailable) proves only the happy path. Exhaustive
|
|
117
|
+
error-matrix coverage is not expected here — it lands in Delivery's permanent tests — but an
|
|
118
|
+
error the milestone's proof rests on belongs in the headline Proof of work.
|
|
119
|
+
- [ ] 🟡 **Proof of work missing or stale**: a milestone `index.md` or slice file in
|
|
120
|
+
`decomposition/` lacks its Proof of work, or its proof no longer matches the design or the
|
|
121
|
+
Required Capability it rests on — the user would approve a definition of done that drifted from
|
|
122
|
+
what the bet builds.
|
|
123
|
+
|
|
124
|
+
## Chain Integrity
|
|
125
|
+
|
|
126
|
+
The Document Chain Integrity table in the decomposition workflow defines the full chain; these
|
|
127
|
+
are its decomposition-side checks.
|
|
128
|
+
|
|
129
|
+
- [ ] 🔴 **Design not covered**: a contract, flow, or interface element in `technical-design/`
|
|
130
|
+
maps to no milestone or slice and is not explicitly cut — the bet will end with designed
|
|
131
|
+
behaviour nobody built.
|
|
132
|
+
- [ ] 🔴 **Scope beyond the design**: a milestone or slice delivers behaviour the
|
|
133
|
+
`technical-design/` never specified — decomposition has silently grown the bet.
|
|
134
|
+
- [ ] 🟡 **Proof outside the acceptance criteria**: a slice's Proof of work proves behaviour that
|
|
135
|
+
traces to no milestone acceptance criterion — proof of work the milestone never asked for.
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: design-system-checklist
|
|
3
|
+
description: >
|
|
4
|
+
Type-specific failure modes for reviewing a draft design system — the
|
|
5
|
+
implementation-ready specification that eliminates downstream design decisions.
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Design System Checklist
|
|
9
|
+
|
|
10
|
+
This checklist checks a draft `docs/design-system.md`. It answers one question: **could a
|
|
11
|
+
developer or generative UI tool implement this specification without making a single design
|
|
12
|
+
decision of their own?**
|
|
13
|
+
|
|
14
|
+
Each item names a violation. Match it against the document text; answer yes/no. The items apply
|
|
15
|
+
across all interface tracks (graphical UI, CLI, agentic protocol) — read "value" as the track's
|
|
16
|
+
unit of commitment: a CSS token, a terminal colour role, a protocol field.
|
|
17
|
+
|
|
18
|
+
A design system legitimately carries one titled section per interface type in use (`# Graphical
|
|
19
|
+
UI`, `# CLI`, `# Agentic Protocol`), plus a shared foundation when several types are active.
|
|
20
|
+
Multiple type sections — and the multi-block brand-tokens file they project to — are the
|
|
21
|
+
contract for multi-type products, never duplication or contradiction findings in themselves.
|
|
22
|
+
|
|
23
|
+
## Document Hygiene
|
|
24
|
+
|
|
25
|
+
- [ ] 🟡 **Leftover downstream summary**: the published doc still carries a `## Summary for
|
|
26
|
+
Downstream` section. The cross-phase contract now lives in `.groundwork/context/design-system.md`,
|
|
27
|
+
not in the published doc; an old-template summary section is residue and should be removed.
|
|
28
|
+
|
|
29
|
+
## Translation Depth
|
|
30
|
+
|
|
31
|
+
- [ ] 🔴 **Direction instead of value**: a section states intent ("warm colours", "generous
|
|
32
|
+
whitespace", "snappy feedback") without committing to implementable values. The user's words
|
|
33
|
+
echoed back are not a specification.
|
|
34
|
+
- [ ] 🔴 **Decision left to the implementer**: any instruction of the form "choose an appropriate
|
|
35
|
+
X", "use a suitable Y", or a value range with no committed default — the implementer is being
|
|
36
|
+
asked to make a design call this document exists to eliminate.
|
|
37
|
+
- [ ] 🟡 **Single-property definition**: a design concept defined by one property (just a
|
|
38
|
+
background colour, just a radius) where the standard requires the full set — surface, border,
|
|
39
|
+
depth, state, and variant coverage.
|
|
40
|
+
- [ ] 🟡 **Hedged specification**: "should", "could", "consider", "typically" attached to a value
|
|
41
|
+
— a spec either commits or stays silent.
|
|
42
|
+
|
|
43
|
+
## Coverage and Coherence
|
|
44
|
+
|
|
45
|
+
- [ ] 🔴 **Promised variant missing**: the document commits to a mode in one section (a second
|
|
46
|
+
theme, a no-colour fallback, a responsive breakpoint, a degraded state) and another section
|
|
47
|
+
defines values for only one mode.
|
|
48
|
+
- [ ] 🔴 **Undefined token referenced**: a token, class, or named value is used in one section
|
|
49
|
+
but defined nowhere in the document.
|
|
50
|
+
- [ ] 🔴 **Incomplete interaction states**: an interactive element defines some states but not
|
|
51
|
+
the full set its own constraints require — e.g. hover specified but focus-visible or disabled
|
|
52
|
+
absent.
|
|
53
|
+
- [ ] 🟡 **Target-structure gap**: a section the track's target structure requires (constraints,
|
|
54
|
+
shell, error choreography, empty states, or the track equivalent) is absent with no stated
|
|
55
|
+
reason.
|
|
56
|
+
- [ ] 🟡 **Token contradicts token**: two sections within the same interface-type section (or
|
|
57
|
+
the shared foundation) commit to different values for the same concept — a spacing step, a
|
|
58
|
+
duration, a colour role — leaving the implementer to pick a winner. Different types
|
|
59
|
+
legitimately express the same brand decision differently.
|
|
60
|
+
|
|
61
|
+
## Constraints
|
|
62
|
+
|
|
63
|
+
- [ ] 🔴 **Constraints section without numbers**: performance budgets, accessibility baselines,
|
|
64
|
+
or platform targets are named but carry no measurable value ("the app must be fast",
|
|
65
|
+
"accessible to all users").
|
|
66
|
+
- [ ] 🔴 **Accessibility floor unverifiable**: an accessibility commitment with no testable
|
|
67
|
+
criterion — no contrast ratio, no keyboard path, no equivalent for the track's medium.
|
|
68
|
+
- [ ] 🟡 **Rationale-free opinionated default**: a non-obvious technical default (colour space,
|
|
69
|
+
grid base, easing model) asserted with no one-line reasoning — the next person to touch it
|
|
70
|
+
will relitigate or silently abandon it.
|
|
71
|
+
|
|
72
|
+
## Upstream Contract
|
|
73
|
+
|
|
74
|
+
- [ ] 🔴 **Brief commitment contradicted**: a value or pattern in this document conflicts with a
|
|
75
|
+
decision or hard rule in `docs/product-brief.md` — e.g. a brief that
|
|
76
|
+
commits to a terminal medium answered with screen-design sections.
|
|
77
|
+
- [ ] 🔴 **Type section unbacked or missing**: when `docs/product-brief.md` carries a surface set,
|
|
78
|
+
the document's titled type sections disagree with it — a type section with no MVP-horizon
|
|
79
|
+
surface of that type behind it, or an MVP-horizon interface type with no section (and no
|
|
80
|
+
stated deferral).
|
|
81
|
+
- [ ] 🔴 **User type unserved**: a user type the product brief commits to has no design answer —
|
|
82
|
+
no journey, shell state, or interaction pattern accounts for them.
|
|
83
|
+
- [ ] 🟡 **Silently introduced product decision**: the document commits to a product-level
|
|
84
|
+
behaviour (a capability, a flow, an exclusion) that the brief neither states nor implies —
|
|
85
|
+
design has quietly extended the product.
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: domain-entity-checklist
|
|
3
|
+
description: >
|
|
4
|
+
Type-specific failure modes for reviewing a domain entity doc — checked
|
|
5
|
+
against the current architecture doc and the accepted (non-superseded) ADRs.
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Domain Entity Checklist
|
|
9
|
+
|
|
10
|
+
This checklist checks a draft `docs/architecture/domain/<entity>.md`. It answers one question: **does this
|
|
11
|
+
entity describe the system currently being built — agreeing with `docs/architecture/index.md`
|
|
12
|
+
and the accepted ADRs — and is every state, event, and invariant
|
|
13
|
+
mechanically enforceable?**
|
|
14
|
+
|
|
15
|
+
Each item names a violation. Match it against the document text, `docs/architecture/index.md`, and
|
|
16
|
+
the ADRs under `docs/architecture/decisions/` (skip any ADR whose `status` is `superseded`). Domain entity
|
|
17
|
+
docs carry no Downstream Context file and no summary section — do not flag the absence of either.
|
|
18
|
+
|
|
19
|
+
## Identity and Ownership
|
|
20
|
+
|
|
21
|
+
- [ ] 🔴 **Owner from a superseded design**: the `Owner:` line names a service, vendor, or
|
|
22
|
+
mechanism an accepted ADR moved away from — e.g. `Owner: web (via Supabase Auth)` after an ADR
|
|
23
|
+
moved auth to another provider. The doc describes a system no longer being built.
|
|
24
|
+
- [ ] 🔴 **Owner not in the architecture**: the `Owner:` service does not exist in the current
|
|
25
|
+
architecture's service topology.
|
|
26
|
+
- [ ] 🟡 **No invariant to enforce**: the "What it is" paragraph describes the entity without
|
|
27
|
+
stating the invariant the entity exists to enforce.
|
|
28
|
+
|
|
29
|
+
## Lifecycle Mechanics
|
|
30
|
+
|
|
31
|
+
- [ ] 🔴 **Undetectable trigger**: a lifecycle state's transition trigger is backed by no field
|
|
32
|
+
in the Fields table and no emitted event — a state that cannot be mechanically detected cannot
|
|
33
|
+
be enforced and is invalid.
|
|
34
|
+
- [ ] 🔴 **Time-based state without its field**: a state reached by the passage of time or
|
|
35
|
+
inactivity ("dormant", "expired") with no timestamp field (e.g. `last_active_at`,
|
|
36
|
+
`expires_at`) that makes it detectable.
|
|
37
|
+
- [ ] 🟡 **Phantom field**: the Lifecycle or Invariants section references a field that does not
|
|
38
|
+
appear in the Fields table.
|
|
39
|
+
- [ ] 🟡 **Stateless entity with a state table**: the entity is described as immutable or having
|
|
40
|
+
no meaningful state machine, yet a lifecycle table is present anyway — the template requires
|
|
41
|
+
saying so explicitly and removing the table.
|
|
42
|
+
|
|
43
|
+
## Domain Events
|
|
44
|
+
|
|
45
|
+
- [ ] 🔴 **Event implies an unprovisioned mechanism**: a domain event is listed as published when
|
|
46
|
+
the architecture provisions no message broker or event bus — it implies a publish channel that
|
|
47
|
+
does not exist. Without a broker, events are in-process domain concepts only, and the doc must
|
|
48
|
+
not suggest otherwise.
|
|
49
|
+
- [ ] 🟡 **Event naming drift**: an event does not follow the `<entity>.<verb>` naming form, or
|
|
50
|
+
names a different entity than the one this doc defines.
|
|
51
|
+
- [ ] 🟡 **Event without a lifecycle anchor**: an event's trigger corresponds to no state
|
|
52
|
+
transition or field change defined elsewhere in the doc.
|
|
53
|
+
|
|
54
|
+
## Invariants vs the ADRs
|
|
55
|
+
|
|
56
|
+
- [ ] 🔴 **Overstated guarantee**: an invariant asserts a guarantee an accepted ADR explicitly
|
|
57
|
+
surrendered or weakened — claiming a pre-screen where the ADR records a monitor, immediate
|
|
58
|
+
consistency where the ADR accepted eventual. The invariant must state the weaker guarantee the
|
|
59
|
+
system actually enforces.
|
|
60
|
+
- [ ] 🔴 **Invariant against a superseded mechanism**: an invariant depends on a vendor,
|
|
61
|
+
persistence model, or data-isolation strategy that an accepted ADR replaced.
|
|
62
|
+
- [ ] 🟡 **Untestable invariant**: an invariant phrased so that no test or boundary check could
|
|
63
|
+
detect its violation ("bookings are always handled correctly").
|
|
64
|
+
- [ ] 🟡 **Invariant duplicating the lifecycle**: an invariant that restates a transition rule
|
|
65
|
+
already in the Lifecycle table rather than constraining validity — noise that will drift from
|
|
66
|
+
its twin.
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: implementation-readiness-checklist
|
|
3
|
+
description: >
|
|
4
|
+
Pre-flight gate between decomposition and delivery: verifies the artifacts the
|
|
5
|
+
delivery phase is about to execute against actually exist, agree with each other,
|
|
6
|
+
and are still current. Applied inline by the delivery workflow — these are
|
|
7
|
+
mechanical existence and consistency checks, not authorship review.
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Implementation Readiness Checklist
|
|
11
|
+
|
|
12
|
+
Checked against the bet's committed artifacts immediately before the first slice is implemented. The one question this answers: **if delivery starts now, will it execute against complete, current, mutually consistent instructions — or improvise?** Any 🔴 item blocks delivery and routes back to the owning phase.
|
|
13
|
+
|
|
14
|
+
## The document chain
|
|
15
|
+
|
|
16
|
+
- [ ] 🔴 **Missing link**: `docs/bets/<slug>/pitch.md`, the `technical-design/` directory, or the `decomposition/` tree does not exist — delivery has no executable plan.
|
|
17
|
+
- [ ] 🔴 **Status out of sequence**: the pitch frontmatter `status` is not `delivery` (or `decomposition` about to transition) — a fresh context picked up the wrong bet or a phase was skipped.
|
|
18
|
+
- [ ] 🔴 **Unreviewed artifact**: the technical design or the decomposition tree was committed without its review gate reaching `VERDICT: PRESENT` (visible in conversation history or flagged in the doc) — an ungated plan is a draft, not a contract.
|
|
19
|
+
|
|
20
|
+
## Surface scope
|
|
21
|
+
|
|
22
|
+
These items apply only when the project carries a surface registry (`docs/surfaces.md`). A project with no registry has a single implicit surface; none of these items fire. The ledger itself is gated at validation — a bet cannot reach `delivered` with an empty ledger cell — so readiness checks the scope agreement that makes that gate satisfiable.
|
|
23
|
+
|
|
24
|
+
- [ ] 🔴 **Pitch ↔ design surface disagreement**: the pitch's `surfaces:` frontmatter and the technical design's UI Design subsections name different surface sets — delivery would build for surfaces the bet never scoped, or skip ones it committed to, and validation's ledger row would have no honest state for the mismatched column.
|
|
25
|
+
- [ ] 🔴 **Slice surface unmapped**: a slice's `Surface` value in the decomposition tree is missing, or is neither `core` nor a registry slug — core-before-surface sequencing cannot run, and the slice's outcome has no ledger column to land in.
|
|
26
|
+
|
|
27
|
+
## Contracts
|
|
28
|
+
|
|
29
|
+
- [ ] 🔴 **Slice without a contract**: a slice in the decomposition tree introduces or changes a service API whose shapes are absent from the prose design (`technical-design/03-api-design.md`, or the store in `04-data-design.md`) — that slice will be implemented against guesswork.
|
|
30
|
+
- [ ] 🟡 **Contract orphan**: a designed interface in `technical-design/03-api-design.md` that no slice implements — either scope was silently cut in decomposition or the design carries dead weight. The interface is what the implementation's generated contract (canonical `docs/architecture/api/<service>/`, captured at validation) must eventually carry.
|
|
31
|
+
|
|
32
|
+
## Proof of work
|
|
33
|
+
|
|
34
|
+
Tests do not exist at this gate — Delivery materializes the red board from this approved prose at Step 0.5, and confirms there that every materialized stub is red for the feature's absence. Readiness checks the prose and the approval tag, not test code.
|
|
35
|
+
|
|
36
|
+
- [ ] 🔴 **Missing Proof of work**: a milestone `index.md` or slice file in `docs/bets/<slug>/decomposition/` lacks its Proof-of-work prose, or names no `Test file:` path in it — there is nothing for Delivery to materialize into a red stub, so "done" has no definition.
|
|
37
|
+
- [ ] 🔴 **Approval tag absent**: under git, the `bet/<slug>/approved` tag does not exist — the approved decomposition tree and technical design were never sealed, so there is no sealed baseline (the ratchet's initial point) the delivery prose-integrity reconciliation can hold the prose to. An unsealed contract is a draft, not a definition of done. (Not under git: confirm the bet record names the approval baseline the reconciliation falls back to.)
|
|
38
|
+
- [ ] 🔴 **Ladder or first milestone incomplete**: the `decomposition/` tree is missing a piece it must carry at delivery start — `meta.json`, any milestone `index.md` (the full ladder of headline proofs), or a slice file the **first milestone** links — so delivery would execute against a partial plan. A *later* milestone with no slice files is expected (it is sliced on arrival, not up front), not incomplete; but a slice link that resolves to nothing is a dangling reference and fails this check.
|
|
39
|
+
- [ ] 🟡 **Capability ↔ proof drift**: a Required Capability with no Proof of work covering it, or a Proof of work that rests on no Required Capability — the proof and the plan disagree about what is being proven.
|
|
40
|
+
- [ ] 🟡 **Proof-of-work prose stale**: a milestone `index.md` or slice file's Proof of work describes a shape, an interface, or an outcome the current `technical-design/` no longer carries — the sealed prose drifted from the design, so the user approved something other than what delivery will build against.
|
|
41
|
+
- [ ] 🟡 **Testing strategy unresolved**: a slice's stack does not resolve to a promoted engineer-skill testing strategy (`.agents/skills/groundwork-<stack>-engineer/references/testing.md`) — the slice-worker has no authority to roll the permanent best-practice tests out against, and the coverage-auditor lens no baseline to hold them to. Scaffolded services always carry one; a hand-added or non-standard service may not. Name the gap so delivery rolls out coverage deliberately rather than improvising it.
|
|
42
|
+
|
|
43
|
+
## Currency
|
|
44
|
+
|
|
45
|
+
- [ ] 🔴 **Open contradiction in discovery notes**: an entry under `## Design Details` or `## Bets` in `.groundwork/cache/discovery-notes.md` contradicts the committed design or decomposition — a captured signal was never reconciled, and delivery would build against the stale half.
|
|
46
|
+
- [ ] 🟡 **Stale upstream**: `groundwork check` (or its git-log baseline) reports a canonical doc this bet depends on as stale — the design may rest on a map that no longer matches the territory. Assess whether the drift touches this bet before proceeding.
|
|
47
|
+
- [ ] 🟡 **Maturity blocker unacknowledged**: `docs/maturity.md` carries an `open` `blocks-delivery` row that this bet neither closes nor consciously deferred during discovery — delivery is about to run into the documented obstacle.
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: infrastructure-checklist
|
|
3
|
+
description: >
|
|
4
|
+
Type-specific failure modes for reviewing a draft infrastructure document —
|
|
5
|
+
the verified description of the running local environment.
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Infrastructure Checklist
|
|
9
|
+
|
|
10
|
+
This checklist checks a draft `docs/architecture/infrastructure.md`. It answers one question: **could any
|
|
11
|
+
developer run the local environment from this document alone — boot it, test it, and verify it
|
|
12
|
+
is healthy — without asking a question?**
|
|
13
|
+
|
|
14
|
+
Each item names a violation. Match it against the document text plus `docs/architecture/index.md`;
|
|
15
|
+
answer yes/no.
|
|
16
|
+
|
|
17
|
+
## Document Hygiene
|
|
18
|
+
|
|
19
|
+
- [ ] 🟡 **Leftover downstream summary**: the published doc still carries a `## Summary for
|
|
20
|
+
Downstream` section. The cross-phase contract now lives in `.groundwork/context/infrastructure.md`,
|
|
21
|
+
not in the published doc; an old-template summary section is residue and should be removed.
|
|
22
|
+
|
|
23
|
+
## Runnability
|
|
24
|
+
|
|
25
|
+
- [ ] 🔴 **Port without a boot command**: services and ports are listed but the document never
|
|
26
|
+
states how to start them — an inventory is not an environment.
|
|
27
|
+
- [ ] 🔴 **Test path unstated**: the document does not say how to run the test suite, or names a
|
|
28
|
+
test command without saying what it runs against (running stack vs self-booting).
|
|
29
|
+
- [ ] 🟡 **Health unverifiable**: a service is listed with no health endpoint or equivalent check
|
|
30
|
+
— a developer cannot tell a booted service from a hung one.
|
|
31
|
+
- [ ] 🟡 **Raw commands beside a managed surface**: the environment has a single management
|
|
32
|
+
surface (a `./dev` CLI or equivalent) but the document instructs raw per-service commands that
|
|
33
|
+
bypass it — two run paths rot independently.
|
|
34
|
+
- [ ] 🟡 **Migration path missing**: a service includes a database but the document never states
|
|
35
|
+
how migrations are run.
|
|
36
|
+
|
|
37
|
+
## Verification Honesty
|
|
38
|
+
|
|
39
|
+
- [ ] 🔴 **Unverified fact stated as verified**: the document presents ports, commands, or test
|
|
40
|
+
results as confirmed while also recording (or omitting) that the system was never booted — a
|
|
41
|
+
verification section is mandatory, and "pending" must be flagged, not papered over.
|
|
42
|
+
- [ ] 🔴 **Verification without results**: a verification section exists but cites no outcome —
|
|
43
|
+
no test counts, no health responses, no named checks. "Everything works" is a claim, not
|
|
44
|
+
evidence.
|
|
45
|
+
- [ ] 🟡 **Stale specificity**: the document hedges concrete facts it is responsible for
|
|
46
|
+
("typically port 4000", "the test command should be...") — this doc records the actual system,
|
|
47
|
+
not the theoretical one.
|
|
48
|
+
|
|
49
|
+
## Service Inventory
|
|
50
|
+
|
|
51
|
+
- [ ] 🔴 **Architecture service missing**: a service named in `docs/architecture/index.md`
|
|
52
|
+
does not appear in this document's inventory, with no explicit note that it is not yet
|
|
53
|
+
scaffolded.
|
|
54
|
+
- [ ] 🔴 **Orphan service**: a service appears here that the architecture does not define —
|
|
55
|
+
infrastructure has silently extended the system.
|
|
56
|
+
- [ ] 🟡 **Inventory row incomplete**: a service row lacks its language/generator, port, or base
|
|
57
|
+
path — a developer cannot locate or address it.
|
|
58
|
+
- [ ] 🟡 **Shared infrastructure unlisted**: a dependency the services plainly use (database,
|
|
59
|
+
broker, tracing backend) is absent from the infrastructure table — it will fail to exist on a
|
|
60
|
+
fresh machine.
|
|
61
|
+
|
|
62
|
+
## Environment Requirements
|
|
63
|
+
|
|
64
|
+
- [ ] 🔴 **Secret or env var requirement unstated**: a service needs credentials or environment
|
|
65
|
+
variables to boot (auth keys, provider tokens) and the document neither lists them nor points
|
|
66
|
+
to where they are configured — the first fresh boot fails opaquely.
|
|
67
|
+
- [ ] 🟡 **Implicit tool dependency**: the boot path assumes a tool (Docker, a language runtime,
|
|
68
|
+
a CLI) the document never names as a prerequisite.
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: maturity-checklist
|
|
3
|
+
description: >
|
|
4
|
+
Type-specific failure modes for reviewing a maturity doc — the evidenced
|
|
5
|
+
assessment and roadmap against the nine-dimension maturity model.
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Maturity Checklist
|
|
9
|
+
|
|
10
|
+
This checklist checks a draft `docs/maturity.md`. It answers one question: **is every assessment
|
|
11
|
+
evidenced, every roadmap row parseable, and every claim consistent with the committed doc set?**
|
|
12
|
+
|
|
13
|
+
Read the model at `.groundwork/skills/maturity-model.md` first — it defines the
|
|
14
|
+
dimensions (D1–D9), the assessment states (including the `n/a` state reserved for the
|
|
15
|
+
conditional dimensions D8 and D9), and the allowed severity, recommendation, and status
|
|
16
|
+
values. Match each item against the document text and the canonical doc set.
|
|
17
|
+
|
|
18
|
+
## Document Hygiene
|
|
19
|
+
|
|
20
|
+
- [ ] 🟡 **Leftover downstream summary**: the published doc still carries a `## Summary for
|
|
21
|
+
Downstream` section. The cross-phase contract now lives in `.groundwork/context/maturity.md`,
|
|
22
|
+
not in the published doc; an old-template summary section is residue and should be removed.
|
|
23
|
+
|
|
24
|
+
## Assessment Rows
|
|
25
|
+
|
|
26
|
+
- [ ] 🔴 **State without evidence**: an assessment row carries a state (✅/🟡/🔴) but cites no file,
|
|
27
|
+
command output, or absence that justifies it — an assessment row without evidence is an
|
|
28
|
+
opinion.
|
|
29
|
+
- [ ] 🔴 **Partial without specifics**: a 🟡 partial assessment does not name exactly which part
|
|
30
|
+
of the dimension fails — "partially done" with no specifics steers no one.
|
|
31
|
+
- [ ] 🔴 **Dimension missing**: one of the nine dimensions (D1–D9) has no assessment row —
|
|
32
|
+
a conditional dimension whose precondition does not hold still gets a row, with state `n/a`
|
|
33
|
+
and the precondition as evidence.
|
|
34
|
+
- [ ] 🟡 **Assessment stamp missing**: the assessment carries no date or no record of which phase
|
|
35
|
+
or skill ran it.
|
|
36
|
+
- [ ] 🟡 **Evidence that proves nothing**: the cited evidence does not bear on the dimension's
|
|
37
|
+
signal — a doc path offered as proof of D3 (one-command operations), say, instead of the
|
|
38
|
+
`./dev` surface.
|
|
39
|
+
|
|
40
|
+
## Roadmap Vocabulary
|
|
41
|
+
|
|
42
|
+
Downstream skills parse these strings exactly; a near-miss is a silent orphan.
|
|
43
|
+
|
|
44
|
+
- [ ] 🔴 **Out-of-vocabulary severity**: a severity other than `blocks-delivery`,
|
|
45
|
+
`standard-divergence`, or `cosmetic`.
|
|
46
|
+
- [ ] 🔴 **Out-of-vocabulary recommendation**: a recommendation other than `fix-now`, `defer`, or
|
|
47
|
+
`blocks-delivery`.
|
|
48
|
+
- [ ] 🔴 **Out-of-vocabulary status**: a status other than `open`, `in-bet (<slug>)`,
|
|
49
|
+
`closed (<slug>)`, or `accepted`.
|
|
50
|
+
- [ ] 🔴 **Row without a dimension**: a roadmap row names no dimension (D1–D9) — the gap cannot
|
|
51
|
+
be tied to what it blocks.
|
|
52
|
+
- [ ] 🟡 **Gap without a cost**: a roadmap row does not state what leaving the gap open costs —
|
|
53
|
+
the model exists to let the user weigh maturity work against product work with full
|
|
54
|
+
information.
|
|
55
|
+
|
|
56
|
+
## Attribution
|
|
57
|
+
|
|
58
|
+
- [ ] 🔴 **Unattributed closure**: a row marked `closed` does not name the closing bet slug — an
|
|
59
|
+
unattributed closure cannot be audited later.
|
|
60
|
+
- [ ] 🔴 **Unattributed acceptance**: a row marked `accepted` does not record who accepted it and
|
|
61
|
+
why in its notes.
|
|
62
|
+
- [ ] 🟡 **History silent**: the `## History` log carries no line for the assessment or status
|
|
63
|
+
change this draft records — the append-only audit trail has a hole.
|
|
64
|
+
|
|
65
|
+
## Consistency with the Doc Set
|
|
66
|
+
|
|
67
|
+
- [ ] 🔴 **Assessment contradicts a committed doc**: a state or roadmap row contradicts the
|
|
68
|
+
canonical doc set — claiming D3 ✅ while `docs/architecture/infrastructure.md` records no `./dev` surface,
|
|
69
|
+
or naming a service `docs/architecture/index.md` does not have.
|
|
70
|
+
- [ ] 🟡 **Status contradicts the roadmap's own evidence**: a row's notes describe the gap as
|
|
71
|
+
resolved while its status reads `open`, or vice versa — the row disagrees with itself.
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: product-brief-checklist
|
|
3
|
+
description: >
|
|
4
|
+
Type-specific failure modes for reviewing a draft product brief — the vision
|
|
5
|
+
document every downstream phase reads first.
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Product Brief Checklist
|
|
9
|
+
|
|
10
|
+
This checklist checks a draft `docs/product-brief.md`. It answers one question: **can a
|
|
11
|
+
designer, architect, and MVP planner each start their work from this document without asking
|
|
12
|
+
"but what is this product, exactly?"**
|
|
13
|
+
|
|
14
|
+
Each item names a violation. Match it against the document text; answer yes/no. A matched 🔴 item
|
|
15
|
+
means downstream phases start from wrong foundations; a matched 🟡 item is advisory.
|
|
16
|
+
|
|
17
|
+
## Document Hygiene
|
|
18
|
+
|
|
19
|
+
- [ ] 🟡 **Leftover downstream summary**: the published doc still carries a `## Summary for
|
|
20
|
+
Downstream` section. The cross-phase contract now lives in `.groundwork/context/product-brief.md`,
|
|
21
|
+
not in the published doc; an old-template summary section is residue and should be removed.
|
|
22
|
+
|
|
23
|
+
## Users
|
|
24
|
+
|
|
25
|
+
- [ ] 🔴 **Label without a person**: a user type is named but carries no job-to-be-done or
|
|
26
|
+
success definition — a designer could not design a journey for them. "Busy professionals" is a
|
|
27
|
+
label; a mental model of why they hire the system is the standard.
|
|
28
|
+
- [ ] 🔴 **Success without an observable**: a user type's "success looks like" cannot be observed
|
|
29
|
+
in practice — sentiment ("they feel confident") with no behaviour attached.
|
|
30
|
+
- [ ] 🟡 **Phantom user**: a user type appears in the Capabilities or Experience sections but is
|
|
31
|
+
absent from Target Users, or vice versa.
|
|
32
|
+
|
|
33
|
+
## Capabilities and Experience
|
|
34
|
+
|
|
35
|
+
- [ ] 🔴 **Feature name without function**: a capability is a noun phrase ("smart scheduling",
|
|
36
|
+
"unified inbox") with no statement of what it does for the user, why it matters to the vision,
|
|
37
|
+
or how it connects to other capabilities.
|
|
38
|
+
- [ ] 🔴 **Experience without a medium**: the Experience section describes what happens without
|
|
39
|
+
naming the interaction medium — screen-based app, command-line tool, API/protocol, voice, or
|
|
40
|
+
physical device. Downstream design and infrastructure decisions depend on it.
|
|
41
|
+
- [ ] 🟡 **Steps without texture**: the Experience is a bare step list ("sign up, create a
|
|
42
|
+
booking, get a confirmation") that a reader cannot picture the shape of — no entry point, no
|
|
43
|
+
outcome, no sense of pacing.
|
|
44
|
+
- [ ] 🟡 **MVP masquerading as vision**: the Capabilities section reads as a first-release scope
|
|
45
|
+
rather than the full vision — scoping belongs to MVP planning, and a pre-shrunk brief starves
|
|
46
|
+
it.
|
|
47
|
+
|
|
48
|
+
## Altitude and Boundaries
|
|
49
|
+
|
|
50
|
+
- [ ] 🔴 **Technology in the brief**: the document names databases, frameworks, vendors, or
|
|
51
|
+
hosting choices. Technology decisions belong to architecture; a brief that pre-commits them
|
|
52
|
+
contaminates that conversation.
|
|
53
|
+
- [ ] 🟡 **Design-depth leakage**: the brief specifies interaction mechanics, edge-case handling,
|
|
54
|
+
or permission rules — "what happens when two users edit the same booking" is a later phase's
|
|
55
|
+
question.
|
|
56
|
+
- [ ] 🔴 **Ungrounded constraint**: a Domain Constraint reads as a generic disclaimer ("the
|
|
57
|
+
system must be secure", "data must be handled responsibly") rather than a specific rule
|
|
58
|
+
grounded in this product's context.
|
|
59
|
+
- [ ] 🟡 **Marketing voice**: the System Purpose paragraph pitches ("revolutionary", "seamless",
|
|
60
|
+
"delightful") instead of declaring what the system is, who it serves, and what it enables.
|
|
61
|
+
|
|
62
|
+
## Success Indicators
|
|
63
|
+
|
|
64
|
+
- [ ] 🔴 **Unobservable indicator**: a success indicator no designer or engineer could observe in
|
|
65
|
+
practice — "users find it valuable" instead of a concrete signal like "a user completes a
|
|
66
|
+
booking within their first session".
|
|
67
|
+
- [ ] 🟡 **Indicator without a tie to the problem**: an indicator that could be satisfied while
|
|
68
|
+
the stated Problem remains unsolved — it measures activity, not the value the brief claims to
|
|
69
|
+
deliver.
|