@cubis/foundry 0.3.82 → 0.3.83
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/README.md +25 -9
- package/dist/cli/core.js +631 -476
- package/dist/cli/core.js.map +1 -1
- package/package.json +1 -1
- package/src/cli/core.ts +714 -609
- package/workflows/skills/_schema/platform-notes/antigravity.md +8 -5
- package/workflows/skills/_schema/platform-notes/claude.md +7 -0
- package/workflows/skills/_schema/platform-notes/codex.md +9 -2
- package/workflows/skills/_schema/platform-notes/copilot.md +7 -3
- package/workflows/skills/_schema/platform-notes/gemini.md +8 -4
- package/workflows/workflows/agent-environment-setup/generated/route-manifest.json +339 -231
- package/workflows/workflows/agent-environment-setup/manifest.json +142 -250
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/commands/accessibility.toml +69 -4
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/commands/agent-backend-specialist.toml +86 -0
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/commands/agent-code-archaeologist.toml +67 -0
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/commands/agent-database-architect.toml +79 -0
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/commands/agent-debugger.toml +76 -0
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/commands/agent-devops-engineer.toml +74 -0
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/commands/agent-documentation-writer.toml +65 -0
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/commands/agent-frontend-specialist.toml +76 -0
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/commands/agent-game-developer.toml +52 -0
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/commands/agent-mobile-developer.toml +76 -0
- package/workflows/workflows/agent-environment-setup/platforms/{codex/agents/orchestrator.md → antigravity/commands/agent-orchestrator.toml} +26 -23
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/commands/agent-penetration-tester.toml +70 -0
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/commands/agent-performance-optimizer.toml +69 -0
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/commands/agent-product-manager.toml +56 -0
- package/workflows/workflows/agent-environment-setup/platforms/{codex/agents/project-planner.md → antigravity/commands/agent-project-planner.toml} +19 -16
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/commands/agent-qa-automation-engineer.toml +63 -0
- package/workflows/workflows/agent-environment-setup/platforms/{codex/agents/researcher.md → antigravity/commands/agent-researcher.toml} +22 -29
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/commands/agent-security-auditor.toml +73 -0
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/commands/agent-seo-specialist.toml +52 -0
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/commands/agent-sre-engineer.toml +74 -0
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/commands/agent-test-engineer.toml +71 -0
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/commands/agent-validator.toml +76 -0
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/commands/agent-vercel-expert.toml +59 -0
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/commands/architecture.toml +120 -5
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/commands/backend.toml +71 -4
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/commands/create.toml +68 -4
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/commands/database.toml +67 -4
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/commands/debug.toml +63 -4
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/commands/devops.toml +64 -4
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/commands/implement-track.toml +71 -4
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/commands/migrate.toml +70 -4
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/commands/mobile.toml +71 -4
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/commands/onboard.toml +65 -4
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/commands/orchestrate.toml +73 -4
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/commands/plan.toml +79 -4
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/commands/refactor.toml +67 -4
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/commands/release.toml +70 -4
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/commands/review.toml +66 -4
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/commands/security.toml +69 -4
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/commands/spec.toml +71 -4
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/commands/test.toml +66 -4
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/commands/vercel.toml +67 -4
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/rules/GEMINI.md +12 -14
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/api-design/SKILL.md +8 -5
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/architecture-doc/SKILL.md +8 -5
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/ci-cd-pipeline/SKILL.md +8 -5
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/code-review/SKILL.md +8 -5
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/csharp-best-practices/SKILL.md +8 -5
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/database-design/SKILL.md +8 -5
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/deep-research/SKILL.md +8 -5
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/django-drf/SKILL.md +8 -5
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/docker-compose-dev/SKILL.md +8 -5
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/drizzle-orm/SKILL.md +8 -5
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/electron-qa/SKILL.md +8 -5
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/expo-app/SKILL.md +8 -5
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/express-nodejs/SKILL.md +8 -5
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/fastapi/SKILL.md +8 -5
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/frontend-design/SKILL.md +8 -5
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/gin-golang/SKILL.md +8 -5
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/git-workflow/SKILL.md +8 -5
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/go-fiber/SKILL.md +8 -5
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/golang-best-practices/SKILL.md +8 -5
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/google-workspace/SKILL.md +8 -5
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/huggingface-ml/SKILL.md +8 -5
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/integration-testing/SKILL.md +8 -5
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/java-best-practices/SKILL.md +8 -5
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/javascript-best-practices/SKILL.md +8 -5
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/kaizen-iteration/SKILL.md +8 -5
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/kotlin-best-practices/SKILL.md +8 -5
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/kubernetes-deploy/SKILL.md +8 -5
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/laravel/SKILL.md +8 -5
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/llm-eval/SKILL.md +8 -5
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/mcp-server-builder/SKILL.md +8 -5
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/microservices-design/SKILL.md +8 -5
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/nestjs/SKILL.md +8 -5
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/nextjs/SKILL.md +8 -5
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/observability/SKILL.md +8 -5
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/owasp-security-review/SKILL.md +8 -5
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/pentest-skill/SKILL.md +8 -5
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/performance-testing/SKILL.md +8 -5
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/php-best-practices/SKILL.md +8 -5
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/playwright-interactive/SKILL.md +8 -5
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/playwright-persistent-browser/SKILL.md +8 -5
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/prisma/SKILL.md +8 -5
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/prompt-engineering/SKILL.md +8 -5
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/python-best-practices/SKILL.md +8 -5
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/rag-patterns/SKILL.md +8 -5
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/react/SKILL.md +8 -5
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/react-native/SKILL.md +8 -5
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/react-native-callstack/SKILL.md +8 -5
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/receiving-code-review/SKILL.md +8 -5
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/remix/SKILL.md +8 -5
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/requesting-code-review/SKILL.md +8 -5
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/rust-best-practices/SKILL.md +8 -5
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/sadd/SKILL.md +8 -5
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/sanitize-pii/SKILL.md +8 -5
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/secret-management/SKILL.md +8 -5
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/skill-creator/SKILL.md +8 -5
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/spec-driven-delivery/SKILL.md +8 -5
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/spring-boot/SKILL.md +8 -5
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/sqlalchemy/SKILL.md +8 -5
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/stitch/SKILL.md +8 -5
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/stripe-integration/SKILL.md +8 -5
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/svelte-sveltekit/SKILL.md +8 -5
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/swift-best-practices/SKILL.md +8 -5
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/system-design/SKILL.md +8 -5
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/systematic-debugging/SKILL.md +8 -5
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/t3-stack/SKILL.md +8 -5
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/tech-doc/SKILL.md +8 -5
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/typescript-best-practices/SKILL.md +8 -5
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/unit-testing/SKILL.md +8 -5
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/vibesec/SKILL.md +8 -5
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/skills/vuejs/SKILL.md +8 -5
- package/workflows/workflows/agent-environment-setup/platforms/claude/{workflows/accessibility.md → generated-skills/accessibility/SKILL.md} +16 -17
- package/workflows/workflows/agent-environment-setup/platforms/claude/{workflows/architecture.md → generated-skills/architecture/SKILL.md} +44 -25
- package/workflows/workflows/agent-environment-setup/platforms/{copilot/workflows/backend.md → claude/generated-skills/backend/SKILL.md} +16 -24
- package/workflows/workflows/agent-environment-setup/platforms/{copilot/workflows/create.md → claude/generated-skills/create/SKILL.md} +13 -6
- package/workflows/workflows/agent-environment-setup/platforms/claude/{workflows/database.md → generated-skills/database/SKILL.md} +16 -9
- package/workflows/workflows/agent-environment-setup/platforms/{copilot/workflows/debug.md → claude/generated-skills/debug/SKILL.md} +16 -9
- package/workflows/workflows/agent-environment-setup/platforms/{copilot/workflows/devops.md → claude/generated-skills/devops/SKILL.md} +20 -27
- package/workflows/workflows/agent-environment-setup/platforms/{copilot/workflows/implement-track.md → claude/generated-skills/implement-track/SKILL.md} +13 -6
- package/workflows/workflows/agent-environment-setup/platforms/claude/{workflows/migrate.md → generated-skills/migrate/SKILL.md} +16 -17
- package/workflows/workflows/agent-environment-setup/platforms/{copilot/workflows/mobile.md → claude/generated-skills/mobile/SKILL.md} +17 -10
- package/workflows/workflows/agent-environment-setup/platforms/{copilot/workflows/onboard.md → claude/generated-skills/onboard/SKILL.md} +14 -14
- package/workflows/workflows/agent-environment-setup/platforms/{copilot/workflows/orchestrate.md → claude/generated-skills/orchestrate/SKILL.md} +13 -6
- package/workflows/workflows/agent-environment-setup/platforms/{copilot/workflows/plan.md → claude/generated-skills/plan/SKILL.md} +12 -16
- package/workflows/workflows/agent-environment-setup/platforms/{copilot/workflows/refactor.md → claude/generated-skills/refactor/SKILL.md} +16 -9
- package/workflows/workflows/agent-environment-setup/platforms/{copilot/workflows/release.md → claude/generated-skills/release/SKILL.md} +18 -11
- package/workflows/workflows/agent-environment-setup/platforms/claude/{workflows/review.md → generated-skills/review/SKILL.md} +16 -9
- package/workflows/workflows/agent-environment-setup/platforms/claude/{workflows/security.md → generated-skills/security/SKILL.md} +16 -9
- package/workflows/workflows/agent-environment-setup/platforms/claude/{workflows/spec.md → generated-skills/spec/SKILL.md} +11 -14
- package/workflows/workflows/agent-environment-setup/platforms/claude/{workflows/test.md → generated-skills/test/SKILL.md} +16 -9
- package/workflows/workflows/agent-environment-setup/platforms/{copilot/workflows/vercel.md → claude/generated-skills/vercel/SKILL.md} +18 -20
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/api-design/SKILL.md +7 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/architecture-doc/SKILL.md +7 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/ci-cd-pipeline/SKILL.md +7 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/code-review/SKILL.md +7 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/csharp-best-practices/SKILL.md +7 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/database-design/SKILL.md +7 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/deep-research/SKILL.md +7 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/django-drf/SKILL.md +7 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/docker-compose-dev/SKILL.md +7 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/drizzle-orm/SKILL.md +7 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/electron-qa/SKILL.md +7 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/expo-app/SKILL.md +7 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/express-nodejs/SKILL.md +7 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/fastapi/SKILL.md +7 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/frontend-design/SKILL.md +7 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/gin-golang/SKILL.md +7 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/git-workflow/SKILL.md +7 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/go-fiber/SKILL.md +7 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/golang-best-practices/SKILL.md +7 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/google-workspace/SKILL.md +7 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/huggingface-ml/SKILL.md +7 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/integration-testing/SKILL.md +7 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/java-best-practices/SKILL.md +7 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/javascript-best-practices/SKILL.md +7 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/kaizen-iteration/SKILL.md +7 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/kotlin-best-practices/SKILL.md +7 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/kubernetes-deploy/SKILL.md +7 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/laravel/SKILL.md +7 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/llm-eval/SKILL.md +7 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/mcp-server-builder/SKILL.md +7 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/microservices-design/SKILL.md +7 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/nestjs/SKILL.md +7 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/nextjs/SKILL.md +7 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/observability/SKILL.md +7 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/owasp-security-review/SKILL.md +7 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/pentest-skill/SKILL.md +7 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/performance-testing/SKILL.md +7 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/php-best-practices/SKILL.md +7 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/playwright-interactive/SKILL.md +7 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/playwright-persistent-browser/SKILL.md +7 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/prisma/SKILL.md +7 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/prompt-engineering/SKILL.md +7 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/python-best-practices/SKILL.md +7 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/rag-patterns/SKILL.md +7 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/react/SKILL.md +7 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/react-native/SKILL.md +7 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/react-native-callstack/SKILL.md +7 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/receiving-code-review/SKILL.md +7 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/remix/SKILL.md +7 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/requesting-code-review/SKILL.md +7 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/rust-best-practices/SKILL.md +7 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/sadd/SKILL.md +7 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/sanitize-pii/SKILL.md +7 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/secret-management/SKILL.md +7 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/skill-creator/SKILL.md +7 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/spec-driven-delivery/SKILL.md +7 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/spring-boot/SKILL.md +7 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/sqlalchemy/SKILL.md +7 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/stitch/SKILL.md +7 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/stripe-integration/SKILL.md +7 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/svelte-sveltekit/SKILL.md +7 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/swift-best-practices/SKILL.md +7 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/system-design/SKILL.md +7 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/systematic-debugging/SKILL.md +7 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/t3-stack/SKILL.md +7 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/tech-doc/SKILL.md +7 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/typescript-best-practices/SKILL.md +7 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/unit-testing/SKILL.md +7 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/vibesec/SKILL.md +7 -0
- package/workflows/workflows/agent-environment-setup/platforms/claude/skills/vuejs/SKILL.md +7 -0
- package/workflows/workflows/agent-environment-setup/platforms/{antigravity/agents/backend-specialist.md → codex/agents/backend-specialist.toml} +4 -16
- package/workflows/workflows/agent-environment-setup/platforms/{antigravity/agents/code-archaeologist.md → codex/agents/code-archaeologist.toml} +4 -31
- package/workflows/workflows/agent-environment-setup/platforms/{antigravity/agents/database-architect.md → codex/agents/database-architect.toml} +4 -16
- package/workflows/workflows/agent-environment-setup/platforms/{antigravity/agents/debugger.md → codex/agents/debugger.toml} +4 -17
- package/workflows/workflows/agent-environment-setup/platforms/{antigravity/agents/devops-engineer.md → codex/agents/devops-engineer.toml} +4 -16
- package/workflows/workflows/agent-environment-setup/platforms/{antigravity/agents/documentation-writer.md → codex/agents/documentation-writer.toml} +4 -14
- package/workflows/workflows/agent-environment-setup/platforms/{antigravity/agents/frontend-specialist.md → codex/agents/frontend-specialist.toml} +4 -34
- package/workflows/workflows/agent-environment-setup/platforms/{antigravity/agents/game-developer.md → codex/agents/game-developer.toml} +4 -11
- package/workflows/workflows/agent-environment-setup/platforms/{antigravity/agents/mobile-developer.md → codex/agents/mobile-developer.toml} +4 -16
- package/workflows/workflows/agent-environment-setup/platforms/{antigravity/agents/orchestrator.md → codex/agents/orchestrator.toml} +4 -18
- package/workflows/workflows/agent-environment-setup/platforms/{antigravity/agents/penetration-tester.md → codex/agents/penetration-tester.toml} +4 -32
- package/workflows/workflows/agent-environment-setup/platforms/{antigravity/agents/performance-optimizer.md → codex/agents/performance-optimizer.toml} +4 -14
- package/workflows/workflows/agent-environment-setup/platforms/{antigravity/agents/product-manager.md → codex/agents/product-manager.toml} +4 -26
- package/workflows/workflows/agent-environment-setup/platforms/{antigravity/agents/project-planner.md → codex/agents/project-planner.toml} +4 -18
- package/workflows/workflows/agent-environment-setup/platforms/{antigravity/agents/qa-automation-engineer.md → codex/agents/qa-automation-engineer.toml} +4 -26
- package/workflows/workflows/agent-environment-setup/platforms/{antigravity/agents/researcher.md → codex/agents/researcher.toml} +4 -28
- package/workflows/workflows/agent-environment-setup/platforms/{antigravity/agents/security-auditor.md → codex/agents/security-auditor.toml} +4 -42
- package/workflows/workflows/agent-environment-setup/platforms/{antigravity/agents/seo-specialist.md → codex/agents/seo-specialist.toml} +4 -11
- package/workflows/workflows/agent-environment-setup/platforms/{antigravity/agents/sre-engineer.md → codex/agents/sre-engineer.toml} +4 -35
- package/workflows/workflows/agent-environment-setup/platforms/{antigravity/agents/test-engineer.md → codex/agents/test-engineer.toml} +4 -30
- package/workflows/workflows/agent-environment-setup/platforms/{antigravity/agents/validator.md → codex/agents/validator.toml} +4 -22
- package/workflows/workflows/agent-environment-setup/platforms/{antigravity/agents/vercel-expert.md → codex/agents/vercel-expert.toml} +4 -11
- package/workflows/workflows/agent-environment-setup/platforms/{copilot/workflows/accessibility.md → codex/generated-skills/accessibility/SKILL.md} +16 -17
- package/workflows/workflows/agent-environment-setup/platforms/{copilot/workflows/architecture.md → codex/generated-skills/architecture/SKILL.md} +44 -25
- package/workflows/workflows/agent-environment-setup/platforms/{claude/workflows/backend.md → codex/generated-skills/backend/SKILL.md} +16 -24
- package/workflows/workflows/agent-environment-setup/platforms/{claude/workflows/create.md → codex/generated-skills/create/SKILL.md} +13 -6
- package/workflows/workflows/agent-environment-setup/platforms/{copilot/workflows/database.md → codex/generated-skills/database/SKILL.md} +16 -9
- package/workflows/workflows/agent-environment-setup/platforms/{claude/workflows/debug.md → codex/generated-skills/debug/SKILL.md} +16 -9
- package/workflows/workflows/agent-environment-setup/platforms/{claude/workflows/devops.md → codex/generated-skills/devops/SKILL.md} +20 -27
- package/workflows/workflows/agent-environment-setup/platforms/{claude/workflows/implement-track.md → codex/generated-skills/implement-track/SKILL.md} +13 -6
- package/workflows/workflows/agent-environment-setup/platforms/{copilot/workflows/migrate.md → codex/generated-skills/migrate/SKILL.md} +16 -17
- package/workflows/workflows/agent-environment-setup/platforms/{claude/workflows/mobile.md → codex/generated-skills/mobile/SKILL.md} +17 -10
- package/workflows/workflows/agent-environment-setup/platforms/{claude/workflows/onboard.md → codex/generated-skills/onboard/SKILL.md} +14 -14
- package/workflows/workflows/agent-environment-setup/platforms/{claude/workflows/orchestrate.md → codex/generated-skills/orchestrate/SKILL.md} +13 -6
- package/workflows/workflows/agent-environment-setup/platforms/{claude/workflows/plan.md → codex/generated-skills/plan/SKILL.md} +12 -16
- package/workflows/workflows/agent-environment-setup/platforms/{claude/workflows/refactor.md → codex/generated-skills/refactor/SKILL.md} +16 -9
- package/workflows/workflows/agent-environment-setup/platforms/{claude/workflows/release.md → codex/generated-skills/release/SKILL.md} +18 -11
- package/workflows/workflows/agent-environment-setup/platforms/{copilot/workflows/review.md → codex/generated-skills/review/SKILL.md} +16 -9
- package/workflows/workflows/agent-environment-setup/platforms/{copilot/workflows/security.md → codex/generated-skills/security/SKILL.md} +16 -9
- package/workflows/workflows/agent-environment-setup/platforms/{copilot/workflows/spec.md → codex/generated-skills/spec/SKILL.md} +11 -14
- package/workflows/workflows/agent-environment-setup/platforms/{copilot/workflows/test.md → codex/generated-skills/test/SKILL.md} +16 -9
- package/workflows/workflows/agent-environment-setup/platforms/{claude/workflows/vercel.md → codex/generated-skills/vercel/SKILL.md} +18 -20
- package/workflows/workflows/agent-environment-setup/platforms/codex/rules/AGENTS.md +19 -19
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/api-design/SKILL.md +9 -2
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/architecture-doc/SKILL.md +9 -2
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/ci-cd-pipeline/SKILL.md +9 -2
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/code-review/SKILL.md +9 -2
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/csharp-best-practices/SKILL.md +9 -2
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/database-design/SKILL.md +9 -2
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/deep-research/SKILL.md +9 -2
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/django-drf/SKILL.md +9 -2
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/docker-compose-dev/SKILL.md +9 -2
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/drizzle-orm/SKILL.md +9 -2
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/electron-qa/SKILL.md +9 -2
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/expo-app/SKILL.md +9 -2
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/express-nodejs/SKILL.md +9 -2
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/fastapi/SKILL.md +9 -2
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/frontend-design/SKILL.md +9 -2
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/gin-golang/SKILL.md +9 -2
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/git-workflow/SKILL.md +9 -2
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/go-fiber/SKILL.md +9 -2
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/golang-best-practices/SKILL.md +9 -2
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/google-workspace/SKILL.md +9 -2
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/huggingface-ml/SKILL.md +9 -2
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/integration-testing/SKILL.md +9 -2
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/java-best-practices/SKILL.md +9 -2
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/javascript-best-practices/SKILL.md +9 -2
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/kaizen-iteration/SKILL.md +9 -2
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/kotlin-best-practices/SKILL.md +9 -2
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/kubernetes-deploy/SKILL.md +9 -2
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/laravel/SKILL.md +9 -2
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/llm-eval/SKILL.md +9 -2
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/mcp-server-builder/SKILL.md +9 -2
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/microservices-design/SKILL.md +9 -2
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/nestjs/SKILL.md +9 -2
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/nextjs/SKILL.md +9 -2
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/observability/SKILL.md +9 -2
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/owasp-security-review/SKILL.md +9 -2
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/pentest-skill/SKILL.md +9 -2
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/performance-testing/SKILL.md +9 -2
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/php-best-practices/SKILL.md +9 -2
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/playwright-interactive/SKILL.md +9 -2
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/playwright-persistent-browser/SKILL.md +9 -2
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/prisma/SKILL.md +9 -2
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/prompt-engineering/SKILL.md +9 -2
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/python-best-practices/SKILL.md +9 -2
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/rag-patterns/SKILL.md +9 -2
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/react/SKILL.md +9 -2
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/react-native/SKILL.md +9 -2
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/react-native-callstack/SKILL.md +9 -2
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/receiving-code-review/SKILL.md +9 -2
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/remix/SKILL.md +9 -2
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/requesting-code-review/SKILL.md +9 -2
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/rust-best-practices/SKILL.md +9 -2
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/sadd/SKILL.md +9 -2
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/sanitize-pii/SKILL.md +9 -2
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/secret-management/SKILL.md +9 -2
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/skill-creator/SKILL.md +9 -2
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/spec-driven-delivery/SKILL.md +9 -2
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/spring-boot/SKILL.md +9 -2
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/sqlalchemy/SKILL.md +9 -2
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/stitch/SKILL.md +9 -2
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/stripe-integration/SKILL.md +9 -2
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/svelte-sveltekit/SKILL.md +9 -2
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/swift-best-practices/SKILL.md +9 -2
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/system-design/SKILL.md +9 -2
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/systematic-debugging/SKILL.md +9 -2
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/t3-stack/SKILL.md +9 -2
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/tech-doc/SKILL.md +9 -2
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/typescript-best-practices/SKILL.md +9 -2
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/unit-testing/SKILL.md +9 -2
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/vibesec/SKILL.md +9 -2
- package/workflows/workflows/agent-environment-setup/platforms/codex/skills/vuejs/SKILL.md +9 -2
- package/workflows/workflows/agent-environment-setup/platforms/copilot/prompts/accessibility.prompt.md +78 -0
- package/workflows/workflows/agent-environment-setup/platforms/copilot/prompts/architecture.prompt.md +128 -0
- package/workflows/workflows/agent-environment-setup/platforms/copilot/prompts/backend.prompt.md +80 -0
- package/workflows/workflows/agent-environment-setup/platforms/copilot/prompts/create.prompt.md +77 -0
- package/workflows/workflows/agent-environment-setup/platforms/copilot/prompts/database.prompt.md +76 -0
- package/workflows/workflows/agent-environment-setup/platforms/copilot/prompts/debug.prompt.md +72 -0
- package/workflows/workflows/agent-environment-setup/platforms/copilot/prompts/devops.prompt.md +73 -0
- package/workflows/workflows/agent-environment-setup/platforms/{antigravity/workflows/implement-track.md → copilot/prompts/implement-track.prompt.md} +21 -12
- package/workflows/workflows/agent-environment-setup/platforms/copilot/prompts/migrate.prompt.md +79 -0
- package/workflows/workflows/agent-environment-setup/platforms/copilot/prompts/mobile.prompt.md +80 -0
- package/workflows/workflows/agent-environment-setup/platforms/copilot/prompts/onboard.prompt.md +74 -0
- package/workflows/workflows/agent-environment-setup/platforms/{antigravity/workflows/orchestrate.md → copilot/prompts/orchestrate.prompt.md} +21 -12
- package/workflows/workflows/agent-environment-setup/platforms/{antigravity/workflows/plan.md → copilot/prompts/plan.prompt.md} +21 -23
- package/workflows/workflows/agent-environment-setup/platforms/copilot/prompts/refactor.prompt.md +76 -0
- package/workflows/workflows/agent-environment-setup/platforms/copilot/prompts/release.prompt.md +79 -0
- package/workflows/workflows/agent-environment-setup/platforms/copilot/prompts/review.prompt.md +75 -0
- package/workflows/workflows/agent-environment-setup/platforms/copilot/prompts/security.prompt.md +78 -0
- package/workflows/workflows/agent-environment-setup/platforms/{codex/workflows/spec.md → copilot/prompts/spec.prompt.md} +21 -22
- package/workflows/workflows/agent-environment-setup/platforms/copilot/prompts/test.prompt.md +75 -0
- package/workflows/workflows/agent-environment-setup/platforms/copilot/prompts/vercel.prompt.md +76 -0
- package/workflows/workflows/agent-environment-setup/platforms/copilot/rules/copilot-instructions.md +0 -1
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/api-design/SKILL.md +7 -3
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/architecture-doc/SKILL.md +7 -3
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/ci-cd-pipeline/SKILL.md +7 -3
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/code-review/SKILL.md +7 -3
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/csharp-best-practices/SKILL.md +7 -3
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/database-design/SKILL.md +7 -3
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/deep-research/SKILL.md +7 -3
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/django-drf/SKILL.md +7 -3
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/docker-compose-dev/SKILL.md +7 -3
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/drizzle-orm/SKILL.md +7 -3
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/electron-qa/SKILL.md +7 -3
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/expo-app/SKILL.md +7 -3
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/express-nodejs/SKILL.md +7 -3
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/fastapi/SKILL.md +7 -3
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/frontend-design/SKILL.md +7 -3
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/gin-golang/SKILL.md +7 -3
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/git-workflow/SKILL.md +7 -3
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/go-fiber/SKILL.md +7 -3
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/golang-best-practices/SKILL.md +7 -3
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/google-workspace/SKILL.md +7 -3
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/huggingface-ml/SKILL.md +7 -3
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/integration-testing/SKILL.md +7 -3
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/java-best-practices/SKILL.md +7 -3
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/javascript-best-practices/SKILL.md +7 -3
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/kaizen-iteration/SKILL.md +7 -3
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/kotlin-best-practices/SKILL.md +7 -3
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/kubernetes-deploy/SKILL.md +7 -3
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/laravel/SKILL.md +7 -3
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/llm-eval/SKILL.md +7 -3
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/mcp-server-builder/SKILL.md +7 -3
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/microservices-design/SKILL.md +7 -3
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/nestjs/SKILL.md +7 -3
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/nextjs/SKILL.md +7 -3
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/observability/SKILL.md +7 -3
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/owasp-security-review/SKILL.md +7 -3
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/pentest-skill/SKILL.md +7 -3
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/performance-testing/SKILL.md +7 -3
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/php-best-practices/SKILL.md +7 -3
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/playwright-interactive/SKILL.md +7 -3
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/playwright-persistent-browser/SKILL.md +7 -3
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/prisma/SKILL.md +7 -3
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/prompt-engineering/SKILL.md +7 -3
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/python-best-practices/SKILL.md +7 -3
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/rag-patterns/SKILL.md +7 -3
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/react/SKILL.md +7 -3
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/react-native/SKILL.md +7 -3
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/react-native-callstack/SKILL.md +7 -3
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/receiving-code-review/SKILL.md +7 -3
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/remix/SKILL.md +7 -3
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/requesting-code-review/SKILL.md +7 -3
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/rust-best-practices/SKILL.md +7 -3
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/sadd/SKILL.md +7 -3
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/sanitize-pii/SKILL.md +7 -3
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/secret-management/SKILL.md +7 -3
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/skill-creator/SKILL.md +7 -3
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/spec-driven-delivery/SKILL.md +7 -3
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/spring-boot/SKILL.md +7 -3
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/sqlalchemy/SKILL.md +7 -3
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/stitch/SKILL.md +7 -3
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/stripe-integration/SKILL.md +7 -3
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/svelte-sveltekit/SKILL.md +7 -3
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/swift-best-practices/SKILL.md +7 -3
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/system-design/SKILL.md +7 -3
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/systematic-debugging/SKILL.md +7 -3
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/t3-stack/SKILL.md +7 -3
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/tech-doc/SKILL.md +7 -3
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/typescript-best-practices/SKILL.md +7 -3
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/unit-testing/SKILL.md +7 -3
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/vibesec/SKILL.md +7 -3
- package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/vuejs/SKILL.md +7 -3
- package/workflows/workflows/agent-environment-setup/platforms/gemini/commands/accessibility.toml +69 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/commands/agent-backend-specialist.toml +86 -0
- package/workflows/workflows/agent-environment-setup/platforms/gemini/commands/agent-code-archaeologist.toml +67 -0
- package/workflows/workflows/agent-environment-setup/platforms/gemini/commands/agent-database-architect.toml +79 -0
- package/workflows/workflows/agent-environment-setup/platforms/gemini/commands/agent-debugger.toml +76 -0
- package/workflows/workflows/agent-environment-setup/platforms/gemini/commands/agent-devops-engineer.toml +74 -0
- package/workflows/workflows/agent-environment-setup/platforms/gemini/commands/agent-documentation-writer.toml +65 -0
- package/workflows/workflows/agent-environment-setup/platforms/gemini/commands/agent-frontend-specialist.toml +76 -0
- package/workflows/workflows/agent-environment-setup/platforms/gemini/commands/agent-game-developer.toml +52 -0
- package/workflows/workflows/agent-environment-setup/platforms/gemini/commands/agent-mobile-developer.toml +76 -0
- package/workflows/workflows/agent-environment-setup/platforms/gemini/commands/agent-orchestrator.toml +194 -0
- package/workflows/workflows/agent-environment-setup/platforms/gemini/commands/agent-penetration-tester.toml +70 -0
- package/workflows/workflows/agent-environment-setup/platforms/gemini/commands/agent-performance-optimizer.toml +69 -0
- package/workflows/workflows/agent-environment-setup/platforms/gemini/commands/agent-product-manager.toml +56 -0
- package/workflows/workflows/agent-environment-setup/platforms/gemini/commands/agent-project-planner.toml +72 -0
- package/workflows/workflows/agent-environment-setup/platforms/gemini/commands/agent-qa-automation-engineer.toml +63 -0
- package/workflows/workflows/agent-environment-setup/platforms/gemini/commands/agent-researcher.toml +73 -0
- package/workflows/workflows/agent-environment-setup/platforms/gemini/commands/agent-security-auditor.toml +73 -0
- package/workflows/workflows/agent-environment-setup/platforms/gemini/commands/agent-seo-specialist.toml +52 -0
- package/workflows/workflows/agent-environment-setup/platforms/gemini/commands/agent-sre-engineer.toml +74 -0
- package/workflows/workflows/agent-environment-setup/platforms/gemini/commands/agent-test-engineer.toml +71 -0
- package/workflows/workflows/agent-environment-setup/platforms/gemini/commands/agent-validator.toml +76 -0
- package/workflows/workflows/agent-environment-setup/platforms/gemini/commands/agent-vercel-expert.toml +59 -0
- package/workflows/workflows/agent-environment-setup/platforms/gemini/commands/architecture.toml +120 -5
- package/workflows/workflows/agent-environment-setup/platforms/gemini/commands/backend.toml +71 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/commands/create.toml +68 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/commands/database.toml +67 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/commands/debug.toml +63 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/commands/devops.toml +64 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/commands/implement-track.toml +71 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/commands/migrate.toml +70 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/commands/mobile.toml +71 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/commands/onboard.toml +65 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/commands/orchestrate.toml +73 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/commands/plan.toml +79 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/commands/refactor.toml +67 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/commands/release.toml +70 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/commands/review.toml +66 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/commands/security.toml +69 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/commands/spec.toml +71 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/commands/test.toml +66 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/commands/vercel.toml +67 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/rules/GEMINI.md +17 -17
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/api-design/SKILL.md +8 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/architecture-doc/SKILL.md +8 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/ci-cd-pipeline/SKILL.md +8 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/code-review/SKILL.md +8 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/csharp-best-practices/SKILL.md +8 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/database-design/SKILL.md +8 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/deep-research/SKILL.md +8 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/django-drf/SKILL.md +8 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/docker-compose-dev/SKILL.md +8 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/drizzle-orm/SKILL.md +8 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/electron-qa/SKILL.md +8 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/expo-app/SKILL.md +8 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/express-nodejs/SKILL.md +8 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/fastapi/SKILL.md +8 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/frontend-design/SKILL.md +8 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/gin-golang/SKILL.md +8 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/git-workflow/SKILL.md +8 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/go-fiber/SKILL.md +8 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/golang-best-practices/SKILL.md +8 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/google-workspace/SKILL.md +8 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/huggingface-ml/SKILL.md +8 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/integration-testing/SKILL.md +8 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/java-best-practices/SKILL.md +8 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/javascript-best-practices/SKILL.md +8 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/kaizen-iteration/SKILL.md +8 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/kotlin-best-practices/SKILL.md +8 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/kubernetes-deploy/SKILL.md +8 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/laravel/SKILL.md +8 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/llm-eval/SKILL.md +8 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/mcp-server-builder/SKILL.md +8 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/microservices-design/SKILL.md +8 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/nestjs/SKILL.md +8 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/nextjs/SKILL.md +8 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/observability/SKILL.md +8 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/owasp-security-review/SKILL.md +8 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/pentest-skill/SKILL.md +8 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/performance-testing/SKILL.md +8 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/php-best-practices/SKILL.md +8 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/playwright-interactive/SKILL.md +8 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/playwright-persistent-browser/SKILL.md +8 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/prisma/SKILL.md +8 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/prompt-engineering/SKILL.md +8 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/python-best-practices/SKILL.md +8 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/rag-patterns/SKILL.md +8 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/react/SKILL.md +8 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/react-native/SKILL.md +8 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/react-native-callstack/SKILL.md +8 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/receiving-code-review/SKILL.md +8 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/remix/SKILL.md +8 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/requesting-code-review/SKILL.md +8 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/rust-best-practices/SKILL.md +8 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/sadd/SKILL.md +8 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/sanitize-pii/SKILL.md +8 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/secret-management/SKILL.md +8 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/skill-creator/SKILL.md +8 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/spec-driven-delivery/SKILL.md +8 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/spring-boot/SKILL.md +8 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/sqlalchemy/SKILL.md +8 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/stitch/SKILL.md +8 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/stripe-integration/SKILL.md +8 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/svelte-sveltekit/SKILL.md +8 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/swift-best-practices/SKILL.md +8 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/system-design/SKILL.md +8 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/systematic-debugging/SKILL.md +8 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/t3-stack/SKILL.md +8 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/tech-doc/SKILL.md +8 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/typescript-best-practices/SKILL.md +8 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/unit-testing/SKILL.md +8 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/vibesec/SKILL.md +8 -4
- package/workflows/workflows/agent-environment-setup/platforms/gemini/skills/vuejs/SKILL.md +8 -4
- package/workflows/workflows/agent-environment-setup/shared/rules/STEERING.md +1 -1
- package/workflows/workflows/agent-environment-setup/shared/rules/overrides/antigravity.md +4 -5
- package/workflows/workflows/agent-environment-setup/shared/rules/overrides/codex.md +7 -6
- package/workflows/workflows/agent-environment-setup/shared/rules/overrides/copilot.md +1 -2
- package/workflows/workflows/agent-environment-setup/shared/rules/overrides/gemini.md +1 -3
- package/workflows/workflows/agent-environment-setup/shared/workflows/architecture.md +33 -11
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/workflows/accessibility.md +0 -77
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/workflows/architecture.md +0 -107
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/workflows/backend.md +0 -86
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/workflows/create.md +0 -68
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/workflows/database.md +0 -67
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/workflows/debug.md +0 -63
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/workflows/devops.md +0 -78
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/workflows/migrate.md +0 -78
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/workflows/mobile.md +0 -71
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/workflows/onboard.md +0 -72
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/workflows/refactor.md +0 -67
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/workflows/release.md +0 -70
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/workflows/review.md +0 -66
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/workflows/security.md +0 -69
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/workflows/spec.md +0 -81
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/workflows/test.md +0 -66
- package/workflows/workflows/agent-environment-setup/platforms/antigravity/workflows/vercel.md +0 -76
- package/workflows/workflows/agent-environment-setup/platforms/codex/agents/backend-specialist.md +0 -81
- package/workflows/workflows/agent-environment-setup/platforms/codex/agents/code-archaeologist.md +0 -77
- package/workflows/workflows/agent-environment-setup/platforms/codex/agents/database-architect.md +0 -74
- package/workflows/workflows/agent-environment-setup/platforms/codex/agents/debugger.md +0 -72
- package/workflows/workflows/agent-environment-setup/platforms/codex/agents/devops-engineer.md +0 -69
- package/workflows/workflows/agent-environment-setup/platforms/codex/agents/documentation-writer.md +0 -58
- package/workflows/workflows/agent-environment-setup/platforms/codex/agents/frontend-specialist.md +0 -89
- package/workflows/workflows/agent-environment-setup/platforms/codex/agents/game-developer.md +0 -42
- package/workflows/workflows/agent-environment-setup/platforms/codex/agents/mobile-developer.md +0 -71
- package/workflows/workflows/agent-environment-setup/platforms/codex/agents/penetration-tester.md +0 -81
- package/workflows/workflows/agent-environment-setup/platforms/codex/agents/performance-optimizer.md +0 -62
- package/workflows/workflows/agent-environment-setup/platforms/codex/agents/product-manager.md +0 -61
- package/workflows/workflows/agent-environment-setup/platforms/codex/agents/qa-automation-engineer.md +0 -68
- package/workflows/workflows/agent-environment-setup/platforms/codex/agents/security-auditor.md +0 -94
- package/workflows/workflows/agent-environment-setup/platforms/codex/agents/seo-specialist.md +0 -42
- package/workflows/workflows/agent-environment-setup/platforms/codex/agents/sre-engineer.md +0 -88
- package/workflows/workflows/agent-environment-setup/platforms/codex/agents/test-engineer.md +0 -80
- package/workflows/workflows/agent-environment-setup/platforms/codex/agents/validator.md +0 -77
- package/workflows/workflows/agent-environment-setup/platforms/codex/agents/vercel-expert.md +0 -49
- package/workflows/workflows/agent-environment-setup/platforms/codex/workflows/accessibility.md +0 -77
- package/workflows/workflows/agent-environment-setup/platforms/codex/workflows/architecture.md +0 -107
- package/workflows/workflows/agent-environment-setup/platforms/codex/workflows/backend.md +0 -86
- package/workflows/workflows/agent-environment-setup/platforms/codex/workflows/create.md +0 -68
- package/workflows/workflows/agent-environment-setup/platforms/codex/workflows/database.md +0 -67
- package/workflows/workflows/agent-environment-setup/platforms/codex/workflows/debug.md +0 -63
- package/workflows/workflows/agent-environment-setup/platforms/codex/workflows/devops.md +0 -78
- package/workflows/workflows/agent-environment-setup/platforms/codex/workflows/implement-track.md +0 -71
- package/workflows/workflows/agent-environment-setup/platforms/codex/workflows/migrate.md +0 -78
- package/workflows/workflows/agent-environment-setup/platforms/codex/workflows/mobile.md +0 -71
- package/workflows/workflows/agent-environment-setup/platforms/codex/workflows/onboard.md +0 -72
- package/workflows/workflows/agent-environment-setup/platforms/codex/workflows/orchestrate.md +0 -73
- package/workflows/workflows/agent-environment-setup/platforms/codex/workflows/plan.md +0 -90
- package/workflows/workflows/agent-environment-setup/platforms/codex/workflows/refactor.md +0 -67
- package/workflows/workflows/agent-environment-setup/platforms/codex/workflows/release.md +0 -70
- package/workflows/workflows/agent-environment-setup/platforms/codex/workflows/review.md +0 -66
- package/workflows/workflows/agent-environment-setup/platforms/codex/workflows/security.md +0 -69
- package/workflows/workflows/agent-environment-setup/platforms/codex/workflows/test.md +0 -66
- package/workflows/workflows/agent-environment-setup/platforms/codex/workflows/vercel.md +0 -76
- package/workflows/workflows/agent-environment-setup/platforms/copilot/prompts/workflow-accessibility.prompt.md +0 -18
- package/workflows/workflows/agent-environment-setup/platforms/copilot/prompts/workflow-architecture.prompt.md +0 -18
- package/workflows/workflows/agent-environment-setup/platforms/copilot/prompts/workflow-backend.prompt.md +0 -18
- package/workflows/workflows/agent-environment-setup/platforms/copilot/prompts/workflow-create.prompt.md +0 -18
- package/workflows/workflows/agent-environment-setup/platforms/copilot/prompts/workflow-database.prompt.md +0 -18
- package/workflows/workflows/agent-environment-setup/platforms/copilot/prompts/workflow-debug.prompt.md +0 -18
- package/workflows/workflows/agent-environment-setup/platforms/copilot/prompts/workflow-devops.prompt.md +0 -18
- package/workflows/workflows/agent-environment-setup/platforms/copilot/prompts/workflow-implement-track.prompt.md +0 -18
- package/workflows/workflows/agent-environment-setup/platforms/copilot/prompts/workflow-migrate.prompt.md +0 -18
- package/workflows/workflows/agent-environment-setup/platforms/copilot/prompts/workflow-mobile.prompt.md +0 -18
- package/workflows/workflows/agent-environment-setup/platforms/copilot/prompts/workflow-onboard.prompt.md +0 -18
- package/workflows/workflows/agent-environment-setup/platforms/copilot/prompts/workflow-orchestrate.prompt.md +0 -18
- package/workflows/workflows/agent-environment-setup/platforms/copilot/prompts/workflow-plan.prompt.md +0 -18
- package/workflows/workflows/agent-environment-setup/platforms/copilot/prompts/workflow-refactor.prompt.md +0 -18
- package/workflows/workflows/agent-environment-setup/platforms/copilot/prompts/workflow-release.prompt.md +0 -18
- package/workflows/workflows/agent-environment-setup/platforms/copilot/prompts/workflow-review.prompt.md +0 -18
- package/workflows/workflows/agent-environment-setup/platforms/copilot/prompts/workflow-security.prompt.md +0 -18
- package/workflows/workflows/agent-environment-setup/platforms/copilot/prompts/workflow-spec.prompt.md +0 -18
- package/workflows/workflows/agent-environment-setup/platforms/copilot/prompts/workflow-test.prompt.md +0 -18
- package/workflows/workflows/agent-environment-setup/platforms/copilot/prompts/workflow-vercel.prompt.md +0 -18
- package/workflows/workflows/agent-environment-setup/platforms/gemini/workflows/accessibility.md +0 -77
- package/workflows/workflows/agent-environment-setup/platforms/gemini/workflows/architecture.md +0 -107
- package/workflows/workflows/agent-environment-setup/platforms/gemini/workflows/backend.md +0 -86
- package/workflows/workflows/agent-environment-setup/platforms/gemini/workflows/create.md +0 -68
- package/workflows/workflows/agent-environment-setup/platforms/gemini/workflows/database.md +0 -67
- package/workflows/workflows/agent-environment-setup/platforms/gemini/workflows/debug.md +0 -63
- package/workflows/workflows/agent-environment-setup/platforms/gemini/workflows/devops.md +0 -78
- package/workflows/workflows/agent-environment-setup/platforms/gemini/workflows/implement-track.md +0 -71
- package/workflows/workflows/agent-environment-setup/platforms/gemini/workflows/migrate.md +0 -78
- package/workflows/workflows/agent-environment-setup/platforms/gemini/workflows/mobile.md +0 -71
- package/workflows/workflows/agent-environment-setup/platforms/gemini/workflows/onboard.md +0 -72
- package/workflows/workflows/agent-environment-setup/platforms/gemini/workflows/orchestrate.md +0 -73
- package/workflows/workflows/agent-environment-setup/platforms/gemini/workflows/plan.md +0 -90
- package/workflows/workflows/agent-environment-setup/platforms/gemini/workflows/refactor.md +0 -67
- package/workflows/workflows/agent-environment-setup/platforms/gemini/workflows/release.md +0 -70
- package/workflows/workflows/agent-environment-setup/platforms/gemini/workflows/review.md +0 -66
- package/workflows/workflows/agent-environment-setup/platforms/gemini/workflows/security.md +0 -69
- package/workflows/workflows/agent-environment-setup/platforms/gemini/workflows/spec.md +0 -81
- package/workflows/workflows/agent-environment-setup/platforms/gemini/workflows/test.md +0 -66
- package/workflows/workflows/agent-environment-setup/platforms/gemini/workflows/vercel.md +0 -76
package/src/cli/core.ts
CHANGED
|
@@ -76,12 +76,21 @@ const TECH_ARCHITECTURE_BLOCK_START_RE =
|
|
|
76
76
|
/<!--\s*cbx:architecture:tech:start[^>]*-->/g;
|
|
77
77
|
const TECH_ARCHITECTURE_BLOCK_END_RE =
|
|
78
78
|
/<!--\s*cbx:architecture:tech:end\s*-->/g;
|
|
79
|
+
const MEMORY_FOUNDATION_BLOCK_START_RE =
|
|
80
|
+
/<!--\s*cbx:memory:index:start[^>]*-->/g;
|
|
81
|
+
const MEMORY_FOUNDATION_BLOCK_END_RE =
|
|
82
|
+
/<!--\s*cbx:memory:index:end\s*-->/g;
|
|
83
|
+
const MEMORY_TOPIC_BLOCK_START_RE =
|
|
84
|
+
/<!--\s*cbx:memory:topic:start[^>]*-->/g;
|
|
85
|
+
const MEMORY_TOPIC_BLOCK_END_RE =
|
|
86
|
+
/<!--\s*cbx:memory:topic:end\s*-->/g;
|
|
79
87
|
const ROADMAP_FOUNDATION_BLOCK_START_RE =
|
|
80
88
|
/<!--\s*cbx:roadmap:foundation:start[^>]*-->/g;
|
|
81
89
|
const ROADMAP_FOUNDATION_BLOCK_END_RE =
|
|
82
90
|
/<!--\s*cbx:roadmap:foundation:end\s*-->/g;
|
|
83
91
|
const FOUNDATION_DOCS_DIR = path.join("docs", "foundation");
|
|
84
92
|
const FOUNDATION_ADR_DIR = path.join(FOUNDATION_DOCS_DIR, "adr");
|
|
93
|
+
const FOUNDATION_MEMORY_DIR = path.join(FOUNDATION_DOCS_DIR, "memory");
|
|
85
94
|
const COPILOT_ALLOWED_SKILL_FRONTMATTER_KEYS = new Set([
|
|
86
95
|
"compatibility",
|
|
87
96
|
"description",
|
|
@@ -106,57 +115,59 @@ const WORKFLOW_PROFILES = {
|
|
|
106
115
|
antigravity: {
|
|
107
116
|
id: "antigravity",
|
|
108
117
|
label: "Antigravity",
|
|
109
|
-
installsCustomAgents:
|
|
118
|
+
installsCustomAgents: false,
|
|
110
119
|
project: {
|
|
111
|
-
workflowDirs: [
|
|
112
|
-
agentDirs: [
|
|
113
|
-
skillDirs: [".
|
|
120
|
+
workflowDirs: [],
|
|
121
|
+
agentDirs: [],
|
|
122
|
+
skillDirs: [".agents/skills"],
|
|
114
123
|
commandDirs: [".gemini/commands"],
|
|
115
|
-
ruleFilesByPriority: [".
|
|
124
|
+
ruleFilesByPriority: [".agents/rules/GEMINI.md"],
|
|
116
125
|
},
|
|
117
126
|
global: {
|
|
118
|
-
workflowDirs: [
|
|
119
|
-
|
|
120
|
-
"~/.gemini/antigravity/global_workflows",
|
|
121
|
-
],
|
|
122
|
-
agentDirs: [
|
|
123
|
-
"~/.gemini/antigravity/agents",
|
|
124
|
-
"~/.gemini/antigravity/global_agents",
|
|
125
|
-
],
|
|
127
|
+
workflowDirs: [],
|
|
128
|
+
agentDirs: [],
|
|
126
129
|
skillDirs: [
|
|
127
130
|
"~/.gemini/antigravity/skills",
|
|
128
|
-
"~/.gemini/antigravity/global_skills",
|
|
129
131
|
],
|
|
130
132
|
commandDirs: ["~/.gemini/commands"],
|
|
131
133
|
ruleFilesByPriority: ["~/.gemini/GEMINI.md"],
|
|
132
134
|
},
|
|
133
|
-
detectorPaths: [
|
|
134
|
-
|
|
135
|
+
detectorPaths: [
|
|
136
|
+
".agents/skills",
|
|
137
|
+
".agents/rules/GEMINI.md",
|
|
138
|
+
".gemini/commands",
|
|
139
|
+
],
|
|
140
|
+
legacyDetectorPaths: [
|
|
141
|
+
".agent",
|
|
142
|
+
".agent/workflows",
|
|
143
|
+
".agent/agents",
|
|
144
|
+
".agent/skills",
|
|
145
|
+
".agent/rules/GEMINI.md",
|
|
146
|
+
],
|
|
135
147
|
ruleHintName: "GEMINI.md",
|
|
136
148
|
},
|
|
137
149
|
codex: {
|
|
138
150
|
id: "codex",
|
|
139
151
|
label: "Codex",
|
|
140
|
-
installsCustomAgents:
|
|
152
|
+
installsCustomAgents: true,
|
|
141
153
|
project: {
|
|
142
|
-
workflowDirs: [
|
|
143
|
-
agentDirs: [".
|
|
154
|
+
workflowDirs: [],
|
|
155
|
+
agentDirs: [".codex/agents"],
|
|
144
156
|
skillDirs: [".agents/skills"],
|
|
145
157
|
ruleFilesByPriority: ["AGENTS.md"],
|
|
146
158
|
},
|
|
147
159
|
global: {
|
|
148
|
-
workflowDirs: [
|
|
149
|
-
agentDirs: ["~/.
|
|
160
|
+
workflowDirs: [],
|
|
161
|
+
agentDirs: ["~/.codex/agents"],
|
|
150
162
|
skillDirs: ["~/.agents/skills"],
|
|
151
163
|
ruleFilesByPriority: ["~/.codex/AGENTS.md"],
|
|
152
164
|
},
|
|
153
165
|
detectorPaths: [
|
|
154
|
-
".agents",
|
|
155
|
-
".agents/workflows",
|
|
166
|
+
".codex/agents",
|
|
156
167
|
".agents/skills",
|
|
157
168
|
"AGENTS.md",
|
|
158
169
|
],
|
|
159
|
-
legacyDetectorPaths: [".codex/skills"],
|
|
170
|
+
legacyDetectorPaths: [".agents/workflows", ".agents/agents", ".codex/skills"],
|
|
160
171
|
ruleHintName: "AGENTS.md",
|
|
161
172
|
},
|
|
162
173
|
copilot: {
|
|
@@ -164,14 +175,14 @@ const WORKFLOW_PROFILES = {
|
|
|
164
175
|
label: "GitHub Copilot",
|
|
165
176
|
installsCustomAgents: true,
|
|
166
177
|
project: {
|
|
167
|
-
workflowDirs: [
|
|
178
|
+
workflowDirs: [],
|
|
168
179
|
agentDirs: [".github/agents"],
|
|
169
180
|
skillDirs: [".github/skills"],
|
|
170
181
|
promptDirs: [".github/prompts"],
|
|
171
182
|
ruleFilesByPriority: [".github/copilot-instructions.md"],
|
|
172
183
|
},
|
|
173
184
|
global: {
|
|
174
|
-
workflowDirs: [
|
|
185
|
+
workflowDirs: [],
|
|
175
186
|
agentDirs: ["~/.copilot/agents"],
|
|
176
187
|
skillDirs: ["~/.copilot/skills"],
|
|
177
188
|
promptDirs: ["~/.copilot/prompts"],
|
|
@@ -193,14 +204,14 @@ const WORKFLOW_PROFILES = {
|
|
|
193
204
|
label: "Claude Code",
|
|
194
205
|
installsCustomAgents: true,
|
|
195
206
|
project: {
|
|
196
|
-
workflowDirs: [
|
|
207
|
+
workflowDirs: [],
|
|
197
208
|
agentDirs: [".claude/agents"],
|
|
198
209
|
skillDirs: [".claude/skills"],
|
|
199
210
|
hookDirs: [".claude/hooks"],
|
|
200
211
|
ruleFilesByPriority: ["CLAUDE.md"],
|
|
201
212
|
},
|
|
202
213
|
global: {
|
|
203
|
-
workflowDirs: [
|
|
214
|
+
workflowDirs: [],
|
|
204
215
|
agentDirs: ["~/.claude/agents"],
|
|
205
216
|
skillDirs: ["~/.claude/skills"],
|
|
206
217
|
hookDirs: ["~/.claude/hooks"],
|
|
@@ -213,7 +224,7 @@ const WORKFLOW_PROFILES = {
|
|
|
213
224
|
".claude/rules",
|
|
214
225
|
".claude/settings.json",
|
|
215
226
|
],
|
|
216
|
-
legacyDetectorPaths: [],
|
|
227
|
+
legacyDetectorPaths: [".claude/workflows"],
|
|
217
228
|
ruleHintName: "CLAUDE.md",
|
|
218
229
|
},
|
|
219
230
|
gemini: {
|
|
@@ -221,32 +232,29 @@ const WORKFLOW_PROFILES = {
|
|
|
221
232
|
label: "Gemini CLI",
|
|
222
233
|
installsCustomAgents: false,
|
|
223
234
|
project: {
|
|
224
|
-
workflowDirs: [
|
|
225
|
-
skillDirs: [
|
|
235
|
+
workflowDirs: [],
|
|
236
|
+
skillDirs: [],
|
|
226
237
|
commandDirs: [".gemini/commands"],
|
|
227
238
|
ruleFilesByPriority: [".gemini/GEMINI.md", "GEMINI.md"],
|
|
228
239
|
},
|
|
229
240
|
global: {
|
|
230
|
-
workflowDirs: [
|
|
231
|
-
skillDirs: [
|
|
241
|
+
workflowDirs: [],
|
|
242
|
+
skillDirs: [],
|
|
232
243
|
commandDirs: ["~/.gemini/commands"],
|
|
233
244
|
ruleFilesByPriority: ["~/.gemini/GEMINI.md"],
|
|
234
245
|
},
|
|
235
246
|
detectorPaths: [
|
|
236
247
|
".gemini",
|
|
237
|
-
".gemini/workflows",
|
|
238
248
|
".gemini/commands",
|
|
239
249
|
".gemini/GEMINI.md",
|
|
240
250
|
"GEMINI.md",
|
|
241
251
|
],
|
|
242
|
-
legacyDetectorPaths: [],
|
|
252
|
+
legacyDetectorPaths: [".gemini/workflows", ".gemini/skills"],
|
|
243
253
|
ruleHintName: "GEMINI.md",
|
|
244
254
|
},
|
|
245
255
|
};
|
|
246
256
|
|
|
247
257
|
const PLATFORM_IDS = Object.keys(WORKFLOW_PROFILES);
|
|
248
|
-
const CODEX_WORKFLOW_SKILL_PREFIX = "workflow-";
|
|
249
|
-
const CODEX_AGENT_SKILL_PREFIX = "agent-";
|
|
250
258
|
const TERMINAL_VERIFIER_PROVIDERS = ["codex", "gemini"];
|
|
251
259
|
const DEFAULT_TERMINAL_VERIFIER = "codex";
|
|
252
260
|
const POSTMAN_API_KEY_ENV_VAR = "POSTMAN_API_KEY_DEFAULT";
|
|
@@ -282,6 +290,7 @@ const RESERVED_CREDENTIAL_PROFILE_NAMES = new Set(["all"]);
|
|
|
282
290
|
const CREDENTIAL_SERVICES = new Set(["postman", "stitch"]);
|
|
283
291
|
const MCP_RUNTIMES = new Set(["docker", "local"]);
|
|
284
292
|
const ARCHITECTURE_BUILD_PLATFORMS = new Set([
|
|
293
|
+
"antigravity",
|
|
285
294
|
"codex",
|
|
286
295
|
"claude",
|
|
287
296
|
"gemini",
|
|
@@ -838,10 +847,12 @@ function toPosixPath(value) {
|
|
|
838
847
|
}
|
|
839
848
|
|
|
840
849
|
function getAntigravityTerminalIntegrationDir(profilePaths) {
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
850
|
+
const baseDir =
|
|
851
|
+
profilePaths.rulesDir ||
|
|
852
|
+
profilePaths.skillsDir ||
|
|
853
|
+
profilePaths.commandsDir ||
|
|
854
|
+
profilePaths.rootDir;
|
|
855
|
+
return path.join(path.dirname(baseDir), "terminal-integration");
|
|
845
856
|
}
|
|
846
857
|
|
|
847
858
|
function buildTerminalVerifierDefaultPrompt() {
|
|
@@ -1333,7 +1344,7 @@ function buildEngineeringArchitectureSection(snapshot) {
|
|
|
1333
1344
|
...profile.testingStrategy.map((rule) => ` - ${rule}`),
|
|
1334
1345
|
"- Doc refresh policy:",
|
|
1335
1346
|
" - Update these managed sections when architecture, scale, boundaries, design-system rules, or testing strategy changes.",
|
|
1336
|
-
` - For non-trivial work, read ${FOUNDATION_DOCS_DIR}/PRODUCT.md, ENGINEERING_RULES.md, ${FOUNDATION_DOCS_DIR}/ARCHITECTURE.md,
|
|
1347
|
+
` - For non-trivial work, read ${FOUNDATION_DOCS_DIR}/MEMORY.md first. Then load ${FOUNDATION_DOCS_DIR}/PRODUCT.md, ENGINEERING_RULES.md, ${FOUNDATION_DOCS_DIR}/ARCHITECTURE.md, ${FOUNDATION_DOCS_DIR}/TECH.md, ${FOUNDATION_MEMORY_DIR}/*, and ADRs only when the active task needs that deeper context.`,
|
|
1337
1348
|
"<!-- cbx:architecture:rules:end -->",
|
|
1338
1349
|
"",
|
|
1339
1350
|
].join("\n");
|
|
@@ -1460,7 +1471,7 @@ function buildRoadmapFoundationSection(snapshot, specRoots = []) {
|
|
|
1460
1471
|
"- Use this section for medium-term scaling themes, major migrations, or cross-team architecture investments.",
|
|
1461
1472
|
"",
|
|
1462
1473
|
"### Backbone Maintenance",
|
|
1463
|
-
`- Keep ${FOUNDATION_DOCS_DIR}/PRODUCT.md, ${FOUNDATION_DOCS_DIR}/ARCHITECTURE.md, ENGINEERING_RULES.md, and ${FOUNDATION_DOCS_DIR}/TECH.md aligned when direction or structure changes.`,
|
|
1474
|
+
`- Keep ${FOUNDATION_DOCS_DIR}/MEMORY.md, ${FOUNDATION_DOCS_DIR}/PRODUCT.md, ${FOUNDATION_DOCS_DIR}/ARCHITECTURE.md, ENGINEERING_RULES.md, and ${FOUNDATION_DOCS_DIR}/TECH.md aligned when direction or structure changes.`,
|
|
1464
1475
|
"- Link major roadmap themes back to specs and ADRs instead of burying them in chat-only planning.",
|
|
1465
1476
|
"<!-- cbx:roadmap:foundation:end -->",
|
|
1466
1477
|
"",
|
|
@@ -1545,15 +1556,17 @@ function buildEngineeringRulesTemplate() {
|
|
|
1545
1556
|
"- skill-name, workflow-name, or agent-name",
|
|
1546
1557
|
"- or: none",
|
|
1547
1558
|
"",
|
|
1548
|
-
"## 9) Keep
|
|
1559
|
+
"## 9) Keep Foundation Docs Fresh",
|
|
1549
1560
|
"",
|
|
1550
|
-
"- `
|
|
1551
|
-
"-
|
|
1561
|
+
"- `docs/foundation/MEMORY.md` is the AI entrypoint for non-trivial work.",
|
|
1562
|
+
"- Read `docs/foundation/MEMORY.md` first, then load deeper foundation docs only when the active task needs them.",
|
|
1563
|
+
"- Re-run `cbx build architecture --platform <antigravity|codex|claude|gemini|copilot>` after major product, architecture, runtime, or tooling changes.",
|
|
1564
|
+
"- Re-run `cbx rules tech-md --overwrite` only when you specifically need the legacy root-level `TECH.md` snapshot refreshed.",
|
|
1552
1565
|
"",
|
|
1553
1566
|
"<!-- cbx:architecture:rules:start version=1 profile=bootstrap -->",
|
|
1554
1567
|
"## 10) Architecture Contract (auto-managed)",
|
|
1555
1568
|
"",
|
|
1556
|
-
"- Declared style: bootstrap placeholder. Re-run `cbx build architecture --platform <codex|claude|gemini|copilot>` to refresh this contract from the repo.",
|
|
1569
|
+
"- Declared style: bootstrap placeholder. Re-run `cbx build architecture --platform <antigravity|codex|claude|gemini|copilot>` to refresh this contract from the repo.",
|
|
1557
1570
|
"- Design-system source of truth: bootstrap placeholder.",
|
|
1558
1571
|
"- Dependency direction rules:",
|
|
1559
1572
|
" - Replace this placeholder with the managed architecture block when architecture generation runs.",
|
|
@@ -1609,7 +1622,7 @@ function buildProductBuildSkeleton() {
|
|
|
1609
1622
|
"This file is managed by `cbx build architecture`.",
|
|
1610
1623
|
"",
|
|
1611
1624
|
"<!-- cbx:product:foundation:start version=1 profile=uninitialized -->",
|
|
1612
|
-
"Replace this managed section by running `cbx build architecture --platform <codex|claude|gemini|copilot>`.",
|
|
1625
|
+
"Replace this managed section by running `cbx build architecture --platform <antigravity|codex|claude|gemini|copilot>`.",
|
|
1613
1626
|
"<!-- cbx:product:foundation:end -->",
|
|
1614
1627
|
"",
|
|
1615
1628
|
].join("\n");
|
|
@@ -1622,7 +1635,7 @@ function buildArchitectureBuildSkeleton() {
|
|
|
1622
1635
|
"This file is managed by `cbx build architecture`.",
|
|
1623
1636
|
"",
|
|
1624
1637
|
"<!-- cbx:architecture:doc:start version=1 profile=uninitialized -->",
|
|
1625
|
-
"Replace this managed section by running `cbx build architecture --platform <codex|claude|gemini|copilot>`.",
|
|
1638
|
+
"Replace this managed section by running `cbx build architecture --platform <antigravity|codex|claude|gemini|copilot>`.",
|
|
1626
1639
|
"<!-- cbx:architecture:doc:end -->",
|
|
1627
1640
|
"",
|
|
1628
1641
|
].join("\n");
|
|
@@ -1635,12 +1648,38 @@ function buildTechBuildSkeleton() {
|
|
|
1635
1648
|
"This file is managed by `cbx build architecture`.",
|
|
1636
1649
|
"",
|
|
1637
1650
|
"<!-- cbx:architecture:tech:start version=1 snapshot=uninitialized -->",
|
|
1638
|
-
"Replace this managed section by running `cbx build architecture --platform <codex|claude|gemini|copilot>`.",
|
|
1651
|
+
"Replace this managed section by running `cbx build architecture --platform <antigravity|codex|claude|gemini|copilot>`.",
|
|
1639
1652
|
"<!-- cbx:architecture:tech:end -->",
|
|
1640
1653
|
"",
|
|
1641
1654
|
].join("\n");
|
|
1642
1655
|
}
|
|
1643
1656
|
|
|
1657
|
+
function buildMemoryBuildSkeleton() {
|
|
1658
|
+
return [
|
|
1659
|
+
"# Memory",
|
|
1660
|
+
"",
|
|
1661
|
+
"This file is managed by `cbx build architecture` as the durable AI entrypoint for the project.",
|
|
1662
|
+
"",
|
|
1663
|
+
"<!-- cbx:memory:index:start version=1 profile=uninitialized -->",
|
|
1664
|
+
"Replace this managed section by running `cbx build architecture --platform <antigravity|codex|claude|gemini|copilot>`.",
|
|
1665
|
+
"<!-- cbx:memory:index:end -->",
|
|
1666
|
+
"",
|
|
1667
|
+
].join("\n");
|
|
1668
|
+
}
|
|
1669
|
+
|
|
1670
|
+
function buildMemoryTopicSkeleton(title, topicId) {
|
|
1671
|
+
return [
|
|
1672
|
+
`# ${title}`,
|
|
1673
|
+
"",
|
|
1674
|
+
"This file is managed by `cbx build architecture`.",
|
|
1675
|
+
"",
|
|
1676
|
+
`<!-- cbx:memory:topic:start version=1 topic=${topicId} profile=uninitialized -->`,
|
|
1677
|
+
"Replace this managed section by running `cbx build architecture`.",
|
|
1678
|
+
"<!-- cbx:memory:topic:end -->",
|
|
1679
|
+
"",
|
|
1680
|
+
].join("\n");
|
|
1681
|
+
}
|
|
1682
|
+
|
|
1644
1683
|
function buildAdrReadme() {
|
|
1645
1684
|
return [
|
|
1646
1685
|
"# Architecture Decision Records",
|
|
@@ -1695,6 +1734,7 @@ function buildAdrTemplate() {
|
|
|
1695
1734
|
|
|
1696
1735
|
function buildEngineeringRulesManagedBlock({
|
|
1697
1736
|
platform,
|
|
1737
|
+
memoryFilePath,
|
|
1698
1738
|
productFilePath,
|
|
1699
1739
|
architectureFilePath,
|
|
1700
1740
|
engineeringRulesFilePath,
|
|
@@ -1702,6 +1742,7 @@ function buildEngineeringRulesManagedBlock({
|
|
|
1702
1742
|
roadmapFilePath,
|
|
1703
1743
|
ruleFilePath,
|
|
1704
1744
|
}) {
|
|
1745
|
+
const memoryRef = toPosixPath(path.resolve(memoryFilePath));
|
|
1705
1746
|
const productRef = toPosixPath(path.resolve(productFilePath));
|
|
1706
1747
|
const architectureRef = toPosixPath(path.resolve(architectureFilePath));
|
|
1707
1748
|
const engineeringRef = toPosixPath(path.resolve(engineeringRulesFilePath));
|
|
@@ -1711,6 +1752,9 @@ function buildEngineeringRulesManagedBlock({
|
|
|
1711
1752
|
|
|
1712
1753
|
const supportsAtImport = platform === "claude" || platform === "gemini";
|
|
1713
1754
|
const ruleFileDir = path.dirname(path.resolve(ruleFilePath));
|
|
1755
|
+
const relMemory = toPosixPath(
|
|
1756
|
+
path.relative(ruleFileDir, path.resolve(memoryFilePath)),
|
|
1757
|
+
);
|
|
1714
1758
|
const relProduct = toPosixPath(
|
|
1715
1759
|
path.relative(ruleFileDir, path.resolve(productFilePath)),
|
|
1716
1760
|
);
|
|
@@ -1724,10 +1768,12 @@ function buildEngineeringRulesManagedBlock({
|
|
|
1724
1768
|
const importLines = supportsAtImport
|
|
1725
1769
|
? [
|
|
1726
1770
|
"",
|
|
1727
|
-
"Foundation
|
|
1728
|
-
`@${
|
|
1729
|
-
|
|
1730
|
-
|
|
1771
|
+
"Foundation memory index (auto-imported into context):",
|
|
1772
|
+
`@${relMemory}`,
|
|
1773
|
+
"Load deeper docs from MEMORY.md only when needed:",
|
|
1774
|
+
`- ${relProduct}`,
|
|
1775
|
+
`- ${relArchitecture}`,
|
|
1776
|
+
`- ${relTech}`,
|
|
1731
1777
|
]
|
|
1732
1778
|
: [];
|
|
1733
1779
|
|
|
@@ -1736,6 +1782,7 @@ function buildEngineeringRulesManagedBlock({
|
|
|
1736
1782
|
"## Engineering Guardrails (auto-managed)",
|
|
1737
1783
|
"Apply these before planning, coding, review, and release:",
|
|
1738
1784
|
"",
|
|
1785
|
+
`- Shared memory index: \`${memoryRef}\``,
|
|
1739
1786
|
`- Product backbone: \`${productRef}\``,
|
|
1740
1787
|
`- Accepted architecture: \`${architectureRef}\``,
|
|
1741
1788
|
`- Required baseline: \`${engineeringRef}\``,
|
|
@@ -1749,11 +1796,12 @@ function buildEngineeringRulesManagedBlock({
|
|
|
1749
1796
|
"2. Keep architecture simple (KISS) and avoid speculative work (YAGNI).",
|
|
1750
1797
|
"3. Apply SOLID pragmatically to reduce change risk, not add ceremony.",
|
|
1751
1798
|
"4. Use clear naming with focused responsibilities and explicit boundaries.",
|
|
1752
|
-
`5. For non-trivial work, read ${FOUNDATION_DOCS_DIR}/
|
|
1753
|
-
"6.
|
|
1754
|
-
"7.
|
|
1755
|
-
"8.
|
|
1756
|
-
"9.
|
|
1799
|
+
`5. For non-trivial work, read ${FOUNDATION_DOCS_DIR}/MEMORY.md first. Then load ${FOUNDATION_DOCS_DIR}/PRODUCT.md, ${FOUNDATION_DOCS_DIR}/ARCHITECTURE.md, ${FOUNDATION_DOCS_DIR}/TECH.md, ${FOUNDATION_MEMORY_DIR}/*, and ADRs only when the active task needs that deeper context. Check ${FOUNDATION_DOCS_DIR}/PRODUCT.md for domain glossary and ${FOUNDATION_DOCS_DIR}/TECH.md for build/validation commands.`,
|
|
1800
|
+
"6. Use MEMORY.md's load map and consumer notes to decide which deeper docs the active workflow, agent, or skill should consult.",
|
|
1801
|
+
"7. Require validation evidence (lint/types/tests) before merge.",
|
|
1802
|
+
"8. Use Decision Log response style.",
|
|
1803
|
+
"9. Every Decision Log must include a `Skills Used` section listing skill, workflow, or agent names.",
|
|
1804
|
+
"10. If no skill loaded, `Skills Used: none` is mandatory.",
|
|
1757
1805
|
"",
|
|
1758
1806
|
"<!-- cbx:engineering:auto:end -->",
|
|
1759
1807
|
].join("\n");
|
|
@@ -1874,6 +1922,7 @@ async function upsertEngineeringRulesFile({
|
|
|
1874
1922
|
async function upsertEngineeringRulesBlock({
|
|
1875
1923
|
ruleFilePath,
|
|
1876
1924
|
platform,
|
|
1925
|
+
memoryFilePath,
|
|
1877
1926
|
productFilePath,
|
|
1878
1927
|
architectureFilePath,
|
|
1879
1928
|
engineeringRulesFilePath,
|
|
@@ -1883,6 +1932,7 @@ async function upsertEngineeringRulesBlock({
|
|
|
1883
1932
|
}) {
|
|
1884
1933
|
const block = buildEngineeringRulesManagedBlock({
|
|
1885
1934
|
platform,
|
|
1935
|
+
memoryFilePath,
|
|
1886
1936
|
productFilePath,
|
|
1887
1937
|
architectureFilePath,
|
|
1888
1938
|
engineeringRulesFilePath,
|
|
@@ -2140,6 +2190,12 @@ async function ensureArchitectureBuildScaffold({
|
|
|
2140
2190
|
const productPath = path.join(foundationRoot, "PRODUCT.md");
|
|
2141
2191
|
const architectureDocPath = path.join(foundationRoot, "ARCHITECTURE.md");
|
|
2142
2192
|
const techMdPath = path.join(foundationRoot, "TECH.md");
|
|
2193
|
+
const memoryPath = path.join(foundationRoot, "MEMORY.md");
|
|
2194
|
+
const memoryDir = path.join(workspaceRoot, FOUNDATION_MEMORY_DIR);
|
|
2195
|
+
const domainMemoryPath = path.join(memoryDir, "domain.md");
|
|
2196
|
+
const runtimeMemoryPath = path.join(memoryDir, "runtime.md");
|
|
2197
|
+
const integrationsMemoryPath = path.join(memoryDir, "integrations.md");
|
|
2198
|
+
const debuggingMemoryPath = path.join(memoryDir, "debugging.md");
|
|
2143
2199
|
const adrDir = path.join(workspaceRoot, FOUNDATION_ADR_DIR);
|
|
2144
2200
|
const adrReadmePath = path.join(adrDir, "README.md");
|
|
2145
2201
|
const adrTemplatePath = path.join(adrDir, "0000-template.md");
|
|
@@ -2149,7 +2205,7 @@ async function ensureArchitectureBuildScaffold({
|
|
|
2149
2205
|
initialContent: `${buildProductBuildSkeleton()}\n`,
|
|
2150
2206
|
block: [
|
|
2151
2207
|
"<!-- cbx:product:foundation:start version=1 profile=uninitialized -->",
|
|
2152
|
-
"Replace this managed section by running `cbx build architecture --platform <codex|claude|gemini|copilot>`.",
|
|
2208
|
+
"Replace this managed section by running `cbx build architecture --platform <antigravity|codex|claude|gemini|copilot>`.",
|
|
2153
2209
|
"<!-- cbx:product:foundation:end -->",
|
|
2154
2210
|
"",
|
|
2155
2211
|
].join("\n"),
|
|
@@ -2163,7 +2219,7 @@ async function ensureArchitectureBuildScaffold({
|
|
|
2163
2219
|
initialContent: `${buildArchitectureBuildSkeleton()}\n`,
|
|
2164
2220
|
block: [
|
|
2165
2221
|
"<!-- cbx:architecture:doc:start version=1 profile=uninitialized -->",
|
|
2166
|
-
"Replace this managed section by running `cbx build architecture --platform <codex|claude|gemini|copilot>`.",
|
|
2222
|
+
"Replace this managed section by running `cbx build architecture --platform <antigravity|codex|claude|gemini|copilot>`.",
|
|
2167
2223
|
"<!-- cbx:architecture:doc:end -->",
|
|
2168
2224
|
"",
|
|
2169
2225
|
].join("\n"),
|
|
@@ -2177,7 +2233,7 @@ async function ensureArchitectureBuildScaffold({
|
|
|
2177
2233
|
initialContent: `${buildTechBuildSkeleton()}\n`,
|
|
2178
2234
|
block: [
|
|
2179
2235
|
"<!-- cbx:architecture:tech:start version=1 snapshot=uninitialized -->",
|
|
2180
|
-
"Replace this managed section by running `cbx build architecture --platform <codex|claude|gemini|copilot>`.",
|
|
2236
|
+
"Replace this managed section by running `cbx build architecture --platform <antigravity|codex|claude|gemini|copilot>`.",
|
|
2181
2237
|
"<!-- cbx:architecture:tech:end -->",
|
|
2182
2238
|
"",
|
|
2183
2239
|
].join("\n"),
|
|
@@ -2186,6 +2242,76 @@ async function ensureArchitectureBuildScaffold({
|
|
|
2186
2242
|
dryRun,
|
|
2187
2243
|
});
|
|
2188
2244
|
|
|
2245
|
+
const memoryResult = await upsertTaggedSectionInFile({
|
|
2246
|
+
targetPath: memoryPath,
|
|
2247
|
+
initialContent: `${buildMemoryBuildSkeleton()}\n`,
|
|
2248
|
+
block: [
|
|
2249
|
+
"<!-- cbx:memory:index:start version=1 profile=uninitialized -->",
|
|
2250
|
+
"Replace this managed section by running `cbx build architecture --platform <antigravity|codex|claude|gemini|copilot>`.",
|
|
2251
|
+
"<!-- cbx:memory:index:end -->",
|
|
2252
|
+
"",
|
|
2253
|
+
].join("\n"),
|
|
2254
|
+
startPattern: MEMORY_FOUNDATION_BLOCK_START_RE,
|
|
2255
|
+
endPattern: MEMORY_FOUNDATION_BLOCK_END_RE,
|
|
2256
|
+
dryRun,
|
|
2257
|
+
});
|
|
2258
|
+
|
|
2259
|
+
const domainMemoryResult = await upsertTaggedSectionInFile({
|
|
2260
|
+
targetPath: domainMemoryPath,
|
|
2261
|
+
initialContent: `${buildMemoryTopicSkeleton("Domain Memory", "domain")}\n`,
|
|
2262
|
+
block: [
|
|
2263
|
+
"<!-- cbx:memory:topic:start version=1 topic=domain profile=uninitialized -->",
|
|
2264
|
+
"Replace this managed section by running `cbx build architecture`.",
|
|
2265
|
+
"<!-- cbx:memory:topic:end -->",
|
|
2266
|
+
"",
|
|
2267
|
+
].join("\n"),
|
|
2268
|
+
startPattern: MEMORY_TOPIC_BLOCK_START_RE,
|
|
2269
|
+
endPattern: MEMORY_TOPIC_BLOCK_END_RE,
|
|
2270
|
+
dryRun,
|
|
2271
|
+
});
|
|
2272
|
+
|
|
2273
|
+
const runtimeMemoryResult = await upsertTaggedSectionInFile({
|
|
2274
|
+
targetPath: runtimeMemoryPath,
|
|
2275
|
+
initialContent: `${buildMemoryTopicSkeleton("Runtime Memory", "runtime")}\n`,
|
|
2276
|
+
block: [
|
|
2277
|
+
"<!-- cbx:memory:topic:start version=1 topic=runtime profile=uninitialized -->",
|
|
2278
|
+
"Replace this managed section by running `cbx build architecture`.",
|
|
2279
|
+
"<!-- cbx:memory:topic:end -->",
|
|
2280
|
+
"",
|
|
2281
|
+
].join("\n"),
|
|
2282
|
+
startPattern: MEMORY_TOPIC_BLOCK_START_RE,
|
|
2283
|
+
endPattern: MEMORY_TOPIC_BLOCK_END_RE,
|
|
2284
|
+
dryRun,
|
|
2285
|
+
});
|
|
2286
|
+
|
|
2287
|
+
const integrationsMemoryResult = await upsertTaggedSectionInFile({
|
|
2288
|
+
targetPath: integrationsMemoryPath,
|
|
2289
|
+
initialContent: `${buildMemoryTopicSkeleton("Integrations Memory", "integrations")}\n`,
|
|
2290
|
+
block: [
|
|
2291
|
+
"<!-- cbx:memory:topic:start version=1 topic=integrations profile=uninitialized -->",
|
|
2292
|
+
"Replace this managed section by running `cbx build architecture`.",
|
|
2293
|
+
"<!-- cbx:memory:topic:end -->",
|
|
2294
|
+
"",
|
|
2295
|
+
].join("\n"),
|
|
2296
|
+
startPattern: MEMORY_TOPIC_BLOCK_START_RE,
|
|
2297
|
+
endPattern: MEMORY_TOPIC_BLOCK_END_RE,
|
|
2298
|
+
dryRun,
|
|
2299
|
+
});
|
|
2300
|
+
|
|
2301
|
+
const debuggingMemoryResult = await upsertTaggedSectionInFile({
|
|
2302
|
+
targetPath: debuggingMemoryPath,
|
|
2303
|
+
initialContent: `${buildMemoryTopicSkeleton("Debugging Memory", "debugging")}\n`,
|
|
2304
|
+
block: [
|
|
2305
|
+
"<!-- cbx:memory:topic:start version=1 topic=debugging profile=uninitialized -->",
|
|
2306
|
+
"Replace this managed section by running `cbx build architecture`.",
|
|
2307
|
+
"<!-- cbx:memory:topic:end -->",
|
|
2308
|
+
"",
|
|
2309
|
+
].join("\n"),
|
|
2310
|
+
startPattern: MEMORY_TOPIC_BLOCK_START_RE,
|
|
2311
|
+
endPattern: MEMORY_TOPIC_BLOCK_END_RE,
|
|
2312
|
+
dryRun,
|
|
2313
|
+
});
|
|
2314
|
+
|
|
2189
2315
|
const adrReadmeResult = await writeTextFile({
|
|
2190
2316
|
targetPath: adrReadmePath,
|
|
2191
2317
|
content: `${buildAdrReadme()}\n`,
|
|
@@ -2203,11 +2329,21 @@ async function ensureArchitectureBuildScaffold({
|
|
|
2203
2329
|
productPath,
|
|
2204
2330
|
architectureDocPath,
|
|
2205
2331
|
techMdPath,
|
|
2332
|
+
memoryPath,
|
|
2333
|
+
domainMemoryPath,
|
|
2334
|
+
runtimeMemoryPath,
|
|
2335
|
+
integrationsMemoryPath,
|
|
2336
|
+
debuggingMemoryPath,
|
|
2206
2337
|
adrReadmePath,
|
|
2207
2338
|
adrTemplatePath,
|
|
2208
2339
|
productResult,
|
|
2209
2340
|
architectureDocResult,
|
|
2210
2341
|
techResult,
|
|
2342
|
+
memoryResult,
|
|
2343
|
+
domainMemoryResult,
|
|
2344
|
+
runtimeMemoryResult,
|
|
2345
|
+
integrationsMemoryResult,
|
|
2346
|
+
debuggingMemoryResult,
|
|
2211
2347
|
adrReadmeResult,
|
|
2212
2348
|
adrTemplateResult,
|
|
2213
2349
|
};
|
|
@@ -3797,9 +3933,9 @@ async function resolveProfilePaths(profileId, scope, cwd = process.cwd()) {
|
|
|
3797
3933
|
workflowsDir: await resolvePreferredDir(workflowDirs),
|
|
3798
3934
|
agentsDir: await resolvePreferredDir(agentDirs),
|
|
3799
3935
|
skillsDir: await resolvePreferredDir(skillDirs),
|
|
3800
|
-
commandsDir:
|
|
3801
|
-
promptsDir:
|
|
3802
|
-
hooksDir:
|
|
3936
|
+
commandsDir: await resolvePreferredDir(commandDirs),
|
|
3937
|
+
promptsDir: await resolvePreferredDir(promptDirs),
|
|
3938
|
+
hooksDir: await resolvePreferredDir(hookDirs),
|
|
3803
3939
|
ruleFilesByPriority: cfg.ruleFilesByPriority.map((filePath) =>
|
|
3804
3940
|
expandPath(filePath, cwd),
|
|
3805
3941
|
),
|
|
@@ -4430,53 +4566,10 @@ function normalizeMarkdownId(fileName) {
|
|
|
4430
4566
|
.replace(/^-|-$/g, "");
|
|
4431
4567
|
}
|
|
4432
4568
|
|
|
4433
|
-
function yamlSingleQuoted(value) {
|
|
4434
|
-
return `'${String(value || "").replace(/'/g, "''")}'`;
|
|
4435
|
-
}
|
|
4436
|
-
|
|
4437
4569
|
function escapeRegExp(value) {
|
|
4438
4570
|
return String(value).replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
4439
4571
|
}
|
|
4440
4572
|
|
|
4441
|
-
function rewriteCodexWorkflowAgentReferences(sourceBody, agentIds) {
|
|
4442
|
-
if (!sourceBody || !Array.isArray(agentIds) || agentIds.length === 0)
|
|
4443
|
-
return normalizeCodexWrapperMentions(sourceBody);
|
|
4444
|
-
|
|
4445
|
-
let rewritten = sourceBody;
|
|
4446
|
-
const sortedAgentIds = unique(agentIds.filter(Boolean)).sort(
|
|
4447
|
-
(a, b) => b.length - a.length,
|
|
4448
|
-
);
|
|
4449
|
-
|
|
4450
|
-
for (const agentId of sortedAgentIds) {
|
|
4451
|
-
const agentPattern = new RegExp(
|
|
4452
|
-
`(^|[^A-Za-z0-9_-])@${escapeRegExp(agentId)}(?=$|[^A-Za-z0-9_-])`,
|
|
4453
|
-
"g",
|
|
4454
|
-
);
|
|
4455
|
-
rewritten = rewritten.replace(
|
|
4456
|
-
agentPattern,
|
|
4457
|
-
(_match, prefix) => `${prefix}$${CODEX_AGENT_SKILL_PREFIX}${agentId}`,
|
|
4458
|
-
);
|
|
4459
|
-
}
|
|
4460
|
-
|
|
4461
|
-
return normalizeCodexWrapperMentions(rewritten);
|
|
4462
|
-
}
|
|
4463
|
-
|
|
4464
|
-
function rewriteCodexAgentSkillReferences(sourceBody) {
|
|
4465
|
-
if (!sourceBody) return sourceBody;
|
|
4466
|
-
// Agent source files live under platforms/*/agents, but wrapper skills live
|
|
4467
|
-
// under .agents/skills/agent-*. Rebase ../skills/<id> links accordingly.
|
|
4468
|
-
const rebased = sourceBody.replace(/\(\.\.\/skills\//g, "(../");
|
|
4469
|
-
return normalizeCodexWrapperMentions(rebased);
|
|
4470
|
-
}
|
|
4471
|
-
|
|
4472
|
-
function normalizeCodexWrapperMentions(sourceBody) {
|
|
4473
|
-
if (!sourceBody) return sourceBody;
|
|
4474
|
-
return sourceBody.replace(
|
|
4475
|
-
/`\$(workflow|agent)-([A-Za-z0-9_-]+|\*)`/g,
|
|
4476
|
-
(_match, kind, id) => `$${kind}-${id}`,
|
|
4477
|
-
);
|
|
4478
|
-
}
|
|
4479
|
-
|
|
4480
4573
|
async function parseWorkflowMetadata(filePath) {
|
|
4481
4574
|
const raw = await readFile(filePath, "utf8");
|
|
4482
4575
|
const { frontmatter, body } = extractFrontmatter(raw);
|
|
@@ -4521,217 +4614,6 @@ async function parseAgentMetadata(filePath) {
|
|
|
4521
4614
|
};
|
|
4522
4615
|
}
|
|
4523
4616
|
|
|
4524
|
-
function buildCodexWorkflowWrapperSkillMarkdown(wrapperSkillId, workflow) {
|
|
4525
|
-
const description = `Callable Codex wrapper for ${workflow.command}: ${workflow.description}`;
|
|
4526
|
-
const sourceBody =
|
|
4527
|
-
workflow.body?.trim() || "No source workflow content found.";
|
|
4528
|
-
|
|
4529
|
-
return [
|
|
4530
|
-
"---",
|
|
4531
|
-
`name: ${wrapperSkillId}`,
|
|
4532
|
-
`description: ${yamlSingleQuoted(description)}`,
|
|
4533
|
-
"metadata:",
|
|
4534
|
-
" source: cubis-foundry",
|
|
4535
|
-
" wrapper: workflow",
|
|
4536
|
-
" platform: codex",
|
|
4537
|
-
` workflow-id: ${yamlSingleQuoted(workflow.id)}`,
|
|
4538
|
-
` workflow-command: ${yamlSingleQuoted(workflow.command)}`,
|
|
4539
|
-
"---",
|
|
4540
|
-
"",
|
|
4541
|
-
`# Workflow Compatibility Alias: ${workflow.command}`,
|
|
4542
|
-
"",
|
|
4543
|
-
`Compatibility alias for \`${workflow.command}\` in Codex. Prefer the direct workflow route first and use this wrapper only when older installs or prompts mention $${wrapperSkillId}.`,
|
|
4544
|
-
"",
|
|
4545
|
-
"## Invocation Contract",
|
|
4546
|
-
"1. Resolve the workflow route first; do not use this alias as a substitute for skill discovery.",
|
|
4547
|
-
"2. Follow the sequence and guardrails in the source instructions below.",
|
|
4548
|
-
"3. Produce actionable output and call out assumptions before edits.",
|
|
4549
|
-
"",
|
|
4550
|
-
"## Source Workflow Instructions",
|
|
4551
|
-
"",
|
|
4552
|
-
sourceBody,
|
|
4553
|
-
"",
|
|
4554
|
-
].join("\n");
|
|
4555
|
-
}
|
|
4556
|
-
|
|
4557
|
-
function buildCodexAgentWrapperSkillMarkdown(wrapperSkillId, agent) {
|
|
4558
|
-
const description = `Callable Codex wrapper for @${agent.id}: ${agent.description}`;
|
|
4559
|
-
const sourceBody = agent.body?.trim() || "No source agent content found.";
|
|
4560
|
-
const relatedSkillsLine =
|
|
4561
|
-
agent.skills.length > 0
|
|
4562
|
-
? `Related skills from source agent: ${agent.skills.join(", ")}`
|
|
4563
|
-
: "Related skills from source agent: (none listed)";
|
|
4564
|
-
|
|
4565
|
-
return [
|
|
4566
|
-
"---",
|
|
4567
|
-
`name: ${wrapperSkillId}`,
|
|
4568
|
-
`description: ${yamlSingleQuoted(description)}`,
|
|
4569
|
-
"metadata:",
|
|
4570
|
-
" source: cubis-foundry",
|
|
4571
|
-
" wrapper: agent",
|
|
4572
|
-
" platform: codex",
|
|
4573
|
-
` agent-id: ${yamlSingleQuoted(agent.id)}`,
|
|
4574
|
-
"---",
|
|
4575
|
-
"",
|
|
4576
|
-
`# Agent Compatibility Alias: @${agent.id}`,
|
|
4577
|
-
"",
|
|
4578
|
-
`Compatibility alias for @${agent.id} in Codex. Prefer the direct @agent route first and use this wrapper only when older installs or prompts mention $${wrapperSkillId}.`,
|
|
4579
|
-
"",
|
|
4580
|
-
"## Invocation Contract",
|
|
4581
|
-
"1. Resolve the agent route first; do not use this alias as a substitute for skill discovery.",
|
|
4582
|
-
"2. Adopt the role and constraints defined in the source agent content.",
|
|
4583
|
-
"3. Apply domain heuristics and escalation rules before coding.",
|
|
4584
|
-
"4. Ask clarifying questions when requirements are ambiguous.",
|
|
4585
|
-
"",
|
|
4586
|
-
`- Source agent name: ${agent.name}`,
|
|
4587
|
-
`- Source agent description: ${agent.description}`,
|
|
4588
|
-
`- ${relatedSkillsLine}`,
|
|
4589
|
-
"",
|
|
4590
|
-
"## Source Agent Instructions",
|
|
4591
|
-
"",
|
|
4592
|
-
sourceBody,
|
|
4593
|
-
"",
|
|
4594
|
-
].join("\n");
|
|
4595
|
-
}
|
|
4596
|
-
|
|
4597
|
-
async function writeGeneratedSkillArtifact({
|
|
4598
|
-
destinationDir,
|
|
4599
|
-
content,
|
|
4600
|
-
overwrite,
|
|
4601
|
-
dryRun = false,
|
|
4602
|
-
}) {
|
|
4603
|
-
const exists = await pathExists(destinationDir);
|
|
4604
|
-
if (exists && !overwrite) {
|
|
4605
|
-
return { action: dryRun ? "would-skip" : "skipped", path: destinationDir };
|
|
4606
|
-
}
|
|
4607
|
-
|
|
4608
|
-
if (!dryRun && exists && overwrite) {
|
|
4609
|
-
await rm(destinationDir, { recursive: true, force: true });
|
|
4610
|
-
}
|
|
4611
|
-
|
|
4612
|
-
if (!dryRun) {
|
|
4613
|
-
await mkdir(destinationDir, { recursive: true });
|
|
4614
|
-
await writeFile(path.join(destinationDir, "SKILL.md"), content, "utf8");
|
|
4615
|
-
}
|
|
4616
|
-
|
|
4617
|
-
if (dryRun) {
|
|
4618
|
-
return {
|
|
4619
|
-
action: exists ? "would-replace" : "would-install",
|
|
4620
|
-
path: destinationDir,
|
|
4621
|
-
};
|
|
4622
|
-
}
|
|
4623
|
-
|
|
4624
|
-
return { action: exists ? "replaced" : "installed", path: destinationDir };
|
|
4625
|
-
}
|
|
4626
|
-
|
|
4627
|
-
function buildCodexWrapperSkillIds(platformSpec) {
|
|
4628
|
-
const workflowIds = (platformSpec.workflows || []).map((fileName) => {
|
|
4629
|
-
const id = normalizeMarkdownId(path.basename(fileName));
|
|
4630
|
-
return `${CODEX_WORKFLOW_SKILL_PREFIX}${id}`;
|
|
4631
|
-
});
|
|
4632
|
-
|
|
4633
|
-
const agentIds = (platformSpec.agents || []).map((fileName) => {
|
|
4634
|
-
const id = normalizeMarkdownId(path.basename(fileName));
|
|
4635
|
-
return `${CODEX_AGENT_SKILL_PREFIX}${id}`;
|
|
4636
|
-
});
|
|
4637
|
-
|
|
4638
|
-
return unique([...workflowIds, ...agentIds]);
|
|
4639
|
-
}
|
|
4640
|
-
|
|
4641
|
-
async function generateCodexWrapperSkills({
|
|
4642
|
-
platformRoot,
|
|
4643
|
-
platformSpec,
|
|
4644
|
-
skillsDir,
|
|
4645
|
-
overwrite,
|
|
4646
|
-
dryRun = false,
|
|
4647
|
-
}) {
|
|
4648
|
-
const installed = [];
|
|
4649
|
-
const skipped = [];
|
|
4650
|
-
const artifacts = [];
|
|
4651
|
-
const generated = [];
|
|
4652
|
-
const codexAgentIds = (platformSpec.agents || []).map((fileName) =>
|
|
4653
|
-
normalizeMarkdownId(path.basename(fileName)),
|
|
4654
|
-
);
|
|
4655
|
-
|
|
4656
|
-
for (const workflowFile of platformSpec.workflows || []) {
|
|
4657
|
-
const source = path.join(platformRoot, "workflows", workflowFile);
|
|
4658
|
-
if (!(await pathExists(source))) {
|
|
4659
|
-
throw new Error(
|
|
4660
|
-
`Missing workflow source file for wrapper generation: ${source}`,
|
|
4661
|
-
);
|
|
4662
|
-
}
|
|
4663
|
-
|
|
4664
|
-
const metadata = await parseWorkflowMetadata(source);
|
|
4665
|
-
const raw = await readFile(source, "utf8");
|
|
4666
|
-
const sourceBody = extractFrontmatter(raw).body.trim();
|
|
4667
|
-
const rewrittenBody = rewriteCodexWorkflowAgentReferences(
|
|
4668
|
-
sourceBody,
|
|
4669
|
-
codexAgentIds,
|
|
4670
|
-
);
|
|
4671
|
-
const wrapperSkillId = `${CODEX_WORKFLOW_SKILL_PREFIX}${metadata.id}`;
|
|
4672
|
-
const destinationDir = path.join(skillsDir, wrapperSkillId);
|
|
4673
|
-
const content = buildCodexWorkflowWrapperSkillMarkdown(wrapperSkillId, {
|
|
4674
|
-
...metadata,
|
|
4675
|
-
body: rewrittenBody,
|
|
4676
|
-
});
|
|
4677
|
-
|
|
4678
|
-
const result = await writeGeneratedSkillArtifact({
|
|
4679
|
-
destinationDir,
|
|
4680
|
-
content,
|
|
4681
|
-
overwrite,
|
|
4682
|
-
dryRun,
|
|
4683
|
-
});
|
|
4684
|
-
|
|
4685
|
-
artifacts.push(destinationDir);
|
|
4686
|
-
generated.push({
|
|
4687
|
-
kind: "workflow",
|
|
4688
|
-
id: metadata.id,
|
|
4689
|
-
skillId: wrapperSkillId,
|
|
4690
|
-
});
|
|
4691
|
-
if (result.action === "skipped" || result.action === "would-skip")
|
|
4692
|
-
skipped.push(destinationDir);
|
|
4693
|
-
else installed.push(destinationDir);
|
|
4694
|
-
}
|
|
4695
|
-
|
|
4696
|
-
for (const agentFile of platformSpec.agents || []) {
|
|
4697
|
-
const source = path.join(platformRoot, "agents", agentFile);
|
|
4698
|
-
if (!(await pathExists(source))) {
|
|
4699
|
-
throw new Error(
|
|
4700
|
-
`Missing agent source file for wrapper generation: ${source}`,
|
|
4701
|
-
);
|
|
4702
|
-
}
|
|
4703
|
-
|
|
4704
|
-
const metadata = await parseAgentMetadata(source);
|
|
4705
|
-
const rewrittenBody = rewriteCodexAgentSkillReferences(metadata.body);
|
|
4706
|
-
const wrapperSkillId = `${CODEX_AGENT_SKILL_PREFIX}${metadata.id}`;
|
|
4707
|
-
const destinationDir = path.join(skillsDir, wrapperSkillId);
|
|
4708
|
-
const content = buildCodexAgentWrapperSkillMarkdown(wrapperSkillId, {
|
|
4709
|
-
...metadata,
|
|
4710
|
-
body: rewrittenBody,
|
|
4711
|
-
});
|
|
4712
|
-
|
|
4713
|
-
const result = await writeGeneratedSkillArtifact({
|
|
4714
|
-
destinationDir,
|
|
4715
|
-
content,
|
|
4716
|
-
overwrite,
|
|
4717
|
-
dryRun,
|
|
4718
|
-
});
|
|
4719
|
-
|
|
4720
|
-
artifacts.push(destinationDir);
|
|
4721
|
-
generated.push({ kind: "agent", id: metadata.id, skillId: wrapperSkillId });
|
|
4722
|
-
if (result.action === "skipped" || result.action === "would-skip")
|
|
4723
|
-
skipped.push(destinationDir);
|
|
4724
|
-
else installed.push(destinationDir);
|
|
4725
|
-
}
|
|
4726
|
-
|
|
4727
|
-
return {
|
|
4728
|
-
installed,
|
|
4729
|
-
skipped,
|
|
4730
|
-
artifacts,
|
|
4731
|
-
generated,
|
|
4732
|
-
};
|
|
4733
|
-
}
|
|
4734
|
-
|
|
4735
4617
|
async function resolvePlatformAgentSkillDependencies({
|
|
4736
4618
|
platformRoot,
|
|
4737
4619
|
platformSpec,
|
|
@@ -4753,15 +4635,51 @@ async function collectInstalledWorkflows(
|
|
|
4753
4635
|
scope,
|
|
4754
4636
|
cwd = process.cwd(),
|
|
4755
4637
|
) {
|
|
4756
|
-
|
|
4757
|
-
|
|
4638
|
+
const workflows = [];
|
|
4639
|
+
const state = await readState(scope, cwd);
|
|
4640
|
+
const key = targetStateKey(profileId, scope);
|
|
4641
|
+
const bundleEntries = Object.entries(state.targets?.[key]?.bundles || {});
|
|
4642
|
+
const seen = new Set();
|
|
4643
|
+
|
|
4644
|
+
for (const [bundleId] of bundleEntries) {
|
|
4645
|
+
const sharedWorkflowsDir = path.join(
|
|
4646
|
+
agentAssetsRoot(),
|
|
4647
|
+
"workflows",
|
|
4648
|
+
bundleId,
|
|
4649
|
+
"shared",
|
|
4650
|
+
"workflows",
|
|
4651
|
+
);
|
|
4652
|
+
if (!(await pathExists(sharedWorkflowsDir))) continue;
|
|
4653
|
+
const entries = await readdir(sharedWorkflowsDir, {
|
|
4654
|
+
withFileTypes: true,
|
|
4655
|
+
});
|
|
4656
|
+
for (const entry of entries) {
|
|
4657
|
+
if (
|
|
4658
|
+
!entry.isFile() ||
|
|
4659
|
+
!entry.name.endsWith(".md") ||
|
|
4660
|
+
entry.name.startsWith(".")
|
|
4661
|
+
) {
|
|
4662
|
+
continue;
|
|
4663
|
+
}
|
|
4664
|
+
const filePath = path.join(sharedWorkflowsDir, entry.name);
|
|
4665
|
+
const metadata = await parseWorkflowMetadata(filePath);
|
|
4666
|
+
if (seen.has(metadata.id)) continue;
|
|
4667
|
+
seen.add(metadata.id);
|
|
4668
|
+
workflows.push(metadata);
|
|
4669
|
+
}
|
|
4670
|
+
}
|
|
4671
|
+
|
|
4672
|
+
if (workflows.length > 0) {
|
|
4673
|
+
return workflows.sort((a, b) => a.command.localeCompare(b.command));
|
|
4674
|
+
}
|
|
4675
|
+
|
|
4758
4676
|
const profilePaths = await resolveArtifactProfilePaths(profileId, scope, cwd);
|
|
4759
|
-
if (!(await pathExists(profilePaths.workflowsDir)))
|
|
4677
|
+
if (!profilePaths.workflowsDir || !(await pathExists(profilePaths.workflowsDir)))
|
|
4678
|
+
return [];
|
|
4760
4679
|
|
|
4761
4680
|
const entries = await readdir(profilePaths.workflowsDir, {
|
|
4762
4681
|
withFileTypes: true,
|
|
4763
4682
|
});
|
|
4764
|
-
const workflows = [];
|
|
4765
4683
|
|
|
4766
4684
|
for (const entry of entries) {
|
|
4767
4685
|
if (
|
|
@@ -4838,9 +4756,8 @@ function buildManagedWorkflowBlock(platformId, workflows) {
|
|
|
4838
4756
|
lines.push("Prefer direct route identifiers first:");
|
|
4839
4757
|
lines.push("- Workflows: `/workflow-name`");
|
|
4840
4758
|
lines.push("- Agents: `@agent-name`");
|
|
4841
|
-
lines.push(
|
|
4842
|
-
|
|
4843
|
-
);
|
|
4759
|
+
lines.push("- Native agents: `.codex/agents/*.toml`");
|
|
4760
|
+
lines.push("- Native workflow skills: `.agents/skills/<workflow-id>/SKILL.md`");
|
|
4844
4761
|
lines.push("");
|
|
4845
4762
|
|
|
4846
4763
|
if (workflows.length === 0) {
|
|
@@ -4861,9 +4778,7 @@ function buildManagedWorkflowBlock(platformId, workflows) {
|
|
|
4861
4778
|
"1. If the user names `/workflow` or `@agent`, use that route directly.",
|
|
4862
4779
|
);
|
|
4863
4780
|
lines.push("2. Else map intent to one primary workflow.");
|
|
4864
|
-
lines.push(
|
|
4865
|
-
"3. Treat `$workflow-*` / `$agent-*` as compatibility aliases only.",
|
|
4866
|
-
);
|
|
4781
|
+
lines.push("3. Load supporting skills only after route selection.");
|
|
4867
4782
|
lines.push("");
|
|
4868
4783
|
lines.push("<!-- cbx:workflows:auto:end -->");
|
|
4869
4784
|
return lines.join("\n");
|
|
@@ -4871,46 +4786,31 @@ function buildManagedWorkflowBlock(platformId, workflows) {
|
|
|
4871
4786
|
|
|
4872
4787
|
if (platformId === "copilot") {
|
|
4873
4788
|
lines.push("Prefer native Copilot route surfaces first:");
|
|
4874
|
-
lines.push("- Workflow prompts: `.github/prompts
|
|
4875
|
-
lines.push("-
|
|
4789
|
+
lines.push("- Workflow prompts: `.github/prompts/*.prompt.md`");
|
|
4790
|
+
lines.push("- Agents: `.github/agents/*.md`");
|
|
4791
|
+
lines.push("- Skills: `.github/skills/<skill>/SKILL.md`");
|
|
4876
4792
|
lines.push("- Agents: `@agent-name`");
|
|
4877
4793
|
lines.push("- Workspace-first MCP: `.vscode/mcp.json`");
|
|
4878
|
-
lines.push(
|
|
4879
|
-
"- Do not use `$workflow-*` / `$agent-*` as the primary route surface here; those are Codex compatibility aliases.",
|
|
4880
|
-
);
|
|
4881
|
-
lines.push(
|
|
4882
|
-
"- `.github/skills` is installed by default, but route through workflows and agents before loading skills.",
|
|
4883
|
-
);
|
|
4884
4794
|
lines.push("");
|
|
4885
4795
|
} else if (platformId === "antigravity") {
|
|
4886
4796
|
lines.push("Prefer native Antigravity route surfaces first:");
|
|
4887
4797
|
lines.push("- Commands: `.gemini/commands/*.toml`");
|
|
4888
|
-
lines.push("-
|
|
4889
|
-
lines.push("-
|
|
4890
|
-
lines.push(
|
|
4891
|
-
"- Do not use `$workflow-*` / `$agent-*` as the primary route surface here; those are Codex compatibility aliases.",
|
|
4892
|
-
);
|
|
4798
|
+
lines.push("- Rules: `.agents/rules/GEMINI.md`");
|
|
4799
|
+
lines.push("- Skills: `.agents/skills/<skill>/SKILL.md`");
|
|
4800
|
+
lines.push("- Agent routes compile to native command/rule flows here.");
|
|
4893
4801
|
lines.push("");
|
|
4894
4802
|
} else if (platformId === "claude") {
|
|
4895
4803
|
lines.push("Prefer native Claude Code route surfaces first:");
|
|
4896
4804
|
lines.push("- Rules: `.claude/rules/*.md`");
|
|
4897
|
-
lines.push("-
|
|
4805
|
+
lines.push("- Skills: `.claude/skills/<skill>/SKILL.md`");
|
|
4806
|
+
lines.push("- Agents: `.claude/agents/*.md`");
|
|
4898
4807
|
lines.push("- Memory: `CLAUDE.md`");
|
|
4899
|
-
lines.push(
|
|
4900
|
-
"- Do not use `$workflow-*` / `$agent-*` as the primary route surface here; those are Codex compatibility aliases.",
|
|
4901
|
-
);
|
|
4902
4808
|
lines.push("");
|
|
4903
4809
|
} else if (platformId === "gemini") {
|
|
4904
4810
|
lines.push("Prefer native Gemini route surfaces first:");
|
|
4905
4811
|
lines.push("- Commands: `.gemini/commands/*.toml`");
|
|
4906
|
-
lines.push("- Workflow files: `.gemini/workflows/*.md`");
|
|
4907
4812
|
lines.push("- Rules: `.gemini/GEMINI.md`");
|
|
4908
|
-
lines.push(
|
|
4909
|
-
"- Specialists are inline postures here, not standalone agent files.",
|
|
4910
|
-
);
|
|
4911
|
-
lines.push(
|
|
4912
|
-
"- Do not use `$workflow-*` / `$agent-*` as the primary route surface here; those are Codex compatibility aliases.",
|
|
4913
|
-
);
|
|
4813
|
+
lines.push("- Route specialists through commands and rule guidance.");
|
|
4914
4814
|
lines.push("");
|
|
4915
4815
|
}
|
|
4916
4816
|
|
|
@@ -4937,39 +4837,21 @@ function buildManagedWorkflowBlock(platformId, workflows) {
|
|
|
4937
4837
|
lines.push("");
|
|
4938
4838
|
lines.push("Selection policy:");
|
|
4939
4839
|
if (platformId === "copilot") {
|
|
4940
|
-
lines.push(
|
|
4941
|
-
|
|
4942
|
-
);
|
|
4943
|
-
lines.push(
|
|
4944
|
-
"2. Else match user intent to one primary workflow and reuse the matching prompt file when available.",
|
|
4945
|
-
);
|
|
4946
|
-
lines.push(
|
|
4947
|
-
"3. Treat `$workflow-*` / `$agent-*` as Codex compatibility aliases, not as the primary route surface here.",
|
|
4948
|
-
);
|
|
4840
|
+
lines.push("1. Match explicit workflow prompt or `@agent` first.");
|
|
4841
|
+
lines.push("2. Else match user intent to one primary workflow and reuse the matching prompt file.");
|
|
4842
|
+
lines.push("3. Use skill_search only when the best workflow or agent route is unclear.");
|
|
4949
4843
|
} else if (platformId === "antigravity") {
|
|
4950
|
-
lines.push(
|
|
4951
|
-
|
|
4952
|
-
);
|
|
4953
|
-
lines.push(
|
|
4954
|
-
"2. Else match user intent to one primary workflow and use the matching command file when available.",
|
|
4955
|
-
);
|
|
4956
|
-
lines.push(
|
|
4957
|
-
"3. Treat `$workflow-*` / `$agent-*` as Codex compatibility aliases, not as the primary route surface here.",
|
|
4958
|
-
);
|
|
4844
|
+
lines.push("1. Match explicit Gemini command first.");
|
|
4845
|
+
lines.push("2. Else match user intent to one primary workflow and use the matching command file.");
|
|
4846
|
+
lines.push("3. Use skill_search only when workflow intent is unclear.");
|
|
4959
4847
|
} else if (platformId === "claude") {
|
|
4960
|
-
lines.push("1. Match explicit workflow or
|
|
4848
|
+
lines.push("1. Match explicit workflow skill or `@agent` first.");
|
|
4961
4849
|
lines.push("2. Else match user intent to one primary workflow.");
|
|
4962
|
-
lines.push(
|
|
4963
|
-
"3. Treat `$workflow-*` / `$agent-*` as Codex compatibility aliases, not as the primary route surface here.",
|
|
4964
|
-
);
|
|
4850
|
+
lines.push("3. Use skill_search only when workflow intent is unclear.");
|
|
4965
4851
|
} else if (platformId === "gemini") {
|
|
4966
|
-
lines.push("1. Match explicit Gemini command
|
|
4967
|
-
lines.push(
|
|
4968
|
-
|
|
4969
|
-
);
|
|
4970
|
-
lines.push(
|
|
4971
|
-
"3. Treat specialists as inline postures defined by GEMINI.md, not separate agent files.",
|
|
4972
|
-
);
|
|
4852
|
+
lines.push("1. Match explicit Gemini command first.");
|
|
4853
|
+
lines.push("2. Else match user intent to one primary workflow and use the matching command file.");
|
|
4854
|
+
lines.push("3. Keep specialists inside the command plan; there are no standalone agent files.");
|
|
4973
4855
|
} else {
|
|
4974
4856
|
lines.push("1. Match explicit slash command first.");
|
|
4975
4857
|
lines.push(
|
|
@@ -5196,7 +5078,24 @@ async function syncRulesForPlatform({
|
|
|
5196
5078
|
if (!ruleFilePath)
|
|
5197
5079
|
throw new Error(`No rule file configured for platform '${platform}'.`);
|
|
5198
5080
|
|
|
5199
|
-
|
|
5081
|
+
let workflows = await collectInstalledWorkflows(platform, scope, cwd);
|
|
5082
|
+
if (scope === "global") {
|
|
5083
|
+
const workspaceRuleFile = await resolveWorkspaceRuleFileForGlobalScope(
|
|
5084
|
+
platform,
|
|
5085
|
+
cwd,
|
|
5086
|
+
);
|
|
5087
|
+
const profile = WORKFLOW_PROFILES[platform];
|
|
5088
|
+
const globalRuleFile = profile
|
|
5089
|
+
? expandPath(profile.global.ruleFilesByPriority[0], cwd)
|
|
5090
|
+
: null;
|
|
5091
|
+
if (
|
|
5092
|
+
workspaceRuleFile &&
|
|
5093
|
+
globalRuleFile &&
|
|
5094
|
+
path.resolve(workspaceRuleFile) !== path.resolve(globalRuleFile)
|
|
5095
|
+
) {
|
|
5096
|
+
workflows = await collectInstalledWorkflows(platform, "project", cwd);
|
|
5097
|
+
}
|
|
5098
|
+
}
|
|
5200
5099
|
const patchResult = await upsertManagedRuleBlock(
|
|
5201
5100
|
ruleFilePath,
|
|
5202
5101
|
platform,
|
|
@@ -7638,34 +7537,66 @@ async function installBundleArtifacts({
|
|
|
7638
7537
|
}
|
|
7639
7538
|
|
|
7640
7539
|
const shouldInstallPlatformSkills = true;
|
|
7540
|
+
const workflowFiles = Array.isArray(platformSpec.workflows)
|
|
7541
|
+
? platformSpec.workflows
|
|
7542
|
+
: [];
|
|
7543
|
+
const generatedSkillDirs = Array.isArray(platformSpec.generatedSkills)
|
|
7544
|
+
? platformSpec.generatedSkills
|
|
7545
|
+
: [];
|
|
7546
|
+
const agentFiles = platformInstallsCustomAgents(platform)
|
|
7547
|
+
? Array.isArray(platformSpec.agents)
|
|
7548
|
+
? platformSpec.agents
|
|
7549
|
+
: []
|
|
7550
|
+
: [];
|
|
7551
|
+
const commandFiles = Array.isArray(platformSpec.commands)
|
|
7552
|
+
? platformSpec.commands
|
|
7553
|
+
: [];
|
|
7554
|
+
const promptFiles = Array.isArray(platformSpec.prompts)
|
|
7555
|
+
? platformSpec.prompts
|
|
7556
|
+
: [];
|
|
7557
|
+
const hookFiles = Array.isArray(platformSpec.hooks)
|
|
7558
|
+
? platformSpec.hooks
|
|
7559
|
+
.map((entry) =>
|
|
7560
|
+
typeof entry === "string"
|
|
7561
|
+
? entry
|
|
7562
|
+
: typeof entry?.file === "string"
|
|
7563
|
+
? entry.file
|
|
7564
|
+
: null,
|
|
7565
|
+
)
|
|
7566
|
+
.filter(Boolean)
|
|
7567
|
+
: [];
|
|
7641
7568
|
|
|
7642
7569
|
if (!dryRun) {
|
|
7643
|
-
|
|
7644
|
-
|
|
7570
|
+
if (workflowFiles.length > 0) {
|
|
7571
|
+
if (!profilePaths.workflowsDir) {
|
|
7572
|
+
throw new Error(
|
|
7573
|
+
`Platform '${platform}' does not define a workflow install directory.`,
|
|
7574
|
+
);
|
|
7575
|
+
}
|
|
7576
|
+
await mkdir(profilePaths.workflowsDir, { recursive: true });
|
|
7577
|
+
}
|
|
7578
|
+
if (
|
|
7579
|
+
shouldInstallPlatformSkills &&
|
|
7580
|
+
profilePaths.skillsDir &&
|
|
7581
|
+
(generatedSkillDirs.length > 0 || Array.isArray(platformSpec.skills))
|
|
7582
|
+
) {
|
|
7645
7583
|
await mkdir(profilePaths.skillsDir, { recursive: true });
|
|
7646
7584
|
}
|
|
7647
|
-
if (
|
|
7585
|
+
if (agentFiles.length > 0) {
|
|
7586
|
+
if (!profilePaths.agentsDir) {
|
|
7587
|
+
throw new Error(
|
|
7588
|
+
`Platform '${platform}' does not define an agent install directory.`,
|
|
7589
|
+
);
|
|
7590
|
+
}
|
|
7648
7591
|
await mkdir(profilePaths.agentsDir, { recursive: true });
|
|
7649
7592
|
}
|
|
7650
|
-
if (
|
|
7651
|
-
profilePaths.commandsDir &&
|
|
7652
|
-
Array.isArray(platformSpec.commands) &&
|
|
7653
|
-
platformSpec.commands.length > 0
|
|
7654
|
-
) {
|
|
7593
|
+
if (profilePaths.commandsDir && commandFiles.length > 0) {
|
|
7655
7594
|
await mkdir(profilePaths.commandsDir, { recursive: true });
|
|
7656
7595
|
}
|
|
7657
|
-
if (
|
|
7658
|
-
profilePaths.promptsDir &&
|
|
7659
|
-
Array.isArray(platformSpec.prompts) &&
|
|
7660
|
-
platformSpec.prompts.length > 0
|
|
7661
|
-
) {
|
|
7596
|
+
if (profilePaths.promptsDir && promptFiles.length > 0) {
|
|
7662
7597
|
await mkdir(profilePaths.promptsDir, { recursive: true });
|
|
7663
7598
|
}
|
|
7664
|
-
if (
|
|
7665
|
-
profilePaths.hooksDir &&
|
|
7666
|
-
Array.isArray(platformSpec.hooks) &&
|
|
7667
|
-
platformSpec.hooks.some((entry) => typeof entry?.file === "string")
|
|
7668
|
-
) {
|
|
7599
|
+
if (profilePaths.hooksDir && hookFiles.length > 0) {
|
|
7669
7600
|
await mkdir(profilePaths.hooksDir, { recursive: true });
|
|
7670
7601
|
}
|
|
7671
7602
|
}
|
|
@@ -7687,10 +7618,8 @@ async function installBundleArtifacts({
|
|
|
7687
7618
|
// Bind useSymlinks into copyArtifact so every call site inherits it
|
|
7688
7619
|
const copyArt = (args) => copyArtifact({ ...args, useSymlinks });
|
|
7689
7620
|
|
|
7690
|
-
const workflowFiles = Array.isArray(platformSpec.workflows)
|
|
7691
|
-
? platformSpec.workflows
|
|
7692
|
-
: [];
|
|
7693
7621
|
for (const workflowFile of workflowFiles) {
|
|
7622
|
+
if (!profilePaths.workflowsDir) continue;
|
|
7694
7623
|
const source = path.join(platformRoot, "workflows", workflowFile);
|
|
7695
7624
|
const destination = path.join(
|
|
7696
7625
|
profilePaths.workflowsDir,
|
|
@@ -7713,12 +7642,8 @@ async function installBundleArtifacts({
|
|
|
7713
7642
|
else installed.push(destination);
|
|
7714
7643
|
}
|
|
7715
7644
|
|
|
7716
|
-
const agentFiles = platformInstallsCustomAgents(platform)
|
|
7717
|
-
? Array.isArray(platformSpec.agents)
|
|
7718
|
-
? platformSpec.agents
|
|
7719
|
-
: []
|
|
7720
|
-
: [];
|
|
7721
7645
|
for (const agentFile of agentFiles) {
|
|
7646
|
+
if (!profilePaths.agentsDir) continue;
|
|
7722
7647
|
const source = path.join(platformRoot, "agents", agentFile);
|
|
7723
7648
|
const destination = path.join(
|
|
7724
7649
|
profilePaths.agentsDir,
|
|
@@ -7741,9 +7666,6 @@ async function installBundleArtifacts({
|
|
|
7741
7666
|
else installed.push(destination);
|
|
7742
7667
|
}
|
|
7743
7668
|
|
|
7744
|
-
const commandFiles = Array.isArray(platformSpec.commands)
|
|
7745
|
-
? platformSpec.commands
|
|
7746
|
-
: [];
|
|
7747
7669
|
for (const commandFile of commandFiles) {
|
|
7748
7670
|
if (!profilePaths.commandsDir) continue;
|
|
7749
7671
|
const source = path.join(platformRoot, "commands", commandFile);
|
|
@@ -7768,9 +7690,6 @@ async function installBundleArtifacts({
|
|
|
7768
7690
|
else installed.push(destination);
|
|
7769
7691
|
}
|
|
7770
7692
|
|
|
7771
|
-
const promptFiles = Array.isArray(platformSpec.prompts)
|
|
7772
|
-
? platformSpec.prompts
|
|
7773
|
-
: [];
|
|
7774
7693
|
for (const promptFile of promptFiles) {
|
|
7775
7694
|
if (!profilePaths.promptsDir) continue;
|
|
7776
7695
|
const source = path.join(platformRoot, "prompts", promptFile);
|
|
@@ -7794,17 +7713,6 @@ async function installBundleArtifacts({
|
|
|
7794
7713
|
skipped.push(destination);
|
|
7795
7714
|
else installed.push(destination);
|
|
7796
7715
|
}
|
|
7797
|
-
const hookFiles = Array.isArray(platformSpec.hooks)
|
|
7798
|
-
? platformSpec.hooks
|
|
7799
|
-
.map((entry) =>
|
|
7800
|
-
typeof entry === "string"
|
|
7801
|
-
? entry
|
|
7802
|
-
: typeof entry?.file === "string"
|
|
7803
|
-
? entry.file
|
|
7804
|
-
: null,
|
|
7805
|
-
)
|
|
7806
|
-
.filter(Boolean)
|
|
7807
|
-
: [];
|
|
7808
7716
|
for (const hookFile of hookFiles) {
|
|
7809
7717
|
if (!profilePaths.hooksDir) continue;
|
|
7810
7718
|
const source = path.join(platformRoot, "hooks", hookFile);
|
|
@@ -7828,7 +7736,7 @@ async function installBundleArtifacts({
|
|
|
7828
7736
|
skipped.push(destination);
|
|
7829
7737
|
else installed.push(destination);
|
|
7830
7738
|
}
|
|
7831
|
-
if (shouldInstallPlatformSkills) {
|
|
7739
|
+
if (shouldInstallPlatformSkills && profilePaths.skillsDir) {
|
|
7832
7740
|
const agentSkillDependencies = await resolvePlatformAgentSkillDependencies({
|
|
7833
7741
|
platformRoot,
|
|
7834
7742
|
platformSpec,
|
|
@@ -7885,21 +7793,33 @@ async function installBundleArtifacts({
|
|
|
7885
7793
|
skipped.push(skillsIndexDest);
|
|
7886
7794
|
else installed.push(skillsIndexDest);
|
|
7887
7795
|
}
|
|
7888
|
-
}
|
|
7889
7796
|
|
|
7890
|
-
|
|
7891
|
-
|
|
7892
|
-
|
|
7893
|
-
|
|
7894
|
-
|
|
7895
|
-
|
|
7896
|
-
|
|
7897
|
-
|
|
7898
|
-
|
|
7899
|
-
|
|
7900
|
-
|
|
7901
|
-
|
|
7902
|
-
|
|
7797
|
+
for (const generatedSkillDir of generatedSkillDirs) {
|
|
7798
|
+
const source = path.join(
|
|
7799
|
+
platformRoot,
|
|
7800
|
+
"generated-skills",
|
|
7801
|
+
generatedSkillDir,
|
|
7802
|
+
);
|
|
7803
|
+
const destination = path.join(
|
|
7804
|
+
profilePaths.skillsDir,
|
|
7805
|
+
path.basename(generatedSkillDir),
|
|
7806
|
+
);
|
|
7807
|
+
|
|
7808
|
+
if (!(await pathExists(source))) {
|
|
7809
|
+
throw new Error(`Missing generated skill source directory: ${source}`);
|
|
7810
|
+
}
|
|
7811
|
+
|
|
7812
|
+
const result = await copyArt({
|
|
7813
|
+
source,
|
|
7814
|
+
destination,
|
|
7815
|
+
overwrite,
|
|
7816
|
+
dryRun,
|
|
7817
|
+
});
|
|
7818
|
+
artifacts.skills.push(destination);
|
|
7819
|
+
if (result.action === "skipped" || result.action === "would-skip")
|
|
7820
|
+
skipped.push(destination);
|
|
7821
|
+
else installed.push(destination);
|
|
7822
|
+
}
|
|
7903
7823
|
}
|
|
7904
7824
|
|
|
7905
7825
|
let terminalIntegration = null;
|
|
@@ -7912,11 +7832,13 @@ async function installBundleArtifacts({
|
|
|
7912
7832
|
installed.push(...terminalIntegration.installedPaths);
|
|
7913
7833
|
}
|
|
7914
7834
|
|
|
7915
|
-
const duplicateSkillCleanup =
|
|
7916
|
-
|
|
7917
|
-
|
|
7918
|
-
|
|
7919
|
-
|
|
7835
|
+
const duplicateSkillCleanup = profilePaths.skillsDir
|
|
7836
|
+
? await cleanupNestedDuplicateSkills({
|
|
7837
|
+
skillsRootDir: profilePaths.skillsDir,
|
|
7838
|
+
installedSkillDirs: artifacts.skills,
|
|
7839
|
+
dryRun,
|
|
7840
|
+
})
|
|
7841
|
+
: [];
|
|
7920
7842
|
|
|
7921
7843
|
const sanitizedSkills = await sanitizeInstalledSkillsForPlatform({
|
|
7922
7844
|
platform,
|
|
@@ -7935,64 +7857,12 @@ async function installBundleArtifacts({
|
|
|
7935
7857
|
skipped,
|
|
7936
7858
|
artifacts,
|
|
7937
7859
|
terminalIntegration,
|
|
7938
|
-
generatedWrapperSkills,
|
|
7939
7860
|
duplicateSkillCleanup,
|
|
7940
7861
|
sanitizedSkills,
|
|
7941
7862
|
sanitizedAgents,
|
|
7942
7863
|
};
|
|
7943
7864
|
}
|
|
7944
7865
|
|
|
7945
|
-
async function installCodexProjectWorkflowTemplates({
|
|
7946
|
-
bundleId,
|
|
7947
|
-
manifest,
|
|
7948
|
-
overwrite,
|
|
7949
|
-
dryRun = false,
|
|
7950
|
-
cwd = process.cwd(),
|
|
7951
|
-
}) {
|
|
7952
|
-
const platform = "codex";
|
|
7953
|
-
const platformSpec = manifest.platforms?.[platform];
|
|
7954
|
-
if (!platformSpec) return { installed: [], skipped: [] };
|
|
7955
|
-
|
|
7956
|
-
const workflowFiles = Array.isArray(platformSpec.workflows)
|
|
7957
|
-
? platformSpec.workflows
|
|
7958
|
-
: [];
|
|
7959
|
-
if (workflowFiles.length === 0) return { installed: [], skipped: [] };
|
|
7960
|
-
|
|
7961
|
-
const profilePaths = await resolveProfilePaths(platform, "project", cwd);
|
|
7962
|
-
if (!dryRun) {
|
|
7963
|
-
await mkdir(profilePaths.workflowsDir, { recursive: true });
|
|
7964
|
-
}
|
|
7965
|
-
|
|
7966
|
-
const bundleRoot = path.join(agentAssetsRoot(), "workflows", bundleId);
|
|
7967
|
-
const platformRoot = path.join(bundleRoot, "platforms", platform);
|
|
7968
|
-
const installed = [];
|
|
7969
|
-
const skipped = [];
|
|
7970
|
-
|
|
7971
|
-
for (const workflowFile of workflowFiles) {
|
|
7972
|
-
const source = path.join(platformRoot, "workflows", workflowFile);
|
|
7973
|
-
const destination = path.join(
|
|
7974
|
-
profilePaths.workflowsDir,
|
|
7975
|
-
path.basename(workflowFile),
|
|
7976
|
-
);
|
|
7977
|
-
|
|
7978
|
-
if (!(await pathExists(source))) {
|
|
7979
|
-
throw new Error(`Missing workflow source file: ${source}`);
|
|
7980
|
-
}
|
|
7981
|
-
|
|
7982
|
-
const result = await copyArtifact({
|
|
7983
|
-
source,
|
|
7984
|
-
destination,
|
|
7985
|
-
overwrite,
|
|
7986
|
-
dryRun,
|
|
7987
|
-
});
|
|
7988
|
-
if (result.action === "skipped" || result.action === "would-skip")
|
|
7989
|
-
skipped.push(destination);
|
|
7990
|
-
else installed.push(destination);
|
|
7991
|
-
}
|
|
7992
|
-
|
|
7993
|
-
return { installed, skipped };
|
|
7994
|
-
}
|
|
7995
|
-
|
|
7996
7866
|
async function seedRuleFileFromTemplateIfMissing({
|
|
7997
7867
|
bundleId,
|
|
7998
7868
|
manifest,
|
|
@@ -8042,6 +7912,7 @@ function commandToFilename(command) {
|
|
|
8042
7912
|
}
|
|
8043
7913
|
|
|
8044
7914
|
async function findWorkflowFileByTarget(workflowsDir, target) {
|
|
7915
|
+
if (!workflowsDir) return null;
|
|
8045
7916
|
const direct = target.endsWith(".md") ? target : `${target}.md`;
|
|
8046
7917
|
const directPath = path.join(workflowsDir, direct);
|
|
8047
7918
|
if (await pathExists(directPath)) return directPath;
|
|
@@ -8090,8 +7961,12 @@ async function removeBundleArtifacts({
|
|
|
8090
7961
|
);
|
|
8091
7962
|
|
|
8092
7963
|
const removed = [];
|
|
7964
|
+
const generatedSkillDirs = Array.isArray(platformSpec.generatedSkills)
|
|
7965
|
+
? platformSpec.generatedSkills
|
|
7966
|
+
: [];
|
|
8093
7967
|
|
|
8094
7968
|
for (const workflowFile of platformSpec.workflows || []) {
|
|
7969
|
+
if (!profilePaths.workflowsDir) continue;
|
|
8095
7970
|
const destination = path.join(
|
|
8096
7971
|
profilePaths.workflowsDir,
|
|
8097
7972
|
path.basename(workflowFile),
|
|
@@ -8100,6 +7975,7 @@ async function removeBundleArtifacts({
|
|
|
8100
7975
|
}
|
|
8101
7976
|
|
|
8102
7977
|
for (const agentFile of platformSpec.agents || []) {
|
|
7978
|
+
if (!profilePaths.agentsDir) continue;
|
|
8103
7979
|
const destination = path.join(
|
|
8104
7980
|
profilePaths.agentsDir,
|
|
8105
7981
|
path.basename(agentFile),
|
|
@@ -8146,63 +8022,83 @@ async function removeBundleArtifacts({
|
|
|
8146
8022
|
extraSkillIds: [],
|
|
8147
8023
|
});
|
|
8148
8024
|
for (const skillId of skillIds) {
|
|
8025
|
+
if (!profilePaths.skillsDir) continue;
|
|
8149
8026
|
const destination = path.join(profilePaths.skillsDir, skillId);
|
|
8150
8027
|
if (await safeRemove(destination, dryRun)) removed.push(destination);
|
|
8151
8028
|
}
|
|
8152
8029
|
|
|
8153
|
-
|
|
8154
|
-
|
|
8155
|
-
|
|
8156
|
-
|
|
8157
|
-
|
|
8158
|
-
|
|
8030
|
+
for (const generatedSkillDir of generatedSkillDirs) {
|
|
8031
|
+
if (!profilePaths.skillsDir) continue;
|
|
8032
|
+
const destination = path.join(
|
|
8033
|
+
profilePaths.skillsDir,
|
|
8034
|
+
path.basename(generatedSkillDir),
|
|
8035
|
+
);
|
|
8036
|
+
if (await safeRemove(destination, dryRun)) removed.push(destination);
|
|
8159
8037
|
}
|
|
8160
8038
|
|
|
8161
8039
|
return { removed, profilePaths };
|
|
8162
8040
|
}
|
|
8163
8041
|
|
|
8164
8042
|
function printPlatforms() {
|
|
8043
|
+
const formatPathList = (paths, disabledLabel = "(not used)") =>
|
|
8044
|
+
Array.isArray(paths) && paths.length > 0 ? paths.join(" | ") : disabledLabel;
|
|
8165
8045
|
console.log("Workflow platforms:");
|
|
8166
8046
|
for (const profileId of PLATFORM_IDS) {
|
|
8167
8047
|
const profile = WORKFLOW_PROFILES[profileId];
|
|
8168
8048
|
const agentsEnabled = platformInstallsCustomAgents(profileId);
|
|
8169
8049
|
console.log(`- ${profile.id} (${profile.label})`);
|
|
8170
|
-
console.log(` project workflows: ${profile.project.workflowDirs[0]}`);
|
|
8171
8050
|
console.log(
|
|
8172
|
-
` project
|
|
8051
|
+
` project workflows: ${formatPathList(profile.project.workflowDirs)}`,
|
|
8052
|
+
);
|
|
8053
|
+
console.log(
|
|
8054
|
+
` project agents: ${agentsEnabled ? formatPathList(profile.project.agentDirs, "(not used)") : "(disabled for this platform)"}`,
|
|
8055
|
+
);
|
|
8056
|
+
console.log(
|
|
8057
|
+
` project skills: ${formatPathList(profile.project.skillDirs)}`,
|
|
8173
8058
|
);
|
|
8174
|
-
console.log(` project skills: ${profile.project.skillDirs[0]}`);
|
|
8175
8059
|
if (
|
|
8176
8060
|
Array.isArray(profile.project.commandDirs) &&
|
|
8177
8061
|
profile.project.commandDirs.length > 0
|
|
8178
8062
|
) {
|
|
8179
|
-
console.log(
|
|
8063
|
+
console.log(
|
|
8064
|
+
` project commands: ${formatPathList(profile.project.commandDirs)}`,
|
|
8065
|
+
);
|
|
8180
8066
|
}
|
|
8181
8067
|
if (
|
|
8182
8068
|
Array.isArray(profile.project.promptDirs) &&
|
|
8183
8069
|
profile.project.promptDirs.length > 0
|
|
8184
8070
|
) {
|
|
8185
|
-
console.log(
|
|
8071
|
+
console.log(
|
|
8072
|
+
` project prompts: ${formatPathList(profile.project.promptDirs)}`,
|
|
8073
|
+
);
|
|
8186
8074
|
}
|
|
8187
8075
|
console.log(
|
|
8188
8076
|
` project rules: ${profile.project.ruleFilesByPriority.join(" | ")}`,
|
|
8189
8077
|
);
|
|
8190
|
-
console.log(` global workflows: ${profile.global.workflowDirs[0]}`);
|
|
8191
8078
|
console.log(
|
|
8192
|
-
` global
|
|
8079
|
+
` global workflows: ${formatPathList(profile.global.workflowDirs)}`,
|
|
8080
|
+
);
|
|
8081
|
+
console.log(
|
|
8082
|
+
` global agents: ${agentsEnabled ? formatPathList(profile.global.agentDirs, "(not used)") : "(disabled for this platform)"}`,
|
|
8083
|
+
);
|
|
8084
|
+
console.log(
|
|
8085
|
+
` global skills: ${formatPathList(profile.global.skillDirs)}`,
|
|
8193
8086
|
);
|
|
8194
|
-
console.log(` global skills: ${profile.global.skillDirs[0]}`);
|
|
8195
8087
|
if (
|
|
8196
8088
|
Array.isArray(profile.global.commandDirs) &&
|
|
8197
8089
|
profile.global.commandDirs.length > 0
|
|
8198
8090
|
) {
|
|
8199
|
-
console.log(
|
|
8091
|
+
console.log(
|
|
8092
|
+
` global commands: ${formatPathList(profile.global.commandDirs)}`,
|
|
8093
|
+
);
|
|
8200
8094
|
}
|
|
8201
8095
|
if (
|
|
8202
8096
|
Array.isArray(profile.global.promptDirs) &&
|
|
8203
8097
|
profile.global.promptDirs.length > 0
|
|
8204
8098
|
) {
|
|
8205
|
-
console.log(
|
|
8099
|
+
console.log(
|
|
8100
|
+
` global prompts: ${formatPathList(profile.global.promptDirs)}`,
|
|
8101
|
+
);
|
|
8206
8102
|
}
|
|
8207
8103
|
console.log(
|
|
8208
8104
|
` global rules: ${profile.global.ruleFilesByPriority.join(" | ")}`,
|
|
@@ -8246,7 +8142,6 @@ function printInstallSummary({
|
|
|
8246
8142
|
bundleId,
|
|
8247
8143
|
installed,
|
|
8248
8144
|
skipped,
|
|
8249
|
-
generatedWrapperSkills = [],
|
|
8250
8145
|
duplicateSkillCleanup = [],
|
|
8251
8146
|
sanitizedSkills = [],
|
|
8252
8147
|
sanitizedAgents = [],
|
|
@@ -8283,21 +8178,6 @@ function printInstallSummary({
|
|
|
8283
8178
|
console.log("\nNo changes made.");
|
|
8284
8179
|
}
|
|
8285
8180
|
|
|
8286
|
-
if (generatedWrapperSkills.length > 0) {
|
|
8287
|
-
const workflowCount = generatedWrapperSkills.filter(
|
|
8288
|
-
(item) => item.kind === "workflow",
|
|
8289
|
-
).length;
|
|
8290
|
-
const agentCount = generatedWrapperSkills.filter(
|
|
8291
|
-
(item) => item.kind === "agent",
|
|
8292
|
-
).length;
|
|
8293
|
-
console.log(
|
|
8294
|
-
`\nCodex callable wrapper skills: ${generatedWrapperSkills.length} (workflow=${workflowCount}, agent=${agentCount})`,
|
|
8295
|
-
);
|
|
8296
|
-
console.log(
|
|
8297
|
-
"These remain compatibility aliases. Prefer direct /workflow and @agent routing in Codex when available.",
|
|
8298
|
-
);
|
|
8299
|
-
}
|
|
8300
|
-
|
|
8301
8181
|
if (terminalIntegration) {
|
|
8302
8182
|
console.log("\nAntigravity terminal verification integration:");
|
|
8303
8183
|
console.log(`- Provider: ${terminalIntegration.provider}`);
|
|
@@ -8676,14 +8556,19 @@ async function createDoctorReport({ platform, scope, cwd = process.cwd() }) {
|
|
|
8676
8556
|
const lines = gitignore.split(/\r?\n/).map((line) => line.trim());
|
|
8677
8557
|
const hasAgentIgnore = lines.some(
|
|
8678
8558
|
(line) =>
|
|
8679
|
-
line === ".agent" ||
|
|
8559
|
+
line === ".agent" ||
|
|
8560
|
+
line === ".agent/" ||
|
|
8561
|
+
line === "/.agent/" ||
|
|
8562
|
+
line === ".agents" ||
|
|
8563
|
+
line === ".agents/" ||
|
|
8564
|
+
line === "/.agents/",
|
|
8680
8565
|
);
|
|
8681
8566
|
if (hasAgentIgnore) {
|
|
8682
8567
|
warnings.push(
|
|
8683
|
-
".agent/ is ignored in .gitignore; this can hide team workflow/rule updates.",
|
|
8568
|
+
".agents/ or legacy .agent/ is ignored in .gitignore; this can hide team workflow/rule updates.",
|
|
8684
8569
|
);
|
|
8685
8570
|
recommendations.push(
|
|
8686
|
-
"Prefer tracking .
|
|
8571
|
+
"Prefer tracking .agents/ in git. For local-only excludes, use '.git/info/exclude' instead of .gitignore.",
|
|
8687
8572
|
);
|
|
8688
8573
|
}
|
|
8689
8574
|
}
|
|
@@ -9194,13 +9079,13 @@ async function cleanupAntigravityTerminalIntegration({
|
|
|
9194
9079
|
}) {
|
|
9195
9080
|
const profilePaths = await resolveArtifactProfilePaths(
|
|
9196
9081
|
"antigravity",
|
|
9197
|
-
|
|
9082
|
+
"project",
|
|
9198
9083
|
cwd,
|
|
9199
9084
|
);
|
|
9200
9085
|
const integrationDir = getAntigravityTerminalIntegrationDir(profilePaths);
|
|
9201
9086
|
const dirRemoved = await safeRemove(integrationDir, dryRun);
|
|
9202
9087
|
|
|
9203
|
-
const primaryRuleFile = await resolveRuleFilePath("antigravity",
|
|
9088
|
+
const primaryRuleFile = await resolveRuleFilePath("antigravity", "project", cwd);
|
|
9204
9089
|
const primaryRule = primaryRuleFile
|
|
9205
9090
|
? await removeTerminalVerificationBlock(primaryRuleFile, dryRun)
|
|
9206
9091
|
: { action: "missing-rule-file", filePath: null };
|
|
@@ -9315,28 +9200,6 @@ async function performWorkflowInstall(
|
|
|
9315
9200
|
cwd,
|
|
9316
9201
|
});
|
|
9317
9202
|
|
|
9318
|
-
if (platform === "codex" && scope === "global") {
|
|
9319
|
-
const codexProjectPaths = await resolveProfilePaths(
|
|
9320
|
-
"codex",
|
|
9321
|
-
"project",
|
|
9322
|
-
cwd,
|
|
9323
|
-
);
|
|
9324
|
-
if (
|
|
9325
|
-
path.resolve(artifactProfilePaths.workflowsDir) !==
|
|
9326
|
-
path.resolve(codexProjectPaths.workflowsDir)
|
|
9327
|
-
) {
|
|
9328
|
-
const codexProjectWorkflows = await installCodexProjectWorkflowTemplates({
|
|
9329
|
-
bundleId,
|
|
9330
|
-
manifest,
|
|
9331
|
-
overwrite: Boolean(options.overwrite),
|
|
9332
|
-
dryRun,
|
|
9333
|
-
cwd,
|
|
9334
|
-
});
|
|
9335
|
-
installResult.installed.push(...codexProjectWorkflows.installed);
|
|
9336
|
-
installResult.skipped.push(...codexProjectWorkflows.skipped);
|
|
9337
|
-
}
|
|
9338
|
-
}
|
|
9339
|
-
|
|
9340
9203
|
await seedRuleFileFromTemplateIfMissing({
|
|
9341
9204
|
bundleId,
|
|
9342
9205
|
manifest,
|
|
@@ -9418,7 +9281,6 @@ async function runWorkflowInstall(options) {
|
|
|
9418
9281
|
bundleId: result.bundleId,
|
|
9419
9282
|
installed: result.installResult.installed,
|
|
9420
9283
|
skipped: result.installResult.skipped,
|
|
9421
|
-
generatedWrapperSkills: result.installResult.generatedWrapperSkills,
|
|
9422
9284
|
duplicateSkillCleanup: result.installResult.duplicateSkillCleanup,
|
|
9423
9285
|
sanitizedSkills: result.installResult.sanitizedSkills,
|
|
9424
9286
|
sanitizedAgents: result.installResult.sanitizedAgents,
|
|
@@ -9680,6 +9542,11 @@ async function runWorkflowRemove(target, options) {
|
|
|
9680
9542
|
}
|
|
9681
9543
|
}
|
|
9682
9544
|
} else {
|
|
9545
|
+
if (!artifactProfilePaths.workflowsDir) {
|
|
9546
|
+
throw new Error(
|
|
9547
|
+
`Platform '${platform}' does not install standalone workflow files. Remove the bundle instead, or remove the native command/prompt/skill artifact directly.`,
|
|
9548
|
+
);
|
|
9549
|
+
}
|
|
9683
9550
|
const workflowFile = await findWorkflowFileByTarget(
|
|
9684
9551
|
artifactProfilePaths.workflowsDir,
|
|
9685
9552
|
target,
|
|
@@ -9707,23 +9574,24 @@ async function runWorkflowRemove(target, options) {
|
|
|
9707
9574
|
}
|
|
9708
9575
|
}
|
|
9709
9576
|
|
|
9710
|
-
const syncResult = await syncRulesForPlatform({
|
|
9711
|
-
platform,
|
|
9712
|
-
scope: ruleScope,
|
|
9713
|
-
dryRun,
|
|
9714
|
-
cwd,
|
|
9715
|
-
});
|
|
9716
|
-
|
|
9717
9577
|
if (!dryRun && removedType === "bundle") {
|
|
9578
|
+
const ruleFilePath = await resolveRuleFilePath(platform, ruleScope, cwd);
|
|
9718
9579
|
await recordBundleRemovalState({
|
|
9719
|
-
scope,
|
|
9580
|
+
scope: ruleScope,
|
|
9720
9581
|
platform,
|
|
9721
9582
|
bundleId: target,
|
|
9722
|
-
ruleFilePath
|
|
9583
|
+
ruleFilePath,
|
|
9723
9584
|
cwd,
|
|
9724
9585
|
});
|
|
9725
9586
|
}
|
|
9726
9587
|
|
|
9588
|
+
const syncResult = await syncRulesForPlatform({
|
|
9589
|
+
platform,
|
|
9590
|
+
scope: ruleScope,
|
|
9591
|
+
dryRun,
|
|
9592
|
+
cwd,
|
|
9593
|
+
});
|
|
9594
|
+
|
|
9727
9595
|
printRemoveSummary({
|
|
9728
9596
|
platform,
|
|
9729
9597
|
scope,
|
|
@@ -10167,14 +10035,15 @@ async function runWorkflowRemoveAll(options) {
|
|
|
10167
10035
|
const promptFiles = (platformSpec.prompts || []).map((entry) =>
|
|
10168
10036
|
path.basename(entry),
|
|
10169
10037
|
);
|
|
10038
|
+
const generatedSkillIds = (platformSpec.generatedSkills || []).map(
|
|
10039
|
+
(entry) => path.basename(entry),
|
|
10040
|
+
);
|
|
10170
10041
|
const skillIds = await resolveInstallSkillIds({
|
|
10171
10042
|
platformSpec,
|
|
10172
10043
|
extraSkillIds: [],
|
|
10173
10044
|
});
|
|
10174
|
-
const wrapperSkillIds =
|
|
10175
|
-
platform === "codex" ? buildCodexWrapperSkillIds(platformSpec) : [];
|
|
10176
10045
|
const bundleSkillIds = [
|
|
10177
|
-
...new Set([...skillIds, ...
|
|
10046
|
+
...new Set([...skillIds, ...generatedSkillIds]),
|
|
10178
10047
|
];
|
|
10179
10048
|
|
|
10180
10049
|
for (const workflowsDir of alternateWorkflowsDirs) {
|
|
@@ -12891,7 +12760,7 @@ function printInstallDocumentationNotice() {
|
|
|
12891
12760
|
console.log("\nProject backbone docs:");
|
|
12892
12761
|
console.log("- Install only wires the rule references and workflow assets.");
|
|
12893
12762
|
console.log(
|
|
12894
|
-
`- Use \`cbx rules init\` to scaffold ENGINEERING_RULES.md and TECH.md, or \`cbx build architecture --platform <codex|claude|gemini|copilot>\` to generate ${FOUNDATION_DOCS_DIR}/PRODUCT.md, ${FOUNDATION_DOCS_DIR}/ARCHITECTURE.md, ${FOUNDATION_DOCS_DIR}/TECH.md, and ADR scaffolds.`,
|
|
12763
|
+
`- Use \`cbx rules init\` to scaffold ENGINEERING_RULES.md and TECH.md, or \`cbx build architecture --platform <antigravity|codex|claude|gemini|copilot>\` to generate ${FOUNDATION_DOCS_DIR}/MEMORY.md, ${FOUNDATION_DOCS_DIR}/PRODUCT.md, ${FOUNDATION_DOCS_DIR}/ARCHITECTURE.md, ${FOUNDATION_DOCS_DIR}/TECH.md, topic memory docs, and ADR scaffolds.`,
|
|
12895
12764
|
);
|
|
12896
12765
|
}
|
|
12897
12766
|
|
|
@@ -12940,6 +12809,7 @@ async function upsertEngineeringArtifacts({
|
|
|
12940
12809
|
const blockResult = await upsertEngineeringRulesBlock({
|
|
12941
12810
|
ruleFilePath: target.ruleFilePath,
|
|
12942
12811
|
platform,
|
|
12812
|
+
memoryFilePath: path.join(workspaceRoot, FOUNDATION_DOCS_DIR, "MEMORY.md"),
|
|
12943
12813
|
productFilePath: scaffold.productPath,
|
|
12944
12814
|
architectureFilePath: scaffold.architectureDocPath,
|
|
12945
12815
|
engineeringRulesFilePath: scaffold.engineeringRulesPath,
|
|
@@ -13050,7 +12920,7 @@ function normalizeArchitectureBuildPlatform(value) {
|
|
|
13050
12920
|
const normalized = normalizePlatform(value);
|
|
13051
12921
|
if (!normalized || !ARCHITECTURE_BUILD_PLATFORMS.has(normalized)) {
|
|
13052
12922
|
throw new Error(
|
|
13053
|
-
"Architecture build platform must be one of: codex, claude, gemini, copilot.",
|
|
12923
|
+
"Architecture build platform must be one of: antigravity, codex, claude, gemini, copilot.",
|
|
13054
12924
|
);
|
|
13055
12925
|
}
|
|
13056
12926
|
return normalized;
|
|
@@ -13213,9 +13083,14 @@ function buildArchitecturePrompt({
|
|
|
13213
13083
|
conditionalSkills,
|
|
13214
13084
|
skillPathHints,
|
|
13215
13085
|
}) {
|
|
13086
|
+
const memoryPath = `${FOUNDATION_DOCS_DIR}/MEMORY.md`;
|
|
13216
13087
|
const productPath = `${FOUNDATION_DOCS_DIR}/PRODUCT.md`;
|
|
13217
13088
|
const architecturePath = `${FOUNDATION_DOCS_DIR}/ARCHITECTURE.md`;
|
|
13218
13089
|
const techPath = `${FOUNDATION_DOCS_DIR}/TECH.md`;
|
|
13090
|
+
const domainMemoryPath = `${FOUNDATION_MEMORY_DIR}/domain.md`;
|
|
13091
|
+
const runtimeMemoryPath = `${FOUNDATION_MEMORY_DIR}/runtime.md`;
|
|
13092
|
+
const integrationsMemoryPath = `${FOUNDATION_MEMORY_DIR}/integrations.md`;
|
|
13093
|
+
const debuggingMemoryPath = `${FOUNDATION_MEMORY_DIR}/debugging.md`;
|
|
13219
13094
|
const adrReadmePath = `${FOUNDATION_ADR_DIR}/README.md`;
|
|
13220
13095
|
const adrTemplatePath = `${FOUNDATION_ADR_DIR}/0000-template.md`;
|
|
13221
13096
|
const architectureSignals = snapshot.architectureByApp
|
|
@@ -13226,6 +13101,8 @@ function buildArchitecturePrompt({
|
|
|
13226
13101
|
});
|
|
13227
13102
|
|
|
13228
13103
|
const platformCapabilities = {
|
|
13104
|
+
antigravity:
|
|
13105
|
+
"You are generating repo-shared foundation docs for Antigravity. Use the Gemini-family CLI surface available in this environment and optimize the docs for `.agents/rules/GEMINI.md` plus command-driven workflows.",
|
|
13229
13106
|
codex:
|
|
13230
13107
|
"You can read, write, and execute shell commands. Use `codex exec` mode.",
|
|
13231
13108
|
claude:
|
|
@@ -13241,7 +13118,7 @@ function buildArchitecturePrompt({
|
|
|
13241
13118
|
platformCapabilities[platform] || "",
|
|
13242
13119
|
"",
|
|
13243
13120
|
"Objective:",
|
|
13244
|
-
`- Inspect the repository at ${toPosixPath(workspaceRoot)} and author or refresh the core foundation docs in ${productPath}, ${architecturePath}, ${techPath}, ${adrReadmePath}, and ${adrTemplatePath}.`,
|
|
13121
|
+
`- Inspect the repository at ${toPosixPath(workspaceRoot)} and author or refresh the core foundation docs in ${memoryPath}, ${productPath}, ${architecturePath}, ${techPath}, ${domainMemoryPath}, ${runtimeMemoryPath}, ${integrationsMemoryPath}, ${debuggingMemoryPath}, ${adrReadmePath}, and ${adrTemplatePath}.`,
|
|
13245
13122
|
"- The content should be primarily AI-authored from repository inspection, not copied from placeholder scaffolding.",
|
|
13246
13123
|
"- Preserve manual content outside the managed `cbx:*` markers.",
|
|
13247
13124
|
"- The output docs must be immediately useful to any AI agent (Copilot, Claude, Gemini, Codex) inspecting this repo for the first time, reducing search and exploration time.",
|
|
@@ -13274,6 +13151,17 @@ function buildArchitecturePrompt({
|
|
|
13274
13151
|
}`,
|
|
13275
13152
|
`- Inspection anchors: ${inspectionAnchors.length > 0 ? inspectionAnchors.join(", ") : "no concrete anchors detected; inspect the repo root, main source trees, and manifest files manually"}`,
|
|
13276
13153
|
"",
|
|
13154
|
+
"Foundation doc usage contract:",
|
|
13155
|
+
`- ${memoryPath} is the durable AI entrypoint and first-stop index. Keep it concise, keep it under roughly 120 lines when possible, and route readers to deeper docs instead of duplicating every deep detail.`,
|
|
13156
|
+
`- ${productPath} is for planning, scoping, specs, product intent, business rules, and domain vocabulary.`,
|
|
13157
|
+
`- ${architecturePath} is for structure, boundaries, dependency rules, ADR-worthy decisions, refactors, and design-system governance.`,
|
|
13158
|
+
`- ${techPath} is for build, test, run, debug, CI/CD, tooling, runtime operations, and exact commands.`,
|
|
13159
|
+
`- ${domainMemoryPath}, ${runtimeMemoryPath}, ${integrationsMemoryPath}, and ${debuggingMemoryPath} are load-on-demand drill-down docs for their named topics.`,
|
|
13160
|
+
`- ${adrReadmePath} and ${adrTemplatePath} exist for durable architecture decisions; they are not a replacement for the backbone docs.`,
|
|
13161
|
+
"- `.cbx/architecture-build.json` is build metadata for automation and drift checks, not a primary context document for agents.",
|
|
13162
|
+
"- These docs are downstream inputs to `ENGINEERING_RULES.md` and platform rule files such as `AGENTS.md`, `CLAUDE.md`, `.agents/rules/GEMINI.md`, `.gemini/GEMINI.md`, and `.github/copilot-instructions.md`.",
|
|
13163
|
+
"- Each doc should make it easy for future rules, workflows, agents, and skills to decide whether they need to open it.",
|
|
13164
|
+
"",
|
|
13277
13165
|
"Markdown formatting rules (apply to all generated docs):",
|
|
13278
13166
|
"- Start each file with a single `# Title` heading. Never use more than one H1 per file.",
|
|
13279
13167
|
"- Use `## Heading` for major sections, `### Heading` for subsections. Never skip heading levels (e.g., do not jump from `##` to `####`).",
|
|
@@ -13296,11 +13184,20 @@ function buildArchitecturePrompt({
|
|
|
13296
13184
|
"1. Inspect the repository first before writing any backbone doc content. Derive structure, product surfaces, runtime boundaries, and technical constraints from the actual codebase.",
|
|
13297
13185
|
"2. Complete a real inspection pass before drafting. At minimum, inspect the concrete anchors listed above, plus any adjacent directories needed to understand the main execution paths, data boundaries, and integration surfaces.",
|
|
13298
13186
|
"3. Do not infer architecture from filenames alone when you can open representative files. Read enough source to validate the main app boundaries, runtime flows, and persistence/integration patterns.",
|
|
13299
|
-
`4. Then read ${productPath}, ${architecturePath}, and ${
|
|
13300
|
-
`5. Replace or update only the content between the existing managed markers in ${productPath}, ${architecturePath}, and ${
|
|
13301
|
-
"",
|
|
13302
|
-
`6. In ${
|
|
13187
|
+
`4. Then read ${memoryPath}, ${productPath}, ${architecturePath}, ${techPath}, ${domainMemoryPath}, ${runtimeMemoryPath}, ${integrationsMemoryPath}, and ${debuggingMemoryPath} in that order when they exist so you can preserve useful manual context and update existing managed sections cleanly.`,
|
|
13188
|
+
`5. Replace or update only the content between the existing managed markers in ${memoryPath}, ${productPath}, ${architecturePath}, ${techPath}, ${domainMemoryPath}, ${runtimeMemoryPath}, ${integrationsMemoryPath}, and ${debuggingMemoryPath}. Do not append a second marker block.`,
|
|
13189
|
+
"",
|
|
13190
|
+
`6. In ${memoryPath}, write the durable AI memory index:`,
|
|
13191
|
+
" - A terse project summary that a fresh agent can absorb in under a minute.",
|
|
13192
|
+
" - A task-based map telling rules, workflows, agents, and skills when to load PRODUCT, ARCHITECTURE, TECH, each topic memory doc, and ADRs.",
|
|
13193
|
+
" - Durable facts and invariants that are expensive to rediscover.",
|
|
13194
|
+
" - Active watchpoints: areas likely to break, drift, or require re-validation after changes.",
|
|
13195
|
+
" - Keep MEMORY.md as an index, not a dump: no long command catalogs, no repeated architecture prose, no copied API contracts, and no verbose troubleshooting playbooks when those belong in deeper docs.",
|
|
13196
|
+
" - If a section needs more than a short paragraph or 5-7 bullets, move the detail into PRODUCT, ARCHITECTURE, TECH, a topic memory doc, or an ADR and link to it from MEMORY.md.",
|
|
13197
|
+
"",
|
|
13198
|
+
`7. In ${productPath}, write a concrete product foundation:`,
|
|
13303
13199
|
" - Product purpose with a one-sentence elevator pitch an AI agent can use as context.",
|
|
13200
|
+
" - A short consumer note explaining that PRODUCT is the doc for planning, scoping, specs, UX, and domain-language questions.",
|
|
13304
13201
|
" - Primary users/operators with their key goals.",
|
|
13305
13202
|
" - Main journeys as numbered sequences an agent can follow to understand the happy path.",
|
|
13306
13203
|
" - Business capabilities that matter, linked to repo paths that implement them.",
|
|
@@ -13308,8 +13205,9 @@ function buildArchitecturePrompt({
|
|
|
13308
13205
|
" - What future contributors must preserve (invariants, contracts, compatibility guarantees).",
|
|
13309
13206
|
" - A domain glossary defining project-specific terms, abbreviations, and bounded-context language so AI agents use consistent vocabulary.",
|
|
13310
13207
|
"",
|
|
13311
|
-
`
|
|
13208
|
+
`8. In ${architecturePath}, write a lean but detailed architecture backbone in a pragmatic arc42/C4 style:`,
|
|
13312
13209
|
" - Architecture classification (monolith, modular monolith, microservices, serverless, hybrid) with evidence.",
|
|
13210
|
+
" - A short consumer note explaining that ARCHITECTURE is the doc for refactors, boundary decisions, ADR work, and design-system governance.",
|
|
13313
13211
|
" - System purpose, constraints, and architectural drivers.",
|
|
13314
13212
|
" - Bounded contexts with ownership boundaries mapped to directories.",
|
|
13315
13213
|
" - Major building blocks as a table or Mermaid C4 diagram with responsibilities.",
|
|
@@ -13323,8 +13221,9 @@ function buildArchitecturePrompt({
|
|
|
13323
13221
|
" - Testing/debugging strategy with concrete test commands and coverage tooling.",
|
|
13324
13222
|
" - A dedicated folder-structure guide listing every important directory, what it owns, and contributor rules.",
|
|
13325
13223
|
"",
|
|
13326
|
-
`
|
|
13224
|
+
`9. In ${techPath}, write the developer-facing technical map that an AI agent can use to start working immediately:`,
|
|
13327
13225
|
" - Stack snapshot as a table (runtime, language, framework, version if discoverable).",
|
|
13226
|
+
" - A short consumer note explaining that TECH is the doc for build, run, test, debug, CI/CD, and tooling execution.",
|
|
13328
13227
|
" - Repository layout: directory tree with one-line purpose per directory.",
|
|
13329
13228
|
" - Entrypoints: the exact files that bootstrap each app/service/CLI.",
|
|
13330
13229
|
" - Key commands: the exact shell commands for bootstrap, build, test, lint, format, run, and deploy. Validate that these commands actually exist in the project manifests. Document required order and preconditions.",
|
|
@@ -13339,37 +13238,69 @@ function buildArchitecturePrompt({
|
|
|
13339
13238
|
" - Change hotspots: files/directories that change most often or have the most coupling, so agents know where to look first.",
|
|
13340
13239
|
" - Practical editing notes: conventions for naming, imports, test file placement, and PR hygiene.",
|
|
13341
13240
|
"",
|
|
13342
|
-
`
|
|
13343
|
-
"",
|
|
13344
|
-
|
|
13345
|
-
|
|
13346
|
-
|
|
13347
|
-
"",
|
|
13348
|
-
|
|
13349
|
-
"
|
|
13350
|
-
"
|
|
13241
|
+
`10. In ${domainMemoryPath}, write the domain memory topic doc:`,
|
|
13242
|
+
" - Core entities, bounded contexts, business terminology, and invariants.",
|
|
13243
|
+
" - A short consumer note explaining that this topic doc is for domain modeling and product-language alignment.",
|
|
13244
|
+
" - Which files or modules embody each important concept.",
|
|
13245
|
+
" - Ambiguous terminology or overloaded names that agents should avoid misusing.",
|
|
13246
|
+
"",
|
|
13247
|
+
`11. In ${runtimeMemoryPath}, write the runtime memory topic doc:`,
|
|
13248
|
+
" - Runtime topology, entrypoints, queues/jobs, background workers, schedules, and deployment-time assumptions.",
|
|
13249
|
+
" - A short consumer note explaining that this topic doc is for request flow, process lifecycle, workers, and deployment reasoning.",
|
|
13250
|
+
" - The shortest path to understand request flow and process lifecycle.",
|
|
13251
|
+
"",
|
|
13252
|
+
`12. In ${integrationsMemoryPath}, write the integrations memory topic doc:`,
|
|
13253
|
+
" - External services, APIs, auth boundaries, data contracts, webhook/event flows, and migration-sensitive integration notes.",
|
|
13254
|
+
" - A short consumer note explaining that this topic doc is for external-service, API, auth-boundary, and contract-sensitive work.",
|
|
13255
|
+
"",
|
|
13256
|
+
`13. In ${debuggingMemoryPath}, write the debugging memory topic doc:`,
|
|
13257
|
+
" - Common failures, hot logs, exact investigation commands, smoke checks, and repo-specific diagnostic shortcuts.",
|
|
13258
|
+
" - A short consumer note explaining that this topic doc is for triage, incident response, and debugging workflows.",
|
|
13259
|
+
"",
|
|
13260
|
+
"Consumer guidance contract:",
|
|
13261
|
+
"- Near the top of each foundation doc, include a short 'when to consult this doc' cue so future rules, workflows, agents, and skills can decide quickly whether they need that document.",
|
|
13262
|
+
"- In MEMORY.md, name the likely downstream consumers of each deeper doc using concrete route families such as planning/spec, architecture/refactor, build/test/debug, runtime/integration, and ADR work.",
|
|
13263
|
+
"- Keep MEMORY.md lean enough to be imported frequently. Prefer short bullets, compact tables only when necessary, and links outward instead of repeated explanations.",
|
|
13264
|
+
"",
|
|
13265
|
+
`14. ${techPath} should complement ${architecturePath}; do not repeat the same structure prose unless it helps a developer act faster.`,
|
|
13266
|
+
"",
|
|
13267
|
+
`15. Use exact required headings in ${memoryPath}: \`## Project Summary\`, \`## Load These Docs By Task\`, \`## Durable Facts\`, \`## Active Watchpoints\`.`,
|
|
13268
|
+
`16. Use exact required headings in ${productPath}: \`## Product Scope\`, \`## Product Purpose\`, \`## Primary Users And Operators\`, \`## Main Journeys\`, \`## Business Capabilities That Matter\`, \`## Operational Constraints\`, \`## Preservation Rules For Future Contributors\`, \`## Domain Glossary\`.`,
|
|
13269
|
+
`17. Use exact required headings in ${architecturePath}: \`## Architecture Type\`, \`## System Purpose\`, \`## Constraints And Architectural Drivers\`, \`## Repository Structure Guide\`, \`## Bounded Contexts\`, \`## Major Building Blocks\`, \`## Dependency Rules\`, \`## Data Boundaries\`, \`## Integration Boundaries\`, \`## Runtime Flows\`, \`## Crosscutting Concerns\`, \`## Quality Requirements\`, \`## Risks And Tech Debt\`, \`## Deployment And Operability\`, \`## Testing And Debugging Strategy\`, \`## Architectural Guidance\`.`,
|
|
13270
|
+
`18. Use exact required headings in ${techPath}: \`## Stack Snapshot\`, \`## Repository Layout\`, \`## Entrypoints\`, \`## Key Commands\`, \`## Build And Validation\`, \`## CI CD Pipeline\`, \`## Runtime Data Stores\`, \`## External Services And Integration Surfaces\`, \`## Environment And Config Surfaces\`, \`## Generated Artifacts To Respect\`, \`## Error Patterns And Debugging\`, \`## Change Hotspots\`, \`## Practical Editing Notes\`.`,
|
|
13271
|
+
`19. Use exact required headings in ${domainMemoryPath}: \`## Core Concepts\`, \`## Bounded Context Vocabulary\`, \`## Invariants To Preserve\`, \`## File Ownership Map\`.`,
|
|
13272
|
+
`20. Use exact required headings in ${runtimeMemoryPath}: \`## Runtime Topology\`, \`## Entrypoint Paths\`, \`## Background Work\`, \`## Deployment Assumptions\`.`,
|
|
13273
|
+
`21. Use exact required headings in ${integrationsMemoryPath}: \`## External Services\`, \`## Contracts And Schemas\`, \`## Auth And Trust Boundaries\`, \`## Change Risks\`.`,
|
|
13274
|
+
`22. Use exact required headings in ${debuggingMemoryPath}: \`## Fast Triage Paths\`, \`## Logs And Signals\`, \`## Known Failure Modes\`, \`## Verification Shortcuts\`.`,
|
|
13275
|
+
"",
|
|
13276
|
+
"23. Every major claim should be grounded in repository evidence. Mention concrete repo paths in the docs when a structural claim would otherwise be ambiguous.",
|
|
13277
|
+
"24. Avoid placeholder filler, generic checklists, and duplicated content across files. Each doc should have a clear job.",
|
|
13278
|
+
"25. Do not create ROADMAP.md, ENGINEERING_RULES.md, or other extra docs unless the prompt explicitly asks for them.",
|
|
13351
13279
|
researchMode === "never"
|
|
13352
|
-
? "
|
|
13353
|
-
: "
|
|
13280
|
+
? "26. Stay repo-only. Do not use outside research."
|
|
13281
|
+
: "26. Use repo evidence first. Use official docs when needed. Treat Reddit or community sources only as labeled secondary evidence.",
|
|
13354
13282
|
researchMode === "always"
|
|
13355
|
-
? `
|
|
13356
|
-
: "
|
|
13357
|
-
`
|
|
13358
|
-
`
|
|
13359
|
-
"
|
|
13360
|
-
"
|
|
13361
|
-
"
|
|
13283
|
+
? `27. Include an external research evidence subsection in ${techPath} with clearly labeled primary and secondary evidence.`
|
|
13284
|
+
: "27. Include external research notes only if they materially informed the architecture update.",
|
|
13285
|
+
`28. If the project clearly follows Clean Architecture, feature-first modules, DDD, modular monolith, or another stable structure, make that explicit in ${architecturePath} with evidence from the repo.`,
|
|
13286
|
+
`29. Ensure ${adrReadmePath} and ${adrTemplatePath} exist as ADR entrypoints, but keep them lean.`,
|
|
13287
|
+
"30. In all docs, when referencing other foundation docs, use relative markdown links: `[ARCHITECTURE.md](docs/foundation/ARCHITECTURE.md)`. This lets AI agents and humans navigate between docs.",
|
|
13288
|
+
"31. Validate all Mermaid diagram syntax before writing. Each diagram must render without errors. Use simple node IDs (alphanumeric, no special characters) and quote labels containing spaces.",
|
|
13289
|
+
"32. For each key command documented, note the expected exit code (0 for success) and any common failure modes. This helps AI agents validate their own changes.",
|
|
13362
13290
|
"",
|
|
13363
13291
|
"Platform context-loading awareness (these docs will be @imported into agent rule files):",
|
|
13364
13292
|
"- Claude loads CLAUDE.md at session start via @file imports; each imported doc should be concise and self-contained.",
|
|
13365
13293
|
"- Gemini loads GEMINI.md hierarchically with JIT context; structure docs with clear H2 headings so sections are independently useful.",
|
|
13294
|
+
"- Antigravity benefits from the same hierarchical structure because `.agents/rules/GEMINI.md` should point to a small durable memory index, not dump every deep reference by default.",
|
|
13366
13295
|
"- Codex concatenates AGENTS.md files root-to-CWD with a default 32 KiB combined limit; keep total foundation doc prose lean.",
|
|
13367
13296
|
"- Copilot loads copilot-instructions.md automatically; headings and inline code markers aid discoverability.",
|
|
13297
|
+
"- `ENGINEERING_RULES.md` and platform rule files should treat MEMORY.md as the first-stop shared memory index and load deeper docs only on demand.",
|
|
13368
13298
|
"- Target each individual foundation doc under 300 lines so it stays effective when imported into any platform's context window.",
|
|
13299
|
+
"- Treat MEMORY.md as the tightest budget document in the set. It should remain substantially shorter than PRODUCT.md, ARCHITECTURE.md, or TECH.md.",
|
|
13369
13300
|
"- Front-load the most actionable information (commands, paths, constraints) in each doc; put supplementary detail later.",
|
|
13370
13301
|
"",
|
|
13371
13302
|
"Return one JSON object on the last line with this shape:",
|
|
13372
|
-
`{"files_written":["${productPath}","${architecturePath}","${techPath}","${adrReadmePath}","${adrTemplatePath}"],"research_used":false,"gaps":[],"next_actions":[]}`,
|
|
13303
|
+
`{"files_written":["${memoryPath}","${productPath}","${architecturePath}","${techPath}","${domainMemoryPath}","${runtimeMemoryPath}","${integrationsMemoryPath}","${debuggingMemoryPath}","${adrReadmePath}","${adrTemplatePath}"],"research_used":false,"gaps":[],"next_actions":[]}`,
|
|
13373
13304
|
"",
|
|
13374
13305
|
"Do not emit placeholder TODOs in the managed sections.",
|
|
13375
13306
|
].join("\n");
|
|
@@ -13377,6 +13308,13 @@ function buildArchitecturePrompt({
|
|
|
13377
13308
|
|
|
13378
13309
|
let architectureExecFileCaptureOverride = null;
|
|
13379
13310
|
let architectureSpawnCaptureOverride = null;
|
|
13311
|
+
const WINDOWS_COMMAND_EXTENSION_PREFERENCE = [
|
|
13312
|
+
".exe",
|
|
13313
|
+
".cmd",
|
|
13314
|
+
".bat",
|
|
13315
|
+
".com",
|
|
13316
|
+
"",
|
|
13317
|
+
];
|
|
13380
13318
|
|
|
13381
13319
|
export function __setArchitectureCommandCaptureForTests(overrides = {}) {
|
|
13382
13320
|
architectureExecFileCaptureOverride =
|
|
@@ -13390,13 +13328,98 @@ export function __resetArchitectureCommandCaptureForTests() {
|
|
|
13390
13328
|
architectureSpawnCaptureOverride = null;
|
|
13391
13329
|
}
|
|
13392
13330
|
|
|
13331
|
+
function getEnvValueCaseInsensitive(env, key) {
|
|
13332
|
+
if (!env) return "";
|
|
13333
|
+
const match = Object.keys(env).find(
|
|
13334
|
+
(candidate) => candidate.toLowerCase() === key.toLowerCase(),
|
|
13335
|
+
);
|
|
13336
|
+
return match ? String(env[match] || "") : "";
|
|
13337
|
+
}
|
|
13338
|
+
|
|
13339
|
+
function rankWindowsCommandCandidate(command, candidate) {
|
|
13340
|
+
const requestedBase = path.parse(command).name.toLowerCase();
|
|
13341
|
+
const parsedCandidate = path.parse(candidate);
|
|
13342
|
+
if (parsedCandidate.name.toLowerCase() !== requestedBase) return -1;
|
|
13343
|
+
const ext = parsedCandidate.ext.toLowerCase();
|
|
13344
|
+
const rank = WINDOWS_COMMAND_EXTENSION_PREFERENCE.indexOf(ext);
|
|
13345
|
+
if (rank !== -1) {
|
|
13346
|
+
return WINDOWS_COMMAND_EXTENSION_PREFERENCE.length - rank;
|
|
13347
|
+
}
|
|
13348
|
+
return 0;
|
|
13349
|
+
}
|
|
13350
|
+
|
|
13351
|
+
function pickWindowsCommandCandidate(command, candidates) {
|
|
13352
|
+
const normalized = (candidates || [])
|
|
13353
|
+
.map((candidate) => String(candidate || "").trim())
|
|
13354
|
+
.filter(Boolean);
|
|
13355
|
+
if (normalized.length === 0) return null;
|
|
13356
|
+
|
|
13357
|
+
const ranked = normalized
|
|
13358
|
+
.map((candidate) => ({
|
|
13359
|
+
candidate,
|
|
13360
|
+
score: rankWindowsCommandCandidate(command, candidate),
|
|
13361
|
+
}))
|
|
13362
|
+
.sort((left, right) => right.score - left.score);
|
|
13363
|
+
|
|
13364
|
+
return ranked[0]?.candidate || normalized[0];
|
|
13365
|
+
}
|
|
13366
|
+
|
|
13367
|
+
function scanWindowsPathForCommand(command, env = process.env) {
|
|
13368
|
+
const pathValue = getEnvValueCaseInsensitive(env, "PATH");
|
|
13369
|
+
if (!pathValue) return null;
|
|
13370
|
+
|
|
13371
|
+
const pathEntries = pathValue
|
|
13372
|
+
.split(path.delimiter)
|
|
13373
|
+
.map((entry) => entry.trim())
|
|
13374
|
+
.filter(Boolean);
|
|
13375
|
+
const requestedExt = path.extname(command).toLowerCase();
|
|
13376
|
+
const pathExts = getEnvValueCaseInsensitive(env, "PATHEXT")
|
|
13377
|
+
.split(";")
|
|
13378
|
+
.map((ext) => ext.trim().toLowerCase())
|
|
13379
|
+
.filter(Boolean)
|
|
13380
|
+
.map((ext) => (ext.startsWith(".") ? ext : `.${ext}`));
|
|
13381
|
+
const suffixes = requestedExt
|
|
13382
|
+
? [""]
|
|
13383
|
+
: Array.from(
|
|
13384
|
+
new Set([
|
|
13385
|
+
...WINDOWS_COMMAND_EXTENSION_PREFERENCE,
|
|
13386
|
+
...pathExts,
|
|
13387
|
+
]),
|
|
13388
|
+
);
|
|
13389
|
+
const candidates = [];
|
|
13390
|
+
|
|
13391
|
+
for (const entry of pathEntries) {
|
|
13392
|
+
const basePath = path.join(entry, command);
|
|
13393
|
+
if (requestedExt && existsSync(basePath)) {
|
|
13394
|
+
candidates.push(basePath);
|
|
13395
|
+
continue;
|
|
13396
|
+
}
|
|
13397
|
+
for (const suffix of suffixes) {
|
|
13398
|
+
const candidate = suffix ? `${basePath}${suffix}` : basePath;
|
|
13399
|
+
if (existsSync(candidate)) {
|
|
13400
|
+
candidates.push(candidate);
|
|
13401
|
+
}
|
|
13402
|
+
}
|
|
13403
|
+
}
|
|
13404
|
+
|
|
13405
|
+
return pickWindowsCommandCandidate(command, candidates);
|
|
13406
|
+
}
|
|
13407
|
+
|
|
13408
|
+
export function __pickWindowsCommandCandidateForTests(command, candidates) {
|
|
13409
|
+
return pickWindowsCommandCandidate(command, candidates);
|
|
13410
|
+
}
|
|
13411
|
+
|
|
13412
|
+
export function __scanWindowsPathForCommandForTests(command, env) {
|
|
13413
|
+
return scanWindowsPathForCommand(command, env);
|
|
13414
|
+
}
|
|
13415
|
+
|
|
13393
13416
|
async function execFileCapture(command, args, options = {}) {
|
|
13394
13417
|
if (architectureExecFileCaptureOverride) {
|
|
13395
13418
|
return await architectureExecFileCaptureOverride(command, args, options);
|
|
13396
13419
|
}
|
|
13397
13420
|
const resolvedCommand =
|
|
13398
13421
|
process.platform === "win32"
|
|
13399
|
-
? await resolveWindowsCommand(command)
|
|
13422
|
+
? await resolveWindowsCommand(command, options.env)
|
|
13400
13423
|
: command;
|
|
13401
13424
|
if (
|
|
13402
13425
|
process.platform === "win32" &&
|
|
@@ -13432,24 +13455,29 @@ async function execFileCapture(command, args, options = {}) {
|
|
|
13432
13455
|
}
|
|
13433
13456
|
}
|
|
13434
13457
|
|
|
13435
|
-
async function resolveWindowsCommand(command) {
|
|
13458
|
+
async function resolveWindowsCommand(command, env = process.env) {
|
|
13436
13459
|
if (process.platform !== "win32") return command;
|
|
13437
13460
|
if (path.isAbsolute(command) || /[\\/]/.test(command)) return command;
|
|
13461
|
+
const pathCandidate = scanWindowsPathForCommand(command, env);
|
|
13438
13462
|
try {
|
|
13439
13463
|
const result = await execFile("where.exe", [command], {
|
|
13440
13464
|
windowsHide: true,
|
|
13441
13465
|
maxBuffer: 1024 * 1024,
|
|
13442
13466
|
});
|
|
13443
|
-
const
|
|
13467
|
+
const candidates = String(result.stdout || "")
|
|
13444
13468
|
.split(/\r?\n/)
|
|
13445
13469
|
.map((line) => line.trim())
|
|
13446
|
-
.
|
|
13470
|
+
.filter(Boolean);
|
|
13471
|
+
const resolved = pickWindowsCommandCandidate(command, candidates);
|
|
13447
13472
|
if (resolved) return resolved;
|
|
13448
13473
|
} catch (error) {
|
|
13449
13474
|
if (error?.code === "ENOENT") {
|
|
13475
|
+
if (pathCandidate) return pathCandidate;
|
|
13450
13476
|
throw new Error(`Required CLI '${command}' is not installed or not on PATH.`);
|
|
13451
13477
|
}
|
|
13478
|
+
if (pathCandidate) return pathCandidate;
|
|
13452
13479
|
}
|
|
13480
|
+
if (pathCandidate) return pathCandidate;
|
|
13453
13481
|
const missingError = new Error(
|
|
13454
13482
|
`Required CLI '${command}' is not installed or not on PATH.`,
|
|
13455
13483
|
);
|
|
@@ -13464,7 +13492,7 @@ async function spawnCapture(command, args, options = {}) {
|
|
|
13464
13492
|
const { cwd, env, streamOutput = false, useShell } = options;
|
|
13465
13493
|
const resolvedCommand =
|
|
13466
13494
|
process.platform === "win32"
|
|
13467
|
-
? await resolveWindowsCommand(command)
|
|
13495
|
+
? await resolveWindowsCommand(command, env)
|
|
13468
13496
|
: command;
|
|
13469
13497
|
const shell =
|
|
13470
13498
|
typeof useShell === "boolean"
|
|
@@ -13521,7 +13549,7 @@ function explainArchitectureBuildFailure(platform, execution) {
|
|
|
13521
13549
|
);
|
|
13522
13550
|
const notes = [];
|
|
13523
13551
|
|
|
13524
|
-
if (platform === "gemini") {
|
|
13552
|
+
if (platform === "gemini" || platform === "antigravity") {
|
|
13525
13553
|
if (
|
|
13526
13554
|
combined.includes("Error during discovery for MCP server") ||
|
|
13527
13555
|
combined.includes("[MCP error]")
|
|
@@ -13601,7 +13629,7 @@ async function probeArchitectureAdapter(platform, cwd) {
|
|
|
13601
13629
|
};
|
|
13602
13630
|
}
|
|
13603
13631
|
|
|
13604
|
-
if (platform === "gemini") {
|
|
13632
|
+
if (platform === "gemini" || platform === "antigravity") {
|
|
13605
13633
|
const help = await execFileCapture("gemini", ["--help"], { cwd });
|
|
13606
13634
|
const helpText = `${help.stdout}\n${help.stderr}`.trim();
|
|
13607
13635
|
const promptFlag = helpText.includes("--prompt")
|
|
@@ -13765,6 +13793,11 @@ async function collapseDuplicateTaggedBlocks({
|
|
|
13765
13793
|
}
|
|
13766
13794
|
|
|
13767
13795
|
async function normalizeArchitectureBuildOutputs(scaffold) {
|
|
13796
|
+
await collapseDuplicateTaggedBlocks({
|
|
13797
|
+
targetPath: scaffold.memoryPath,
|
|
13798
|
+
startPattern: MEMORY_FOUNDATION_BLOCK_START_RE,
|
|
13799
|
+
endPattern: MEMORY_FOUNDATION_BLOCK_END_RE,
|
|
13800
|
+
});
|
|
13768
13801
|
await collapseDuplicateTaggedBlocks({
|
|
13769
13802
|
targetPath: scaffold.productPath,
|
|
13770
13803
|
startPattern: PRODUCT_FOUNDATION_BLOCK_START_RE,
|
|
@@ -13780,9 +13813,22 @@ async function normalizeArchitectureBuildOutputs(scaffold) {
|
|
|
13780
13813
|
startPattern: TECH_ARCHITECTURE_BLOCK_START_RE,
|
|
13781
13814
|
endPattern: TECH_ARCHITECTURE_BLOCK_END_RE,
|
|
13782
13815
|
});
|
|
13816
|
+
for (const targetPath of [
|
|
13817
|
+
scaffold.domainMemoryPath,
|
|
13818
|
+
scaffold.runtimeMemoryPath,
|
|
13819
|
+
scaffold.integrationsMemoryPath,
|
|
13820
|
+
scaffold.debuggingMemoryPath,
|
|
13821
|
+
]) {
|
|
13822
|
+
await collapseDuplicateTaggedBlocks({
|
|
13823
|
+
targetPath,
|
|
13824
|
+
startPattern: MEMORY_TOPIC_BLOCK_START_RE,
|
|
13825
|
+
endPattern: MEMORY_TOPIC_BLOCK_END_RE,
|
|
13826
|
+
});
|
|
13827
|
+
}
|
|
13783
13828
|
}
|
|
13784
13829
|
|
|
13785
13830
|
async function readArchitectureDriftStatus(workspaceRoot, snapshot) {
|
|
13831
|
+
const memoryPath = path.join(workspaceRoot, FOUNDATION_DOCS_DIR, "MEMORY.md");
|
|
13786
13832
|
const productPath = path.join(
|
|
13787
13833
|
workspaceRoot,
|
|
13788
13834
|
FOUNDATION_DOCS_DIR,
|
|
@@ -13794,6 +13840,10 @@ async function readArchitectureDriftStatus(workspaceRoot, snapshot) {
|
|
|
13794
13840
|
"ARCHITECTURE.md",
|
|
13795
13841
|
);
|
|
13796
13842
|
const techPath = path.join(workspaceRoot, FOUNDATION_DOCS_DIR, "TECH.md");
|
|
13843
|
+
const domainMemoryPath = path.join(workspaceRoot, FOUNDATION_MEMORY_DIR, "domain.md");
|
|
13844
|
+
const runtimeMemoryPath = path.join(workspaceRoot, FOUNDATION_MEMORY_DIR, "runtime.md");
|
|
13845
|
+
const integrationsMemoryPath = path.join(workspaceRoot, FOUNDATION_MEMORY_DIR, "integrations.md");
|
|
13846
|
+
const debuggingMemoryPath = path.join(workspaceRoot, FOUNDATION_MEMORY_DIR, "debugging.md");
|
|
13797
13847
|
const adrReadmePath = path.join(
|
|
13798
13848
|
workspaceRoot,
|
|
13799
13849
|
FOUNDATION_ADR_DIR,
|
|
@@ -13804,12 +13854,35 @@ async function readArchitectureDriftStatus(workspaceRoot, snapshot) {
|
|
|
13804
13854
|
".cbx",
|
|
13805
13855
|
ARCHITECTURE_BUILD_METADATA_FILENAME,
|
|
13806
13856
|
);
|
|
13857
|
+
const memoryExists = await pathExists(memoryPath);
|
|
13807
13858
|
const productExists = await pathExists(productPath);
|
|
13808
13859
|
const architectureExists = await pathExists(architecturePath);
|
|
13809
13860
|
const techExists = await pathExists(techPath);
|
|
13861
|
+
const topicPaths = [
|
|
13862
|
+
domainMemoryPath,
|
|
13863
|
+
runtimeMemoryPath,
|
|
13864
|
+
integrationsMemoryPath,
|
|
13865
|
+
debuggingMemoryPath,
|
|
13866
|
+
];
|
|
13810
13867
|
const adrReadmeExists = await pathExists(adrReadmePath);
|
|
13811
13868
|
|
|
13812
13869
|
const findings = [];
|
|
13870
|
+
if (!memoryExists) {
|
|
13871
|
+
findings.push(`${FOUNDATION_DOCS_DIR}/MEMORY.md is missing.`);
|
|
13872
|
+
} else {
|
|
13873
|
+
const content = await readFile(memoryPath, "utf8");
|
|
13874
|
+
if (
|
|
13875
|
+
!extractTaggedMarkerAttribute(
|
|
13876
|
+
content,
|
|
13877
|
+
MEMORY_FOUNDATION_BLOCK_START_RE,
|
|
13878
|
+
"profile",
|
|
13879
|
+
)
|
|
13880
|
+
) {
|
|
13881
|
+
findings.push(
|
|
13882
|
+
`${FOUNDATION_DOCS_DIR}/MEMORY.md is missing the managed memory block.`,
|
|
13883
|
+
);
|
|
13884
|
+
}
|
|
13885
|
+
}
|
|
13813
13886
|
let actualProductHash = null;
|
|
13814
13887
|
let actualArchitectureHash = null;
|
|
13815
13888
|
let actualTechHash = null;
|
|
@@ -13865,6 +13938,24 @@ async function readArchitectureDriftStatus(workspaceRoot, snapshot) {
|
|
|
13865
13938
|
if (!adrReadmeExists) {
|
|
13866
13939
|
findings.push(`${FOUNDATION_ADR_DIR}/README.md is missing.`);
|
|
13867
13940
|
}
|
|
13941
|
+
for (const topicPath of topicPaths) {
|
|
13942
|
+
const exists = await pathExists(topicPath);
|
|
13943
|
+
const relativePath = toPosixPath(path.relative(workspaceRoot, topicPath));
|
|
13944
|
+
if (!exists) {
|
|
13945
|
+
findings.push(`${relativePath} is missing.`);
|
|
13946
|
+
continue;
|
|
13947
|
+
}
|
|
13948
|
+
const content = await readFile(topicPath, "utf8");
|
|
13949
|
+
if (
|
|
13950
|
+
!extractTaggedMarkerAttribute(
|
|
13951
|
+
content,
|
|
13952
|
+
MEMORY_TOPIC_BLOCK_START_RE,
|
|
13953
|
+
"profile",
|
|
13954
|
+
)
|
|
13955
|
+
) {
|
|
13956
|
+
findings.push(`${relativePath} is missing the managed memory topic block.`);
|
|
13957
|
+
}
|
|
13958
|
+
}
|
|
13868
13959
|
|
|
13869
13960
|
const metadata = await readJsonFileIfExists(metadataPath);
|
|
13870
13961
|
if (!metadata.exists) {
|
|
@@ -13874,6 +13965,7 @@ async function readArchitectureDriftStatus(workspaceRoot, snapshot) {
|
|
|
13874
13965
|
return {
|
|
13875
13966
|
stale: findings.length > 0,
|
|
13876
13967
|
findings,
|
|
13968
|
+
memoryPath,
|
|
13877
13969
|
productPath,
|
|
13878
13970
|
architecturePath,
|
|
13879
13971
|
techPath,
|
|
@@ -13907,7 +13999,7 @@ async function runBuildArchitecture(options) {
|
|
|
13907
13999
|
console.log(`Workspace: ${toPosixPath(workspaceRoot)}`);
|
|
13908
14000
|
console.log(`Status: ${drift.stale ? "stale" : "fresh"}`);
|
|
13909
14001
|
console.log(
|
|
13910
|
-
`Backbone docs: ${FOUNDATION_DOCS_DIR}/PRODUCT.md, ${FOUNDATION_DOCS_DIR}/ARCHITECTURE.md, ${FOUNDATION_DOCS_DIR}/TECH.md, ${FOUNDATION_ADR_DIR}/README.md`,
|
|
14002
|
+
`Backbone docs: ${FOUNDATION_DOCS_DIR}/MEMORY.md, ${FOUNDATION_DOCS_DIR}/PRODUCT.md, ${FOUNDATION_DOCS_DIR}/ARCHITECTURE.md, ${FOUNDATION_DOCS_DIR}/TECH.md, ${FOUNDATION_MEMORY_DIR}/*.md, ${FOUNDATION_ADR_DIR}/README.md`,
|
|
13911
14003
|
);
|
|
13912
14004
|
if (drift.findings.length > 0) {
|
|
13913
14005
|
console.log("Findings:");
|
|
@@ -13921,9 +14013,14 @@ async function runBuildArchitecture(options) {
|
|
|
13921
14013
|
}
|
|
13922
14014
|
|
|
13923
14015
|
const managedFilePaths = [
|
|
14016
|
+
path.join(workspaceRoot, FOUNDATION_DOCS_DIR, "MEMORY.md"),
|
|
13924
14017
|
path.join(workspaceRoot, FOUNDATION_DOCS_DIR, "PRODUCT.md"),
|
|
13925
14018
|
path.join(workspaceRoot, FOUNDATION_DOCS_DIR, "ARCHITECTURE.md"),
|
|
13926
14019
|
path.join(workspaceRoot, FOUNDATION_DOCS_DIR, "TECH.md"),
|
|
14020
|
+
path.join(workspaceRoot, FOUNDATION_MEMORY_DIR, "domain.md"),
|
|
14021
|
+
path.join(workspaceRoot, FOUNDATION_MEMORY_DIR, "runtime.md"),
|
|
14022
|
+
path.join(workspaceRoot, FOUNDATION_MEMORY_DIR, "integrations.md"),
|
|
14023
|
+
path.join(workspaceRoot, FOUNDATION_MEMORY_DIR, "debugging.md"),
|
|
13927
14024
|
path.join(workspaceRoot, FOUNDATION_ADR_DIR, "README.md"),
|
|
13928
14025
|
path.join(workspaceRoot, FOUNDATION_ADR_DIR, "0000-template.md"),
|
|
13929
14026
|
];
|
|
@@ -13963,9 +14060,14 @@ async function runBuildArchitecture(options) {
|
|
|
13963
14060
|
const adapter = await probeArchitectureAdapter(platform, workspaceRoot);
|
|
13964
14061
|
const args = adapter.buildInvocation(prompt);
|
|
13965
14062
|
const managedTargets = [
|
|
14063
|
+
path.join(workspaceRoot, FOUNDATION_DOCS_DIR, "MEMORY.md"),
|
|
13966
14064
|
path.join(workspaceRoot, FOUNDATION_DOCS_DIR, "PRODUCT.md"),
|
|
13967
14065
|
path.join(workspaceRoot, FOUNDATION_DOCS_DIR, "ARCHITECTURE.md"),
|
|
13968
14066
|
path.join(workspaceRoot, FOUNDATION_DOCS_DIR, "TECH.md"),
|
|
14067
|
+
path.join(workspaceRoot, FOUNDATION_MEMORY_DIR, "domain.md"),
|
|
14068
|
+
path.join(workspaceRoot, FOUNDATION_MEMORY_DIR, "runtime.md"),
|
|
14069
|
+
path.join(workspaceRoot, FOUNDATION_MEMORY_DIR, "integrations.md"),
|
|
14070
|
+
path.join(workspaceRoot, FOUNDATION_MEMORY_DIR, "debugging.md"),
|
|
13969
14071
|
path.join(workspaceRoot, FOUNDATION_ADR_DIR, "README.md"),
|
|
13970
14072
|
path.join(workspaceRoot, FOUNDATION_ADR_DIR, "0000-template.md"),
|
|
13971
14073
|
].map((filePath) => toPosixPath(filePath));
|
|
@@ -14039,9 +14141,14 @@ async function runBuildArchitecture(options) {
|
|
|
14039
14141
|
platform,
|
|
14040
14142
|
researchMode,
|
|
14041
14143
|
managedDocs: [
|
|
14144
|
+
`${FOUNDATION_DOCS_DIR}/MEMORY.md`,
|
|
14042
14145
|
`${FOUNDATION_DOCS_DIR}/PRODUCT.md`,
|
|
14043
14146
|
`${FOUNDATION_DOCS_DIR}/ARCHITECTURE.md`,
|
|
14044
14147
|
`${FOUNDATION_DOCS_DIR}/TECH.md`,
|
|
14148
|
+
`${FOUNDATION_MEMORY_DIR}/domain.md`,
|
|
14149
|
+
`${FOUNDATION_MEMORY_DIR}/runtime.md`,
|
|
14150
|
+
`${FOUNDATION_MEMORY_DIR}/integrations.md`,
|
|
14151
|
+
`${FOUNDATION_MEMORY_DIR}/debugging.md`,
|
|
14045
14152
|
`${FOUNDATION_ADR_DIR}/README.md`,
|
|
14046
14153
|
`${FOUNDATION_ADR_DIR}/0000-template.md`,
|
|
14047
14154
|
],
|
|
@@ -14080,7 +14187,7 @@ async function runBuildArchitecture(options) {
|
|
|
14080
14187
|
console.log(`Adapter: ${adapter.binary}`);
|
|
14081
14188
|
console.log(`Workspace: ${toPosixPath(workspaceRoot)}`);
|
|
14082
14189
|
console.log(
|
|
14083
|
-
`Managed docs: ${FOUNDATION_DOCS_DIR}/PRODUCT.md, ${FOUNDATION_DOCS_DIR}/ARCHITECTURE.md, ${FOUNDATION_DOCS_DIR}/TECH.md`,
|
|
14190
|
+
`Managed docs: ${FOUNDATION_DOCS_DIR}/MEMORY.md, ${FOUNDATION_DOCS_DIR}/PRODUCT.md, ${FOUNDATION_DOCS_DIR}/ARCHITECTURE.md, ${FOUNDATION_DOCS_DIR}/TECH.md, ${FOUNDATION_MEMORY_DIR}/*.md`,
|
|
14084
14191
|
);
|
|
14085
14192
|
console.log(
|
|
14086
14193
|
`ADR scaffold: ${FOUNDATION_ADR_DIR}/README.md, ${FOUNDATION_ADR_DIR}/0000-template.md`,
|
|
@@ -14345,8 +14452,6 @@ async function runInitWizard(options) {
|
|
|
14345
14452
|
bundleId: installOutcome.bundleId,
|
|
14346
14453
|
installed: installOutcome.installResult.installed,
|
|
14347
14454
|
skipped: installOutcome.installResult.skipped,
|
|
14348
|
-
generatedWrapperSkills:
|
|
14349
|
-
installOutcome.installResult.generatedWrapperSkills,
|
|
14350
14455
|
duplicateSkillCleanup:
|
|
14351
14456
|
installOutcome.installResult.duplicateSkillCleanup,
|
|
14352
14457
|
sanitizedSkills: installOutcome.installResult.sanitizedSkills,
|