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,196 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: reconcile-worker
|
|
3
|
+
description: >
|
|
4
|
+
Advances one update unit — a single upgrade-brief item or one Family Index family — to
|
|
5
|
+
the current GroundWork canonical, in an isolated subagent context, and returns a small
|
|
6
|
+
structured report. Dispatched by the groundwork-update driver
|
|
7
|
+
(groundwork-update/instructions.md) once per unit; the driver supplies the unit capsule,
|
|
8
|
+
the worker reads the canonical and the project's instances, produces the proposed change,
|
|
9
|
+
and only the report flows back — the transform reasoning stays in the worker's context.
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Reconcile Worker
|
|
13
|
+
|
|
14
|
+
## How This Brief Is Invoked
|
|
15
|
+
|
|
16
|
+
This brief runs in an **isolated subagent context** — never in the groundwork-update
|
|
17
|
+
driver's main conversation. The driver dispatches one worker per unit, hands it a tight
|
|
18
|
+
capsule, and receives back only a short structured report. The canonical reads, the
|
|
19
|
+
instance reads, the merge or relocation reasoning — all of it stays in the worker's context
|
|
20
|
+
and dies with it when the worker returns.
|
|
21
|
+
|
|
22
|
+
This isolation is the point. Running the whole catch-up inline piles every family's
|
|
23
|
+
transform reasoning — the canonical templates, the project's instances, the diff judgement —
|
|
24
|
+
into one window; the driver's context grows until it can no longer reason well about the
|
|
25
|
+
update as a whole. Farming each unit to a disposable worker keeps the driver thin enough to
|
|
26
|
+
hold the brief, the Family Index, the pacing, the review gate, and the commits — the work
|
|
27
|
+
only it can do.
|
|
28
|
+
|
|
29
|
+
### Invocation environments
|
|
30
|
+
|
|
31
|
+
| Environment | How the driver dispatches the worker |
|
|
32
|
+
|---|---|
|
|
33
|
+
| Claude Code | Via the `Task` tool with a general-purpose subagent. The prompt loads this file and supplies the capsule below. |
|
|
34
|
+
| 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. |
|
|
35
|
+
|
|
36
|
+
The contract is environment-agnostic — the capsule and the returned report are the same
|
|
37
|
+
regardless of how the isolated execution is realised.
|
|
38
|
+
|
|
39
|
+
### Model
|
|
40
|
+
|
|
41
|
+
The worker may run on a cheaper tier than the driver. Its correctness is not taken on
|
|
42
|
+
trust: the driver gates every mutated canonical doc through an independent review
|
|
43
|
+
(Protocol 9) before it commits the unit. The worker's job is to advance honestly and report
|
|
44
|
+
honestly, not to be the final judge of its own work.
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## Inputs — the unit capsule
|
|
49
|
+
|
|
50
|
+
The driver passes one unit and the small set of pointers that let the worker advance it
|
|
51
|
+
without re-deriving the whole framework:
|
|
52
|
+
|
|
53
|
+
- `unit_kind` — one of:
|
|
54
|
+
- `brief-item:tier2-merge`, `brief-item:tier1-custom`, `brief-item:regenerate` — a single
|
|
55
|
+
item from `.groundwork/cache/upgrade-brief.json`, passed verbatim (its `path`,
|
|
56
|
+
`incoming`, `base_hash`, `options`, `artifact`, … fields).
|
|
57
|
+
- `family:<name>` — one row of the driver's Family Index (e.g. `family:architecture-docs`,
|
|
58
|
+
`family:doc-contracts`, `family:bets`, `family:naming`, `family:surfaces-registry`,
|
|
59
|
+
`family:docs-site`, `family:nextjs-tokens`).
|
|
60
|
+
- **Canonical owner path(s)** — the live current shape to read in full and treat as the
|
|
61
|
+
worked example: the brief item's staged `incoming` payload, or the family's Owner column
|
|
62
|
+
(a skill/template/generator under `.groundwork/skills/` or `.groundwork/config/`). The
|
|
63
|
+
canonical is the source of truth for the target shape; it is never restated in the capsule.
|
|
64
|
+
- **Project instance path(s)** — the exact files/dirs this unit transforms, to read in full
|
|
65
|
+
before changing anything.
|
|
66
|
+
- **Advance approach** — the one-line recipe from the Family Index row (or the item type's
|
|
67
|
+
recipe below): what the legacy signal is and what advancing it means.
|
|
68
|
+
- **Scope boundary** — touch only this unit's files. Do not advance another family, refactor
|
|
69
|
+
unrelated docs, or reach outside the named instances.
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## The work
|
|
74
|
+
|
|
75
|
+
### 1. Read before you change
|
|
76
|
+
|
|
77
|
+
Most reconciliation failures are context failures — the agent relocates a doc and breaks
|
|
78
|
+
the cross-references it never read. Before editing anything:
|
|
79
|
+
|
|
80
|
+
- **Read the canonical owner in full.** It is the target shape. For a generator-owned family,
|
|
81
|
+
read the generator's output contract; for a prose family, read the skill/template that
|
|
82
|
+
defines the current layout.
|
|
83
|
+
- **Read every project instance this unit touches, in full** — and, for a relocation or
|
|
84
|
+
rename, grep the project for live cross-references to the paths you will move.
|
|
85
|
+
- **Detect-first.** Confirm the legacy signal actually holds. If the instances already match
|
|
86
|
+
canonical, make no change and return an `already-current` report — the driver checks the
|
|
87
|
+
unit off untouched.
|
|
88
|
+
|
|
89
|
+
### 2. Advance to canonical — by unit kind
|
|
90
|
+
|
|
91
|
+
Apply the `groundwork-writer` skill whenever you edit a `docs/` document.
|
|
92
|
+
|
|
93
|
+
**`brief-item:tier2-merge`** — a framework-seeded doc the user edited, where the framework
|
|
94
|
+
improved its copy. Reason over both: what did the user change, what did the framework
|
|
95
|
+
improve? Produce a merge that **preserves the user's intent and adopts the framework's
|
|
96
|
+
improvements** — never a mechanical overwrite either way, never conflict markers. Where a
|
|
97
|
+
user edit and a framework improvement **collide on the same passage**, do not pick for the
|
|
98
|
+
user — leave the user's text in place and record the collision under `COLLISIONS/AMBIGUITY`
|
|
99
|
+
for the driver to resolve. `AGENTS.md` deserves extra care: it routes every agent session.
|
|
100
|
+
|
|
101
|
+
**`brief-item:tier1-custom`** — a framework-owned file (typically the `dev` launcher) the
|
|
102
|
+
user customized. Port the customization onto the `incoming` framework version. If the
|
|
103
|
+
customization looks obsolete, do not decide it — apply the framework version and record the
|
|
104
|
+
customization under `COLLISIONS/AMBIGUITY` so the driver confirms with the user.
|
|
105
|
+
|
|
106
|
+
**`brief-item:regenerate`** — generator output whose generator moved. Regenerate and
|
|
107
|
+
reconcile:
|
|
108
|
+
1. Create `.groundwork/cache/upgrade/regen/<artifact>/` with minimal Nx markers
|
|
109
|
+
(`package.json` `{"name":"regen"}`, empty `nx.json`) and copy
|
|
110
|
+
`.groundwork/config/brand-tokens.json` in if the generator themes from it.
|
|
111
|
+
2. Run the generator there with the item's recorded `options`, via
|
|
112
|
+
`.groundwork/config/generators.json` (`npx nx g <generators.json-path>:<generator> …`).
|
|
113
|
+
If `options` is null, reconstruct them from the artifact (e.g. `.dev/dev.config.json`
|
|
114
|
+
carries app name and colours) and record the reconstruction under `COLLISIONS/AMBIGUITY`
|
|
115
|
+
for the driver to confirm.
|
|
116
|
+
3. Diff the regenerated files against the project. Apply framework-section changes; leave
|
|
117
|
+
user-section changes alone (a docker-compose service the user added is theirs; the
|
|
118
|
+
generator's infra block is the framework's). An empty diff is a clean `already-current`.
|
|
119
|
+
|
|
120
|
+
This is also how the **generator-owned families** (`family:docs-site`,
|
|
121
|
+
`family:nextjs-tokens`) advance — regenerate from the recorded generator and reconcile.
|
|
122
|
+
|
|
123
|
+
**`family:<name>`** — advance the project's instances to the canonical the Owner defines,
|
|
124
|
+
following the row's advance approach. The common shapes:
|
|
125
|
+
- **Relocate** (e.g. flat `docs/architecture.md` → nested `docs/architecture/index.md`):
|
|
126
|
+
move the files into the canonical layout, rewrite the affected `meta.json`(s), and carry
|
|
127
|
+
every live cross-reference forward. Leave historical records alone.
|
|
128
|
+
- **Rename + carry refs** (e.g. `docs/ux-design.md` → `docs/design-system.md`): rename, carry
|
|
129
|
+
every live cross-reference forward, remove the orphaned old file.
|
|
130
|
+
- **Reference rewrite** (no file moves — only dangling references): rewrite a stale token in
|
|
131
|
+
place across project-owned docs, scripts, and CI — `npx groundwork ` → `npx groundwork-method `,
|
|
132
|
+
or the relocated hidden-skills prefix `.agents/groundwork/skills/` → `.groundwork/skills/`.
|
|
133
|
+
Touch only the changed token; leave the rest of each line intact. Stay off the user-owned
|
|
134
|
+
`config.toml`, lockfiles, archived/historical records, and any unrelated string that merely
|
|
135
|
+
contains the word. If a reference is genuinely ambiguous (it could name an unrelated thing),
|
|
136
|
+
record it under `COLLISIONS/AMBIGUITY` rather than rewriting blindly.
|
|
137
|
+
- **Graduate + stamp** (doc-contracts): graduate each still-binding Key Decision / Binding
|
|
138
|
+
Constraint out of a `## Summary for Downstream` section into a `docs/architecture/
|
|
139
|
+
decisions/` ADR (or confirm it already lives in the body), strip the section, and stamp
|
|
140
|
+
the drift-tracking frontmatter. Never delete a binding decision without first landing it
|
|
141
|
+
in an ADR or the body — if a decision's disposition is genuinely unclear, record it under
|
|
142
|
+
`COLLISIONS/AMBIGUITY` rather than dropping it.
|
|
143
|
+
- **Restructure** (bets): restructure an in-flight bet to the current prose shape, infer and
|
|
144
|
+
stamp `status`, drop the dead machine-readable artifacts. Leave shipped/archived bets as
|
|
145
|
+
historical record, removing only stray obsolete files.
|
|
146
|
+
- **Bootstrap / register** (surfaces): bootstrap the registry twins or register runners per
|
|
147
|
+
the Owner skill, without touching db/jaeger compose.
|
|
148
|
+
|
|
149
|
+
**Scope discipline.** Make only the changes this unit's advance requires. Compare against the
|
|
150
|
+
live canonical directly; reach for the framework's own git history only to disambiguate a
|
|
151
|
+
genuinely ambiguous transform. Do not advance other families or refactor unrelated subsystems.
|
|
152
|
+
|
|
153
|
+
### 3. Do not commit
|
|
154
|
+
|
|
155
|
+
The worker advances the unit and stops. It does **not** commit, gate its own review, or
|
|
156
|
+
do the driver's bookkeeping — those are the driver's, after its independent review and the
|
|
157
|
+
user pacing only it holds. Leave the working tree with this unit's changes unstaged; return
|
|
158
|
+
the report.
|
|
159
|
+
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
## The report
|
|
163
|
+
|
|
164
|
+
Return a short structured report and nothing else — no narration of the transform, no
|
|
165
|
+
replay of files read. Keep it to what the driver needs to review, gate, and commit:
|
|
166
|
+
|
|
167
|
+
```
|
|
168
|
+
UNIT: <unit_kind> — <one-line what this unit is>
|
|
169
|
+
RESULT: advanced | already-current | blocked
|
|
170
|
+
|
|
171
|
+
FILES:
|
|
172
|
+
- added: <path>, ...
|
|
173
|
+
- modified: <path>, ...
|
|
174
|
+
- deleted: <path>, ...
|
|
175
|
+
- moved: <from> -> <to>, ...
|
|
176
|
+
|
|
177
|
+
REVIEW-NEEDED:
|
|
178
|
+
- <canonical doc path> document_type: <product-brief|design-system|architecture|infrastructure|domain-entity|maturity|...>
|
|
179
|
+
- ... (the canonical docs this unit mutated; none for a non-canonical change)
|
|
180
|
+
|
|
181
|
+
COLLISIONS/AMBIGUITY: none | <each decision the driver must take with the user — a tier2
|
|
182
|
+
passage where a user edit and a framework improvement collide, a customization that may be
|
|
183
|
+
obsolete, reconstructed generator options to confirm, an advance that implies a product
|
|
184
|
+
decision the code does not prove>
|
|
185
|
+
|
|
186
|
+
BLOCKING CONCERN: none | <why this unit cannot be honestly advanced as scoped>
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
Set **BLOCKING CONCERN** when the unit cannot be honestly advanced:
|
|
190
|
+
- The canonical and the instance disagree in a way the advance approach does not cover.
|
|
191
|
+
- Advancing would require a decision the code does not prove (a removal that might be
|
|
192
|
+
temporary, a capability that might be an experiment) — surface it; do not assume it.
|
|
193
|
+
- A generator or dependency the advance needs cannot be run or reached in this environment.
|
|
194
|
+
|
|
195
|
+
The report is the worker's entire output. Keep it tight: if it runs long, it is explaining
|
|
196
|
+
instead of reporting — cut the explanation.
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: groundwork-update
|
|
3
|
+
description: >
|
|
4
|
+
The single call to bring a project up to the current GroundWork framework — files,
|
|
5
|
+
structure, and docs site. Works the residual upgrade-brief items `npx groundwork-method
|
|
6
|
+
update` compiles (merging framework improvements into edited docs, reconciling
|
|
7
|
+
regenerated scaffold output), then reconciles every artifact family against the live
|
|
8
|
+
current canonical shape, advancing legacy structure forward. One unit, one explained
|
|
9
|
+
proposal, one commit. Route here for "upgrade groundwork", "bring this project up to
|
|
10
|
+
date", or whenever `.groundwork/cache/upgrade-brief.json` exists. Distinct from
|
|
11
|
+
groundwork-doc-sync, which syncs project docs to the project's own code.
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# groundwork-update
|
|
15
|
+
|
|
16
|
+
You bring a project to the current framework's canonical shape. The CLI has already done
|
|
17
|
+
everything mechanical — refreshed the skills under `.groundwork/skills/`, replaced the
|
|
18
|
+
framework-owned `./dev` bundle, copied pristine seeded docs, run the scripted CLI
|
|
19
|
+
migrations. Two kinds of work remain, and both need eyes:
|
|
20
|
+
|
|
21
|
+
- **Residual brief items** — the user edited a doc the framework also improved, customized
|
|
22
|
+
the launcher, or runs a generator whose output drifted from its template. The CLI
|
|
23
|
+
compiled these into the **upgrade brief**.
|
|
24
|
+
- **Structural drift** — the project's bets, architecture docs, or contracts were authored
|
|
25
|
+
against an older *shape* of the framework. Nothing tracked that, and nothing needs to:
|
|
26
|
+
you detect it by comparing the project's own artifacts against the framework's current
|
|
27
|
+
canonical — already sitting in `.groundwork/skills/` after the CLI refresh — and advance
|
|
28
|
+
the divergent ones forward.
|
|
29
|
+
|
|
30
|
+
## You are the driver
|
|
31
|
+
|
|
32
|
+
You hold the **thin spine** — the brief, the Family Index, the detection, the user pacing,
|
|
33
|
+
the review gate, and the commits — and you keep that context small so you can reason about
|
|
34
|
+
the update as a whole. You **do not** read canonical templates and rewrite project files in
|
|
35
|
+
your own context. Each unit of work — one brief item, or one family — is advanced by a fresh
|
|
36
|
+
**`reconcile-worker` subagent** (`.groundwork/skills/groundwork-update/briefs/reconcile-worker.md`)
|
|
37
|
+
you dispatch with a tight capsule; it reads the canonical and the project's instances, makes
|
|
38
|
+
the change, and returns a short report, and its transform reasoning dies with its context.
|
|
39
|
+
|
|
40
|
+
Running the whole catch-up inline piles every family's transform — the canonical, the
|
|
41
|
+
instances, the diff judgement — into one window until you can no longer pace, gate, and
|
|
42
|
+
commit well. Farming each unit to a disposable worker is what keeps you thin enough to do
|
|
43
|
+
the work only the driver can do.
|
|
44
|
+
|
|
45
|
+
You leave the project as if it had been set up at the current version all along.
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## Operating Contract
|
|
50
|
+
|
|
51
|
+
The shared operating contract at `.groundwork/skills/operating-contract.md` (contract v1)
|
|
52
|
+
governs this skill in **Maintenance** mode: Protocols 1 (Discovery Notes), 2 (Living
|
|
53
|
+
Documents), and 4 (Pacing) apply, and Protocols 8 and 9 (Review Gate, Review Invocation)
|
|
54
|
+
apply whenever a brief item or a reconcile advance mutates a canonical doc — the driver runs
|
|
55
|
+
that gate, never the worker that authored the change. There is no phase cache beyond the
|
|
56
|
+
brief itself.
|
|
57
|
+
|
|
58
|
+
Run **Phase A first** — it clears the brief the CLI staged — then **Phase B**, which
|
|
59
|
+
reconciles what no brief can see. A run that finds no brief skips straight to Phase B.
|
|
60
|
+
|
|
61
|
+
### The `fan_out` hint
|
|
62
|
+
|
|
63
|
+
The orchestrator passes a `fan_out` hint when it invokes this skill: `parallel` when a
|
|
64
|
+
sub-agent dispatch tool is available in this environment, `sequential` otherwise. Honour it
|
|
65
|
+
rather than probing your own tool set — a runtime that misjudges its capabilities and calls
|
|
66
|
+
a dispatch tool that does not exist breaks the run. If no hint reached you, default to
|
|
67
|
+
`sequential`.
|
|
68
|
+
|
|
69
|
+
- `parallel` — **dispatch** each unit to a `reconcile-worker` subagent, as above. This is
|
|
70
|
+
the context-lean path the driver is built for.
|
|
71
|
+
- `sequential` — no dispatch tool exists, so advance each unit **inline, one at a time**:
|
|
72
|
+
do the worker's read-and-transform yourself for a single unit, gate and commit it, then
|
|
73
|
+
**purge that unit's detail from context** before the next. Slower and heavier, but still
|
|
74
|
+
bounded — never load the whole catch-up into one window at once.
|
|
75
|
+
|
|
76
|
+
Either way the units run **serially, in the order below** — families overlap on files and
|
|
77
|
+
carry ordering dependencies (graduate ADRs before nesting the architecture docs), so they
|
|
78
|
+
are advanced one at a time, not concurrently.
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
## Phase A — Work the brief (framework files)
|
|
83
|
+
|
|
84
|
+
Read `.groundwork/cache/upgrade-brief.json`. If it does not exist, there is no brief-lane
|
|
85
|
+
work; go to Phase B.
|
|
86
|
+
|
|
87
|
+
The brief carries `from` (the version this install was stamped at), `to` (the version it is
|
|
88
|
+
being raised to), and `items[]`, each with a stable `id`, a `type` (`tier2-merge`,
|
|
89
|
+
`tier1-custom`, or `regenerate`), a `status`, and pointers to payloads the CLI staged under
|
|
90
|
+
`.groundwork/cache/upgrade/` — the worker never needs the npm package itself.
|
|
91
|
+
|
|
92
|
+
Open the session with the shape of the work: the version jump and a one-line list of pending
|
|
93
|
+
items. Then walk the items **top to bottom** — the CLI ordered them. For each, run the
|
|
94
|
+
driver loop:
|
|
95
|
+
|
|
96
|
+
1. **Propose.** Explain what this item will change and why in two or three sentences. Never
|
|
97
|
+
batch approvals across items.
|
|
98
|
+
2. **Dispatch the worker.** Hand a `reconcile-worker` the item verbatim as the capsule —
|
|
99
|
+
`unit_kind: brief-item:<type>`, the staged `incoming`/`options`/`base_hash` pointers, and
|
|
100
|
+
the project path it touches. The worker produces the merged / ported / regenerated change
|
|
101
|
+
and returns its report. (Under `sequential`, do the worker's recipe inline — the item-type
|
|
102
|
+
recipes live in the worker brief's "the work" section; do not duplicate them here.)
|
|
103
|
+
3. **Resolve what the worker flagged.** Any `COLLISIONS/AMBIGUITY` the report raises — a
|
|
104
|
+
passage where a user edit and a framework improvement collide, a customization that may be
|
|
105
|
+
obsolete, reconstructed generator options — is a **user** decision: surface it and let the
|
|
106
|
+
user pick before committing. A `BLOCKING CONCERN` stops the item; route it as the report
|
|
107
|
+
describes.
|
|
108
|
+
4. **Gate.** For every doc named under `REVIEW-NEEDED`, run the review subagent (Protocol 9)
|
|
109
|
+
with the matching `document_type`. Proceed only on a parseable `VERDICT: PRESENT`; the gate
|
|
110
|
+
is fail-closed. On `REVISE`, apply the 🔴 findings and re-invoke, to the 3-revise cap.
|
|
111
|
+
5. **Commit.** One item, one commit, referencing the item id —
|
|
112
|
+
`chore(groundwork): <what changed> (<id>)`. The worker left its changes unstaged; the
|
|
113
|
+
driver stages and commits them. Nothing outside the item's scope goes into its commit.
|
|
114
|
+
6. **Record completion** (bookkeeping contract below) before moving on.
|
|
115
|
+
|
|
116
|
+
Stop at any point the user asks; the brief survives across sessions and `update` re-runs
|
|
117
|
+
merge into it without duplicating items.
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
## Phase B — Reconcile to the current canonical (structure)
|
|
122
|
+
|
|
123
|
+
The brief only knows about files the framework seeds or generates. It cannot see that a
|
|
124
|
+
project's *structures* — how its bets are laid out, where its architecture docs live, what
|
|
125
|
+
its published docs may contain — were authored against an older shape. There is no change
|
|
126
|
+
log to replay and none is needed: the framework now sitting in `.groundwork/skills/` **is**
|
|
127
|
+
the definition of the current shape, and it cannot drift, because it is the source. So you
|
|
128
|
+
reconcile the project to it.
|
|
129
|
+
|
|
130
|
+
**Detect in the driver; advance in a worker.** For each family in the **Family Index** below:
|
|
131
|
+
|
|
132
|
+
1. **Detect cheaply, yourself.** The legacy signal is a structural check — `ls`/`grep`-level
|
|
133
|
+
(is there a flat `docs/architecture.md`? a `## Summary for Downstream` section? a
|
|
134
|
+
`pitch.md` without `status`? no `app/brand.css`?). This is cheap; keep it in the driver so
|
|
135
|
+
you only spin a worker for a family that has actually drifted. A family already matching
|
|
136
|
+
canonical is checked off untouched — and leaves no ledger entry, because the next run
|
|
137
|
+
re-derives the same answer from the artifacts. Detect-first *is* the bookkeeping.
|
|
138
|
+
2. **Propose.** One family, one explained proposal. Pause where an advance would imply a
|
|
139
|
+
product decision the code does not prove — a removal that might be temporary, a capability
|
|
140
|
+
that might be an experiment — and surface it rather than assume it.
|
|
141
|
+
3. **Dispatch the worker.** Hand a `reconcile-worker` the capsule: `unit_kind: family:<name>`,
|
|
142
|
+
the **Owner** column path(s) as the canonical to read, the project instance paths it found,
|
|
143
|
+
and the row's advance approach. The worker reads canonical + instances *in its own
|
|
144
|
+
context*, advances them, and returns its report. (Under `sequential`, do the advance inline
|
|
145
|
+
for this one family, then purge the detail.)
|
|
146
|
+
4. **Resolve, gate, commit.** Resolve any `COLLISIONS/AMBIGUITY` with the user. Run the review
|
|
147
|
+
subagent (Protocol 9) on every `REVIEW-NEEDED` canonical doc with its `document_type`,
|
|
148
|
+
fail-closed, to the 3-revise cap. Then commit — one family, one commit
|
|
149
|
+
(`chore(groundwork): advance <family> to current shape`); the worker left its changes
|
|
150
|
+
unstaged.
|
|
151
|
+
|
|
152
|
+
### Family Index
|
|
153
|
+
|
|
154
|
+
The artifact families that drift as the framework evolves. Each row is a *pointer to the
|
|
155
|
+
owner* (the canonical shape — the worker reads it there, it is never duplicated here), the
|
|
156
|
+
*legacy signal* that flags an old instance, and the *advance* that carries it forward. This
|
|
157
|
+
index is ownership, not change history: it grows only when a genuinely new family appears,
|
|
158
|
+
not on every change. When a structure changes again, its owning skill changes (as it must)
|
|
159
|
+
and this pass picks the drift up for free.
|
|
160
|
+
|
|
161
|
+
| Family | Owner — current canonical | Legacy signal → advance |
|
|
162
|
+
|---|---|---|
|
|
163
|
+
| **Bets** | `.groundwork/skills/groundwork-bet/` workflows `03-decomposition.md` + `04-delivery.md` and its templates | A bet under `docs/bets/<slug>/` carrying `decomposition.json`, `decomposition.md`, a `contracts/` dir, or a `test-manifest.json`; or a `pitch.md` missing `status` frontmatter → restructure to the prose `decomposition/` tree, infer and stamp `status`, drop the dead machine-readable artifacts (the suite + git are the record), take the approval baseline from the git tag `bet/<slug>/approved`. Restructure in-flight bets; leave shipped/archived ones as historical record, removing only stray obsolete files. |
|
|
164
|
+
| **Architecture docs** | The nested `docs/architecture/` layout the `groundwork-architecture` skill builds + its `meta.json` ordering | Flat architecture docs at the `docs/` root (`docs/architecture.md`, `docs/infrastructure.md`, `docs/domain/`, `docs/services/`, `docs/api/`, `docs/decisions/`) → relocate under `docs/architecture/` (`architecture.md` → `index.md`), rewrite `docs/meta.json` and seed `docs/architecture/meta.json`, carry every live cross-reference forward. Leave historical records alone. |
|
|
165
|
+
| **Doc contracts** | `.groundwork/skills/operating-contract.md` + the `groundwork-writer` skill | A published `docs/*.md` (outside `docs/bets/`) carrying a `## Summary for Downstream` section, or a code-coupled doc missing `last_reviewed` / `source_of_truth` frontmatter → graduate each still-binding Key Decision / Binding Constraint into a `docs/architecture/decisions/` ADR (or confirm it already lives in the body), strip the section, and stamp the drift-tracking frontmatter so `groundwork-check` can see the doc. |
|
|
166
|
+
| **Naming** | The `groundwork-design-system` skill; the structural-design principle (`code-structure`); the published package name `groundwork-method`; the current install layout (hidden methodology skills live at `.groundwork/skills/`) | `docs/ux-design.md` or a `hexagonal-architecture.md` present → rename to `docs/design-system.md` / `code-structure.md` and carry every live cross-reference forward; remove the orphaned old file. A project-owned script, CI step, or doc invoking `npx groundwork ` (trailing space + subcommand) → rewrite to `npx groundwork-method ` — flags and arguments unchanged, lockfiles and any unrelated tool that merely contains the word untouched. A project-owned doc, script, or CI step referencing the relocated hidden-skills path `.agents/groundwork/skills/` → rewrite the prefix to `.groundwork/skills/`, the rest of the path unchanged — the move is real and these references dangle. Leave the user-owned `config.toml` (never written) and historical records alone. |
|
|
167
|
+
| **Surfaces registry** | `.groundwork/skills/templates/surfaces.md` (its `version` field) + the `groundwork-surface-activation` skill | No `docs/surfaces.md` / `.groundwork/surfaces.json` on a multi-surface product → bootstrap the registry and capability ledger via `groundwork-surface-activation`. A runner-less `dev.config.json` whose surfaces/sidecars are invisible to `./dev` → register them as runners, without touching the db/jaeger compose. |
|
|
168
|
+
| **Docs site** | The `docs-site` generator (`.groundwork/config/generators.json`) | A docs site behind the current generator — no `app/brand.css`, unordered nav, unrendered `mermaid`, a redirect instead of a landing page → for a generator-produced site, **regenerate** through the worker's `regenerate` recipe with its recorded options; for a hand-built site, refactor in place to match the generator's output (brand projection, the mermaid remark transform, `docs/meta.json` ordering, the two-audience landing hero). Keep the unbranded fallback intact: a project with no `brand-tokens.json` stays on the stock theme. |
|
|
169
|
+
| **Next.js token layer** | The Next.js app generator (`.groundwork/config/generators.json`) | A Next.js app with a hardcoded `globals.css` and no per-app `brand.css` / token-conformance gate → regenerate the token layer from `brand-tokens.json` via the worker's `regenerate` recipe, reconcile any hand-edited `globals.css`, and add the conformance test. |
|
|
170
|
+
|
|
171
|
+
Generator-owned families (**Docs site**, **Next.js token layer**) advance through the
|
|
172
|
+
worker's `regenerate` recipe — the index names them so one framing covers every family, and
|
|
173
|
+
does not duplicate the generator's reconcile steps. The prose families advance through the
|
|
174
|
+
worker's relocate / rename / graduate / restructure recipes.
|
|
175
|
+
|
|
176
|
+
---
|
|
177
|
+
|
|
178
|
+
## Bookkeeping — Phase A items, exact, every item
|
|
179
|
+
|
|
180
|
+
This contract is what keeps `update`, `check`, and future sessions honest about brief-lane
|
|
181
|
+
work. (Phase B needs none — detect-first re-derives a family's state from its artifacts
|
|
182
|
+
every run.) The driver records it as part of each item's commit, reading the worker's `FILES`
|
|
183
|
+
report for what landed. After each brief item is committed (or checked off as done / n-a):
|
|
184
|
+
|
|
185
|
+
- **Brief:** set the item's `status` to `"done"` in `.groundwork/cache/upgrade-brief.json`.
|
|
186
|
+
- **Manifest** (`tier2-merge` and `tier1-custom` items): in
|
|
187
|
+
`.groundwork/config/manifest.json`, set the file's entry to the merged reality — `hash` =
|
|
188
|
+
SHA-256 of the file now on disk, `base` = SHA-256 of the `incoming` package content the
|
|
189
|
+
worker merged against, `version` = the brief's `to`. (Compute with `shasum -a 256 <file>`.)
|
|
190
|
+
This is what stops the same merge being queued forever.
|
|
191
|
+
- **Manifest** (`regenerate` items): set `generated[<artifact>].version` to the brief's
|
|
192
|
+
`to`, and record the `options` used if the entry had none.
|
|
193
|
+
|
|
194
|
+
Include the bookkeeping edits in the item's commit.
|
|
195
|
+
|
|
196
|
+
When every brief item is done, delete the brief and the staged payloads
|
|
197
|
+
(`.groundwork/cache/upgrade-brief.json`, `.groundwork/cache/upgrade/`) — cache lifecycle
|
|
198
|
+
rules — in a final tidy commit. Then close by naming the version the project now stands at
|
|
199
|
+
and confirming Phase B is reconciled, and suggest `npx groundwork-method check` as the
|
|
200
|
+
proof.
|