groundwork-method 0.0.1 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +781 -0
- package/LICENSE +21 -0
- package/README.md +44 -29
- package/bin/groundwork.js +1654 -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 +125 -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 +68 -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 +82 -0
- package/src/docs/principles/index.md +23 -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 +118 -0
- package/src/engineer-skills/groundwork-electron-engineer/references/ipc-contracts.md +138 -0
- package/src/engineer-skills/groundwork-electron-engineer/references/packaging-and-updates.md +82 -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 +107 -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 +14 -0
- package/src/engineer-skills/groundwork-flutter-engineer/SKILL.md +108 -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/navigation.md +122 -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/state-management.md +166 -0
- package/src/engineer-skills/groundwork-flutter-engineer/references/testing.md +135 -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 +15 -0
- package/src/engineer-skills/groundwork-go-engineer/SKILL.md +171 -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/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 +139 -0
- package/src/engineer-skills/groundwork-go-engineer/sync-anchor.md +11 -0
- package/src/engineer-skills/groundwork-nextjs-engineer/SKILL.md +107 -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/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/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 +433 -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 +278 -0
- package/src/engineer-skills/groundwork-nextjs-engineer/references/visual-language.md +69 -0
- package/src/engineer-skills/groundwork-nextjs-engineer/sync-anchor.md +9 -0
- package/src/engineer-skills/groundwork-python-engineer/SKILL.md +196 -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/testing.md +177 -0
- package/src/engineer-skills/groundwork-python-engineer/sync-anchor.md +13 -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 +47 -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 +68 -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 +74 -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 +30 -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 +152 -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 +281 -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/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 +227 -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 +142 -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 +129 -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/slice-worker.md +191 -0
- package/src/hidden-skills/groundwork-bet/instructions.md +88 -0
- package/src/hidden-skills/groundwork-bet/templates/bet-progress-test.md +126 -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 +35 -0
- package/src/hidden-skills/groundwork-bet/templates/decomposition/slice.md +35 -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 +198 -0
- package/src/hidden-skills/groundwork-bet/workflows/02-design.md +168 -0
- package/src/hidden-skills/groundwork-bet/workflows/03-decomposition.md +246 -0
- package/src/hidden-skills/groundwork-bet/workflows/04-delivery.md +193 -0
- package/src/hidden-skills/groundwork-bet/workflows/05-validation.md +199 -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 +54 -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 +46 -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,136 @@
|
|
|
1
|
+
# Shared Foundation (Brand Level)
|
|
2
|
+
|
|
3
|
+
A product has one brand — one mood, one personality, one interaction philosophy, one language — no matter how many interface types express it. This flow establishes that brand once. The type tracks (`graphical-ui.md`, `cli.md`, `agentic-protocol.md`) then translate it into each medium: CSS tokens for a screen, ANSI roles for a terminal, protocol semantics for an agent surface. Running the brand conversation per type would ask the user to decide their product's personality twice and invite the two answers to drift; running translation at brand level would produce a spec too abstract to implement. The split keeps each conversation at its right altitude.
|
|
4
|
+
|
|
5
|
+
This file owns the session's spine:
|
|
6
|
+
|
|
7
|
+
1. **Phases 1–4 run once, here.** Each phase pulls the type-specific contributions it needs from the active tracks' `Foundation Contributions` sections — the envelope dimensions, research palettes, and language dimensions that genuinely differ by medium. Phase 3 (structure) is the exception: it is inherently per type, so this flow runs each active track's Phase 3 in turn.
|
|
8
|
+
2. **Phase 5 (translation + guided review) runs once per active type.** Load each active track's Phase 5 and execute it; the track is authoritative for its medium's translation.
|
|
9
|
+
3. **Phase 6 (commit) runs once, here,** after every active type's walkthrough completes.
|
|
10
|
+
|
|
11
|
+
The active types were recorded in `.groundwork/cache/design-system-cache.md` during initialization. With one active type, this flow degrades to the familiar single-track session — the same phases in the same order, with the foundation and the type conversation indistinguishable to the user.
|
|
12
|
+
|
|
13
|
+
Before Phase 1, read each active track's **Default Stance** and **Foundation Contributions** sections in full — they carry the defaults, palettes, and dimensions the phases below draw on.
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Cross-Phase Signal Capture
|
|
18
|
+
|
|
19
|
+
Design conversations routinely surface signals that belong to a different phase — a performance target or startup budget with infrastructure implications, an offline expectation or configuration store that shapes data architecture, a sequencing instinct about which features ship first. As these signals arise during any phase — foundation or track — append them as bullets under the matching section header in `.groundwork/cache/discovery-notes.md`: `## Architecture` for infrastructure or technology opinions, `## Design Details` for async, schema, or contract implications, `## Bets` for feature sequencing, `## Product Brief` for vision-level refinements — then return to the current topic. Capturing them now means the downstream phase finds them instead of asking the user to repeat themselves.
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Phase 1: Non-Functional Requirements (NFR)
|
|
24
|
+
|
|
25
|
+
NFRs define the engineering envelope the design system must operate within. Budgets, baselines, and tolerance policies constrain design choices downstream — a design system that specifies 300ms transitions inside a 50ms interaction budget, rich interactive prompts for a tool that must run headless in CI, or rich diagnostic output inside a 4K-token context budget is internally contradictory.
|
|
26
|
+
|
|
27
|
+
Read `docs/product-brief.md`. For each active type, apply its track's **Envelope** contribution — the dimensions to cover, the type defaults to advocate, and any pre-step the track requires (the CLI track settles its composable/interactive/hybrid paradigm before anything else, because that decision shapes its whole envelope). Using the product brief and those track defaults as your starting position, draft one complete NFR proposal immediately — do not open with questions. The proposal covers the product-wide envelope and each active type's envelope; when two types share a dimension (error tolerance, offline behaviour), state it once at product level and note any per-type divergence. Skip dimensions that are clearly irrelevant to the product.
|
|
28
|
+
|
|
29
|
+
Present the proposed NFRs in full and invite the user to confirm, challenge, or adjust specific items. The proposal is the starting position — accept what the user confirms, revise what they challenge. Once approved, write the confirmed NFRs to the Phase 1 section of `.groundwork/cache/design-system-cache.md` and set its status to `done`. Proceed to Phase 2.
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## Phase 2: Research
|
|
34
|
+
|
|
35
|
+
The inspiration library grounds the design conversation in concrete, existing products. Abstract discussions ("make it premium", "make it precise") produce vague specs. Discussions anchored in specific examples — Linear's command palette rendering from local cache before the server responds, ripgrep streaming results so the first match appears before the search completes, Terraform's plan-apply-verify loop forcing explicit approval before any state mutation — produce actionable design decisions.
|
|
36
|
+
|
|
37
|
+
Drawing on the product context and agreed NFRs from Phase 1, identify the 3–5 core design challenges this product faces (e.g., "async generation with delayed delivery," "streaming dense results into a terminal," "media-heavy reading experience"). For each challenge, find 1–2 leading products that solve it exceptionally well, pulling from each active track's Default Stance palette and any **Research notes** in its Foundation Contributions. Match sources to what was settled in Phase 1 — an interactive CLI needs interactive exemplars; a composable one does not borrow REPL patterns it will never use. Describe the **specific pattern, interaction, or mechanism** worth borrowing — not just the product's reputation. Aim for 5–8 references total; when several types are active, every type's challenges must be represented. Breadth across challenges is more valuable than depth on one.
|
|
38
|
+
|
|
39
|
+
Present this Inspiration Library and ask for the user's reaction. Do they agree? Are there specific paradigms they want to adopt? Do not proceed until they have confirmed the direction.
|
|
40
|
+
|
|
41
|
+
Once approved, write to the Phase 2 section of `.groundwork/cache/design-system-cache.md` and set its status to `done`. Proceed to Phase 3.
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## Phase 3: Structure (Per Type)
|
|
46
|
+
|
|
47
|
+
Structure is the one foundation-stage conversation that cannot run at brand level: a screen product needs an app shell, a terminal product needs a command architecture, a protocol product needs a workspace topology. Each is the structural container every later decision for that type lives inside, and Phase 4's language conversation reacts to it.
|
|
48
|
+
|
|
49
|
+
For each active type, run its track's Phase 3 in full — the track owns the conversation. Record each type's approved structure in its own subsection under Phase 3 in `.groundwork/cache/design-system-cache.md`. When every active type's structure is approved, set the Phase 3 status to `done` and proceed to Phase 4.
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## Phase 4: Brand Language
|
|
54
|
+
|
|
55
|
+
This phase captures the user's taste — the brand's mood, personality, interaction philosophy, and language — as the raw material every type's Phase 5 translation draws from. The user should never need to think about specific values, in any medium. Decide the brand once; let each type express it.
|
|
56
|
+
|
|
57
|
+
Draw on the product brief for identity and audience context, and on the inspiration library from Phase 2 for concrete reference points. Cover the language in three focused clusters — grouping related decisions so the user can react to a coherent stance rather than isolated individual choices. Each cluster pairs the brand-level core below with each active type's dimensions for that cluster, taken from the track's **Type language** contribution, so the brand stance and its per-medium expression are settled in the same conversation. For each cluster, open with a cohesive proposal that reflects what the product brief and inspiration library suggest, then invite the user to react and redirect.
|
|
58
|
+
|
|
59
|
+
**Cluster 1: Identity** — The brand's personality and emotional register: what the product feels like, how it speaks, and what vocabulary conventions carry that identity. Fold in each active type's identity dimensions.
|
|
60
|
+
|
|
61
|
+
**Cluster 2: Feel** — Information density, pacing, and feedback philosophy: how much the product communicates, how physical or restrained it feels, and how it signals work in progress. Fold in each active type's feel dimensions.
|
|
62
|
+
|
|
63
|
+
**Cluster 3: Craft** — Error philosophy and microcopy character: how the product behaves when things go wrong, and how its smallest text units feel. Fold in each active type's craft dimensions.
|
|
64
|
+
|
|
65
|
+
After each cluster proposal, invite the user to react and refine before advancing. Mark each cluster as covered in `.groundwork/cache/design-system-cache.md` as you go. Skip a dimension only when it is clearly irrelevant to the product.
|
|
66
|
+
|
|
67
|
+
### Synthesis Gate
|
|
68
|
+
|
|
69
|
+
Before caching, distill the entire Phase 4 conversation into a structured design direction and present it to the user for confirmation. Scattered conversation notes are not sufficient input for Phase 5 — the synthesis forces the agent to reconcile any contradictions and present a coherent vision.
|
|
70
|
+
|
|
71
|
+
The synthesis stays in the user's language. No CSS values, no ANSI codes, no state schemas. It captures the *decisions* the user made in terms they recognise and can confidently approve or correct.
|
|
72
|
+
|
|
73
|
+
Brand-level fields, always:
|
|
74
|
+
|
|
75
|
+
- **Brand personality**: A short characterisation of the overall feel and voice.
|
|
76
|
+
- **Emotional register**: The mood and temperature the product carries.
|
|
77
|
+
- **Voice and tone**: How the product speaks to its users.
|
|
78
|
+
- **Information density**: How much the product communicates per view or per turn.
|
|
79
|
+
- **Feedback philosophy**: How the product responds to the user working — motion, progress, status.
|
|
80
|
+
- **Error philosophy**: How failures feel and how much the product explains.
|
|
81
|
+
|
|
82
|
+
Plus each active type's expression fields, listed in its track's Type language contribution.
|
|
83
|
+
|
|
84
|
+
Present this as a clear summary the user can scan and approve in one read. Ask them to confirm or correct before proceeding.
|
|
85
|
+
|
|
86
|
+
Once confirmed, write the synthesis to the Phase 4 section of `.groundwork/cache/design-system-cache.md` and set its status to `done`. Proceed to Phase 5.
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## Phase 5: Per-Type Translation & Review
|
|
91
|
+
|
|
92
|
+
For each active type in turn, load its track's Phase 5 and execute it in full — translation (5a), independent review, and guided walkthrough (5b). The track is the single source of truth for its medium's translation mandate, quality standard, and cluster walkthrough. Track each type's walkthrough progress separately in `.groundwork/cache/design-system-cache.md`.
|
|
93
|
+
|
|
94
|
+
### Draft Layout
|
|
95
|
+
|
|
96
|
+
All types share one draft directory, `.groundwork/cache/design-system-draft/`, concatenated by filename at commit.
|
|
97
|
+
|
|
98
|
+
**Single active type:** use the track's file table exactly as written, with one change — the first type-specific section file (`02-…`) opens with the type's section title as its first line (`# Graphical UI`, `# CLI`, or `# Agentic Protocol`) so `docs/surfaces.md` design-track references (`docs/design-system.md § CLI`) resolve. Everything else, including heading levels, is unchanged.
|
|
99
|
+
|
|
100
|
+
**Several active types:**
|
|
101
|
+
|
|
102
|
+
- `00-header.md` and `01-foundation.md` are written once, by the first type's 5a run. `00-header.md` carries the document title and intro as the track describes — no summary section; the Downstream Context (Protocol 5) is written separately to `.groundwork/context/design-system.md` at commit, not concatenated into the spec. `01-foundation.md` carries `# Part 1 — Foundation`: the product-wide constraints from Phase 1 and the brand language direction from Phase 4 in specification form — the shared reference every type section translates, and the anchor for cross-surface consistency.
|
|
103
|
+
- Each type's section files take a decade prefix in run order (`10-`, `20-`, `30-`) with the type slug in the name — e.g. `10-graphical-ui-shell.md`, `20-cli-command-architecture.md` — replacing the track table's `02-`…`07-` prefixes; the section content per file is as the track's table defines, except that each type's envelope-specific constraints open its own section rather than sharing Part 1. The type's first file opens with the type's `#`-level section title, and the track's part headings demote one level beneath it so section boundaries stay unambiguous when the document is read as a whole.
|
|
104
|
+
- The numeric prefixes keep `cat *.md` concatenation in order: header, foundation, then each type's section.
|
|
105
|
+
|
|
106
|
+
When the last active type's walkthrough completes, proceed to Phase 6.
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
## Phase 6: Commit
|
|
111
|
+
|
|
112
|
+
Execute **only** after every active type's Phase 5b walkthrough is complete and the user has explicitly approved each type's specification. Verify every walkthrough checklist in `.groundwork/cache/design-system-cache.md` is marked complete before proceeding.
|
|
113
|
+
|
|
114
|
+
Follow the Phase Lifecycle commit protocol from the Operating Contract:
|
|
115
|
+
|
|
116
|
+
1. **Write the Downstream Context file (Protocol 5).** Apply `groundwork-writer` to write `.groundwork/context/design-system.md` — the four-subsection contract per Protocol 5 of the operating contract: Key Decisions covering the brand foundation and every active type (each track's Commit Contributions section names its key-decision set), Binding Constraints (accessibility floors, performance budgets, fallback chains, machine-readability requirements), Deferred Questions, Out of Scope. This is written to the ephemeral context store, not into `docs/design-system.md` — the assembled spec carries no summary section.
|
|
117
|
+
|
|
118
|
+
**Persist the design references as a technique library.** When a `graphical-ui` type is active, confirm the foundation draft carries a `## Design References` section — and, now that the aesthetic direction is settled, run one **convergent research pass** to build it. The Phase 2 inspiration library was divergent: it explored directions. This pass is convergent: find the named, high-end products that are best-in-class at *this specific* settled aesthetic, and for each extract the concrete techniques at the parameter level — surface treatment (blur radius, tint opacity, border), the elevation stack, motion timing and easing, type and spacing rhythm — never screenshots. Record per product: its name, the specific qualities admired and the technique behind them ("Linear's command palette: ~12px backdrop blur, a 1px top highlight, restrained accent on under 5% of surface"), and the design challenge it answers — naming at least three products. This is a **technique library, not a mood board**: borrow the rigour, never the signature look. It feeds two consumers — the atmosphere and motion tokens (step 3) and the per-surface micro-polish spec at bet design — so a technique admired but never written here evaporates with the rest of the inspiration cache in step 5. The `visual` block's `references` array (step 3) carries the named set machine-readably.
|
|
119
|
+
|
|
120
|
+
2. **Assemble the final spec.** Concatenate the section files into the canonical location: `run_command("cat .groundwork/cache/design-system-draft/*.md > docs/design-system.md")`. The numeric prefixes guarantee the correct order — the glob picks up per-type decades and the CLI track's `06`/`07` files automatically. This is a shell operation, not a model emission — it does not consume output tokens regardless of spec size.
|
|
121
|
+
|
|
122
|
+
3. **Emit brand tokens.** Write `.groundwork/config/brand-tokens.json` following the contract at `.groundwork/skills/groundwork-design-system/templates/brand-tokens.md`: the Tier 1 `identity` block always (every product gets a branded `./dev` CLI), plus one Tier 2 block per active type that defines one — `terminal` from the CLI track, `visual` from the graphical-ui track; the agentic-protocol track contributes no Tier 2 block. Each block carries the *same* values as the corresponding type section just written into `docs/design-system.md` — this is a mechanical projection of approved decisions, not a new conversation. The file lives in persistent config and is not removed by the cache cleanup in the next step.
|
|
123
|
+
|
|
124
|
+
4. **Write the hand-off file.** Copy `.groundwork/skills/templates/handoff.md` to `.groundwork/cache/handoff/design-system.md` and fill in only the sections that have content: rejected directions, deferred design decisions, and user instincts not yet committed — each active track's Commit Contributions section lists what its medium typically leaves behind — plus any other context the architecture phase needs. Omit empty sections.
|
|
125
|
+
|
|
126
|
+
5. **Clean up caches.** Remove the draft directory, the design-system cache, and the consumed previous hand-off: `run_command("rm -rf .groundwork/cache/design-system-draft .groundwork/cache/design-system-cache.md .groundwork/cache/handoff/product-brief.md")`. Cache Isolation (Protocol 7) requires the previous hand-off to be deleted once consumed.
|
|
127
|
+
|
|
128
|
+
6. Apply the Living Documents protocol — scan the conversation for insights that refine any existing `docs/` artifact (e.g. `docs/product-brief.md`). Apply surgical updates and refresh the affected Downstream Context files in `.groundwork/context/` (Protocol 5). Report what changed. If an update **reverses** a prior Key Decision or Binding Constraint (Protocol 2 — e.g. the design system overturns a brief commitment), follow the Reversal Protocol: reconcile the full body of the affected doc, fix dependent docs, write the superseding ADR, and re-invoke `groundwork-review` on each mutated doc before committing.
|
|
129
|
+
|
|
130
|
+
7. Update discovery notes — scan for out-of-phase signals not captured in real time. Remove `## Design System` entries incorporated into `docs/design-system.md` or the hand-off file.
|
|
131
|
+
|
|
132
|
+
8. Confirm that the phase is complete.
|
|
133
|
+
|
|
134
|
+
9. Recommend a fresh context for the next phase — a clean context gives the next skill full working memory.
|
|
135
|
+
|
|
136
|
+
10. Immediately load and execute the `groundwork-orchestrator` skill to show the user what's next. Do not ask the user to invoke it — hand off automatically.
|
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
# Agentic Protocol Track
|
|
2
|
+
|
|
3
|
+
This track applies to products whose primary interface is an agent-to-human or agent-to-agent protocol: skill frameworks, MCP servers, developer methodology tools, agent orchestrators, and any product where the "user interface" is a structured conversation between humans and AI agents.
|
|
4
|
+
|
|
5
|
+
The shared foundation flow (`tracks/_foundation.md`) owns the session spine: it runs the brand-level Phases 1, 2, and 4 once for the whole product, drawing this track's contributions from the Foundation Contributions section below, and it runs this track's Phase 3 and Phase 5 at the right points. Its Cross-Phase Signal Capture rule stays in force throughout every phase of this track.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Default Stance
|
|
10
|
+
|
|
11
|
+
Be fluid. Adapt seamlessly to the user's product positioning and the specific agent ecosystem they target. The agent's role is to match the user's vision — not to impose a rigid protocol style.
|
|
12
|
+
|
|
13
|
+
The default starting position is modern, high-precision protocol design. When the user has no strong preference, advocate for the following defaults — and be ready to explain *why* each one matters:
|
|
14
|
+
|
|
15
|
+
**Technical defaults:**
|
|
16
|
+
- Zero-boilerplate context loading — the agent must reach operational awareness from cold start in under 3 file reads. Every extra file read burns tokens and delays the agent's first useful action.
|
|
17
|
+
- Declarative state management via flat, machine-readable files (JSON, TOML). Agents parse structured data reliably; they hallucinate when reconstructing state from prose.
|
|
18
|
+
- Agent-agnostic design — the protocol must function identically across Claude Code, Gemini, Cursor, Windsurf, and any future agent runtime. Platform-specific features create lock-in that limits adoption.
|
|
19
|
+
- Filesystem as the shared memory layer. No database, no API, no external service required for protocol state — because every external dependency is a failure mode the agent cannot diagnose or recover from.
|
|
20
|
+
- Deterministic phase transitions — every state change must be traceable and reversible. Ambiguous state is the primary cause of agent confusion in multi-phase workflows.
|
|
21
|
+
- Version-controlled everything — every design decision, state transition, and artifact must live in the repo. The repo is the single source of truth; anything outside it is invisible to the agent.
|
|
22
|
+
|
|
23
|
+
**Precision bar** (examples of the premium standard the agent targets):
|
|
24
|
+
- Surgical context injection — the agent receives exactly the information it needs for the current task, nothing more.
|
|
25
|
+
- Contract-first design — interfaces, schemas, and data flows are defined before implementation begins.
|
|
26
|
+
- Proof-of-work verification — system-wide tests, not human code review, are the primary quality signal.
|
|
27
|
+
- Layered fidelity — information flows from abstract (vision) to concrete (implementation) through strict layers.
|
|
28
|
+
- Explicit error postures — every failure mode has a defined recovery path.
|
|
29
|
+
- Human-as-architect — humans own design decisions; agents own execution within those decisions.
|
|
30
|
+
|
|
31
|
+
Draw inspiration from trend-setting systems: Shape Up, Linear Method, OpenAPI, Protocol Buffers, Terraform, LSP, MCP, Unix philosophy.
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Foundation Contributions
|
|
36
|
+
|
|
37
|
+
The shared foundation flow pulls these sections into its brand-level phases.
|
|
38
|
+
|
|
39
|
+
### Envelope (foundation Phase 1)
|
|
40
|
+
|
|
41
|
+
Cover all relevant dimensions of the protocol envelope: agentic efficiency (context budgets, token consciousness, cold-start file-read ceiling), context persistence and resumability, authority model (human-led vs agent-led boundaries), verification and governance, error resilience, interoperability across agent runtimes, auditability and traceability, and security and trust boundaries. Ground each decision in the product brief and apply the track defaults where applicable: zero-boilerplate context loading (under 3 file reads from cold), declarative state in flat machine-readable files, agent-agnostic interfaces, filesystem-as-memory, deterministic phase transitions, version-controlled artifacts.
|
|
42
|
+
|
|
43
|
+
### Research notes (foundation Phase 2)
|
|
44
|
+
|
|
45
|
+
Sources for this type span methodologies, specification systems, developer tools, formal methods, and protocol designs — describe the specific **mechanism** worth borrowing, not the system's reputation.
|
|
46
|
+
|
|
47
|
+
### Type language (foundation Phase 4)
|
|
48
|
+
|
|
49
|
+
Fold these dimensions into the foundation's language clusters. The user should never need to think about specific formatting rules or state schemas:
|
|
50
|
+
|
|
51
|
+
- **Cluster 1: Identity** — Tone and posture, microcopy and phrasing, naming and taxonomy. Propose the agent's voice as a unified stance: where it sits on the terse-to-pedagogical spectrum, how its smallest text units feel, and what vocabulary conventions govern commands, phases, and artifacts.
|
|
52
|
+
- **Cluster 2: Feel** — Information density and the propose-vs-prompt ratio. Propose how much an agent communicates per turn, whether it leads conclusions-first or builds narrative, and where it defaults to proposals vs open questions.
|
|
53
|
+
- **Cluster 3: Craft** — Status semantics, documentation hierarchy, and error communication. Propose how state is signalled, how protocol documents are structured for both humans and agents, and where errors land on the spectrum from silent recovery to loud halts.
|
|
54
|
+
|
|
55
|
+
This type's Synthesis Gate expression fields:
|
|
56
|
+
|
|
57
|
+
- **Propose-vs-prompt ratio**: The default interaction mode.
|
|
58
|
+
- **Status language**: How the protocol signals state.
|
|
59
|
+
- **Naming instinct**: The vocabulary style.
|
|
60
|
+
- **Microcopy tone**: How the smallest units of text feel.
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## Phase 3: Workspace Topology
|
|
65
|
+
|
|
66
|
+
*Runs inside the foundation flow's Phase 3 step — once for this type.*
|
|
67
|
+
|
|
68
|
+
The workspace topology is the structural container everything else lives inside — the filesystem architecture, state management, and discovery surfaces that agents and humans interact with. Getting this wrong means reworking every skill. Getting it right means every subsequent protocol decision has a home.
|
|
69
|
+
|
|
70
|
+
Define the structural skeleton using patterns from the Phase 2 inspiration library. The agent should explore and propose decisions across: filesystem architecture (where config, state, cache, and deliverables live), state management (format, schema, valid transitions), skill and tool discovery (manifests, directory conventions, routing tables), context injection strategy (global vs phase vs task layers), empty and boot states (first run, interrupted, stale), and progressive disclosure (how complexity scales as the project matures).
|
|
71
|
+
|
|
72
|
+
Guide the conversation with leading-edge protocol patterns. Propose the topology based on the inspiration library, then ask the user to react and refine.
|
|
73
|
+
|
|
74
|
+
When a topology decision implies a backend or infrastructure capability — state-store service, registry or routing backend, agent runtime, distribution channel, identity provider — append the implication as a bullet under `## Architecture` in `.groundwork/cache/discovery-notes.md` before continuing the conversation. The architecture phase finds these notes and skips re-deriving what was already decided here.
|
|
75
|
+
|
|
76
|
+
Once approved, write to this type's subsection under Phase 3 in `.groundwork/cache/design-system-cache.md` and set it to `done`. Return to the foundation flow.
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## Phase 5: Expert Translation & Review
|
|
81
|
+
|
|
82
|
+
*The foundation flow runs this phase once per active type, after the brand language direction (foundation Phase 4) is confirmed. The agent translates that direction into concrete protocol specifications — the user never sees a raw schema until the walkthrough.*
|
|
83
|
+
|
|
84
|
+
### 5a: Translation (Agent-Driven, Autonomous)
|
|
85
|
+
|
|
86
|
+
The user provided taste, instinct, and direction across Phases 1–4. The agent now translates that into a rigorous protocol design specification — autonomously.
|
|
87
|
+
|
|
88
|
+
**Output location**: `.groundwork/cache/design-system-draft/` — a directory of per-section files. Each file stays bounded in size, so any later change (review revise, 5b re-flow) touches only the affected files instead of regenerating the whole spec in a single turn. Regenerating the whole spec at once exhausts the per-response output token budget on rich specs; the per-section layout makes that failure structurally impossible. Writing to `docs/design-system.md` is prohibited until Phase 6 (Commit) — on initial generation that file does not exist; do not attempt to read it.
|
|
89
|
+
|
|
90
|
+
**Write each section as a separate file.** Use one `write_file` call per section (the tool creates parent directories automatically):
|
|
91
|
+
|
|
92
|
+
| File | Content |
|
|
93
|
+
|---|---|
|
|
94
|
+
| `00-header.md` | The document title and the "implementation-ready specification" intro paragraph. No summary section — the Downstream Context (Protocol 5) is written separately to `.groundwork/context/design-system.md` at commit, not concatenated into the spec |
|
|
95
|
+
| `01-constraints.md` | Part 1 — context-loading budgets, verification requirements, authority boundaries, error resilience policies, interoperability guarantees |
|
|
96
|
+
| `02-workspace-topology.md` | Part 2 — filesystem architecture, state management, discovery surfaces, context injection strategy, communication posture |
|
|
97
|
+
| `03-foundation.md` | Part 3 Cluster 1 — state architecture, context hierarchy, document architecture |
|
|
98
|
+
| `04-interaction.md` | Part 3 Cluster 2 — interaction semantics, tone & posture specification |
|
|
99
|
+
| `05-surface.md` | Part 3 Cluster 3 — skill & tool anatomy, error & recovery choreography, naming & taxonomy, versioning & evolution |
|
|
100
|
+
|
|
101
|
+
The numeric prefixes determine concatenation order at commit. Each file is a self-contained markdown section — start its top-level heading at H1 (`# Part 1 — Constraints`) or H2 as appropriate so the files compose cleanly when concatenated.
|
|
102
|
+
|
|
103
|
+
This table is the single-active-type layout; the foundation flow's Draft Layout rule governs how it adapts — the type section title (`# Agentic Protocol`) opening the first type-specific file, and, when several types are active, decade-prefixed type-slugged filenames with part headings demoted beneath the type title and `01-foundation.md` carrying the shared Part 1.
|
|
104
|
+
|
|
105
|
+
Compile each section using the approved outputs stored in `.groundwork/cache/design-system-cache.md`. The document combines NFRs from Phase 1 with a comprehensive protocol design system that the agent derives from the interaction language direction captured in Phase 4.
|
|
106
|
+
|
|
107
|
+
Apply the `groundwork-writer` skill to ensure the tone is declarative, assertive, and free of hedging. Structure it to read like a rigorous protocol specification that simultaneously serves as instruction material for any agent runtime.
|
|
108
|
+
|
|
109
|
+
#### The Translation Mandate
|
|
110
|
+
|
|
111
|
+
The user said "collaborative peer" — the agent specifies the exact persona brief, prohibited hedging phrases, and propose-vs-prompt triggers. The user said "conclusions first" — the agent defines the inverted pyramid rule with concrete structural templates. The user said "verb-noun commands" — the agent produces a complete naming convention with casing rules, artifact patterns, and vocabulary definitions. Every high-level preference from Phase 4 must be resolved into concrete, enforceable specifications. If the cached direction is ambiguous, the agent makes the design call — that is the job.
|
|
112
|
+
|
|
113
|
+
Agent runtimes consistently fail to maintain protocol coherence without deeply specified interaction rules. The protocol design system must go beyond naming conventions and tone guidelines — it must prescribe exact state schemas, phase transition rules, error choreography, and a clear taxonomy.
|
|
114
|
+
|
|
115
|
+
#### Quality Standard: Deep vs. Shallow
|
|
116
|
+
|
|
117
|
+
Every section must contain enough detail that a developer implementing this protocol would not need to make any design decisions of their own.
|
|
118
|
+
|
|
119
|
+
**Shallow output (unacceptable):**
|
|
120
|
+
```
|
|
121
|
+
Error Handling:
|
|
122
|
+
- Recoverable errors: retry automatically
|
|
123
|
+
- Blocking errors: ask the user
|
|
124
|
+
- Use clear error messages
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
**Deep output (required standard):**
|
|
128
|
+
```
|
|
129
|
+
Error & Recovery Choreography
|
|
130
|
+
═════════════════════════════
|
|
131
|
+
|
|
132
|
+
Severity Levels
|
|
133
|
+
───────────────
|
|
134
|
+
|
|
135
|
+
Level │ Agent Response │ Human Visibility
|
|
136
|
+
───────────────┼─────────────────────────────┼──────────────────────────
|
|
137
|
+
recoverable │ Self-repair: retry with │ Silent unless retry fails
|
|
138
|
+
│ backoff (1s, 2s, 4s, max 3). │ 3x. Then escalate to
|
|
139
|
+
│ Log attempt to cache. │ blocking.
|
|
140
|
+
blocking │ Halt immediately. Do not │ Full diagnostic:
|
|
141
|
+
│ attempt workaround. │ what → why → next step.
|
|
142
|
+
inconsistent │ Run reconciliation: │ Report divergence and
|
|
143
|
+
│ filesystem wins over state │ resolution taken. Ask
|
|
144
|
+
│ file. Update state to match. │ to confirm if destructive.
|
|
145
|
+
violation │ Hard stop. No override. │ "Contract violation:
|
|
146
|
+
│ No workaround. Log and halt. │ [contract] requires [X],
|
|
147
|
+
│ │ found [Y]. Human-led
|
|
148
|
+
│ │ design revision required."
|
|
149
|
+
|
|
150
|
+
Escalation Ladder
|
|
151
|
+
─────────────────
|
|
152
|
+
1. Self-repair (recoverable only, max 3 attempts)
|
|
153
|
+
2. Diagnostic halt — format: "Blocked: {what}. Cause: {why}.
|
|
154
|
+
Action: {what the human should do}."
|
|
155
|
+
3. If blocked 2x in same phase → suggest the user open a new chat
|
|
156
|
+
with fresh context, referencing the cache state.
|
|
157
|
+
|
|
158
|
+
Halt Message Template
|
|
159
|
+
─────────────────────
|
|
160
|
+
⚠ Blocked: {description of what failed}
|
|
161
|
+
Cause: {why it matters / what triggered it}
|
|
162
|
+
State: {current phase, last successful step}
|
|
163
|
+
Action: {specific next step for the human}
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
The shallow version gives a developer three bullets. The deep version gives them a complete error system with severity classifications, escalation rules, reconciliation algorithms, and message templates. **Every section of the protocol design system must hit this depth.**
|
|
167
|
+
|
|
168
|
+
The same standard applies across the entire specification:
|
|
169
|
+
- **State architecture**: Not just "use JSON" — exact schema with required fields, valid values, type constraints, transition rules, cold-start resolution algorithm, and reconciliation rules when filesystem and state disagree.
|
|
170
|
+
- **Context hierarchy**: Not just "load context in layers" — exact files per layer, load order, context budget rules (max file reads, max tokens), and cache invalidation triggers.
|
|
171
|
+
- **Document architecture**: Not just "use frontmatter" — required sections, heading hierarchy, metadata schema, cross-reference format, inverted pyramid rule, and machine-parsability constraints.
|
|
172
|
+
- **Interaction semantics**: Not just "use status markers" — full status vocabulary table with symbols, exact meanings, and usage rules. Log level definitions. Colour semantics if terminal output is involved. Progress communication rules.
|
|
173
|
+
- **Tone and posture specification**: Not just "be collaborative" — concrete persona brief, prohibited phrase list with required replacements, propose-vs-prompt ratio with triggers, and microcopy templates for confirmations, transitions, errors, and status.
|
|
174
|
+
- **Skill and tool anatomy**: Not just "skills have phases" — standard skill interface, pre-flight checklist, action contract (idempotency, atomicity, rollback), handoff protocol, and post-action validation rules.
|
|
175
|
+
- **Naming and taxonomy**: Not just "use kebab-case" — command naming convention, artifact naming convention, vocabulary boundary definitions with precise term meanings, and the naming self-test.
|
|
176
|
+
- **Versioning and evolution**: Breaking change protocol, backward compatibility guarantees, and changelog format.
|
|
177
|
+
|
|
178
|
+
#### Design System Target Structure
|
|
179
|
+
|
|
180
|
+
**Part 1 — Constraints**: Context-loading budgets, verification requirements, authority boundaries, error resilience policies, interoperability guarantees.
|
|
181
|
+
|
|
182
|
+
**Part 2 — Workspace Topology & Interaction Principles**: Filesystem architecture, state management, discovery surfaces, context injection strategy, communication posture.
|
|
183
|
+
|
|
184
|
+
**Part 3 — Protocol Design System** (each at the depth standard above):
|
|
185
|
+
State architecture · Context hierarchy · Document architecture · Interaction semantics · Tone & posture specification · Skill & tool anatomy · Error & recovery choreography · Naming & taxonomy · Versioning & evolution
|
|
186
|
+
|
|
187
|
+
---
|
|
188
|
+
|
|
189
|
+
Before presenting the draft, run this self-check:
|
|
190
|
+
1. **Does every section contain committed, implementable specifications?** If a section reads like a brief ("use a collaborative tone with clear errors"), the translation is incomplete.
|
|
191
|
+
2. **Does every specification include concrete schemas, templates, or tables?** Prose descriptions without structured examples are insufficient.
|
|
192
|
+
3. **Would a developer implementing this protocol need to make any design decisions?** If yes, the spec is underspecified.
|
|
193
|
+
|
|
194
|
+
### Independent Review (Pre-Walkthrough)
|
|
195
|
+
|
|
196
|
+
The user is about to see this draft in Phase 5b. Before they do, the draft passes through an independent review — `groundwork-review` checks the draft for silent invention, dropped commitments from Phase 4, and contradictions against the upstream Product Brief that the user is unlikely to catch during a walkthrough of state schemas and naming taxonomy tables. The protocol design system constrains every downstream skill and tool; catching these failures here is cheaper than catching them after `docs/design-system.md` becomes the source of truth.
|
|
197
|
+
|
|
198
|
+
1. **Announce** the shift — the agent is moving from translation into an independent review before presenting to the user.
|
|
199
|
+
2. **Assemble the draft for review.** Run `run_command("cat .groundwork/cache/design-system-draft/*.md > .groundwork/cache/design-system-draft.md")` to concatenate the section files into a single document. This is a shell operation, not a model emission — it does not consume output tokens regardless of spec size.
|
|
200
|
+
3. **Invoke the review subagent** (Protocol 9) with `document_path: .groundwork/cache/design-system-draft.md` and `document_type: design-system`. The gate is fail-closed (Protocol 8): proceed only on a parseable `VERDICT: PRESENT`; a review that errors, hangs, or returns no verdict follows Protocol 9's failure path — do not present the draft as reviewed.
|
|
201
|
+
4. **Revise loop.** If the verdict is **REVISE**, apply every 🔴 Critical finding directly to the affected section file(s) under `.groundwork/cache/design-system-draft/` — rewrite only the files the finding implicates. After revisions, re-assemble with `cat` and run the review again. Repeat until the verdict is **PRESENT**. After 3 REVISE verdicts, apply the revise cap defined in Protocol 8.
|
|
202
|
+
5. **Clean up the assembled file.** Once the verdict is PRESENT, run `run_command("rm .groundwork/cache/design-system-draft.md")`. The section files in the draft directory remain the source of truth for Phase 5b and Phase 6.
|
|
203
|
+
6. **Carry advisory findings forward.** When the verdict is PRESENT, hold any 🟡 Advisory findings — they surface to the user during or after Phase 5b so the user can decide whether to act on them.
|
|
204
|
+
|
|
205
|
+
Once the review verdict is PRESENT, proceed to Phase 5b.
|
|
206
|
+
|
|
207
|
+
### 5b: Guided Review (Collaborative)
|
|
208
|
+
|
|
209
|
+
The draft is a proposal. Present it to the user as one — explicitly frame it as what the agent built from their direction.
|
|
210
|
+
|
|
211
|
+
**Do not ask the user to approve the full spec.** Do not present a summary and ask "does this look right?" Instead, walk through the spec in three focused clusters, each earning approval before advancing. When the user wants to push a section deeper — or a section reads thin against the quality standard above — load `.groundwork/skills/groundwork-elicit/instructions.md` and follow it.
|
|
212
|
+
|
|
213
|
+
#### Cluster Walkthrough
|
|
214
|
+
|
|
215
|
+
The cluster names here are deliberately distinct from the Phase 4 language clusters (Identity / Feel / Craft) — Phase 4 grouped *aesthetic decisions* the user owns; Phase 5b walks through *implementation specifics* the agent owns. Distinct names keep both schemes legible when both phases are referenced in the same conversation.
|
|
216
|
+
|
|
217
|
+
**Cluster 1: Foundation** — State architecture, context hierarchy, and document architecture.
|
|
218
|
+
|
|
219
|
+
These are the base primitives every later decision composes from. Present the state schema with required fields and transition rules, the context-injection layers with file ordering and budgets, and the document anatomy with frontmatter and heading hierarchy side by side. Teach the reasoning: why flat machine-readable state, why this load order, how the inverted-pyramid rule keeps documents agent-parseable. Offer alternatives that honour the same direction. Wait for the user's reaction before advancing.
|
|
220
|
+
|
|
221
|
+
**Cluster 2: Interaction** — Interaction semantics and the tone & posture specification.
|
|
222
|
+
|
|
223
|
+
These define how the agent behaves turn to turn. Present the status vocabulary table, the persona brief with prohibited phrases and required replacements, and the propose-vs-prompt trigger rules as a connected system. Teach the trade-offs: terse status markers feel efficient but reduce orientation; pedagogical microcopy builds trust but adds tokens. Justify the specific choices against the Phase 4 direction. Offer alternatives. Wait for the user's reaction.
|
|
224
|
+
|
|
225
|
+
**Cluster 3: Surface** — Everything else: skill and tool anatomy, error and recovery choreography, naming and taxonomy specifications, versioning and evolution.
|
|
226
|
+
|
|
227
|
+
These are engineering craft — decisions the agent should own. Present the full set as a summary table: what was decided, in one line per topic. Call out any judgment calls the user might have an opinion on. Ask if anything feels wrong. Do not walk through each one individually unless the user flags a concern.
|
|
228
|
+
|
|
229
|
+
#### Re-flow Protocol
|
|
230
|
+
|
|
231
|
+
When the user requests a change in any cluster:
|
|
232
|
+
|
|
233
|
+
1. Acknowledge the change and confirm understanding.
|
|
234
|
+
2. Assess downstream impact — state explicitly which section files are affected, including any downstream files whose rules reference the change.
|
|
235
|
+
3. **Rewrite the affected section files.** Each section lives in its own file under `.groundwork/cache/design-system-draft/`. Use `write_file` to replace the implicated files in turn — for example, a change to the state schema rewrites `03-foundation.md`, and may ripple into `05-surface.md` if skill anatomy or error choreography references the state shape. Each `write_file` is bounded by the size of one section, never the whole spec.
|
|
236
|
+
4. Summarise the re-flow: list every section file that changed and what specifically shifted.
|
|
237
|
+
5. If a previously-approved cluster was affected substantively, re-present it before continuing.
|
|
238
|
+
|
|
239
|
+
A protocol design system is a web of interconnected decisions. Changing the state schema affects skill anatomy, which affects error choreography. Propagate the change into every section file it implicates — file-by-file, never as a single full-spec rewrite. Isolated edits that ignore downstream effects create internal contradictions that surface during implementation; the propagation is mandatory, the file-at-a-time mechanic is what makes it safe.
|
|
240
|
+
|
|
241
|
+
#### Walkthrough Progress
|
|
242
|
+
|
|
243
|
+
Track which clusters have been reviewed in `.groundwork/cache/design-system-cache.md` under the Phase 5 checklist. Mark each cluster as complete when the user approves it.
|
|
244
|
+
|
|
245
|
+
#### Completion Gate
|
|
246
|
+
|
|
247
|
+
The walkthrough is complete when all three clusters have been presented and approved. Mark this type's walkthrough done in the cache, then return to the foundation flow — it proceeds to the next active type's translation, or to Phase 6 (Commit) when this is the last.
|
|
248
|
+
|
|
249
|
+
---
|
|
250
|
+
|
|
251
|
+
## Commit Contributions
|
|
252
|
+
|
|
253
|
+
Phase 6 runs once for the whole design system, in the foundation flow. This track contributes:
|
|
254
|
+
|
|
255
|
+
- **Document section:** the `# Agentic Protocol` section files assembled into `docs/design-system.md`.
|
|
256
|
+
- **Brand tokens:** no Tier 2 block — a protocol has no terminal or visual treatment to project. When this is the only active type, the file is Tier 1: `identity` essentials only (`appName`, a short `wordmark` glyph, `primary` and `accent` colours, and a `voice` descriptor), projected mechanically from the product brief and any palette decisions, so scaffolding can brand the project's `./dev` CLI even though this product is a protocol, not a CLI.
|
|
257
|
+
- **Summary key decisions:** state schema shape, context-injection order, document architecture. Binding constraints include token budgets, naming conventions, agent-parseable structure.
|
|
258
|
+
- **Hand-off content:** rejected protocol-anatomy choices, deferred decisions (versioning policy, multi-skill orchestration), user instincts about agent posture or naming not yet committed.
|
|
259
|
+
|
|
260
|
+
## Verification Gate
|
|
261
|
+
|
|
262
|
+
The visual verification loop is medium-general: observe the running artifact in its medium, against intent and reference. For an `agentic-protocol` surface the artifact is the **response payload**, and the same three tiers apply — graphical screenshots are one instance of a wider pattern.
|
|
263
|
+
|
|
264
|
+
- **Capture:** the protocol response to a representative request, captured by the surface's interface tests.
|
|
265
|
+
- **Tier 1 — does it run:** the request succeeds and the response is well-formed against the contract — deterministic, asserted on structure and status.
|
|
266
|
+
- **Tier 2 — does it read coherently:** the delivery agent reads the captured payload and judges it against this track's response anatomy and naming conventions.
|
|
267
|
+
- **Tier 3 — is it excellent:** response shape and ergonomics graded against the protocol spec and the reference protocols this track names — token economy, parseability, error vocabulary.
|
|
268
|
+
|
|
269
|
+
This is the lightest-touch instance and its build is deferred; the framing here keeps the gate concept covering all three interface types so no track is silently graphical-only.
|