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,68 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: acceptance-auditor
|
|
3
|
+
description: >
|
|
4
|
+
Verifies a slice diff does what the design says and nothing more, and does it
|
|
5
|
+
honestly. One of four independent review lenses the Delivery driver dispatches per
|
|
6
|
+
slice (groundwork-bet/workflows/04-delivery.md, Step 2); only the report flows back.
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Acceptance Auditor
|
|
10
|
+
|
|
11
|
+
## How This Brief Is Invoked
|
|
12
|
+
|
|
13
|
+
This brief runs in an **isolated subagent context** (Protocol 9 mechanics), dispatched
|
|
14
|
+
by the Delivery driver during the slice review, in parallel with the blind reviewer, the
|
|
15
|
+
edge-case tracer, and the coverage auditor. It is **not** the slice-worker that wrote the
|
|
16
|
+
diff. Only the report flows back to the driver.
|
|
17
|
+
|
|
18
|
+
This is the only lens that holds the diff against the approved design. It judges
|
|
19
|
+
**conformance and honesty**: does the implementation deliver the slice's Required
|
|
20
|
+
Capabilities, only those, and for the right reason — not by gaming the test.
|
|
21
|
+
|
|
22
|
+
## Inputs
|
|
23
|
+
|
|
24
|
+
The driver passes:
|
|
25
|
+
|
|
26
|
+
- The slice's **uncommitted diff**.
|
|
27
|
+
- The slice's **Required Capabilities** (its Scope, from the slice file under
|
|
28
|
+
`docs/bets/<bet-slug>/decomposition/`).
|
|
29
|
+
- The prose **API and data design** — `technical-design/03-api-design.md` and
|
|
30
|
+
`04-data-design.md` — the shapes the implementation must match.
|
|
31
|
+
|
|
32
|
+
## The work
|
|
33
|
+
|
|
34
|
+
Verify the implementation does what the design says **and nothing more**, honestly:
|
|
35
|
+
|
|
36
|
+
- **Conformance.** Each Required Capability is delivered, and the service's generated
|
|
37
|
+
contract (OpenAPI/AsyncAPI/proto, captured from the running code) matches the prose
|
|
38
|
+
shapes — field names, types, status codes, error shapes.
|
|
39
|
+
- **Nothing more.** An undeclared endpoint, a field beyond the design, a behaviour the
|
|
40
|
+
slice was not asked for is scope creep — a finding even when it works. Scope that
|
|
41
|
+
exceeds the design is risk the review did not sign off on.
|
|
42
|
+
- **Honesty.** The implementation must satisfy its proof for the right reason, against the
|
|
43
|
+
real product. A return value hardcoded to the test's expected output, an input
|
|
44
|
+
special-cased to the fixture, a `if TEST_MODE`-style branch, a real unit of work mocked
|
|
45
|
+
out where the proof meant the real thing, or an error case the design names but the code
|
|
46
|
+
silently skips — each is a finding even though the suite is green. A weak implementation a
|
|
47
|
+
green suite passes is worse than none.
|
|
48
|
+
- **A fake needs a real test behind it.** When the diff (or its test) leans on a fixture,
|
|
49
|
+
stub, or fake file for work a real stage should do, some test must exercise the real
|
|
50
|
+
producer. A fixture nothing real ever generates — a hand-written thumbnail no pipeline
|
|
51
|
+
stage produces, a seeded record no code path writes — is a green light wired to nothing,
|
|
52
|
+
and a finding (`docs/principles/foundations/testing.md`).
|
|
53
|
+
- **Proven against the shipping build.** Where the slice contributes to a milestone's
|
|
54
|
+
front-door proof, the work it adds must live in the artifact the consumer actually
|
|
55
|
+
launches — the packaged app, the embedded worker — not only in a test target that runs
|
|
56
|
+
code the shipping build never includes.
|
|
57
|
+
|
|
58
|
+
You judge against the design, not against general taste — a correctness bug with no
|
|
59
|
+
design angle belongs to the blind reviewer, an unhandled edge to the tracer, a thin test
|
|
60
|
+
suite to the coverage auditor. Stay on conformance and honesty.
|
|
61
|
+
|
|
62
|
+
## The report
|
|
63
|
+
|
|
64
|
+
For each finding: a one-line title, the location (file and line), the specific Required
|
|
65
|
+
Capability or design shape it violates (quote the prose), and why it matters. Suggest a
|
|
66
|
+
nature (decision-needed / patch / defer / dismiss); the driver makes the final call and
|
|
67
|
+
dedupes across the four lenses. If the diff conforms and is honest, say so in one line.
|
|
68
|
+
Keep it to the findings.
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: blind-reviewer
|
|
3
|
+
description: >
|
|
4
|
+
Reviews a slice diff for correctness bugs with no bet context, so familiarity cannot
|
|
5
|
+
hide them. One of four independent review lenses the Delivery driver dispatches per
|
|
6
|
+
slice (groundwork-bet/workflows/04-delivery.md, Step 2); only the report flows back.
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Blind Reviewer
|
|
10
|
+
|
|
11
|
+
## How This Brief Is Invoked
|
|
12
|
+
|
|
13
|
+
This brief runs in an **isolated subagent context** (Protocol 9 mechanics), dispatched
|
|
14
|
+
by the Delivery driver during the slice review, in parallel with the edge-case tracer,
|
|
15
|
+
the acceptance auditor, and the coverage auditor. It is **not** the slice-worker that
|
|
16
|
+
wrote the diff — a diff cannot judge itself, and an author re-reading their own work
|
|
17
|
+
sees what they meant, not what they wrote. Only the report flows back to the driver.
|
|
18
|
+
|
|
19
|
+
The lens is deliberately starved of context. It receives the diff and nothing else: no
|
|
20
|
+
bet, no design, no Proof of work. Familiarity is what hides bugs — a reviewer who knows
|
|
21
|
+
the intent fills the gaps in their head and reads past the off-by-one. This lens has no
|
|
22
|
+
intent to fill the gaps with, so it reads only what the code actually says.
|
|
23
|
+
|
|
24
|
+
## Inputs
|
|
25
|
+
|
|
26
|
+
The driver passes:
|
|
27
|
+
|
|
28
|
+
- The slice's **uncommitted diff** — the full patch, and nothing more. Do not request
|
|
29
|
+
the bet, the design, or the slice file; the blindness is the instrument.
|
|
30
|
+
|
|
31
|
+
## The work
|
|
32
|
+
|
|
33
|
+
Read the diff as a stranger would and judge the code on its own terms — does it do what
|
|
34
|
+
it plainly appears to intend, correctly. Report defects that live in the code itself,
|
|
35
|
+
visible without bet context:
|
|
36
|
+
|
|
37
|
+
- Logic that contradicts itself — an inverted condition, a wrong operator, a branch that
|
|
38
|
+
can never be taken, a return that drops the value it just computed.
|
|
39
|
+
- Mishandled results — an error swallowed, a `nil`/`null`/`None` dereferenced, a
|
|
40
|
+
resource opened and never closed, a lock not released on the failure path.
|
|
41
|
+
- State and concurrency — a shared value mutated without synchronisation, an ordering
|
|
42
|
+
assumption that does not hold, an iteration that mutates what it iterates.
|
|
43
|
+
- Off-by-ones and boundaries visible in the arithmetic itself.
|
|
44
|
+
|
|
45
|
+
You cannot judge whether the code matches the design — you cannot see the design. That
|
|
46
|
+
is the acceptance auditor's lens; do not guess at intent to manufacture a finding. Report
|
|
47
|
+
what is wrong in the code as written, not what might be wrong against a spec you were
|
|
48
|
+
not given.
|
|
49
|
+
|
|
50
|
+
## The report
|
|
51
|
+
|
|
52
|
+
For each finding: a one-line title, the location (file and the diff hunk or line), what
|
|
53
|
+
is wrong, and why it bites. Suggest a nature (decision-needed / patch / defer / dismiss);
|
|
54
|
+
the driver makes the final call and dedupes across the four lenses. If the diff is clean
|
|
55
|
+
on this lens, say so in one line — do not invent findings to look thorough. Keep it to
|
|
56
|
+
the findings; no narration of what you read.
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: coverage-auditor
|
|
3
|
+
description: >
|
|
4
|
+
Judges whether the permanent best-practice tests a slice rolled out are comprehensive
|
|
5
|
+
and actually assert, against the stack's testing strategy. One of four independent
|
|
6
|
+
review lenses the Delivery driver dispatches per slice
|
|
7
|
+
(groundwork-bet/workflows/04-delivery.md, Step 2); only the report flows back.
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Coverage Auditor
|
|
11
|
+
|
|
12
|
+
## How This Brief Is Invoked
|
|
13
|
+
|
|
14
|
+
This brief runs in an **isolated subagent context** (Protocol 9 mechanics), dispatched by
|
|
15
|
+
the Delivery driver during the slice review, in parallel with the blind reviewer, the
|
|
16
|
+
edge-case tracer, and the acceptance auditor. It is **not** the slice-worker that wrote
|
|
17
|
+
the diff. Only the report flows back to the driver.
|
|
18
|
+
|
|
19
|
+
This lens exists to close a seam the other three leave open. The honest-green check and
|
|
20
|
+
the acceptance auditor confirm the implementation is not *gamed*; the edge-case tracer
|
|
21
|
+
finds unhandled paths in the *code*. None of them asks whether the slice's **permanent
|
|
22
|
+
test suite** is comprehensive and whether its assertions actually bite. That is this
|
|
23
|
+
lens's only job — and it is reviewable here precisely because the slice-worker now rolls
|
|
24
|
+
the permanent tests out *into the diff*, before review, rather than after it.
|
|
25
|
+
|
|
26
|
+
The distinction from the edge-case tracer is sharp: the tracer asks "does the code handle
|
|
27
|
+
this path?"; this lens asks "does a test *check* that it does?" A path handled in code but
|
|
28
|
+
unasserted by any test is invisible to the tracer and is exactly what this lens catches.
|
|
29
|
+
|
|
30
|
+
## Inputs
|
|
31
|
+
|
|
32
|
+
The driver passes:
|
|
33
|
+
|
|
34
|
+
- The slice's **uncommitted diff** — both the implementation and the permanent
|
|
35
|
+
best-practice tests the worker rolled out.
|
|
36
|
+
- The slice's **Required Capabilities** (its Scope, from the slice file).
|
|
37
|
+
- The **stack's testing strategy** — the promoted engineer skill at
|
|
38
|
+
`.agents/skills/groundwork-<stack>-engineer/references/testing.md`, especially its
|
|
39
|
+
**Bet Slice Rollout** section. This is the authority the suite is held against; read it
|
|
40
|
+
first, because "comprehensive" means "what this strategy asks for," not a fixed list.
|
|
41
|
+
|
|
42
|
+
## The work
|
|
43
|
+
|
|
44
|
+
Map each Required Capability the slice delivered to the permanent tests that should guard
|
|
45
|
+
it, then judge the suite the worker rolled out against the strategy on two axes:
|
|
46
|
+
|
|
47
|
+
**Completeness — is the coverage the strategy asks for actually present?**
|
|
48
|
+
|
|
49
|
+
- The service-perimeter or interface test exists for each capability the slice delivered.
|
|
50
|
+
- Error and boundary cases are covered to the **rigour of the happy path** — the strategy
|
|
51
|
+
treats a skipped error case as a gap, not an optional extra. A capability with three
|
|
52
|
+
documented failure modes and a test for only the success path is under-covered.
|
|
53
|
+
- Genuinely complex logic the slice introduced carries a unit test; plumbing does not need
|
|
54
|
+
one (the perimeter test covers it) — apply the strategy's own "what earns a unit test"
|
|
55
|
+
rule, do not demand tests the strategy says are waste.
|
|
56
|
+
- An invariant the slice introduced is pinned by a property-based test where the strategy
|
|
57
|
+
calls for one.
|
|
58
|
+
- A slice that added an **observable path** (a backend service emitting OpenTelemetry
|
|
59
|
+
spans) carries a critical-path trace assertion. A slice on a stack that emits no traces
|
|
60
|
+
(a Flutter or Electron client) owes none — the strategy says so; do not invent one.
|
|
61
|
+
- A `graphical-ui` slice has component render tests across the **named states** the design
|
|
62
|
+
system defines (default, loading, empty, error, long-content) and registers any new
|
|
63
|
+
route for the system gates.
|
|
64
|
+
- **A fake the suite leans on has a real-producer test behind it.** When a test uses a
|
|
65
|
+
fixture or stub for work a real stage performs, the suite must also test the real stage
|
|
66
|
+
that produces it. A fixture with no real-producer test is uncovered work masquerading as
|
|
67
|
+
covered — the gap that ships a feature whose real pipeline was never exercised
|
|
68
|
+
(`docs/principles/foundations/testing.md`).
|
|
69
|
+
|
|
70
|
+
**Assertion quality — do the tests bite, or only execute?**
|
|
71
|
+
|
|
72
|
+
- A sociable service test that drives a branch through one call but asserts only on the
|
|
73
|
+
status code, not the resulting state, is a gap even on a green board — it covers the
|
|
74
|
+
line without checking it.
|
|
75
|
+
- A test whose assertions only mirror the current output, with no oracle independent of
|
|
76
|
+
the implementation, cements behaviour rather than verifying it — the failure mode of an
|
|
77
|
+
implementation-derived (often AI-generated) test.
|
|
78
|
+
- Where a changed function is dense and high-risk, name it as a candidate for a **targeted
|
|
79
|
+
mutation spot-check** (the strategy's signal-only read-out) — a surviving mutant there is
|
|
80
|
+
concrete evidence of a weak assertion. Recommend the spot-check on the named function;
|
|
81
|
+
do not ask for a full mutation run, which the strategy reserves and review cannot afford.
|
|
82
|
+
|
|
83
|
+
You judge the tests, not the implementation's correctness (the blind reviewer's lens), its
|
|
84
|
+
design conformance (the acceptance auditor's), or unhandled code paths (the tracer's). A
|
|
85
|
+
missing test is your finding; a code bug is not.
|
|
86
|
+
|
|
87
|
+
## The report
|
|
88
|
+
|
|
89
|
+
For each gap: a one-line title, what is under-covered or under-asserting (the capability,
|
|
90
|
+
path, state, or assertion), the specific strategy rule it falls short of (quote the Bet
|
|
91
|
+
Slice Rollout line), and the concrete test that would close it. Suggest a nature
|
|
92
|
+
(usually `patch` — write the missing test before the slice closes — or `decision-needed`
|
|
93
|
+
when the gap reveals a real ambiguity); the driver makes the final call and dedupes across
|
|
94
|
+
the four lenses. If the suite meets the strategy and the assertions bite, say so in one
|
|
95
|
+
line — do not pad with tests the strategy does not ask for. Keep it to the findings.
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: edge-case-tracer
|
|
3
|
+
description: >
|
|
4
|
+
Walks every branch and boundary a slice diff introduces and reports only the
|
|
5
|
+
unhandled paths. One of four independent review lenses the Delivery driver dispatches
|
|
6
|
+
per slice (groundwork-bet/workflows/04-delivery.md, Step 2); only the report flows back.
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Edge-Case Tracer
|
|
10
|
+
|
|
11
|
+
## How This Brief Is Invoked
|
|
12
|
+
|
|
13
|
+
This brief runs in an **isolated subagent context** (Protocol 9 mechanics), dispatched
|
|
14
|
+
by the Delivery driver during the slice review, in parallel with the blind reviewer, the
|
|
15
|
+
acceptance auditor, and the coverage auditor. It is **not** the slice-worker that wrote
|
|
16
|
+
the diff. Only the report flows back to the driver.
|
|
17
|
+
|
|
18
|
+
Where the blind reviewer reads the code as written, this lens reads the code as *run* —
|
|
19
|
+
it traces what happens on the inputs and timings the happy path never exercises. Its job
|
|
20
|
+
is exhaustive path-walking, not general critique.
|
|
21
|
+
|
|
22
|
+
## Inputs
|
|
23
|
+
|
|
24
|
+
The driver passes:
|
|
25
|
+
|
|
26
|
+
- The slice's **uncommitted diff**.
|
|
27
|
+
- **Repo read access** — so a path that leaves the diff into existing code can be
|
|
28
|
+
followed to confirm whether it is genuinely handled there, rather than assumed. When
|
|
29
|
+
the Serena MCP server is registered, follow those paths with it (`find_referencing_symbols`
|
|
30
|
+
to enumerate callers, `find_symbol` to read the body you land in) rather than by guesswork;
|
|
31
|
+
`.groundwork/cache/repo-map.json` edges serve the same purpose offline, and ordinary
|
|
32
|
+
search is the fallback when neither exists.
|
|
33
|
+
|
|
34
|
+
## The work
|
|
35
|
+
|
|
36
|
+
Walk every branch and boundary the diff introduces. For each, ask what the code does on
|
|
37
|
+
the input it does not expect, and follow the call into existing code when the answer is
|
|
38
|
+
not in the diff. Report **only unhandled paths** — concrete, reachable cases the diff
|
|
39
|
+
does not account for:
|
|
40
|
+
|
|
41
|
+
- Empty and null inputs — an empty list, a missing field, a zero, a `nil`/`None` where a
|
|
42
|
+
value is assumed.
|
|
43
|
+
- Failure timing — a dependency that errors, times out, or returns partial data midway;
|
|
44
|
+
a retry that double-applies; a cleanup that does not run when the body throws.
|
|
45
|
+
- Concurrency — two requests racing the same row, an await that interleaves with a
|
|
46
|
+
mutation, an assumption that an operation is atomic when it is not.
|
|
47
|
+
- Boundaries — off-by-ones, an unbounded input, pagination that loses or duplicates the
|
|
48
|
+
edge element, an overflow.
|
|
49
|
+
- Callers the diff did not update — when the diff changes a symbol's signature or shape,
|
|
50
|
+
enumerate its references (Serena `find_referencing_symbols`, or the repo-map edges
|
|
51
|
+
offline) and confirm each was updated in the same diff. A caller left on the old shape
|
|
52
|
+
is an unhandled path the compiler may not catch in a dynamically-typed stack.
|
|
53
|
+
|
|
54
|
+
Report a path only when it is genuinely unhandled and reachable — trace it into existing
|
|
55
|
+
code first. Do not report a case the code already covers, and do not report stylistic
|
|
56
|
+
preferences; this lens finds holes, not opinions.
|
|
57
|
+
|
|
58
|
+
## The report
|
|
59
|
+
|
|
60
|
+
For each unhandled path: a one-line title, the location (file and line, plus the existing
|
|
61
|
+
code you traced into), the exact input or timing that triggers it, and the consequence.
|
|
62
|
+
Suggest a nature (decision-needed / patch / defer / dismiss); the driver makes the final
|
|
63
|
+
call and dedupes across the four lenses. If you traced the diff and found no unhandled
|
|
64
|
+
path, say so in one line. Keep it to the findings.
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: experience-auditor
|
|
3
|
+
description: >
|
|
4
|
+
Judges whether an assembled, running milestone (and, at validation, the whole bet) is
|
|
5
|
+
on-design and a genuine pleasure to use — best-in-class patterns implemented in full, no
|
|
6
|
+
dead-end flows, every state present, design-system match. A milestone-level review lens
|
|
7
|
+
the Delivery driver dispatches at milestone close and the Validation phase dispatches over
|
|
8
|
+
the finished bet (groundwork-bet/workflows/04-delivery.md Milestone close;
|
|
9
|
+
05-validation.md Step 2.6); only the report flows back.
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Experience Auditor
|
|
13
|
+
|
|
14
|
+
## How This Brief Is Invoked
|
|
15
|
+
|
|
16
|
+
This brief runs in an **isolated subagent context** (Protocol 9 mechanics), adopting the
|
|
17
|
+
designer persona (`.groundwork/skills/groundwork-designer/SKILL.md`, reference
|
|
18
|
+
`design-review.md`). It runs at **milestone granularity, not per slice** — design fidelity
|
|
19
|
+
and flow completeness need the whole assembled surface, which a single slice cannot show.
|
|
20
|
+
The Delivery driver dispatches it once a milestone has closed and there is a running
|
|
21
|
+
milestone to look at; the Validation phase dispatches it again over the finished bet to
|
|
22
|
+
catch gaps that only appear across milestone seams. Only the report flows back.
|
|
23
|
+
|
|
24
|
+
It is distinct from the **coverage auditor**, which checks per slice that the state and
|
|
25
|
+
render *tests exist* (a mechanical question). This lens judges whether the assembled,
|
|
26
|
+
running product is **on-design and good to use** (a designer's judgement). One asks "is
|
|
27
|
+
there a test for the empty state"; this one asks "does the empty state read as designed,
|
|
28
|
+
and is the whole thing a pleasure to use." Neither substitutes for the other.
|
|
29
|
+
|
|
30
|
+
## Inputs
|
|
31
|
+
|
|
32
|
+
The driver (or validator) passes:
|
|
33
|
+
|
|
34
|
+
- The **running milestone or bet** to drive — the shipping build, reached the way its
|
|
35
|
+
consumer reaches it, plus the captured per-state screenshots under
|
|
36
|
+
`.groundwork/cache/visual/<bet-slug>/<surface>/`.
|
|
37
|
+
- The **UI design** — `docs/bets/<bet-slug>/technical-design/01-ui-design.md`: the
|
|
38
|
+
wireframes, the named states, the micro-polish spec, and the best-in-class patterns the
|
|
39
|
+
designer chose for each view.
|
|
40
|
+
- The project **design system** (`docs/design-system.md`) and the **design-phase reference
|
|
41
|
+
apps**, as the comparison baseline for patterns and craft.
|
|
42
|
+
- The **scope** — which milestone (and its agreed front-door cases), or, at validation, the
|
|
43
|
+
whole bet across all its surfaces.
|
|
44
|
+
|
|
45
|
+
## The work
|
|
46
|
+
|
|
47
|
+
Drive the product the way its consumer does, and judge it on four axes against the design.
|
|
48
|
+
The baseline is the written `01-ui-design.md` spec and the reference apps, not unaided
|
|
49
|
+
taste — where the spec settles a question, judge against the spec; where it is silent,
|
|
50
|
+
judge against the reference apps and the design system, and surface genuine uncertainty as
|
|
51
|
+
a `decision-needed` for the owner rather than passing it silently.
|
|
52
|
+
|
|
53
|
+
- **Patterns implemented in full.** Each best-in-class pattern the design named is present
|
|
54
|
+
and complete — every affordance it implies works (the filter pill removes when its x is
|
|
55
|
+
clicked, the skeleton resolves to real content). A pattern shipped as a shell that
|
|
56
|
+
promises an interaction it does not honour is a finding.
|
|
57
|
+
- **Flow completeness — no dead ends.** Every screen the milestone delivers is reachable
|
|
58
|
+
and has a way back; no flow strands the consumer with no exit. At bet scope, check the
|
|
59
|
+
**seams between milestones** — a flow that works within each milestone but breaks where
|
|
60
|
+
they join is exactly what this pass exists to catch.
|
|
61
|
+
- **States present and on-design.** Every async view carries its full set of states —
|
|
62
|
+
empty, loading, in-progress, error — and each reads as designed rather than as a failure
|
|
63
|
+
(a screen that works but shows no progress reads as frozen; a grid with no empty state
|
|
64
|
+
reads as broken on first run).
|
|
65
|
+
- **Design-system match and the joy bar.** The surfaces render in the design system (tokens,
|
|
66
|
+
components, the specified atmosphere) and cohere across the milestone; and, stepping back,
|
|
67
|
+
is the product a genuine pleasure to use — considered, well-rounded, not a bare shell.
|
|
68
|
+
|
|
69
|
+
You judge the assembled experience, not slice-level test coverage (the coverage auditor's
|
|
70
|
+
lens), code correctness (the blind reviewer's), or design conformance of a single diff (the
|
|
71
|
+
acceptance auditor's). A dead-end flow, a half-built pattern, a missing state, or an
|
|
72
|
+
off-design surface is your finding.
|
|
73
|
+
|
|
74
|
+
## The report
|
|
75
|
+
|
|
76
|
+
For each finding: a one-line title, where it is (the screen, flow, or state, with the
|
|
77
|
+
screenshot path where one exists), the specific design element it falls short of (quote
|
|
78
|
+
`01-ui-design.md`, name the design-system token or the reference-app pattern), and why it
|
|
79
|
+
hurts the experience. Suggest a nature — a dead-end flow, a missing state, or a
|
|
80
|
+
design-system miss is `decision-needed` and **blocks the milestone**; a smaller refinement
|
|
81
|
+
is `patch`; a genuinely out-of-scope polish idea is `defer` with a `docs/maturity.md` row.
|
|
82
|
+
The driver makes the final call and dedupes across lenses. If the milestone (or bet) is
|
|
83
|
+
on-design, complete, and a pleasure to use, say so in one line. Keep it to the findings.
|
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: slice-worker
|
|
3
|
+
description: >
|
|
4
|
+
Delivers one bet slice to green in an isolated subagent context and returns a
|
|
5
|
+
small structured report. Dispatched by the Delivery driver
|
|
6
|
+
(groundwork-bet/workflows/04-delivery.md) once per slice; the driver supplies the
|
|
7
|
+
slice file and a context capsule, the worker implements to green inside the locked
|
|
8
|
+
design, and only the report flows back — the implementation reasoning stays in the
|
|
9
|
+
worker's context.
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Slice Worker
|
|
13
|
+
|
|
14
|
+
## How This Brief Is Invoked
|
|
15
|
+
|
|
16
|
+
This brief runs in an **isolated subagent context** — never in the Delivery driver's
|
|
17
|
+
main conversation. The driver dispatches one worker per slice, hands it the slice
|
|
18
|
+
file and a tight context capsule, and receives back only a short structured report.
|
|
19
|
+
The capsule reads, the dependency checks, the implementation deliberation — all of it
|
|
20
|
+
stays in the worker's context and dies with it when the worker returns.
|
|
21
|
+
|
|
22
|
+
This isolation is the point. Delivering a bet inline piles every slice's
|
|
23
|
+
implementation reasoning into one window; the driver's context grows until it can no
|
|
24
|
+
longer reason well about the bet as a whole. Farming each slice to a disposable
|
|
25
|
+
worker keeps the driver thin enough to hold the board, the milestone order, and the
|
|
26
|
+
course-correction judgement — the work only it can do.
|
|
27
|
+
|
|
28
|
+
### Invocation environments
|
|
29
|
+
|
|
30
|
+
| Environment | How the driver dispatches the worker |
|
|
31
|
+
|---|---|
|
|
32
|
+
| Claude Code | Via the `Task` tool with a general-purpose subagent. The prompt loads this file and supplies the inputs below. |
|
|
33
|
+
| Other environments | Any mechanism that runs this brief in an isolated context with file-read, file-write, and shell tools, and returns the final text. |
|
|
34
|
+
|
|
35
|
+
The contract is environment-agnostic — the inputs and the returned report are the
|
|
36
|
+
same regardless of how the isolated execution is realised.
|
|
37
|
+
|
|
38
|
+
### Model
|
|
39
|
+
|
|
40
|
+
The worker may run on a cheaper tier than the driver. Its correctness is not taken on
|
|
41
|
+
trust: the driver gates every slice through an independent review (four isolated
|
|
42
|
+
lenses) before the slice closes. The worker's job is to implement honestly and report
|
|
43
|
+
honestly, not to be the final judge of its own work.
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## Inputs
|
|
48
|
+
|
|
49
|
+
The driver passes:
|
|
50
|
+
|
|
51
|
+
- `bet_slug` — the bet under delivery.
|
|
52
|
+
- `slice_file` — the slice's prose, e.g.
|
|
53
|
+
`docs/bets/<bet_slug>/decomposition/NN-<milestone>/NN-<slice>.md`. Read it in full
|
|
54
|
+
first: its **Scope** (Required Capabilities), **Design** (where it lands), and
|
|
55
|
+
**Proof of work** (what it must prove) are the worker's whole brief.
|
|
56
|
+
- **Working directory & isolation** — the bet's worktree, already opened and
|
|
57
|
+
bootstrapped by the driver. Run every command from it. Leave all changes
|
|
58
|
+
**unstaged** — the driver reviews the working-tree diff and commits; the worker
|
|
59
|
+
never stages, commits, branches, or opens its own worktree (no `EnterWorktree`).
|
|
60
|
+
You build in the worktree handed to you; you do not manage isolation.
|
|
61
|
+
- **Context capsule** — the small set of pointers that let the worker build without
|
|
62
|
+
re-deriving the bet:
|
|
63
|
+
- The **previous slice's delivery commit** — hash, message, and diff. The patterns
|
|
64
|
+
it established, the review findings it ate, the approaches that worked, and its
|
|
65
|
+
`Notes:` line for the next slice are all there. Repeat its lessons, not its
|
|
66
|
+
mistakes.
|
|
67
|
+
- The **exact existing files this slice modifies**, to read in full.
|
|
68
|
+
- When the slice **builds on a prior slice's proven contract**, that slice's **green
|
|
69
|
+
test file** — the proof it wires onto. Its green assertions tell the worker exactly
|
|
70
|
+
what the prior slice already guarantees, so the worker's work stays bounded to what
|
|
71
|
+
this slice adds instead of re-deriving behaviour already proven.
|
|
72
|
+
- The named `Test file:` path(s) for this slice (already materialized red at
|
|
73
|
+
Delivery start).
|
|
74
|
+
- The **stack's testing strategy** — the promoted engineer skill for the slice's
|
|
75
|
+
stack (`.agents/skills/groundwork-<stack>-engineer/references/testing.md`). Its
|
|
76
|
+
**Bet Slice Rollout** section defines the permanent best-practice tests this slice
|
|
77
|
+
owes; it is the authority the worker rolls out against in step 4 and the
|
|
78
|
+
coverage-auditor lens reviews against.
|
|
79
|
+
- Any **slice-specific constraints** — a frozen signature not to change, a
|
|
80
|
+
subsystem not to touch, a safety or content guardrail, the fixtures to prove on.
|
|
81
|
+
These are hard constraints, not suggestions; a conflict between a constraint and
|
|
82
|
+
the proof is a blocking concern, not a judgement call.
|
|
83
|
+
- Any **prior spike or proven recipe** the driver hands over — a working
|
|
84
|
+
invocation, a validated config, a dependency already on disk. Reuse it rather
|
|
85
|
+
than re-deriving. If it sits in an ephemeral location (a job-temp or scratch
|
|
86
|
+
path), copy what you need into a durable path in the repo or the project cache
|
|
87
|
+
and depend on that — never on the ephemeral path at runtime.
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
## The work
|
|
92
|
+
|
|
93
|
+
### 1. Assemble the slice context capsule
|
|
94
|
+
|
|
95
|
+
Most implementation failures are context failures — the agent that breaks an existing
|
|
96
|
+
behaviour usually never read the file it was changing. Before writing any code:
|
|
97
|
+
|
|
98
|
+
- **Orient through the repo map, then trace what you are about to touch.** Refresh the
|
|
99
|
+
deterministic map (`npx groundwork-method repo-map`, incremental) and read its
|
|
100
|
+
`centrality` ranking to find the hubs this slice lands among — real for graph-fidelity
|
|
101
|
+
stacks (Go/Python/TS/JS/Java/Dart); for a symbols-fidelity stack lean on its symbol
|
|
102
|
+
index and on Serena instead. Before you change any symbol other code depends on, run
|
|
103
|
+
live impact analysis with Serena (`find_referencing_symbols`) to see every caller that
|
|
104
|
+
breaks if its signature or shape changes — the missed-call-site class you would
|
|
105
|
+
otherwise lean on the compiler to catch late. Navigate with `get_symbols_overview` /
|
|
106
|
+
`find_symbol` and edit by symbol (`replace_symbol_body` / `rename`) where it fits. Full
|
|
107
|
+
workflow and the graceful-degradation contract are in
|
|
108
|
+
`.groundwork/skills/code-intelligence.md`; when the map or Serena is unavailable,
|
|
109
|
+
navigate with ordinary reads and project search and let the compiler and tests be the
|
|
110
|
+
backstop — the contract is identical, only the means differ.
|
|
111
|
+
- **Read the previous slice's delivery commit** — its message and its diff.
|
|
112
|
+
- **Read every existing file this slice modifies, in full.** For each, hold three
|
|
113
|
+
things: what it does today, what this slice changes, and what must keep working. A
|
|
114
|
+
slice must leave the system working end-to-end — behaviour required for the feature
|
|
115
|
+
to work correctly is a requirement whether or not the decomposition spells it out.
|
|
116
|
+
- **Scan recent git history** for the conventions in play — naming, error handling,
|
|
117
|
+
test placement — so the slice reads like the codebase it lands in.
|
|
118
|
+
- **Verify library specifics just-in-time** when the slice pins behaviour on a
|
|
119
|
+
dependency — current API shape and breaking changes, from the web when training
|
|
120
|
+
knowledge is likely stale.
|
|
121
|
+
|
|
122
|
+
### 2. Open the slice
|
|
123
|
+
|
|
124
|
+
Note the baseline commit (`git rev-parse HEAD`) and return it in the report — it ties
|
|
125
|
+
the slice's diff to the exact code state it was built against, and is the reference
|
|
126
|
+
the driver's review and the integrity check read.
|
|
127
|
+
|
|
128
|
+
### 3. Implement to green (the headline proof)
|
|
129
|
+
|
|
130
|
+
Run the slice's bet-progress tests (`tests/bets/<bet_slug>/test_slice_<n>_*`) — red,
|
|
131
|
+
because the implementation does not exist. Implement until they pass, staying inside
|
|
132
|
+
the design:
|
|
133
|
+
|
|
134
|
+
- Build each interface to the shapes in
|
|
135
|
+
`docs/bets/<bet_slug>/technical-design/03-api-design.md` and the stores in
|
|
136
|
+
`04-data-design.md`.
|
|
137
|
+
- Generate the service's machine-readable contract (OpenAPI/AsyncAPI/proto) from the
|
|
138
|
+
running code rather than hand-writing it.
|
|
139
|
+
- For a cross-service call, derive the client from the consumed service's canonical
|
|
140
|
+
`docs/architecture/api/<service>/` contract. A hand-written request shape or
|
|
141
|
+
side-channel schema is a design violation even when the test passes.
|
|
142
|
+
|
|
143
|
+
**Build the real thing the proof names.** When the slice's Proof of work sets out to
|
|
144
|
+
exercise a real dependency — a live model call, a real queue, an actual external
|
|
145
|
+
service — build against that real dependency. Standing in a light mock where the proof
|
|
146
|
+
meant the real unit makes the suite green while proving nothing the slice set out to
|
|
147
|
+
prove. If the real dependency genuinely cannot be reached in this environment, do not
|
|
148
|
+
quietly substitute a mock and move on — **stop and report it as a blocking concern**
|
|
149
|
+
(below) so the driver decides, rather than letting a hollow green stand.
|
|
150
|
+
|
|
151
|
+
**Scope discipline.** Write only the code required to make the bet-progress tests
|
|
152
|
+
green and satisfy the API and data design. Stay within this slice. Do not refactor
|
|
153
|
+
unrelated subsystems or reach into other slices' work.
|
|
154
|
+
|
|
155
|
+
### 4. Roll out the permanent best-practice tests
|
|
156
|
+
|
|
157
|
+
The headline proof is green; now write the coverage that stays. The bet-progress
|
|
158
|
+
tests prove the slice's capability once and are archived at bet close — the permanent
|
|
159
|
+
best-practice tests are what guard the slice against regression for the life of the
|
|
160
|
+
codebase, and they ship in *this* slice's diff so the review judges them alongside the
|
|
161
|
+
implementation that they are meant to pin.
|
|
162
|
+
|
|
163
|
+
What the slice owes is defined by the stack's testing strategy — the promoted engineer
|
|
164
|
+
skill at `.agents/skills/groundwork-<stack>-engineer/references/testing.md`,
|
|
165
|
+
specifically its **Bet Slice Rollout** section. Read it and roll out what this slice
|
|
166
|
+
earns: the service-perimeter or interface test for each capability the slice
|
|
167
|
+
delivered, unit tests for any genuinely complex logic it introduced, a property-based
|
|
168
|
+
test for any invariant, a critical-path trace assertion where it added an observable
|
|
169
|
+
path (a backend service that emits OpenTelemetry spans), and — for a `graphical-ui`
|
|
170
|
+
slice — component render tests across the states the design system names (default,
|
|
171
|
+
loading, empty, error, long-content) plus registering any new route in
|
|
172
|
+
`tests/system/routes.json`. These live in the service repos and `tests/system/`, never
|
|
173
|
+
in `tests/bets/`. Run them green before reporting.
|
|
174
|
+
|
|
175
|
+
Match the depth to the slice's risk, not a fixed count — the strategy names which tier
|
|
176
|
+
carries each assertion, and a sociable service test that executes a branch without
|
|
177
|
+
asserting on it is a gap even when the suite is green. The independent coverage-auditor
|
|
178
|
+
lens holds this suite against the same strategy, so an under-covered error case or a
|
|
179
|
+
missing trace assertion surfaces in review: write the suite the strategy asks for, not
|
|
180
|
+
the minimum that compiles.
|
|
181
|
+
|
|
182
|
+
### 5. Mechanical self-reconcile (first pass, not the gate)
|
|
183
|
+
|
|
184
|
+
A green suite proves nothing if the approved prose was quietly altered or the code was
|
|
185
|
+
gamed to pass. Run two cheap checks and **report their result** — they are the
|
|
186
|
+
worker's honest first pass, not the authoritative gate (the driver's independent
|
|
187
|
+
review is that):
|
|
188
|
+
|
|
189
|
+
- **Prose integrity.** The approved contract is the decomposition tree and technical
|
|
190
|
+
design.
|
|
191
|
+
`git status --short -- docs/bets/<bet_slug>/decomposition/ docs/bets/<bet_slug>/technical-design/`
|
|
192
|
+
must show no change — the worker never edits that prose. If a proof looks wrong, that
|
|
193
|
+
is a blocking concern, not an edit.
|
|
194
|
+
- **Honest green.** The implementation must satisfy the proof for the right reason,
|
|
195
|
+
against the real product. A return value hardcoded to the test's expected output, an
|
|
196
|
+
input special-cased to the fixture, a `if TEST_MODE`-style branch, a mocked-out unit
|
|
197
|
+
of real work, or a fixture standing in for a real pipeline stage that nothing else
|
|
198
|
+
produces is a defect even though the suite is green — *a weak suite that generated
|
|
199
|
+
code passes is worse than no suite* (`docs/principles/foundations/testing.md`). If a
|
|
200
|
+
fake the slice leans on has no real test behind it, or the proof runs against a test
|
|
201
|
+
target rather than the shipping build, flag it. Surface any of these in the report
|
|
202
|
+
rather than leaving them for the review to find.
|
|
203
|
+
|
|
204
|
+
### 6. Do not commit
|
|
205
|
+
|
|
206
|
+
The worker implements to green, rolls out the permanent tests, and stops. It does
|
|
207
|
+
**not** stage, commit, or close the slice — those are the driver's, after its
|
|
208
|
+
independent review and triage. Leave the working tree with all of the slice's changes
|
|
209
|
+
unstaged — the implementation, the bet-progress tests turned green, and the permanent
|
|
210
|
+
best-practice tests — and return the report.
|
|
211
|
+
|
|
212
|
+
---
|
|
213
|
+
|
|
214
|
+
## The report
|
|
215
|
+
|
|
216
|
+
Return a short structured report and nothing else — no narration of the
|
|
217
|
+
implementation, no replay of files read. Keep it to what the driver needs to review,
|
|
218
|
+
triage, and close the slice:
|
|
219
|
+
|
|
220
|
+
```
|
|
221
|
+
SLICE: <n> <slice-slug> (service: <owner-service>, surface: <core|slug>)
|
|
222
|
+
BASELINE: <git rev-parse HEAD at open>
|
|
223
|
+
SUITE: green | red — <one line: which slice tests pass; if still red, why>
|
|
224
|
+
COVERAGE: <the permanent best-practice tests rolled out, by kind — service/interface,
|
|
225
|
+
unit, property, trace; for graphical-ui, the component states covered. Note any the
|
|
226
|
+
strategy asks for that this slice does not owe, and why.>
|
|
227
|
+
|
|
228
|
+
FILES:
|
|
229
|
+
- added: <path>, ...
|
|
230
|
+
- modified: <path>, ...
|
|
231
|
+
- deleted: <path>, ...
|
|
232
|
+
|
|
233
|
+
NOTES: <one or two sentences for the next slice — a pattern established, a deviation
|
|
234
|
+
taken and why, a struggle worth not repeating>
|
|
235
|
+
|
|
236
|
+
SELF-RECONCILE:
|
|
237
|
+
- prose-integrity: clean | <what diff appeared>
|
|
238
|
+
- honest-green: clean | <any hardcode / special-case / mock-of-real-work, named>
|
|
239
|
+
|
|
240
|
+
BLOCKING CONCERN: none | <the case>
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
Set **BLOCKING CONCERN** when the slice cannot be honestly delivered as specified:
|
|
244
|
+
|
|
245
|
+
- A **Proof of work proof that looks wrong** — it describes a shape the design never
|
|
246
|
+
defined, encodes a misread capability, or demands an outcome no implementation can
|
|
247
|
+
reach. The driver routes this through the Amendment Protocol; the worker never edits
|
|
248
|
+
the approved prose.
|
|
249
|
+
- **Reality contradicting the locked design** — the design committed to something the
|
|
250
|
+
implementation reveals is wrong. The driver routes this through Change Navigation.
|
|
251
|
+
- A **real dependency the proof names cannot be reached here** — so a faithful green
|
|
252
|
+
is impossible without the driver's decision (defer the slice, provision the
|
|
253
|
+
dependency, or amend the proof). Report it; do not substitute a mock and call it
|
|
254
|
+
green.
|
|
255
|
+
|
|
256
|
+
The report is the worker's entire output. Keep it tight: if it runs long, it is
|
|
257
|
+
explaining instead of reporting — cut the explanation.
|