thachvd-kit 1.0.28 → 1.0.30
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 +50 -148
- package/bin/cli.js +439 -293
- package/package.json +1 -9
- package/.agent/agents/backend-specialist.md +0 -263
- package/.agent/agents/code-archaeologist.md +0 -106
- package/.agent/agents/database-architect.md +0 -226
- package/.agent/agents/debugger.md +0 -225
- package/.agent/agents/devops-engineer.md +0 -242
- package/.agent/agents/documentation-writer.md +0 -104
- package/.agent/agents/explorer-agent.md +0 -73
- package/.agent/agents/frontend-specialist.md +0 -593
- package/.agent/agents/game-developer.md +0 -162
- package/.agent/agents/mobile-developer.md +0 -377
- package/.agent/agents/orchestrator.md +0 -416
- package/.agent/agents/penetration-tester.md +0 -188
- package/.agent/agents/performance-optimizer.md +0 -187
- package/.agent/agents/product-manager.md +0 -112
- package/.agent/agents/product-owner.md +0 -95
- package/.agent/agents/project-planner.md +0 -406
- package/.agent/agents/qa-automation-engineer.md +0 -103
- package/.agent/agents/security-auditor.md +0 -170
- package/.agent/agents/seo-specialist.md +0 -111
- package/.agent/agents/test-engineer.md +0 -158
- package/.agent/docs/architecture.md +0 -15
- package/.agent/docs/conventions.md +0 -16
- package/.agent/docs/getting-started.md +0 -92
- package/.agent/docs/project.md +0 -59
- package/.agent/docs/tooling.md +0 -136
- package/.agent/docs/workflow.md +0 -78
- package/.agent/rules/GEMINI.md +0 -61
- package/.agent/skills/api-design/SKILL.md +0 -156
- package/.agent/skills/api-patterns/SKILL.md +0 -81
- package/.agent/skills/api-patterns/api-style.md +0 -42
- package/.agent/skills/api-patterns/auth.md +0 -24
- package/.agent/skills/api-patterns/documentation.md +0 -26
- package/.agent/skills/api-patterns/graphql.md +0 -41
- package/.agent/skills/api-patterns/rate-limiting.md +0 -31
- package/.agent/skills/api-patterns/response.md +0 -37
- package/.agent/skills/api-patterns/rest.md +0 -40
- package/.agent/skills/api-patterns/scripts/api_validator.py +0 -211
- package/.agent/skills/api-patterns/security-testing.md +0 -122
- package/.agent/skills/api-patterns/trpc.md +0 -41
- package/.agent/skills/api-patterns/versioning.md +0 -22
- package/.agent/skills/app-builder/SKILL.md +0 -75
- package/.agent/skills/app-builder/agent-coordination.md +0 -71
- package/.agent/skills/app-builder/feature-building.md +0 -53
- package/.agent/skills/app-builder/project-detection.md +0 -34
- package/.agent/skills/app-builder/scaffolding.md +0 -118
- package/.agent/skills/app-builder/tech-stack.md +0 -40
- package/.agent/skills/app-builder/templates/SKILL.md +0 -39
- package/.agent/skills/app-builder/templates/astro-static/TEMPLATE.md +0 -76
- package/.agent/skills/app-builder/templates/chrome-extension/TEMPLATE.md +0 -92
- package/.agent/skills/app-builder/templates/cli-tool/TEMPLATE.md +0 -88
- package/.agent/skills/app-builder/templates/electron-desktop/TEMPLATE.md +0 -88
- package/.agent/skills/app-builder/templates/express-api/TEMPLATE.md +0 -83
- package/.agent/skills/app-builder/templates/flutter-app/TEMPLATE.md +0 -90
- package/.agent/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +0 -90
- package/.agent/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +0 -122
- package/.agent/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +0 -122
- package/.agent/skills/app-builder/templates/nextjs-static/TEMPLATE.md +0 -169
- package/.agent/skills/app-builder/templates/nuxt-app/TEMPLATE.md +0 -134
- package/.agent/skills/app-builder/templates/python-fastapi/TEMPLATE.md +0 -83
- package/.agent/skills/app-builder/templates/react-native-app/TEMPLATE.md +0 -119
- package/.agent/skills/architecture/SKILL.md +0 -55
- package/.agent/skills/architecture/context-discovery.md +0 -43
- package/.agent/skills/architecture/examples.md +0 -94
- package/.agent/skills/architecture/pattern-selection.md +0 -68
- package/.agent/skills/architecture/patterns-reference.md +0 -50
- package/.agent/skills/architecture/trade-off-analysis.md +0 -77
- package/.agent/skills/bash-linux/SKILL.md +0 -199
- package/.agent/skills/behavioral-modes/SKILL.md +0 -242
- package/.agent/skills/brainstorming/SKILL.md +0 -163
- package/.agent/skills/brainstorming/dynamic-questioning.md +0 -350
- package/.agent/skills/clean-code/SKILL.md +0 -201
- package/.agent/skills/code-review-checklist/SKILL.md +0 -109
- package/.agent/skills/database-design/SKILL.md +0 -52
- package/.agent/skills/database-design/database-selection.md +0 -43
- package/.agent/skills/database-design/indexing.md +0 -39
- package/.agent/skills/database-design/migrations.md +0 -48
- package/.agent/skills/database-design/optimization.md +0 -36
- package/.agent/skills/database-design/orm-selection.md +0 -30
- package/.agent/skills/database-design/schema-design.md +0 -56
- package/.agent/skills/database-design/scripts/schema_validator.py +0 -172
- package/.agent/skills/deployment-procedures/SKILL.md +0 -241
- package/.agent/skills/desktop-design/SKILL.md +0 -25
- package/.agent/skills/dispatching-parallel-agents/SKILL.md +0 -112
- package/.agent/skills/doc.md +0 -177
- package/.agent/skills/docker-patterns/SKILL.md +0 -232
- package/.agent/skills/documentation-templates/SKILL.md +0 -194
- package/.agent/skills/executing-plans/SKILL.md +0 -61
- package/.agent/skills/finishing-a-development-branch/SKILL.md +0 -135
- package/.agent/skills/frontend-design/SKILL.md +0 -418
- package/.agent/skills/frontend-design/animation-guide.md +0 -331
- package/.agent/skills/frontend-design/color-system.md +0 -311
- package/.agent/skills/frontend-design/decision-trees.md +0 -418
- package/.agent/skills/frontend-design/motion-graphics.md +0 -306
- package/.agent/skills/frontend-design/scripts/accessibility_checker.py +0 -183
- package/.agent/skills/frontend-design/scripts/ux_audit.py +0 -722
- package/.agent/skills/frontend-design/typography-system.md +0 -345
- package/.agent/skills/frontend-design/ux-psychology.md +0 -1116
- package/.agent/skills/frontend-design/visual-effects.md +0 -383
- package/.agent/skills/game-development/2d-games/SKILL.md +0 -119
- package/.agent/skills/game-development/3d-games/SKILL.md +0 -135
- package/.agent/skills/game-development/SKILL.md +0 -167
- package/.agent/skills/game-development/game-art/SKILL.md +0 -185
- package/.agent/skills/game-development/game-audio/SKILL.md +0 -190
- package/.agent/skills/game-development/game-design/SKILL.md +0 -129
- package/.agent/skills/game-development/mobile-games/SKILL.md +0 -108
- package/.agent/skills/game-development/multiplayer/SKILL.md +0 -132
- package/.agent/skills/game-development/pc-games/SKILL.md +0 -144
- package/.agent/skills/game-development/vr-ar/SKILL.md +0 -123
- package/.agent/skills/game-development/web-games/SKILL.md +0 -150
- package/.agent/skills/geo-fundamentals/SKILL.md +0 -156
- package/.agent/skills/geo-fundamentals/scripts/geo_checker.py +0 -289
- package/.agent/skills/golang-patterns/SKILL.md +0 -226
- package/.agent/skills/golang-testing/SKILL.md +0 -182
- package/.agent/skills/i18n-localization/SKILL.md +0 -154
- package/.agent/skills/i18n-localization/scripts/i18n_checker.py +0 -241
- package/.agent/skills/intelligent-routing/SKILL.md +0 -335
- package/.agent/skills/laravel-patterns/SKILL.md +0 -224
- package/.agent/skills/laravel-security/SKILL.md +0 -171
- package/.agent/skills/laravel-tdd/SKILL.md +0 -149
- package/.agent/skills/lint-and-validate/SKILL.md +0 -45
- package/.agent/skills/lint-and-validate/scripts/lint_runner.py +0 -184
- package/.agent/skills/lint-and-validate/scripts/type_coverage.py +0 -173
- package/.agent/skills/mcp-builder/SKILL.md +0 -176
- package/.agent/skills/mobile-design/SKILL.md +0 -394
- package/.agent/skills/mobile-design/decision-trees.md +0 -516
- package/.agent/skills/mobile-design/mobile-backend.md +0 -491
- package/.agent/skills/mobile-design/mobile-color-system.md +0 -420
- package/.agent/skills/mobile-design/mobile-debugging.md +0 -122
- package/.agent/skills/mobile-design/mobile-design-thinking.md +0 -357
- package/.agent/skills/mobile-design/mobile-navigation.md +0 -458
- package/.agent/skills/mobile-design/mobile-performance.md +0 -767
- package/.agent/skills/mobile-design/mobile-testing.md +0 -356
- package/.agent/skills/mobile-design/mobile-typography.md +0 -433
- package/.agent/skills/mobile-design/platform-android.md +0 -666
- package/.agent/skills/mobile-design/platform-ios.md +0 -561
- package/.agent/skills/mobile-design/scripts/mobile_audit.py +0 -670
- package/.agent/skills/mobile-design/touch-psychology.md +0 -537
- package/.agent/skills/nextjs-react-expert/1-async-eliminating-waterfalls.md +0 -312
- package/.agent/skills/nextjs-react-expert/2-bundle-bundle-size-optimization.md +0 -240
- package/.agent/skills/nextjs-react-expert/3-server-server-side-performance.md +0 -490
- package/.agent/skills/nextjs-react-expert/4-client-client-side-data-fetching.md +0 -264
- package/.agent/skills/nextjs-react-expert/5-rerender-re-render-optimization.md +0 -581
- package/.agent/skills/nextjs-react-expert/6-rendering-rendering-performance.md +0 -432
- package/.agent/skills/nextjs-react-expert/7-js-javascript-performance.md +0 -684
- package/.agent/skills/nextjs-react-expert/8-advanced-advanced-patterns.md +0 -150
- package/.agent/skills/nextjs-react-expert/SKILL.md +0 -286
- package/.agent/skills/nextjs-react-expert/scripts/convert_rules.py +0 -222
- package/.agent/skills/nextjs-react-expert/scripts/react_performance_checker.py +0 -252
- package/.agent/skills/nodejs-best-practices/SKILL.md +0 -333
- package/.agent/skills/parallel-agents/SKILL.md +0 -175
- package/.agent/skills/performance-profiling/SKILL.md +0 -143
- package/.agent/skills/performance-profiling/scripts/lighthouse_audit.py +0 -76
- package/.agent/skills/plan-writing/SKILL.md +0 -152
- package/.agent/skills/powershell-windows/SKILL.md +0 -167
- package/.agent/skills/project-onboarding/SKILL.md +0 -42
- package/.agent/skills/python-patterns/SKILL.md +0 -441
- package/.agent/skills/react-frontend/SKILL.md +0 -25
- package/.agent/skills/receiving-code-review/SKILL.md +0 -120
- package/.agent/skills/red-team-tactics/SKILL.md +0 -199
- package/.agent/skills/requesting-code-review/SKILL.md +0 -67
- package/.agent/skills/rust-pro/SKILL.md +0 -176
- package/.agent/skills/seo-fundamentals/SKILL.md +0 -129
- package/.agent/skills/seo-fundamentals/scripts/seo_checker.py +0 -219
- package/.agent/skills/server-management/SKILL.md +0 -161
- package/.agent/skills/subagent-driven-development/SKILL.md +0 -76
- package/.agent/skills/systematic-debugging/SKILL.md +0 -109
- package/.agent/skills/tailwind-patterns/SKILL.md +0 -269
- package/.agent/skills/tdd-workflow/SKILL.md +0 -149
- package/.agent/skills/testing-patterns/SKILL.md +0 -178
- package/.agent/skills/testing-patterns/scripts/test_runner.py +0 -219
- package/.agent/skills/using-git-worktrees/SKILL.md +0 -121
- package/.agent/skills/verification-before-completion/SKILL.md +0 -99
- package/.agent/skills/vulnerability-scanner/SKILL.md +0 -276
- package/.agent/skills/vulnerability-scanner/checklists.md +0 -121
- package/.agent/skills/vulnerability-scanner/scripts/security_scan.py +0 -458
- package/.agent/skills/web-design-guidelines/SKILL.md +0 -57
- package/.agent/skills/webapp-testing/SKILL.md +0 -187
- package/.agent/skills/webapp-testing/scripts/playwright_runner.py +0 -173
- package/.agent/skills/writing-skills/SKILL.md +0 -170
- package/.agent/workflows/brainstorm.md +0 -113
- package/.agent/workflows/create.md +0 -59
- package/.agent/workflows/debug.md +0 -103
- package/.agent/workflows/deploy.md +0 -176
- package/.agent/workflows/enhance.md +0 -63
- package/.agent/workflows/orchestrate.md +0 -237
- package/.agent/workflows/plan.md +0 -89
- package/.agent/workflows/preview.md +0 -81
- package/.agent/workflows/release.md +0 -42
- package/.agent/workflows/review.md +0 -125
- package/.agent/workflows/simple.md +0 -42
- package/.agent/workflows/spec.md +0 -140
- package/.agent/workflows/status.md +0 -86
- package/.agent/workflows/task.md +0 -59
- package/.agent/workflows/test.md +0 -144
- package/.agent/workflows/ui-ux-pro-max.md +0 -296
- package/agents/backend-specialist.md +0 -263
- package/agents/code-archaeologist.md +0 -106
- package/agents/database-architect.md +0 -226
- package/agents/debugger.md +0 -225
- package/agents/devops-engineer.md +0 -242
- package/agents/documentation-writer.md +0 -104
- package/agents/explorer-agent.md +0 -73
- package/agents/frontend-specialist.md +0 -593
- package/agents/game-developer.md +0 -162
- package/agents/mobile-developer.md +0 -377
- package/agents/orchestrator.md +0 -416
- package/agents/penetration-tester.md +0 -188
- package/agents/performance-optimizer.md +0 -187
- package/agents/product-manager.md +0 -112
- package/agents/product-owner.md +0 -95
- package/agents/project-planner.md +0 -406
- package/agents/qa-automation-engineer.md +0 -103
- package/agents/security-auditor.md +0 -170
- package/agents/seo-specialist.md +0 -111
- package/agents/test-engineer.md +0 -158
- package/kit/PROMPT_RECIPE.md +0 -30
- package/kit/README.md +0 -30
- package/prompts/debug.md +0 -11
- package/prompts/release.md +0 -11
- package/prompts/simple.md +0 -11
- package/prompts/spec.md +0 -11
- package/prompts/task.md +0 -12
- package/rules/GEMINI.md +0 -45
- package/scripts/auto_preview.py +0 -148
- package/scripts/checklist.py +0 -217
- package/scripts/session_manager.py +0 -120
- package/scripts/verify_all.py +0 -327
- package/skills/api-design/SKILL.md +0 -156
- package/skills/api-patterns/SKILL.md +0 -81
- package/skills/api-patterns/api-style.md +0 -42
- package/skills/api-patterns/auth.md +0 -24
- package/skills/api-patterns/documentation.md +0 -26
- package/skills/api-patterns/graphql.md +0 -41
- package/skills/api-patterns/rate-limiting.md +0 -31
- package/skills/api-patterns/response.md +0 -37
- package/skills/api-patterns/rest.md +0 -40
- package/skills/api-patterns/scripts/api_validator.py +0 -211
- package/skills/api-patterns/security-testing.md +0 -122
- package/skills/api-patterns/trpc.md +0 -41
- package/skills/api-patterns/versioning.md +0 -22
- package/skills/app-builder/SKILL.md +0 -75
- package/skills/app-builder/agent-coordination.md +0 -71
- package/skills/app-builder/feature-building.md +0 -53
- package/skills/app-builder/project-detection.md +0 -34
- package/skills/app-builder/scaffolding.md +0 -118
- package/skills/app-builder/tech-stack.md +0 -40
- package/skills/app-builder/templates/SKILL.md +0 -39
- package/skills/app-builder/templates/astro-static/TEMPLATE.md +0 -76
- package/skills/app-builder/templates/chrome-extension/TEMPLATE.md +0 -92
- package/skills/app-builder/templates/cli-tool/TEMPLATE.md +0 -88
- package/skills/app-builder/templates/electron-desktop/TEMPLATE.md +0 -88
- package/skills/app-builder/templates/express-api/TEMPLATE.md +0 -83
- package/skills/app-builder/templates/flutter-app/TEMPLATE.md +0 -90
- package/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +0 -90
- package/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +0 -122
- package/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +0 -122
- package/skills/app-builder/templates/nextjs-static/TEMPLATE.md +0 -169
- package/skills/app-builder/templates/nuxt-app/TEMPLATE.md +0 -134
- package/skills/app-builder/templates/python-fastapi/TEMPLATE.md +0 -83
- package/skills/app-builder/templates/react-native-app/TEMPLATE.md +0 -119
- package/skills/architecture/SKILL.md +0 -55
- package/skills/architecture/context-discovery.md +0 -43
- package/skills/architecture/examples.md +0 -94
- package/skills/architecture/pattern-selection.md +0 -68
- package/skills/architecture/patterns-reference.md +0 -50
- package/skills/architecture/trade-off-analysis.md +0 -77
- package/skills/bash-linux/SKILL.md +0 -199
- package/skills/behavioral-modes/SKILL.md +0 -242
- package/skills/brainstorming/SKILL.md +0 -163
- package/skills/brainstorming/dynamic-questioning.md +0 -350
- package/skills/clean-code/SKILL.md +0 -201
- package/skills/code-review-checklist/SKILL.md +0 -142
- package/skills/database-design/SKILL.md +0 -52
- package/skills/database-design/database-selection.md +0 -43
- package/skills/database-design/indexing.md +0 -39
- package/skills/database-design/migrations.md +0 -48
- package/skills/database-design/optimization.md +0 -36
- package/skills/database-design/orm-selection.md +0 -30
- package/skills/database-design/schema-design.md +0 -56
- package/skills/database-design/scripts/schema_validator.py +0 -172
- package/skills/deployment-procedures/SKILL.md +0 -241
- package/skills/desktop-design/SKILL.md +0 -25
- package/skills/dispatching-parallel-agents/SKILL.md +0 -112
- package/skills/doc.md +0 -177
- package/skills/docker-patterns/SKILL.md +0 -232
- package/skills/documentation-templates/SKILL.md +0 -194
- package/skills/executing-plans/SKILL.md +0 -61
- package/skills/finishing-a-development-branch/SKILL.md +0 -135
- package/skills/frontend-design/SKILL.md +0 -418
- package/skills/frontend-design/animation-guide.md +0 -331
- package/skills/frontend-design/color-system.md +0 -311
- package/skills/frontend-design/decision-trees.md +0 -418
- package/skills/frontend-design/motion-graphics.md +0 -306
- package/skills/frontend-design/scripts/accessibility_checker.py +0 -183
- package/skills/frontend-design/scripts/ux_audit.py +0 -722
- package/skills/frontend-design/typography-system.md +0 -345
- package/skills/frontend-design/ux-psychology.md +0 -1116
- package/skills/frontend-design/visual-effects.md +0 -383
- package/skills/game-development/2d-games/SKILL.md +0 -119
- package/skills/game-development/3d-games/SKILL.md +0 -135
- package/skills/game-development/SKILL.md +0 -167
- package/skills/game-development/game-art/SKILL.md +0 -185
- package/skills/game-development/game-audio/SKILL.md +0 -190
- package/skills/game-development/game-design/SKILL.md +0 -129
- package/skills/game-development/mobile-games/SKILL.md +0 -108
- package/skills/game-development/multiplayer/SKILL.md +0 -132
- package/skills/game-development/pc-games/SKILL.md +0 -144
- package/skills/game-development/vr-ar/SKILL.md +0 -123
- package/skills/game-development/web-games/SKILL.md +0 -150
- package/skills/geo-fundamentals/SKILL.md +0 -156
- package/skills/geo-fundamentals/scripts/geo_checker.py +0 -289
- package/skills/golang-patterns/SKILL.md +0 -226
- package/skills/golang-testing/SKILL.md +0 -182
- package/skills/i18n-localization/SKILL.md +0 -154
- package/skills/i18n-localization/scripts/i18n_checker.py +0 -241
- package/skills/intelligent-routing/SKILL.md +0 -335
- package/skills/laravel-patterns/SKILL.md +0 -224
- package/skills/laravel-security/SKILL.md +0 -171
- package/skills/laravel-tdd/SKILL.md +0 -149
- package/skills/lint-and-validate/SKILL.md +0 -45
- package/skills/lint-and-validate/scripts/lint_runner.py +0 -184
- package/skills/lint-and-validate/scripts/type_coverage.py +0 -173
- package/skills/mcp-builder/SKILL.md +0 -176
- package/skills/mobile-design/SKILL.md +0 -394
- package/skills/mobile-design/decision-trees.md +0 -516
- package/skills/mobile-design/mobile-backend.md +0 -491
- package/skills/mobile-design/mobile-color-system.md +0 -420
- package/skills/mobile-design/mobile-debugging.md +0 -122
- package/skills/mobile-design/mobile-design-thinking.md +0 -357
- package/skills/mobile-design/mobile-navigation.md +0 -458
- package/skills/mobile-design/mobile-performance.md +0 -767
- package/skills/mobile-design/mobile-testing.md +0 -356
- package/skills/mobile-design/mobile-typography.md +0 -433
- package/skills/mobile-design/platform-android.md +0 -666
- package/skills/mobile-design/platform-ios.md +0 -561
- package/skills/mobile-design/scripts/mobile_audit.py +0 -670
- package/skills/mobile-design/touch-psychology.md +0 -537
- package/skills/nextjs-react-expert/1-async-eliminating-waterfalls.md +0 -312
- package/skills/nextjs-react-expert/2-bundle-bundle-size-optimization.md +0 -240
- package/skills/nextjs-react-expert/3-server-server-side-performance.md +0 -490
- package/skills/nextjs-react-expert/4-client-client-side-data-fetching.md +0 -264
- package/skills/nextjs-react-expert/5-rerender-re-render-optimization.md +0 -581
- package/skills/nextjs-react-expert/6-rendering-rendering-performance.md +0 -432
- package/skills/nextjs-react-expert/7-js-javascript-performance.md +0 -684
- package/skills/nextjs-react-expert/8-advanced-advanced-patterns.md +0 -150
- package/skills/nextjs-react-expert/SKILL.md +0 -286
- package/skills/nextjs-react-expert/scripts/convert_rules.py +0 -222
- package/skills/nextjs-react-expert/scripts/react_performance_checker.py +0 -252
- package/skills/nodejs-best-practices/SKILL.md +0 -333
- package/skills/parallel-agents/SKILL.md +0 -175
- package/skills/performance-profiling/SKILL.md +0 -143
- package/skills/performance-profiling/scripts/lighthouse_audit.py +0 -76
- package/skills/plan-writing/SKILL.md +0 -152
- package/skills/powershell-windows/SKILL.md +0 -167
- package/skills/project-onboarding/SKILL.md +0 -42
- package/skills/python-patterns/SKILL.md +0 -441
- package/skills/react-frontend/SKILL.md +0 -25
- package/skills/receiving-code-review/SKILL.md +0 -120
- package/skills/red-team-tactics/SKILL.md +0 -199
- package/skills/requesting-code-review/SKILL.md +0 -67
- package/skills/rust-pro/SKILL.md +0 -176
- package/skills/seo-fundamentals/SKILL.md +0 -129
- package/skills/seo-fundamentals/scripts/seo_checker.py +0 -219
- package/skills/server-management/SKILL.md +0 -161
- package/skills/subagent-driven-development/SKILL.md +0 -76
- package/skills/systematic-debugging/SKILL.md +0 -109
- package/skills/tailwind-patterns/SKILL.md +0 -269
- package/skills/tdd-workflow/SKILL.md +0 -173
- package/skills/testing-patterns/SKILL.md +0 -178
- package/skills/testing-patterns/scripts/test_runner.py +0 -219
- package/skills/using-git-worktrees/SKILL.md +0 -121
- package/skills/verification-before-completion/SKILL.md +0 -113
- package/skills/vulnerability-scanner/SKILL.md +0 -276
- package/skills/vulnerability-scanner/checklists.md +0 -121
- package/skills/vulnerability-scanner/scripts/security_scan.py +0 -458
- package/skills/web-design-guidelines/SKILL.md +0 -57
- package/skills/webapp-testing/SKILL.md +0 -187
- package/skills/webapp-testing/scripts/playwright_runner.py +0 -173
- package/skills/writing-skills/SKILL.md +0 -170
- package/workflows/brainstorm.md +0 -113
- package/workflows/create.md +0 -59
- package/workflows/debug.md +0 -103
- package/workflows/deploy.md +0 -176
- package/workflows/enhance.md +0 -63
- package/workflows/orchestrate.md +0 -237
- package/workflows/plan.md +0 -89
- package/workflows/preview.md +0 -81
- package/workflows/release.md +0 -42
- package/workflows/simple.md +0 -42
- package/workflows/status.md +0 -86
- package/workflows/task.md +0 -59
- package/workflows/test.md +0 -144
- package/workflows/ui-ux-pro-max.md +0 -296
package/bin/cli.js
CHANGED
|
@@ -7,8 +7,11 @@ const prompts = require('prompts');
|
|
|
7
7
|
const pc = require('picocolors');
|
|
8
8
|
const packageJson = require('../package.json');
|
|
9
9
|
|
|
10
|
-
const sourceDir = path.resolve(__dirname, '..');
|
|
11
|
-
const targetDir = process.cwd();
|
|
10
|
+
const sourceDir = path.resolve(__dirname, '..');
|
|
11
|
+
const targetDir = process.cwd();
|
|
12
|
+
const CODEBASE_MEMORY_PACKAGE = 'codebase-memory-mcp';
|
|
13
|
+
const CODEBASE_MEMORY_BINARY = 'codebase-memory-mcp';
|
|
14
|
+
const RTK_INSTALL_COMMAND = 'cargo install --git https://github.com/rtk-ai/rtk --branch master rtk';
|
|
12
15
|
|
|
13
16
|
// --- Skill Resolver ---
|
|
14
17
|
|
|
@@ -118,72 +121,48 @@ const BACKEND_FRAMEWORKS = ['laravel', 'cakephp', 'symfony', 'codeigniter', 'exp
|
|
|
118
121
|
const MOBILE_DESKTOP_FRAMEWORKS = ['tauri', 'flutter', 'react-native'];
|
|
119
122
|
const IGNORED_SCAN_DIRS = new Set(['.git', 'node_modules', 'vendor', 'dist', 'build', 'coverage', '.next', '.nuxt', '.turbo', '.cache', 'storage', 'tmp']);
|
|
120
123
|
|
|
121
|
-
function printHelp() {
|
|
122
|
-
console.log(`
|
|
123
|
-
${pc.bold('Usage:')}
|
|
124
|
-
thachvd-kit [--yes]
|
|
125
|
-
thachvd-kit
|
|
126
|
-
thachvd-kit
|
|
127
|
-
thachvd-kit --
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
--
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
.
|
|
143
|
-
.
|
|
144
|
-
|
|
145
|
-
.
|
|
146
|
-
|
|
124
|
+
function printHelp() {
|
|
125
|
+
console.log(`
|
|
126
|
+
${pc.bold('Usage:')}
|
|
127
|
+
thachvd-kit init [--yes]
|
|
128
|
+
thachvd-kit setup [--yes]
|
|
129
|
+
thachvd-kit doctor
|
|
130
|
+
thachvd-kit --version
|
|
131
|
+
thachvd-kit --help
|
|
132
|
+
|
|
133
|
+
${pc.bold('Commands:')}
|
|
134
|
+
init Generate project context files and documentation
|
|
135
|
+
setup Install/configure optional MCP and local tooling
|
|
136
|
+
doctor Check project context and local integrations
|
|
137
|
+
|
|
138
|
+
${pc.bold('Options:')}
|
|
139
|
+
--yes Overwrite generated files or accept setup defaults
|
|
140
|
+
--no-setup-mcp Skip MCP setup (legacy init compatibility)
|
|
141
|
+
--version Show the installed CLI version
|
|
142
|
+
--help Show this help message
|
|
143
|
+
|
|
144
|
+
${pc.bold('What gets generated:')}
|
|
145
|
+
AGENTS.md Shared instructions for Codex, Antigravity, Claude Code, and Cursor
|
|
146
|
+
CLAUDE.md Claude Code entry file that imports AGENTS.md
|
|
147
|
+
GEMINI.md Antigravity entry file that points to AGENTS.md
|
|
148
|
+
.cursorrules Cursor entry file that points to AGENTS.md
|
|
149
|
+
.agent/docs/ Project context, architecture, conventions, workflow, and tooling docs
|
|
150
|
+
|
|
147
151
|
${pc.bold('Workflow guide:')}
|
|
148
|
-
Every task
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
Project state /status Summarize stack, progress, preview, pending work
|
|
163
|
-
Multi-domain work /orchestrate Coordinate frontend, backend, data, security, QA
|
|
164
|
-
|
|
165
|
-
${pc.bold('Common explicit skill prompts:')}
|
|
166
|
-
In Codex, use /prompts:task to route this request before editing.
|
|
167
|
-
In Codex, use /prompts:simple for a one-file fix with no behavior or contract change.
|
|
168
|
-
Use /brainstorm for this feature idea before planning.
|
|
169
|
-
In Codex, use /prompts:spec when requirements or scope need an explicit contract.
|
|
170
|
-
Use /plan for this feature; do not write code yet.
|
|
171
|
-
Use /enhance to implement this planned feature.
|
|
172
|
-
In Codex, use /prompts:debug for this failing behavior and find the root cause before editing.
|
|
173
|
-
Use /review before claiming this feature/refactor complete.
|
|
174
|
-
In Codex, use /prompts:release for npm versioning and publishing.
|
|
175
|
-
Use $clean-code before editing this module.
|
|
176
|
-
Use $systematic-debugging to investigate this bug.
|
|
177
|
-
Use $webapp-testing to verify the UI with Playwright.
|
|
178
|
-
Use $verification-before-completion before claiming done.
|
|
179
|
-
Use $writing-skills to improve a SKILL.md description.
|
|
180
|
-
|
|
181
|
-
${pc.bold('Tip:')}
|
|
182
|
-
Skills are copied for Codex/Claude, but you can call them explicitly with $skill-name
|
|
183
|
-
when implicit matching does not fire.
|
|
184
|
-
`);
|
|
185
|
-
|
|
186
|
-
}
|
|
152
|
+
Every task Superpowers Use the matching native Superpowers skill
|
|
153
|
+
Idea is fuzzy brainstorming Clarify intent and tradeoffs before coding
|
|
154
|
+
Scope needs a contract writing-plans Create a detailed plan before implementation
|
|
155
|
+
Execute an approved plan executing-plans Follow the approved plan with verification
|
|
156
|
+
Bug or failing behavior systematic-debugging Find the root cause before editing
|
|
157
|
+
Pre-merge review requesting-code-review Review before completion or merge
|
|
158
|
+
UI / UX work $frontend-design, $webapp-testing
|
|
159
|
+
Project state thachvd-kit doctor
|
|
160
|
+
|
|
161
|
+
${pc.bold('Tip:')}
|
|
162
|
+
Install Superpowers separately for each AI client from its official plugin surface.
|
|
163
|
+
Run thachvd-kit setup for the integration checklist and doctor to verify it.
|
|
164
|
+
`);
|
|
165
|
+
}
|
|
187
166
|
|
|
188
167
|
function formatScanPreviewLines(scanned) {
|
|
189
168
|
return [
|
|
@@ -901,10 +880,10 @@ function resolveAgentTable(data) {
|
|
|
901
880
|
}
|
|
902
881
|
// --- File Generators ---
|
|
903
882
|
|
|
904
|
-
function generateSharedAgentsMd(data) {
|
|
905
|
-
return `# AGENTS.md
|
|
906
|
-
|
|
907
|
-
Shared operating instructions for Codex, Antigravity, Claude Code, and Cursor.
|
|
883
|
+
function generateSharedAgentsMd(data) {
|
|
884
|
+
return `# AGENTS.md
|
|
885
|
+
|
|
886
|
+
Shared operating instructions for Codex, Antigravity, Claude Code, and Cursor.
|
|
908
887
|
|
|
909
888
|
## Startup
|
|
910
889
|
|
|
@@ -912,55 +891,24 @@ Shared operating instructions for Codex, Antigravity, Claude Code, and Cursor.
|
|
|
912
891
|
2. Read \`.agent/docs/project.md\` for detected stack, commands, and routing.
|
|
913
892
|
3. Read \`.agent/docs/workflow.md\` for the task flow before editing.
|
|
914
893
|
4. Read \`.agent/docs/architecture.md\` and \`.agent/docs/conventions.md\` before planning code changes.
|
|
915
|
-
5. Read \`.agent/docs/tooling.md\` when the task needs
|
|
916
|
-
6. Select and load only the agent, skill, or workflow files that match the current task.
|
|
917
|
-
|
|
918
|
-
If any \`.agent/docs/*.md\` file still contains \`TODO: refine\`, update the docs by scanning the project before making product code changes.
|
|
919
|
-
|
|
920
|
-
## Task Flow
|
|
894
|
+
5. Read \`.agent/docs/tooling.md\` when the task needs MCP, RTK, or browser verification.
|
|
921
895
|
|
|
922
|
-
|
|
896
|
+
If any \`.agent/docs/*.md\` file still contains \`TODO: refine\`, update the docs by scanning the project before making product code changes.
|
|
923
897
|
|
|
924
|
-
|
|
925
|
-
- Simple fix: use Codex \`/prompts:simple <request>\` only for one-file, unambiguous changes with no behavior or contract change.
|
|
926
|
-
- Bug or failing behavior: use Codex \`/prompts:debug <symptom>\` and follow the evidence-first root-cause flow.
|
|
927
|
-
- Feature or refactor: use \`/brainstorm\` for discovery, Codex \`/prompts:spec\` for ambiguous or multi-file scope, then \`/plan\`, wait for approval, implement, test, and \`/review\`.
|
|
928
|
-
- Pre-merge review: use \`/review\` even when the implementation itself was done by another client or member.
|
|
929
|
-
- Release or npm publish: use Codex \`/prompts:release\`; release work never uses the simple fast path.
|
|
930
|
-
- Multi-domain work: use \`.agent/workflows/orchestrate.md\` and route to the relevant specialist docs.
|
|
931
|
-
- UI work: read \`.agent/agents/frontend-specialist.md\` and applicable design skills before editing.
|
|
898
|
+
## Workflow
|
|
932
899
|
|
|
933
|
-
|
|
900
|
+
Superpowers is the primary workflow backend. Use its native skills when available:
|
|
934
901
|
|
|
935
|
-
|
|
902
|
+
- New idea or unclear requirement: \`brainstorming\`.
|
|
903
|
+
- Feature/refactor: \`using-git-worktrees\` -> \`writing-plans\` -> explicit approval -> \`executing-plans\` or \`subagent-driven-development\`.
|
|
904
|
+
- Implementation: \`test-driven-development\` and focused verification.
|
|
905
|
+
- Bug or failing behavior: \`systematic-debugging\` followed by a regression test.
|
|
906
|
+
- Before completion: \`requesting-code-review\` and \`verification-before-completion\`.
|
|
907
|
+
- Branch completion: \`finishing-a-development-branch\`.
|
|
936
908
|
|
|
937
|
-
|
|
938
|
-
FAST_PATH: simple-fix
|
|
939
|
-
REASON: [why the change is one-file and unambiguous]
|
|
940
|
-
SCOPE: [file or narrow area]
|
|
941
|
-
\`\`\`
|
|
909
|
+
Questions and research do not edit product code. A simple fix may use a fast path only when it is one-file, unambiguous, and changes no behavior or contract. State the scope and verification before editing. If the scope grows, switch to the full Superpowers flow.
|
|
942
910
|
|
|
943
|
-
If
|
|
944
|
-
|
|
945
|
-
### Gated Flow (feature or refactor)
|
|
946
|
-
|
|
947
|
-
1. **Spec** — run \`.agent/workflows/spec.md\` when scope is ambiguous, touches multiple files, or would take more than ~30 minutes. Skip only for single-line/self-contained fixes. Stop at its exit criteria and wait for human confirmation before moving on.
|
|
948
|
-
2. **Plan** — run \`.agent/workflows/plan.md\` (project-planner agent, no code writing). Wait for explicit user approval of the plan file before implementing.
|
|
949
|
-
3. **Implement** — smallest coherent change per the approved plan, with focused tests for changed behavior.
|
|
950
|
-
4. **Review** — run \`.agent/workflows/review.md\` (five-axis review) before the change is considered done. All 🔴 BLOCKING items must be resolved or explicitly accepted with rationale.
|
|
951
|
-
|
|
952
|
-
A feature/refactor task is not "done" until step 4's exit criteria are met — passing tests alone does not satisfy the gate. Simple fixes use the explicit Codex \`/prompts:simple\` fast path above. See \`.agent/docs/getting-started.md\` for the complete route guide.
|
|
953
|
-
|
|
954
|
-
## Skill Loading
|
|
955
|
-
|
|
956
|
-
- Treat \`.agent/skills/\` as the shared source of truth for all kit skills.
|
|
957
|
-
- Codex exposes skills from \`~/.codex/skills/\` in the \`$\` menu; \`thachvd-kit\` copies selected skills there on init.
|
|
958
|
-
- Claude Code project skills live in \`.claude/skills/\`.
|
|
959
|
-
- If a skill is missing from the global dir, fall back to the matching \`.agent/skills/<skill>/SKILL.md\` file.
|
|
960
|
-
- Do not load skill bodies by default; load a skill only when the user mentions it, the task clearly matches its description, or \`.agent/docs/project.md\` routes the task to it.
|
|
961
|
-
- Prefer explicit skill mentions for predictable behavior: \`$clean-code\`, \`$systematic-debugging\`, \`$webapp-testing\`, or any skill listed in \`.agent/docs/project.md\`.
|
|
962
|
-
- Run \`thachvd-kit --help\` to see common workflow and skill recommendations.
|
|
963
|
-
- When creating or improving skills, use \`writing-skills\` first and make the \`description\` field specific enough for implicit invocation.
|
|
911
|
+
If Superpowers is unavailable, follow the plain-language flow in \`.agent/docs/workflow.md\`; do not expect this kit to provide a second copy of the workflow engine.
|
|
964
912
|
|
|
965
913
|
## Rules
|
|
966
914
|
|
|
@@ -968,23 +916,19 @@ A feature/refactor task is not "done" until step 4's exit criteria are met — p
|
|
|
968
916
|
- State assumptions when the request is ambiguous.
|
|
969
917
|
- Prefer the existing project style over new abstractions.
|
|
970
918
|
- Keep changes surgical and remove only dead code introduced by your change.
|
|
971
|
-
- **MCP First**: Prioritize
|
|
919
|
+
- **MCP First**: Prioritize \`codebase-memory-mcp\` for symbols, call paths, architecture, and impact; use \`context7\` for API/docs queries and \`playwright\` for browser/UI verification. Fall back to normal file search when an integration is unavailable.
|
|
972
920
|
- Tests or equivalent verification are mandatory before claiming done.
|
|
973
921
|
- Keep files under ${data.max_file_lines || '300'} lines unless the project already has a different standard in \`.agent/docs/conventions.md\`.
|
|
974
922
|
|
|
975
|
-
## Shared Knowledge
|
|
976
|
-
|
|
977
|
-
- Project
|
|
978
|
-
-
|
|
979
|
-
-
|
|
980
|
-
-
|
|
981
|
-
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
- Antigravity mirror rules: \`.agent/rules/GEMINI.md\`
|
|
985
|
-
- Cursor entry rules: \`.cursorrules\`
|
|
986
|
-
`;
|
|
987
|
-
}
|
|
923
|
+
## Shared Knowledge
|
|
924
|
+
|
|
925
|
+
- Project context: \`.agent/docs/\`
|
|
926
|
+
- Tooling setup: \`.agent/docs/tooling.md\`
|
|
927
|
+
- Superpowers: installed through the AI client's official plugin surface
|
|
928
|
+
- RTK: optional local CLI for compact command output
|
|
929
|
+
- Antigravity and Cursor entry rules: \`GEMINI.md\` and \`.cursorrules\`
|
|
930
|
+
`;
|
|
931
|
+
}
|
|
988
932
|
|
|
989
933
|
function generateSharedClaudeMd() {
|
|
990
934
|
return `@AGENTS.md
|
|
@@ -1070,8 +1014,6 @@ function resolveCommands(data) {
|
|
|
1070
1014
|
|
|
1071
1015
|
function generateProjectDoc(data) {
|
|
1072
1016
|
const commands = resolveCommands(data);
|
|
1073
|
-
const agentRows = resolveAgentTable(data).map(([task, agent, skills]) => `| ${task} | \`${agent}\` | ${skills} |`).join('\n');
|
|
1074
|
-
const skillsList = resolveSkills(data).map(s => `- ${s}`).join('\n');
|
|
1075
1017
|
const evidence = (data.scan_evidence || []).length > 0
|
|
1076
1018
|
? (data.scan_evidence || []).map(line => `- ${line}`).join('\n')
|
|
1077
1019
|
: '- TODO: refine scan evidence by inspecting the project.';
|
|
@@ -1104,29 +1046,20 @@ Generated by thachvd-kit on ${new Date().toISOString().split('T')[0]}.
|
|
|
1104
1046
|
- Test: \`${commands.test}\`
|
|
1105
1047
|
- Lint: \`${commands.lint}\`
|
|
1106
1048
|
|
|
1107
|
-
## Available
|
|
1049
|
+
## Available Integrations
|
|
1108
1050
|
|
|
1109
|
-
Use these
|
|
1051
|
+
Use these integrations when available. Run thachvd-kit doctor to check the current machine.
|
|
1110
1052
|
|
|
1111
1053
|
| MCP | When to Use |
|
|
1112
1054
|
|-----|-------------|
|
|
1113
|
-
| \`
|
|
1055
|
+
| \`codebase-memory-mcp\` | Explore symbols, trace call chains, architecture, and impact |
|
|
1114
1056
|
| \`context7\` | Look up library/framework docs, API signatures, migration guides |
|
|
1115
|
-
| \`playwright\` | Verify UI behavior, take screenshots, test forms and navigation |
|
|
1057
|
+
| \`playwright\` | Verify UI behavior, take screenshots, test forms and navigation |
|
|
1058
|
+
| \`rtk\` | Reduce noisy output from git, tests, builds, and package commands |
|
|
1116
1059
|
|
|
1117
1060
|
> Check \`.agent/docs/tooling.md\` for setup details and additional MCP servers.
|
|
1118
1061
|
|
|
1119
|
-
##
|
|
1120
|
-
|
|
1121
|
-
| Task Type | Agent | Primary Skills |
|
|
1122
|
-
|-----------|-------|----------------|
|
|
1123
|
-
${agentRows}
|
|
1124
|
-
|
|
1125
|
-
## Auto-Resolved Skills
|
|
1126
|
-
|
|
1127
|
-
${skillsList}
|
|
1128
|
-
|
|
1129
|
-
## Scan Evidence
|
|
1062
|
+
## Scan Evidence
|
|
1130
1063
|
|
|
1131
1064
|
${evidence}
|
|
1132
1065
|
`;
|
|
@@ -1178,37 +1111,77 @@ function generateConventionsDoc(data) {
|
|
|
1178
1111
|
`;
|
|
1179
1112
|
}
|
|
1180
1113
|
|
|
1181
|
-
function generateWorkflowDoc() {
|
|
1182
|
-
return `# Agent Workflow
|
|
1114
|
+
function generateWorkflowDoc() {
|
|
1115
|
+
return `# Agent Workflow
|
|
1116
|
+
|
|
1117
|
+
This project uses Superpowers as the workflow backend. thachvd-kit only provides project context and integration setup.
|
|
1118
|
+
|
|
1119
|
+
## Before Every Task
|
|
1120
|
+
|
|
1121
|
+
1. Read AGENTS.md and the relevant files under .agent/docs/.
|
|
1122
|
+
2. Use the native Superpowers skill that matches the request.
|
|
1123
|
+
3. Use codebase-memory MCP for structural discovery when available.
|
|
1124
|
+
4. Make changes only after the required planning gate.
|
|
1125
|
+
5. Verify the change and request review before completion.
|
|
1126
|
+
|
|
1127
|
+
## Route Matrix
|
|
1128
|
+
|
|
1129
|
+
| Situation | Superpowers path | Gate |
|
|
1130
|
+
|---|---|---|
|
|
1131
|
+
| Question or research only | direct answer or research | no product-code edits |
|
|
1132
|
+
| One obvious local fix | fast path | inspect -> edit -> focused verify |
|
|
1133
|
+
| Bug or failing behavior | systematic-debugging | reproduce -> root cause -> regression test -> fix -> verify |
|
|
1134
|
+
| New behavior or refactor | brainstorming -> writing-plans -> executing-plans | explicit plan approval before implementation |
|
|
1135
|
+
| Multi-part implementation | subagent-driven-development | task review and final review |
|
|
1136
|
+
| Pre-merge | requesting-code-review | blocking findings resolved |
|
|
1137
|
+
|
|
1138
|
+
## Standard Feature Flow
|
|
1139
|
+
|
|
1140
|
+
brainstorming -> using-git-worktrees -> writing-plans -> user approval -> test-driven-development -> executing-plans or subagent-driven-development -> requesting-code-review -> verification-before-completion -> finishing-a-development-branch.
|
|
1141
|
+
|
|
1142
|
+
## Fast Path
|
|
1143
|
+
|
|
1144
|
+
Use it only for one-file, unambiguous changes with no behavior, API, schema, security, dependency, CI, workflow, or release contract change. State the narrow scope and verification before editing. If the scope grows, switch to brainstorming and writing-plans.
|
|
1145
|
+
|
|
1146
|
+
## Documentation Maintenance
|
|
1147
|
+
|
|
1148
|
+
- Update architecture.md when structure or boundaries change.
|
|
1149
|
+
- Update conventions.md when repeated project patterns become clear.
|
|
1150
|
+
- Update project.md when stack, scripts, or test tooling changes.
|
|
1151
|
+
- Keep AGENTS.md concise and put project-specific detail under .agent/docs/.
|
|
1152
|
+
`;
|
|
1153
|
+
/* Legacy workflow text below remains unreachable for source compatibility. */
|
|
1154
|
+
return `# Agent Workflow
|
|
1183
1155
|
|
|
1184
1156
|
## Before Every Task
|
|
1185
1157
|
|
|
1186
|
-
1. Read AGENTS.md.
|
|
1187
|
-
2. Read .agent/docs/project.md.
|
|
1188
|
-
3.
|
|
1158
|
+
1. Read AGENTS.md.
|
|
1159
|
+
2. Read .agent/docs/project.md.
|
|
1160
|
+
3. Use the matching native Superpowers skill for the task.
|
|
1189
1161
|
4. Read only the relevant docs under .agent/agents, .agent/skills, .claude/skills, and .agent/workflows.
|
|
1190
|
-
5.
|
|
1162
|
+
5. Use codebase-memory MCP for structural discovery when available, then verify the actual files before editing.
|
|
1191
1163
|
|
|
1192
1164
|
## Route Matrix
|
|
1193
1165
|
|
|
1194
1166
|
| Situation | Command | Workflow / gate |
|
|
1195
1167
|
|---|---|---|
|
|
1196
1168
|
| Question or analysis only | direct answer | no edits |
|
|
1197
|
-
| One obvious local fix |
|
|
1198
|
-
| Bug, regression, failing test, or unknown error |
|
|
1199
|
-
|
|
|
1200
|
-
|
|
|
1201
|
-
|
|
|
1202
|
-
| Several specialist domains |
|
|
1169
|
+
| One obvious local fix | fast path | inspect -> edit -> focused verify |
|
|
1170
|
+
| Bug, regression, failing test, or unknown error | systematic-debugging | reproduce -> root cause -> regression test -> fix -> verify |
|
|
1171
|
+
| Research request | direct research | evidence report, no edits |
|
|
1172
|
+
| New behavior, multi-file change, or unclear scope | brainstorming -> writing-plans -> executing-plans | explicit approval before implementation |
|
|
1173
|
+
| Pre-merge review | requesting-code-review | blocking findings resolved |
|
|
1174
|
+
| Several specialist domains | subagent-driven-development | task review and final review |
|
|
1203
1175
|
|
|
1204
1176
|
If a task is not clearly simple, use the standard flow. Never use the fast path for behavior, API, schema, security, CI, dependency, workflow, or release changes.
|
|
1205
1177
|
|
|
1206
|
-
##
|
|
1178
|
+
## Superpowers Skills
|
|
1207
1179
|
|
|
1208
|
-
-
|
|
1209
|
-
-
|
|
1210
|
-
-
|
|
1211
|
-
-
|
|
1180
|
+
- Use brainstorming for unclear requirements.
|
|
1181
|
+
- Use using-git-worktrees and writing-plans before non-trivial implementation.
|
|
1182
|
+
- Use test-driven-development, executing-plans or subagent-driven-development during implementation.
|
|
1183
|
+
- Use systematic-debugging for bugs and requesting-code-review before completion.
|
|
1184
|
+
- thachvd-kit does not copy or replace Superpowers skills.
|
|
1212
1185
|
- Do not load skill bodies by default.
|
|
1213
1186
|
- Load a skill when the user mentions it, the task clearly matches its SKILL.md description, or .agent/docs/project.md routes the task to it.
|
|
1214
1187
|
- Use explicit skill names in prompts for predictable behavior, for example $webapp-testing or $clean-code.
|
|
@@ -1216,7 +1189,7 @@ If a task is not clearly simple, use the standard flow. Never use the fast path
|
|
|
1216
1189
|
|
|
1217
1190
|
## Implementation Flow
|
|
1218
1191
|
|
|
1219
|
-
For
|
|
1192
|
+
For \`/forge-fast\` fixes, state the fast-path decision before editing:
|
|
1220
1193
|
|
|
1221
1194
|
\`\`\`text
|
|
1222
1195
|
FAST_PATH: simple-fix
|
|
@@ -1233,15 +1206,15 @@ Then:
|
|
|
1233
1206
|
5. Run verification (prioritize using Playwright MCP for web/UI changes to automate verification and capture screenshots).
|
|
1234
1207
|
6. Summarize changed files and verification evidence.
|
|
1235
1208
|
|
|
1236
|
-
For bugs, use
|
|
1209
|
+
For bugs, use \`/forge-debug\` with Superpowers' \`systematic-debugging\` when available, otherwise the matching local skill, plus the \`debugger\` agent and \`testing-patterns\`: reproduce, isolate the root cause, add regression protection, make the smallest fix, and verify.
|
|
1237
1210
|
|
|
1238
|
-
For features or refactors,
|
|
1211
|
+
For features or refactors, prefer the Superpowers chain when available: brainstorm/spec -> worktree -> detailed plan -> approval -> TDD/task execution -> per-task review -> final review -> finish branch. Otherwise use the local gated flow defined in AGENTS.md (spec -> plan -> implement -> review). Steps 3-5 above are the "Implement" phase, and step 6 is not a substitute for the mandatory review gate.
|
|
1239
1212
|
|
|
1240
1213
|
## Definition of Done (feature or refactor)
|
|
1241
1214
|
|
|
1242
1215
|
A feature/refactor task is only complete when all of the following hold — not when code compiles or tests pass:
|
|
1243
1216
|
|
|
1244
|
-
The Spec checkbox may be skipped only when the documented
|
|
1217
|
+
The Spec checkbox may be skipped only when the documented \`/forge-fast\` protocol is stated and its criteria are met.
|
|
1245
1218
|
|
|
1246
1219
|
- [ ] \`.agent/workflows/spec.md\` exit criteria met (or explicitly skipped as a trivial/self-contained change)
|
|
1247
1220
|
- [ ] \`.agent/workflows/plan.md\` produced a plan file, approved by the user
|
|
@@ -1261,32 +1234,68 @@ Do not report a feature/refactor task as done if any box above is unchecked —
|
|
|
1261
1234
|
}
|
|
1262
1235
|
|
|
1263
1236
|
function generateGettingStartedDoc() {
|
|
1237
|
+
return `# Getting Started
|
|
1238
|
+
|
|
1239
|
+
thachvd-kit creates project context. Superpowers owns the development workflow.
|
|
1240
|
+
|
|
1241
|
+
## Setup
|
|
1242
|
+
|
|
1243
|
+
1. Run \`thachvd-kit init\` in the repository.
|
|
1244
|
+
2. Install Superpowers from the official plugin surface for the AI client you use.
|
|
1245
|
+
3. Run \`thachvd-kit setup\` to configure codebase-memory MCP and print integration guidance.
|
|
1246
|
+
4. Run \`thachvd-kit doctor\` and restart the AI client.
|
|
1247
|
+
|
|
1248
|
+
## Standard Flow
|
|
1249
|
+
|
|
1250
|
+
Use Superpowers native skills:
|
|
1251
|
+
|
|
1252
|
+
1. \`brainstorming\` for unclear requirements.
|
|
1253
|
+
2. \`using-git-worktrees\` for isolated work.
|
|
1254
|
+
3. \`writing-plans\`, then wait for explicit approval.
|
|
1255
|
+
4. \`test-driven-development\` and \`executing-plans\` or \`subagent-driven-development\`.
|
|
1256
|
+
5. \`requesting-code-review\` and \`verification-before-completion\`.
|
|
1257
|
+
6. \`finishing-a-development-branch\`.
|
|
1258
|
+
|
|
1259
|
+
## Bug Flow
|
|
1260
|
+
|
|
1261
|
+
Use \`systematic-debugging\`: reproduce the symptom, inspect the path with codebase-memory MCP, test hypotheses, add regression protection, fix the root cause, and verify.
|
|
1262
|
+
|
|
1263
|
+
## Fast Path
|
|
1264
|
+
|
|
1265
|
+
Use a fast path only for one-file, unambiguous changes with no behavior or contract change. State the scope and verification before editing. If the scope expands, return to brainstorming and writing-plans.
|
|
1266
|
+
`;
|
|
1267
|
+
/* Legacy text below remains unreachable for source compatibility and is removed in a later major cleanup. */
|
|
1264
1268
|
return `# Getting Started With This Kit
|
|
1265
1269
|
|
|
1266
1270
|
Read this after \`thachvd-kit init\`. The kit gives every member one entry point, then selects only the process and expertise the task needs.
|
|
1267
1271
|
|
|
1268
|
-
##
|
|
1272
|
+
## Forge Command Map
|
|
1269
1273
|
|
|
1270
|
-
| Client | Task
|
|
1274
|
+
| Client | Task | Fast | Debug | Research | Review |
|
|
1271
1275
|
|---|---|---|---|---|---|
|
|
1272
|
-
| Codex |
|
|
1273
|
-
| Antigravity | \`/task\` | \`/
|
|
1274
|
-
| Claude Code | \`/task\` | \`/
|
|
1275
|
-
| Cursor | \`/task\` | \`/
|
|
1276
|
+
| Codex | \`$forge-task\` | \`$forge-fast\` | \`$forge-debug\` | \`$forge-research\` | \`$forge-review\` |
|
|
1277
|
+
| Antigravity | \`/forge-task\` | \`/forge-fast\` | \`/forge-debug\` | \`/forge-research\` | \`/forge-review\` |
|
|
1278
|
+
| Claude Code | \`/forge-task\` | \`/forge-fast\` | \`/forge-debug\` | \`/forge-research\` | \`/forge-review\` |
|
|
1279
|
+
| Cursor | \`/forge-task\` | \`/forge-fast\` | \`/forge-debug\` | \`/forge-research\` | \`/forge-review\` |
|
|
1280
|
+
|
|
1281
|
+
Forge commands accept free-form text after the command and continue the selected workflow in the same turn. Plain questions remain normal chat; edit requests without a command are implicitly routed as \`forge-task\`.
|
|
1276
1282
|
|
|
1277
|
-
|
|
1283
|
+
Forge is a routing layer. For feature/refactor work, prefer native Superpowers skills when available: brainstorming, using-git-worktrees, writing-plans, subagent-driven-development or executing-plans, test-driven-development, requesting-code-review, and finishing-a-development-branch. If Superpowers is not installed, use the matching \`.agent/skills/\` and \`.agent/workflows/\` fallback; do not maintain a competing duplicate methodology. Install the full execution backend from https://github.com/obra/superpowers#quickstart.
|
|
1278
1284
|
|
|
1279
|
-
|
|
1285
|
+
Codex Forge skills live in \`~/.codex/skills/forge-*/SKILL.md\`. Antigravity Forge workflows live in \`.agent/workflows/forge-*.md\`. Claude Code Forge commands live in \`.claude/commands/forge-*.md\`. Cursor Forge commands live in \`.cursor/commands/forge-*.md\`.
|
|
1280
1286
|
|
|
1281
|
-
|
|
1287
|
+
## Start Every Task With Forge
|
|
1288
|
+
|
|
1289
|
+
Use the matching Forge command before editing whenever the request is not a simple question. \`forge-task\` must route internally and continue; it must not stop by asking the member to type a second command.
|
|
1282
1290
|
|
|
1283
1291
|
\`\`\`text
|
|
1284
|
-
ROUTE: question |
|
|
1292
|
+
ROUTE: question | fast | feature | bug | research | review | multi-domain
|
|
1285
1293
|
WORKFLOW: [exact .agent/workflows/<name>.md file]
|
|
1286
1294
|
SKILLS: [matching skills, or none]
|
|
1287
1295
|
AGENTS: [matching specialist agents, or none]
|
|
1288
|
-
GATE: fast-path | standard
|
|
1289
|
-
|
|
1296
|
+
GATE: fast-path | standard | human-approval
|
|
1297
|
+
BACKEND: superpowers-native | forge-fallback
|
|
1298
|
+
ACTION: [what the agent is doing next in this turn]
|
|
1290
1299
|
\`\`\`
|
|
1291
1300
|
|
|
1292
1301
|
A workflow is the process and its gates. A skill is the method or checklist. An agent is the specialist role. Chat alone is not a route: the member must select the route and invoke the matching workflow or explicitly choose the question path.
|
|
@@ -1296,22 +1305,22 @@ A workflow is the process and its gates. A skill is the method or checklist. An
|
|
|
1296
1305
|
| Situation | Command | Gate | Required next step |
|
|
1297
1306
|
|---|---|---|---|
|
|
1298
1307
|
| Explain, inspect, or brainstorm only | direct answer or \`/brainstorm\` | none | no code until the request becomes actionable |
|
|
1299
|
-
| One obvious local fix | \`/
|
|
1300
|
-
| New behavior, multi-file change, unclear scope, or >~30 min | \`/
|
|
1301
|
-
| Bug, regression, failing test, or unknown error | \`/
|
|
1302
|
-
|
|
|
1303
|
-
|
|
|
1308
|
+
| One obvious local fix | \`/forge-fast <request>\` | fast-path | inspect -> edit -> focused verify |
|
|
1309
|
+
| New behavior, multi-file change, unclear scope, or >~30 min | \`/forge-task <request>\` | standard | route -> research/spec/plan -> approval when required -> continue |
|
|
1310
|
+
| Bug, regression, failing test, or unknown error | \`/forge-debug <symptom>\` | bug | reproduce -> isolate -> regression test -> fix -> verify |
|
|
1311
|
+
| Research request | \`/forge-research <question>\` | research | evidence report, no edits |
|
|
1312
|
+
| Pre-merge or independent review | \`/forge-review\` | review | five-axis review; resolve blocking findings |
|
|
1304
1313
|
| Frontend + backend + data/security together | \`/orchestrate\` | standard | plan -> approval -> specialist work -> integration verify |
|
|
1305
1314
|
|
|
1306
1315
|
## Standard Feature Flow
|
|
1307
1316
|
|
|
1308
|
-
The gated sequence is Spec -> Plan -> Implement -> Review
|
|
1317
|
+
The gated sequence is Spec -> Plan -> Implement -> Review. \`/forge-task\` manages this sequence internally and pauses only at the explicit user approval gate before implementation.
|
|
1309
1318
|
|
|
1310
1319
|
The plan is a gate, not a suggestion. Do not start product-code implementation before explicit approval. Load only the relevant specialist agent and skills, such as \`$frontend-design\`, \`$api-design\`, or \`$webapp-testing\`.
|
|
1311
1320
|
|
|
1312
1321
|
## Bug Fix Flow
|
|
1313
1322
|
|
|
1314
|
-
Use
|
|
1323
|
+
Use \`/forge-debug <symptom>\`, not the feature flow, when something is failing or the root cause is unknown:
|
|
1315
1324
|
|
|
1316
1325
|
1. Capture the exact symptom, environment, reproduction, and expected result.
|
|
1317
1326
|
2. Inspect the relevant code path with MCP/codegraph when available.
|
|
@@ -1321,11 +1330,11 @@ Use Codex \`/prompts:debug <symptom>\`, not the feature flow, when something is
|
|
|
1321
1330
|
6. Run focused tests, then broader verification when the blast radius is shared.
|
|
1322
1331
|
7. Use \`/review\` when the fix touches multiple files, contracts, security, or release behavior.
|
|
1323
1332
|
|
|
1324
|
-
Load
|
|
1333
|
+
Load Superpowers' \`systematic-debugging\` when available, otherwise the matching local skill, plus the \`debugger\` agent and \`testing-patterns\` for this route.
|
|
1325
1334
|
|
|
1326
1335
|
## Simple Fast Path
|
|
1327
1336
|
|
|
1328
|
-
Use
|
|
1337
|
+
Use \`/forge-fast <request>\` only when the change is one obvious file, the result is unambiguous, and it changes no behavior, API, schema, security, CI, dependency, workflow, or release contract. Before editing, state:
|
|
1329
1338
|
|
|
1330
1339
|
\`\`\`text
|
|
1331
1340
|
FAST_PATH: simple-fix
|
|
@@ -1333,18 +1342,17 @@ REASON: [why Spec/Plan/Review are not needed]
|
|
|
1333
1342
|
SCOPE: [file or narrow area]
|
|
1334
1343
|
\`\`\`
|
|
1335
1344
|
|
|
1336
|
-
This bypasses only Spec, Plan, and the feature/refactor Review gate. It never bypasses inspection, focused verification, or reporting evidence. If the scope expands, stop and re-route
|
|
1345
|
+
This bypasses only Spec, Plan, and the feature/refactor Review gate. It never bypasses inspection, focused verification, or reporting evidence. If the scope expands, stop and re-route internally through \`forge-task\`.
|
|
1337
1346
|
|
|
1338
1347
|
## Command And Skill Map
|
|
1339
1348
|
|
|
1340
1349
|
- \`/brainstorm\`: clarify intent and tradeoffs; no code.
|
|
1341
|
-
-
|
|
1350
|
+
- \`forge-research\`: evidence-based codebase/technical/domain research; no product-code edits.
|
|
1342
1351
|
- \`/plan\`: create an approved implementation plan; no code before approval.
|
|
1343
1352
|
- \`/enhance\` or \`/create\`: implement an approved feature with the relevant specialist agent.
|
|
1344
|
-
-
|
|
1353
|
+
- \`forge-debug\`: systematic root-cause investigation and regression protection.
|
|
1345
1354
|
- \`/test\`: add or run tests and assess coverage.
|
|
1346
1355
|
- \`/review\`: five-axis review before completion or merge.
|
|
1347
|
-
- Codex \`/prompts:release\`: verify, version, tag, publish, and verify npm output.
|
|
1348
1356
|
- \`$clean-code\` and \`$verification-before-completion\`: default implementation hygiene.
|
|
1349
1357
|
- \`$webapp-testing\`: browser/UI verification; use Playwright when available.
|
|
1350
1358
|
|
|
@@ -1374,10 +1382,49 @@ function resolveToolingSetup(data) {
|
|
|
1374
1382
|
return { runner, playwrightCommand };
|
|
1375
1383
|
}
|
|
1376
1384
|
|
|
1377
|
-
function generateToolingDoc(data) {
|
|
1378
|
-
const { runner, playwrightCommand } = resolveToolingSetup(data);
|
|
1379
|
-
|
|
1380
|
-
return `# Optional Tooling
|
|
1385
|
+
function generateToolingDoc(data) {
|
|
1386
|
+
const { runner, playwrightCommand } = resolveToolingSetup(data);
|
|
1387
|
+
|
|
1388
|
+
return `# Optional Tooling
|
|
1389
|
+
|
|
1390
|
+
Run \`thachvd-kit doctor\` to check the current machine. thachvd-kit does not install workflow skills or copy agent folders.
|
|
1391
|
+
|
|
1392
|
+
## Superpowers
|
|
1393
|
+
|
|
1394
|
+
Install Superpowers separately for each AI client from its official plugin surface:
|
|
1395
|
+
|
|
1396
|
+
- Claude Code: \`/plugin install superpowers@claude-plugins-official\`
|
|
1397
|
+
- Antigravity: \`agy plugin install https://github.com/obra/superpowers\`
|
|
1398
|
+
- Codex App: install it from the Plugins sidebar.
|
|
1399
|
+
- Codex CLI: open \`/plugins\` and install Superpowers.
|
|
1400
|
+
- Cursor: \`/add-plugin superpowers\`
|
|
1401
|
+
|
|
1402
|
+
Guide: https://github.com/obra/superpowers#installation
|
|
1403
|
+
|
|
1404
|
+
## Codebase Memory MCP
|
|
1405
|
+
|
|
1406
|
+
Use \`codebase-memory-mcp\` for symbol search, call paths, architecture, and impact analysis.
|
|
1407
|
+
|
|
1408
|
+
- Install: \`npm install -g codebase-memory-mcp\`
|
|
1409
|
+
- Index a repository: \`codebase-memory-mcp cli index_repository --repo-path .\`
|
|
1410
|
+
- Keep local index state out of git unless the team explicitly chooses a shared snapshot.
|
|
1411
|
+
|
|
1412
|
+
## RTK
|
|
1413
|
+
|
|
1414
|
+
RTK is optional command-output compression, not a workflow engine.
|
|
1415
|
+
|
|
1416
|
+
- Install: \`cargo install --git https://github.com/rtk-ai/rtk --branch master rtk\`
|
|
1417
|
+
- Prefer it for verbose git, test, build, package, and container commands when available.
|
|
1418
|
+
|
|
1419
|
+
## Playwright
|
|
1420
|
+
|
|
1421
|
+
- Check: \`${runner} playwright --version\`
|
|
1422
|
+
- Browser install: \`${playwrightCommand}\`
|
|
1423
|
+
- Use the project's existing Playwright scripts when available.
|
|
1424
|
+
`;
|
|
1425
|
+
/* Legacy tooling text below remains unreachable for source compatibility. */
|
|
1426
|
+
|
|
1427
|
+
return `# Optional Tooling
|
|
1381
1428
|
|
|
1382
1429
|
This kit keeps tool setup explicit. Do not assume these tools are available until you verify them in the current environment.
|
|
1383
1430
|
|
|
@@ -1639,6 +1686,78 @@ function copyClientWorkflowCommands() {
|
|
|
1639
1686
|
}
|
|
1640
1687
|
return { claude, cursor, prompts };
|
|
1641
1688
|
}
|
|
1689
|
+
|
|
1690
|
+
function stripFrontmatter(content) {
|
|
1691
|
+
return content.replace(/^---\r?\n[\s\S]*?\r?\n---\r?\n/, '').trimStart();
|
|
1692
|
+
}
|
|
1693
|
+
|
|
1694
|
+
function copyForgeCommands() {
|
|
1695
|
+
const srcCommands = path.join(sourceDir, 'commands');
|
|
1696
|
+
const codexSkillsDir = homePath('.codex', 'skills');
|
|
1697
|
+
if (!fs.existsSync(srcCommands)) {
|
|
1698
|
+
return { antigravity: 0, claude: 0, cursor: 0, codex: 0, commands: [] };
|
|
1699
|
+
}
|
|
1700
|
+
|
|
1701
|
+
const destinations = {
|
|
1702
|
+
antigravity: path.join(targetDir, '.agent', 'workflows'),
|
|
1703
|
+
claude: path.join(targetDir, '.claude', 'commands'),
|
|
1704
|
+
cursor: path.join(targetDir, '.cursor', 'commands')
|
|
1705
|
+
};
|
|
1706
|
+
|
|
1707
|
+
for (const commandName of REMOVED_FORGE_COMMANDS) {
|
|
1708
|
+
const filename = `${commandName}.md`;
|
|
1709
|
+
for (const destination of Object.values(destinations)) {
|
|
1710
|
+
const commandPath = path.join(destination, filename);
|
|
1711
|
+
if (fs.existsSync(commandPath)) fs.rmSync(commandPath, { force: true });
|
|
1712
|
+
}
|
|
1713
|
+
if (codexSkillsDir) {
|
|
1714
|
+
const codexSkillPath = path.join(codexSkillsDir, commandName);
|
|
1715
|
+
if (fs.existsSync(codexSkillPath)) fs.rmSync(codexSkillPath, { recursive: true, force: true });
|
|
1716
|
+
}
|
|
1717
|
+
}
|
|
1718
|
+
|
|
1719
|
+
let antigravity = 0;
|
|
1720
|
+
let claude = 0;
|
|
1721
|
+
let cursor = 0;
|
|
1722
|
+
let codex = 0;
|
|
1723
|
+
const commands = [];
|
|
1724
|
+
|
|
1725
|
+
for (const commandName of FORGE_COMMANDS) {
|
|
1726
|
+
const filename = `${commandName}.md`;
|
|
1727
|
+
const sourcePath = path.join(srcCommands, filename);
|
|
1728
|
+
if (!fs.existsSync(sourcePath)) continue;
|
|
1729
|
+
const sourceContent = fs.readFileSync(sourcePath, 'utf8');
|
|
1730
|
+
const body = stripFrontmatter(sourceContent);
|
|
1731
|
+
|
|
1732
|
+
fs.mkdirSync(destinations.antigravity, { recursive: true });
|
|
1733
|
+
fs.copyFileSync(sourcePath, path.join(destinations.antigravity, filename));
|
|
1734
|
+
antigravity++;
|
|
1735
|
+
|
|
1736
|
+
fs.mkdirSync(destinations.claude, { recursive: true });
|
|
1737
|
+
fs.copyFileSync(sourcePath, path.join(destinations.claude, filename));
|
|
1738
|
+
claude++;
|
|
1739
|
+
|
|
1740
|
+
fs.mkdirSync(destinations.cursor, { recursive: true });
|
|
1741
|
+
fs.writeFileSync(path.join(destinations.cursor, filename), body, 'utf8');
|
|
1742
|
+
cursor++;
|
|
1743
|
+
|
|
1744
|
+
if (codexSkillsDir) {
|
|
1745
|
+
const skillDir = path.join(codexSkillsDir, commandName);
|
|
1746
|
+
fs.mkdirSync(skillDir, { recursive: true });
|
|
1747
|
+
const skillBody = body.replace(/\$ARGUMENTS/g, 'the request supplied with this skill');
|
|
1748
|
+
fs.writeFileSync(
|
|
1749
|
+
path.join(skillDir, 'SKILL.md'),
|
|
1750
|
+
`---\nname: ${commandName}\ndescription: ${sourceContent.match(/^description:\s*(.+)$/m)?.[1] || `Run ${commandName}`}\n---\n\nThis skill is invoked as $${commandName}. Treat the user's text supplied with the skill as the request.\n\n${skillBody}`,
|
|
1751
|
+
'utf8'
|
|
1752
|
+
);
|
|
1753
|
+
codex++;
|
|
1754
|
+
}
|
|
1755
|
+
|
|
1756
|
+
commands.push(commandName);
|
|
1757
|
+
}
|
|
1758
|
+
|
|
1759
|
+
return { antigravity, claude, cursor, codex, commands };
|
|
1760
|
+
}
|
|
1642
1761
|
|
|
1643
1762
|
async function writeGeneratedFile(relativePath, content, assumeYes) {
|
|
1644
1763
|
const outputPath = path.join(targetDir, relativePath);
|
|
@@ -1662,23 +1781,85 @@ async function writeGeneratedFile(relativePath, content, assumeYes) {
|
|
|
1662
1781
|
return true;
|
|
1663
1782
|
}
|
|
1664
1783
|
|
|
1665
|
-
function homePath(...parts) {
|
|
1784
|
+
function homePath(...parts) {
|
|
1666
1785
|
const home = process.env.USERPROFILE || process.env.HOME;
|
|
1667
1786
|
return home ? path.join(home, ...parts) : null;
|
|
1668
|
-
}
|
|
1669
|
-
|
|
1670
|
-
function
|
|
1787
|
+
}
|
|
1788
|
+
|
|
1789
|
+
function printSuperpowersInstallGuide() {
|
|
1790
|
+
console.log(`
|
|
1791
|
+
${pc.bold('Superpowers setup')} (official client integrations)
|
|
1792
|
+
Claude Code: /plugin install superpowers@claude-plugins-official
|
|
1793
|
+
Antigravity: agy plugin install https://github.com/obra/superpowers
|
|
1794
|
+
Codex App: install Superpowers from the Plugins sidebar
|
|
1795
|
+
Codex CLI: open /plugins, search Superpowers, then Install Plugin
|
|
1796
|
+
Cursor: /add-plugin superpowers
|
|
1797
|
+
|
|
1798
|
+
Full guide: https://github.com/obra/superpowers#installation
|
|
1799
|
+
`);
|
|
1800
|
+
}
|
|
1801
|
+
|
|
1802
|
+
function runDoctor() {
|
|
1803
|
+
console.log(pc.bold(pc.cyan('thachvd-kit doctor')));
|
|
1804
|
+
const requiredFiles = ['AGENTS.md', 'CLAUDE.md', 'GEMINI.md', '.cursorrules',
|
|
1805
|
+
path.join('.agent', 'docs', 'project.md'), path.join('.agent', 'docs', 'workflow.md')];
|
|
1806
|
+
for (const relativePath of requiredFiles) {
|
|
1807
|
+
const ok = fs.existsSync(path.join(targetDir, relativePath));
|
|
1808
|
+
console.log(` ${ok ? pc.green('OK') : pc.yellow('WARN')} ${relativePath}`);
|
|
1809
|
+
}
|
|
1810
|
+
|
|
1811
|
+
const tools = [
|
|
1812
|
+
[CODEBASE_MEMORY_BINARY, `npm install -g ${CODEBASE_MEMORY_PACKAGE}`],
|
|
1813
|
+
['rtk', RTK_INSTALL_COMMAND],
|
|
1814
|
+
['agy', 'install Antigravity before running its Superpowers plugin command'],
|
|
1815
|
+
['claude', 'install Claude Code before installing its Superpowers plugin'],
|
|
1816
|
+
['codex', 'install Codex before using its Superpowers plugin']
|
|
1817
|
+
];
|
|
1818
|
+
console.log(`\n${pc.bold('Local integrations')}`);
|
|
1819
|
+
for (const [binary, hint] of tools) {
|
|
1820
|
+
const ok = commandExists(binary);
|
|
1821
|
+
console.log(` ${ok ? pc.green('OK') : pc.yellow('WARN')} ${binary}${ok ? '' : ` - ${hint}`}`);
|
|
1822
|
+
}
|
|
1823
|
+
|
|
1824
|
+
console.log(`\n${pc.bold('Next step')}`);
|
|
1825
|
+
console.log(' Run thachvd-kit setup to configure MCP and print client-specific Superpowers setup.');
|
|
1826
|
+
}
|
|
1827
|
+
|
|
1828
|
+
async function runSetup(args) {
|
|
1829
|
+
const skipMcpSetup = args.includes('--no-setup-mcp');
|
|
1830
|
+
console.log(pc.bold(pc.cyan('thachvd-kit setup')));
|
|
1831
|
+
printSuperpowersInstallGuide();
|
|
1832
|
+
if (!skipMcpSetup) {
|
|
1833
|
+
console.log(pc.bold('MCP setup'));
|
|
1834
|
+
for (const result of setupMcpServers({ install: true })) {
|
|
1835
|
+
const marker = result.ok ? pc.green('OK') : pc.yellow('WARN');
|
|
1836
|
+
console.log(` ${marker} ${result.message}`);
|
|
1837
|
+
}
|
|
1838
|
+
}
|
|
1839
|
+
console.log(`\n${pc.bold('RTK')}`);
|
|
1840
|
+
if (commandExists('rtk')) {
|
|
1841
|
+
console.log(` ${pc.green('OK')} rtk already installed`);
|
|
1842
|
+
} else {
|
|
1843
|
+
console.log(` ${pc.yellow('WARN')} rtk is not installed; run: ${RTK_INSTALL_COMMAND}`);
|
|
1844
|
+
}
|
|
1845
|
+
console.log('\nRestart your AI client after installing plugins or changing MCP configuration.');
|
|
1846
|
+
}
|
|
1847
|
+
|
|
1848
|
+
function commandExists(command) {
|
|
1671
1849
|
const checker = process.platform === 'win32' ? 'where' : 'command';
|
|
1672
1850
|
const args = process.platform === 'win32' ? [command] : ['-v', command];
|
|
1673
1851
|
const result = spawnSync(checker, args, { encoding: 'utf8', shell: process.platform !== 'win32' });
|
|
1674
1852
|
return result.status === 0;
|
|
1675
1853
|
}
|
|
1676
1854
|
|
|
1677
|
-
function ensureGlobalNpmPackage(binaryName, packageName) {
|
|
1678
|
-
if (commandExists(binaryName)) {
|
|
1679
|
-
return { ok: true, message: `${binaryName} already installed` };
|
|
1680
|
-
}
|
|
1681
|
-
if (!
|
|
1855
|
+
function ensureGlobalNpmPackage(binaryName, packageName, install = false) {
|
|
1856
|
+
if (commandExists(binaryName)) {
|
|
1857
|
+
return { ok: true, message: `${binaryName} already installed` };
|
|
1858
|
+
}
|
|
1859
|
+
if (!install) {
|
|
1860
|
+
return { ok: false, message: `${binaryName} is missing; run: npm install -g ${packageName}` };
|
|
1861
|
+
}
|
|
1862
|
+
if (!commandExists('npm')) {
|
|
1682
1863
|
return { ok: false, message: `npm not found; run: npm install -g ${packageName}` };
|
|
1683
1864
|
}
|
|
1684
1865
|
const result = spawnSync('npm', ['install', '-g', packageName], {
|
|
@@ -1691,17 +1872,9 @@ function ensureGlobalNpmPackage(binaryName, packageName) {
|
|
|
1691
1872
|
return { ok: true, message: `installed ${binaryName}` };
|
|
1692
1873
|
}
|
|
1693
1874
|
|
|
1694
|
-
function
|
|
1695
|
-
return ensureGlobalNpmPackage(
|
|
1696
|
-
}
|
|
1697
|
-
|
|
1698
|
-
function ensureContext7Cli() {
|
|
1699
|
-
return ensureGlobalNpmPackage('context7-mcp', '@upstash/context7-mcp');
|
|
1700
|
-
}
|
|
1701
|
-
|
|
1702
|
-
function ensurePlaywrightMcpCli() {
|
|
1703
|
-
return ensureGlobalNpmPackage('playwright-mcp', '@playwright/mcp');
|
|
1704
|
-
}
|
|
1875
|
+
function ensureCodebaseMemoryCli(install = false) {
|
|
1876
|
+
return ensureGlobalNpmPackage(CODEBASE_MEMORY_BINARY, CODEBASE_MEMORY_PACKAGE, install);
|
|
1877
|
+
}
|
|
1705
1878
|
|
|
1706
1879
|
function readJsonFile(filePath) {
|
|
1707
1880
|
if (!fs.existsSync(filePath)) return {};
|
|
@@ -1723,10 +1896,10 @@ function mergeMcpJson(filePath, withType = false) {
|
|
|
1723
1896
|
return { ok: false, message: `${filePath} is not valid JSON; skipped` };
|
|
1724
1897
|
}
|
|
1725
1898
|
data.mcpServers = data.mcpServers || {};
|
|
1726
|
-
const baseServers = {
|
|
1727
|
-
|
|
1728
|
-
playwright: { command: 'playwright-mcp' },
|
|
1729
|
-
context7: { command: 'context7-mcp' }
|
|
1899
|
+
const baseServers = {
|
|
1900
|
+
'codebase-memory-mcp': { command: CODEBASE_MEMORY_BINARY, args: [] },
|
|
1901
|
+
playwright: { command: 'playwright-mcp' },
|
|
1902
|
+
context7: { command: 'context7-mcp' }
|
|
1730
1903
|
};
|
|
1731
1904
|
if (data.permissions && Array.isArray(data.permissions.allow)) {
|
|
1732
1905
|
const requiredPermissions = [
|
|
@@ -1760,13 +1933,12 @@ startup_timeout_sec = 20
|
|
|
1760
1933
|
tool_timeout_sec = 120
|
|
1761
1934
|
`);
|
|
1762
1935
|
}
|
|
1763
|
-
if (!/\[mcp_servers\.
|
|
1764
|
-
blocks.push(`[mcp_servers.
|
|
1765
|
-
command = "
|
|
1766
|
-
|
|
1767
|
-
|
|
1768
|
-
|
|
1769
|
-
`);
|
|
1936
|
+
if (!/\[mcp_servers\.codebase-memory-mcp\]/.test(existing)) {
|
|
1937
|
+
blocks.push(`[mcp_servers.codebase-memory-mcp]
|
|
1938
|
+
command = "${CODEBASE_MEMORY_BINARY}"
|
|
1939
|
+
startup_timeout_sec = 20
|
|
1940
|
+
tool_timeout_sec = 120
|
|
1941
|
+
`);
|
|
1770
1942
|
}
|
|
1771
1943
|
if (!/\[mcp_servers\.playwright\]/.test(existing)) {
|
|
1772
1944
|
blocks.push(`[mcp_servers.playwright]
|
|
@@ -1779,7 +1951,7 @@ tool_timeout_sec = 120
|
|
|
1779
1951
|
}
|
|
1780
1952
|
const separator = existing && !existing.endsWith('\n') ? '\n\n' : existing ? '\n' : '';
|
|
1781
1953
|
fs.writeFileSync(filePath, existing + separator + blocks.join('\n'), 'utf8');
|
|
1782
|
-
return { ok: true, message: `configured
|
|
1954
|
+
return { ok: true, message: `configured codebase-memory-mcp, context7, playwright MCP in ${filePath}` };
|
|
1783
1955
|
}
|
|
1784
1956
|
|
|
1785
1957
|
const DOD_HOOK_MARKER = 'feature/refactor Definition-of-Done gate';
|
|
@@ -1854,11 +2026,12 @@ function mergeClaudeProjectHooks(filePath) {
|
|
|
1854
2026
|
return { ok: true, message: `configured Definition-of-Done Stop hook in ${filePath}` };
|
|
1855
2027
|
}
|
|
1856
2028
|
|
|
1857
|
-
function setupMcpServers() {
|
|
1858
|
-
const
|
|
1859
|
-
results
|
|
1860
|
-
results.push(
|
|
1861
|
-
results.push(
|
|
2029
|
+
function setupMcpServers(options = {}) {
|
|
2030
|
+
const install = options.install === true;
|
|
2031
|
+
const results = [];
|
|
2032
|
+
results.push(ensureCodebaseMemoryCli(install));
|
|
2033
|
+
results.push(ensureGlobalNpmPackage('context7-mcp', '@upstash/context7-mcp', install));
|
|
2034
|
+
results.push(ensureGlobalNpmPackage('playwright-mcp', '@playwright/mcp', install));
|
|
1862
2035
|
|
|
1863
2036
|
const codexConfig = homePath('.codex', 'config.toml');
|
|
1864
2037
|
if (codexConfig) results.push(appendMcpTomlIfMissing(codexConfig));
|
|
@@ -1895,12 +2068,22 @@ async function main() {
|
|
|
1895
2068
|
return;
|
|
1896
2069
|
}
|
|
1897
2070
|
|
|
1898
|
-
if (rawArgs.includes('--help') || rawArgs.includes('-h')) {
|
|
1899
|
-
printHelp();
|
|
1900
|
-
return;
|
|
1901
|
-
}
|
|
1902
|
-
|
|
1903
|
-
if (command
|
|
2071
|
+
if (rawArgs.includes('--help') || rawArgs.includes('-h')) {
|
|
2072
|
+
printHelp();
|
|
2073
|
+
return;
|
|
2074
|
+
}
|
|
2075
|
+
|
|
2076
|
+
if (command === 'doctor') {
|
|
2077
|
+
runDoctor();
|
|
2078
|
+
return;
|
|
2079
|
+
}
|
|
2080
|
+
|
|
2081
|
+
if (command === 'setup') {
|
|
2082
|
+
await runSetup(rawArgs.slice(1));
|
|
2083
|
+
return;
|
|
2084
|
+
}
|
|
2085
|
+
|
|
2086
|
+
if (command !== 'init') {
|
|
1904
2087
|
console.error(pc.red(`Unknown command: ${command}`));
|
|
1905
2088
|
printHelp();
|
|
1906
2089
|
process.exit(1);
|
|
@@ -1957,36 +2140,13 @@ async function main() {
|
|
|
1957
2140
|
if (data.uses_docker) data.infrastructure.push('docker');
|
|
1958
2141
|
if (data.cloud !== 'none') data.infrastructure.push(data.cloud);
|
|
1959
2142
|
|
|
1960
|
-
const shouldSetupMcp = !skipMcpSetup;
|
|
2143
|
+
const shouldSetupMcp = args.includes('--setup-mcp') && !skipMcpSetup;
|
|
1961
2144
|
|
|
1962
2145
|
console.log(`\n${pc.bold(pc.cyan('Generating Files'))}`);
|
|
1963
2146
|
|
|
1964
2147
|
// Shared entry files are written after the .agent folder is available.
|
|
1965
2148
|
|
|
1966
|
-
|
|
1967
|
-
const { copied, skipped } = copyAgentFolder();
|
|
1968
|
-
if (copied > 0) {
|
|
1969
|
-
console.log(` ${pc.green('OK')} Copied ${pc.bold('.agent/')} (${copied} file${copied !== 1 ? 's' : ''} added${skipped > 0 ? `, ${skipped} skipped` : ''})`);
|
|
1970
|
-
} else if (skipped > 0) {
|
|
1971
|
-
console.log(` ${pc.yellow('~')} ${pc.bold('.agent/')} already exists - ${skipped} file${skipped !== 1 ? 's' : ''} skipped (no overwrite)`);
|
|
1972
|
-
}
|
|
1973
|
-
|
|
1974
|
-
const nativeSkills = copySelectedSkillFolders(data, assumeYes);
|
|
1975
|
-
if (nativeSkills.copied > 0) {
|
|
1976
|
-
console.log(` ${pc.green('OK')} Copied native skills to ${pc.bold('~/.codex/skills/')} and ${pc.bold('.claude/skills/')} (${nativeSkills.skills.join(', ')})`);
|
|
1977
|
-
} else if (nativeSkills.skipped > 0) {
|
|
1978
|
-
console.log(` ${pc.yellow('~')} Native skills already exist - ${nativeSkills.skipped} file${nativeSkills.skipped !== 1 ? 's' : ''} skipped`);
|
|
1979
|
-
}
|
|
1980
|
-
|
|
1981
|
-
const codexPrompts = copyCodexPrompts();
|
|
1982
|
-
if (codexPrompts.copied > 0) {
|
|
1983
|
-
console.log(` ${pc.green('OK')} Installed Codex custom prompts in ${pc.bold('~/.codex/prompts/')} (${codexPrompts.prompts.map(name => `/prompts:${name}`).join(', ')})`);
|
|
1984
|
-
}
|
|
1985
|
-
|
|
1986
|
-
const clientCommands = copyClientWorkflowCommands();
|
|
1987
|
-
if (clientCommands.claude > 0 || clientCommands.cursor > 0) {
|
|
1988
|
-
console.log(` ${pc.green('OK')} Installed workflow commands for Claude Code (${clientCommands.claude}) and Cursor (${clientCommands.cursor})`);
|
|
1989
|
-
}
|
|
2149
|
+
console.log(` ${pc.green('OK')} Project context generation enabled; workflow skills remain client-managed by Superpowers`);
|
|
1990
2150
|
|
|
1991
2151
|
|
|
1992
2152
|
const generatedFiles = [
|
|
@@ -2008,11 +2168,7 @@ async function main() {
|
|
|
2008
2168
|
else console.log(` ${pc.yellow('~')} Skipped ${pc.bold(relativePath)}`);
|
|
2009
2169
|
}
|
|
2010
2170
|
|
|
2011
|
-
|
|
2012
|
-
const hookResult = mergeClaudeProjectHooks(path.join(targetDir, '.claude', 'settings.json'));
|
|
2013
|
-
console.log(` ${hookResult.ok ? pc.green('OK') : pc.yellow('~')} ${hookResult.message}`);
|
|
2014
|
-
|
|
2015
|
-
if (shouldSetupMcp) {
|
|
2171
|
+
if (shouldSetupMcp) {
|
|
2016
2172
|
console.log(`\n${pc.bold(pc.cyan('Configuring MCP'))}`);
|
|
2017
2173
|
for (const result of setupMcpServers()) {
|
|
2018
2174
|
const marker = result.ok ? pc.green('OK') : pc.yellow('~');
|
|
@@ -2031,38 +2187,28 @@ async function main() {
|
|
|
2031
2187
|
- ${pc.bold('GEMINI.md')} Antigravity entry
|
|
2032
2188
|
- ${pc.bold('.cursorrules')} Cursor entry
|
|
2033
2189
|
- ${pc.bold('.agent/docs/')} scan-based project rules, including ${pc.bold('getting-started.md')} (standard flow vs fast path)
|
|
2034
|
-
- ${pc.bold('.agent/')}
|
|
2035
|
-
- ${pc.bold('~/.codex/skills/')} selected Codex skills installed globally (visible in $ menu)
|
|
2036
|
-
- ${pc.bold('~/.codex/prompts/')} Codex custom prompts (visible as /prompts:<name> after restart)
|
|
2037
|
-
- ${pc.bold('.claude/skills/')} selected Claude Code native skills
|
|
2038
|
-
- ${pc.bold('.claude/skills/{task,simple,debug,spec,release}/')} workflow skills (visible as /task, /simple, /debug, /spec, /release)
|
|
2039
|
-
- ${pc.bold('.cursor/commands/')} Cursor workflow commands (visible as /task, /simple, /debug, /spec, /release)
|
|
2040
|
-
- ${pc.bold('.claude/settings.json')} Definition-of-Done Stop hook (Claude Code only — blocks reporting a feature/refactor "done" without a plan + review pass)
|
|
2190
|
+
- ${pc.bold('.agent/docs/')} project context and local operating notes
|
|
2041
2191
|
|
|
2042
2192
|
${pc.bold('MCP/tooling setup:')}
|
|
2043
|
-
-
|
|
2044
|
-
-
|
|
2045
|
-
- Playwright MCP configured for Codex, Gemini/Antigravity, and Claude Code
|
|
2046
|
-
- Browser install hint: ${pc.bold(resolveToolingSetup(data).playwrightCommand)}
|
|
2047
|
-
- Codegraph index hint: run ${pc.bold('codegraph init -i')} when a project index is missing, then keep ${pc.bold('.codegraph/')} uncommitted
|
|
2193
|
+
- Superpowers is the workflow backend; install it from the official client/plugin surface
|
|
2194
|
+
- Run ${pc.bold('thachvd-kit setup')} to configure codebase-memory MCP and optional RTK
|
|
2048
2195
|
|
|
2049
2196
|
${pc.bold('Next steps:')}
|
|
2050
|
-
1. Read ${pc.bold('.agent/docs/getting-started.md')} for the standard flow
|
|
2051
|
-
2.
|
|
2052
|
-
3.
|
|
2053
|
-
4.
|
|
2197
|
+
1. Read ${pc.bold('.agent/docs/getting-started.md')} for the standard Superpowers flow
|
|
2198
|
+
2. Run ${pc.bold('thachvd-kit setup')} for optional integrations
|
|
2199
|
+
3. Run ${pc.bold('thachvd-kit doctor')} to verify the machine
|
|
2200
|
+
4. Commit ${pc.bold('AGENTS.md')}, ${pc.bold('CLAUDE.md')}, ${pc.bold('GEMINI.md')}, ${pc.bold('.cursorrules')}, and ${pc.bold('.agent/docs/')}
|
|
2054
2201
|
|
|
2055
2202
|
${pc.bold('Copy this prompt into your AI editor:')}
|
|
2056
2203
|
${pc.dim('---')}
|
|
2057
|
-
Read CLAUDE.md (if using Claude Code), AGENTS.md, and all files under .agent/docs/.
|
|
2058
|
-
|
|
2059
|
-
|
|
2060
|
-
|
|
2061
|
-
Do not implement product code.
|
|
2062
|
-
|
|
2063
|
-
|
|
2064
|
-
|
|
2065
|
-
}
|
|
2204
|
+
Read CLAUDE.md (if using Claude Code), AGENTS.md, and all files under .agent/docs/.
|
|
2205
|
+
Use Superpowers for the workflow and use codebase-memory MCP for structural code discovery when available.
|
|
2206
|
+
Ask me what this project does and any important conventions I want preserved.
|
|
2207
|
+
Then scan this repository and refine the generated context docs with factual rules.
|
|
2208
|
+
Do not implement product code during onboarding.
|
|
2209
|
+
${pc.dim('---')}
|
|
2210
|
+
`);
|
|
2211
|
+
}
|
|
2066
2212
|
|
|
2067
2213
|
main().catch(err => {
|
|
2068
2214
|
console.error(pc.red('\nError during init:'), err);
|