@glxmart/boss-cli 1.0.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +134 -0
- package/assets/claude-folder/agents/.gitkeep +0 -0
- package/assets/claude-folder/commands/boss-commands.md +138 -0
- package/assets/claude-folder/rules/boss-workflow.md +33 -0
- package/assets/claude-folder/rules/code-style.md +23 -0
- package/assets/claude-folder/rules/security.md +22 -0
- package/assets/claude-folder/rules/testing.md +32 -0
- package/assets/claude-folder/settings.local.json +88 -0
- package/assets/claude-folder/skills/.gitkeep +0 -0
- package/assets/claude-md/docs/container-use.md +140 -0
- package/assets/claude-md/docs/github-operations.md +238 -0
- package/assets/claude-md/docs/initialization.md +186 -0
- package/assets/claude-md/docs/quality-standards.md +15 -0
- package/assets/claude-md/docs/spec-kit.md +46 -0
- package/assets/claude-md/docs/workers.md +174 -0
- package/assets/claude-md/docs/workflow.md +140 -0
- package/assets/claude-md/template.md +812 -0
- package/assets/docker-compose/docker-compose.yml +52 -0
- package/assets/git-hooks/commit-msg.sh +102 -0
- package/assets/git-hooks/pre-commit-check.sh +21 -0
- package/assets/git-hooks/pre-commit.sh +6 -0
- package/assets/git-hooks/pre-push.sh +154 -0
- package/assets/git-hooks/security-check.sh +40 -0
- package/assets/git-hooks/test-changed.sh +84 -0
- package/assets/github-workflows/CODEOWNERS +3 -0
- package/assets/github-workflows/boss-ci.yml +40 -0
- package/assets/github-workflows/boss-gates.yml +28 -0
- package/assets/start-boss-sh/start-boss.sh +471 -0
- package/assets/template-docs/api-service-fastify.md +98 -0
- package/assets/template-docs/blank.md +91 -0
- package/assets/template-docs/nextjs-app-turbo.md +102 -0
- package/assets/template-docs/t3-app.md +106 -0
- package/assets/template-loader/README.md +28 -0
- package/assets/template-loader/eslint.config.node.js +28 -0
- package/assets/template-loader/eslint.config.react.js +47 -0
- package/assets/template-loader/gitignore +42 -0
- package/assets/template-loader/index.test.ts +10 -0
- package/assets/template-loader/index.ts +13 -0
- package/assets/template-loader/prettierignore +8 -0
- package/assets/template-loader/vitest.config.ts +19 -0
- package/assets/worker-configs/architect/.claude/commands/.gitkeep +0 -0
- package/assets/worker-configs/architect/.claude/skills/.gitkeep +0 -0
- package/assets/worker-configs/architect/CLAUDE.md +106 -0
- package/assets/worker-configs/clarifier/.claude/commands/.gitkeep +1 -0
- package/assets/worker-configs/clarifier/.claude/skills/.gitkeep +1 -0
- package/assets/worker-configs/clarifier/CLAUDE.md +112 -0
- package/assets/worker-configs/code-reviewer/CLAUDE.md +113 -0
- package/assets/worker-configs/consolidator/.claude/commands/.gitkeep +1 -0
- package/assets/worker-configs/consolidator/.claude/skills/.gitkeep +1 -0
- package/assets/worker-configs/consolidator/CLAUDE.md +114 -0
- package/assets/worker-configs/developer-backend/.claude/commands/.gitkeep +1 -0
- package/assets/worker-configs/developer-backend/.claude/skills/.gitkeep +1 -0
- package/assets/worker-configs/developer-backend/CLAUDE.md +116 -0
- package/assets/worker-configs/developer-frontend/.claude/commands/.gitkeep +1 -0
- package/assets/worker-configs/developer-frontend/.claude/skills/.gitkeep +1 -0
- package/assets/worker-configs/developer-frontend/CLAUDE.md +116 -0
- package/assets/worker-configs/developer-fullstack/.claude/commands/.gitkeep +1 -0
- package/assets/worker-configs/developer-fullstack/.claude/skills/.gitkeep +1 -0
- package/assets/worker-configs/developer-fullstack/CLAUDE.md +116 -0
- package/assets/worker-configs/devops-engineer/CLAUDE.md +111 -0
- package/assets/worker-configs/planner/.claude/commands/.gitkeep +1 -0
- package/assets/worker-configs/planner/.claude/skills/.gitkeep +1 -0
- package/assets/worker-configs/planner/CLAUDE.md +111 -0
- package/assets/worker-configs/product-owner/CLAUDE.md +108 -0
- package/assets/worker-configs/reviewer/.claude/commands/.gitkeep +1 -0
- package/assets/worker-configs/reviewer/.claude/skills/.gitkeep +1 -0
- package/assets/worker-configs/reviewer/CLAUDE.md +110 -0
- package/assets/worker-configs/security-engineer/CLAUDE.md +109 -0
- package/assets/worker-configs/spec-writer/.claude/commands/.gitkeep +1 -0
- package/assets/worker-configs/spec-writer/.claude/skills/.gitkeep +1 -0
- package/assets/worker-configs/spec-writer/CLAUDE.md +110 -0
- package/assets/worker-configs/technical-writer/CLAUDE.md +107 -0
- package/assets/worker-configs/tester/CLAUDE.md +110 -0
- package/dist/assets/claude-folder/agents/.gitkeep +0 -0
- package/dist/assets/claude-folder/commands/boss-commands.md +138 -0
- package/dist/assets/claude-folder/rules/boss-workflow.md +33 -0
- package/dist/assets/claude-folder/rules/code-style.md +23 -0
- package/dist/assets/claude-folder/rules/security.md +22 -0
- package/dist/assets/claude-folder/rules/testing.md +32 -0
- package/dist/assets/claude-folder/settings.local.json +88 -0
- package/dist/assets/claude-folder/skills/.gitkeep +0 -0
- package/dist/assets/claude-md/docs/container-use.md +140 -0
- package/dist/assets/claude-md/docs/github-operations.md +238 -0
- package/dist/assets/claude-md/docs/initialization.md +186 -0
- package/dist/assets/claude-md/docs/quality-standards.md +15 -0
- package/dist/assets/claude-md/docs/spec-kit.md +46 -0
- package/dist/assets/claude-md/docs/workers.md +174 -0
- package/dist/assets/claude-md/docs/workflow.md +140 -0
- package/dist/assets/claude-md/template.md +812 -0
- package/dist/assets/docker-compose/docker-compose.yml +52 -0
- package/dist/assets/git-hooks/commit-msg.sh +102 -0
- package/dist/assets/git-hooks/pre-commit-check.sh +21 -0
- package/dist/assets/git-hooks/pre-commit.sh +6 -0
- package/dist/assets/git-hooks/pre-push.sh +154 -0
- package/dist/assets/git-hooks/security-check.sh +40 -0
- package/dist/assets/git-hooks/test-changed.sh +84 -0
- package/dist/assets/github-workflows/CODEOWNERS +3 -0
- package/dist/assets/github-workflows/boss-ci.yml +40 -0
- package/dist/assets/github-workflows/boss-gates.yml +28 -0
- package/dist/assets/start-boss-sh/start-boss.sh +471 -0
- package/dist/assets/template-docs/api-service-fastify.md +98 -0
- package/dist/assets/template-docs/blank.md +91 -0
- package/dist/assets/template-docs/nextjs-app-turbo.md +102 -0
- package/dist/assets/template-docs/t3-app.md +106 -0
- package/dist/assets/template-loader/README.md +28 -0
- package/dist/assets/template-loader/eslint.config.node.js +28 -0
- package/dist/assets/template-loader/eslint.config.react.js +47 -0
- package/dist/assets/template-loader/gitignore +42 -0
- package/dist/assets/template-loader/index.test.ts +10 -0
- package/dist/assets/template-loader/index.ts +13 -0
- package/dist/assets/template-loader/prettierignore +8 -0
- package/dist/assets/template-loader/vitest.config.ts +19 -0
- package/dist/assets/worker-configs/architect/.claude/commands/.gitkeep +0 -0
- package/dist/assets/worker-configs/architect/.claude/skills/.gitkeep +0 -0
- package/dist/assets/worker-configs/architect/CLAUDE.md +106 -0
- package/dist/assets/worker-configs/clarifier/.claude/commands/.gitkeep +1 -0
- package/dist/assets/worker-configs/clarifier/.claude/skills/.gitkeep +1 -0
- package/dist/assets/worker-configs/clarifier/CLAUDE.md +112 -0
- package/dist/assets/worker-configs/code-reviewer/CLAUDE.md +113 -0
- package/dist/assets/worker-configs/consolidator/.claude/commands/.gitkeep +1 -0
- package/dist/assets/worker-configs/consolidator/.claude/skills/.gitkeep +1 -0
- package/dist/assets/worker-configs/consolidator/CLAUDE.md +114 -0
- package/dist/assets/worker-configs/developer-backend/.claude/commands/.gitkeep +1 -0
- package/dist/assets/worker-configs/developer-backend/.claude/skills/.gitkeep +1 -0
- package/dist/assets/worker-configs/developer-backend/CLAUDE.md +116 -0
- package/dist/assets/worker-configs/developer-frontend/.claude/commands/.gitkeep +1 -0
- package/dist/assets/worker-configs/developer-frontend/.claude/skills/.gitkeep +1 -0
- package/dist/assets/worker-configs/developer-frontend/CLAUDE.md +116 -0
- package/dist/assets/worker-configs/developer-fullstack/.claude/commands/.gitkeep +1 -0
- package/dist/assets/worker-configs/developer-fullstack/.claude/skills/.gitkeep +1 -0
- package/dist/assets/worker-configs/developer-fullstack/CLAUDE.md +116 -0
- package/dist/assets/worker-configs/devops-engineer/CLAUDE.md +111 -0
- package/dist/assets/worker-configs/planner/.claude/commands/.gitkeep +1 -0
- package/dist/assets/worker-configs/planner/.claude/skills/.gitkeep +1 -0
- package/dist/assets/worker-configs/planner/CLAUDE.md +111 -0
- package/dist/assets/worker-configs/product-owner/CLAUDE.md +108 -0
- package/dist/assets/worker-configs/reviewer/.claude/commands/.gitkeep +1 -0
- package/dist/assets/worker-configs/reviewer/.claude/skills/.gitkeep +1 -0
- package/dist/assets/worker-configs/reviewer/CLAUDE.md +110 -0
- package/dist/assets/worker-configs/security-engineer/CLAUDE.md +109 -0
- package/dist/assets/worker-configs/spec-writer/.claude/commands/.gitkeep +1 -0
- package/dist/assets/worker-configs/spec-writer/.claude/skills/.gitkeep +1 -0
- package/dist/assets/worker-configs/spec-writer/CLAUDE.md +110 -0
- package/dist/assets/worker-configs/technical-writer/CLAUDE.md +107 -0
- package/dist/assets/worker-configs/tester/CLAUDE.md +110 -0
- package/dist/commands/__tests__/bootstrap.test.d.ts +2 -0
- package/dist/commands/__tests__/bootstrap.test.d.ts.map +1 -0
- package/dist/commands/__tests__/bootstrap.test.js +379 -0
- package/dist/commands/__tests__/bootstrap.test.js.map +1 -0
- package/dist/commands/__tests__/doctor.test.d.ts +2 -0
- package/dist/commands/__tests__/doctor.test.d.ts.map +1 -0
- package/dist/commands/__tests__/doctor.test.js +13 -0
- package/dist/commands/__tests__/doctor.test.js.map +1 -0
- package/dist/commands/bootstrap.d.ts +3 -0
- package/dist/commands/bootstrap.d.ts.map +1 -0
- package/dist/commands/bootstrap.js +390 -0
- package/dist/commands/bootstrap.js.map +1 -0
- package/dist/commands/doctor.d.ts +2 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +171 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/templates.d.ts +2 -0
- package/dist/commands/templates.d.ts.map +1 -0
- package/dist/commands/templates.js +12 -0
- package/dist/commands/templates.js.map +1 -0
- package/dist/constants.d.ts +23 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +23 -0
- package/dist/constants.js.map +1 -0
- package/dist/generators/__tests__/boss-config.test.d.ts +2 -0
- package/dist/generators/__tests__/boss-config.test.d.ts.map +1 -0
- package/dist/generators/__tests__/boss-config.test.js +61 -0
- package/dist/generators/__tests__/boss-config.test.js.map +1 -0
- package/dist/generators/__tests__/claude-folder.test.d.ts +2 -0
- package/dist/generators/__tests__/claude-folder.test.d.ts.map +1 -0
- package/dist/generators/__tests__/claude-folder.test.js +128 -0
- package/dist/generators/__tests__/claude-folder.test.js.map +1 -0
- package/dist/generators/__tests__/claude-md.test.d.ts +2 -0
- package/dist/generators/__tests__/claude-md.test.d.ts.map +1 -0
- package/dist/generators/__tests__/claude-md.test.js +55 -0
- package/dist/generators/__tests__/claude-md.test.js.map +1 -0
- package/dist/generators/__tests__/container-use-config.test.d.ts +2 -0
- package/dist/generators/__tests__/container-use-config.test.d.ts.map +1 -0
- package/dist/generators/__tests__/container-use-config.test.js +80 -0
- package/dist/generators/__tests__/container-use-config.test.js.map +1 -0
- package/dist/generators/__tests__/docker-compose.test.d.ts +2 -0
- package/dist/generators/__tests__/docker-compose.test.d.ts.map +1 -0
- package/dist/generators/__tests__/docker-compose.test.js +39 -0
- package/dist/generators/__tests__/docker-compose.test.js.map +1 -0
- package/dist/generators/__tests__/git-hooks.test.d.ts +2 -0
- package/dist/generators/__tests__/git-hooks.test.d.ts.map +1 -0
- package/dist/generators/__tests__/git-hooks.test.js +118 -0
- package/dist/generators/__tests__/git-hooks.test.js.map +1 -0
- package/dist/generators/__tests__/github-workflows.test.d.ts +2 -0
- package/dist/generators/__tests__/github-workflows.test.d.ts.map +1 -0
- package/dist/generators/__tests__/github-workflows.test.js +86 -0
- package/dist/generators/__tests__/github-workflows.test.js.map +1 -0
- package/dist/generators/__tests__/mcp-config.test.d.ts +2 -0
- package/dist/generators/__tests__/mcp-config.test.d.ts.map +1 -0
- package/dist/generators/__tests__/mcp-config.test.js +131 -0
- package/dist/generators/__tests__/mcp-config.test.js.map +1 -0
- package/dist/generators/__tests__/project-structure.test.d.ts +2 -0
- package/dist/generators/__tests__/project-structure.test.d.ts.map +1 -0
- package/dist/generators/__tests__/project-structure.test.js +40 -0
- package/dist/generators/__tests__/project-structure.test.js.map +1 -0
- package/dist/generators/__tests__/quality-gates.test.d.ts +2 -0
- package/dist/generators/__tests__/quality-gates.test.d.ts.map +1 -0
- package/dist/generators/__tests__/quality-gates.test.js +71 -0
- package/dist/generators/__tests__/quality-gates.test.js.map +1 -0
- package/dist/generators/__tests__/specify-structure.test.d.ts +2 -0
- package/dist/generators/__tests__/specify-structure.test.d.ts.map +1 -0
- package/dist/generators/__tests__/specify-structure.test.js +63 -0
- package/dist/generators/__tests__/specify-structure.test.js.map +1 -0
- package/dist/generators/__tests__/start-boss-sh.test.d.ts +2 -0
- package/dist/generators/__tests__/start-boss-sh.test.d.ts.map +1 -0
- package/dist/generators/__tests__/start-boss-sh.test.js +36 -0
- package/dist/generators/__tests__/start-boss-sh.test.js.map +1 -0
- package/dist/generators/__tests__/template-docs.test.d.ts +2 -0
- package/dist/generators/__tests__/template-docs.test.d.ts.map +1 -0
- package/dist/generators/__tests__/template-docs.test.js +92 -0
- package/dist/generators/__tests__/template-docs.test.js.map +1 -0
- package/dist/generators/__tests__/template-loader.test.d.ts +2 -0
- package/dist/generators/__tests__/template-loader.test.d.ts.map +1 -0
- package/dist/generators/__tests__/template-loader.test.js +215 -0
- package/dist/generators/__tests__/template-loader.test.js.map +1 -0
- package/dist/generators/__tests__/worker-configs.test.d.ts +2 -0
- package/dist/generators/__tests__/worker-configs.test.d.ts.map +1 -0
- package/dist/generators/__tests__/worker-configs.test.js +122 -0
- package/dist/generators/__tests__/worker-configs.test.js.map +1 -0
- package/dist/generators/boss-config.d.ts +3 -0
- package/dist/generators/boss-config.d.ts.map +1 -0
- package/dist/generators/boss-config.js +242 -0
- package/dist/generators/boss-config.js.map +1 -0
- package/dist/generators/claude-folder.d.ts +3 -0
- package/dist/generators/claude-folder.d.ts.map +1 -0
- package/dist/generators/claude-folder.js +94 -0
- package/dist/generators/claude-folder.js.map +1 -0
- package/dist/generators/claude-md.d.ts +3 -0
- package/dist/generators/claude-md.d.ts.map +1 -0
- package/dist/generators/claude-md.js +64 -0
- package/dist/generators/claude-md.js.map +1 -0
- package/dist/generators/container-use-config.d.ts +13 -0
- package/dist/generators/container-use-config.d.ts.map +1 -0
- package/dist/generators/container-use-config.js +60 -0
- package/dist/generators/container-use-config.js.map +1 -0
- package/dist/generators/docker-compose.d.ts +2 -0
- package/dist/generators/docker-compose.d.ts.map +1 -0
- package/dist/generators/docker-compose.js +8 -0
- package/dist/generators/docker-compose.js.map +1 -0
- package/dist/generators/git-hooks.d.ts +3 -0
- package/dist/generators/git-hooks.d.ts.map +1 -0
- package/dist/generators/git-hooks.js +58 -0
- package/dist/generators/git-hooks.js.map +1 -0
- package/dist/generators/github-workflows.d.ts +3 -0
- package/dist/generators/github-workflows.d.ts.map +1 -0
- package/dist/generators/github-workflows.js +27 -0
- package/dist/generators/github-workflows.js.map +1 -0
- package/dist/generators/mcp-config.d.ts +3 -0
- package/dist/generators/mcp-config.d.ts.map +1 -0
- package/dist/generators/mcp-config.js +183 -0
- package/dist/generators/mcp-config.js.map +1 -0
- package/dist/generators/project-structure.d.ts +3 -0
- package/dist/generators/project-structure.d.ts.map +1 -0
- package/dist/generators/project-structure.js +24 -0
- package/dist/generators/project-structure.js.map +1 -0
- package/dist/generators/quality-gates.d.ts +3 -0
- package/dist/generators/quality-gates.d.ts.map +1 -0
- package/dist/generators/quality-gates.js +32 -0
- package/dist/generators/quality-gates.js.map +1 -0
- package/dist/generators/specify-structure.d.ts +2 -0
- package/dist/generators/specify-structure.d.ts.map +1 -0
- package/dist/generators/specify-structure.js +43 -0
- package/dist/generators/specify-structure.js.map +1 -0
- package/dist/generators/start-boss-sh.d.ts +2 -0
- package/dist/generators/start-boss-sh.d.ts.map +1 -0
- package/dist/generators/start-boss-sh.js +10 -0
- package/dist/generators/start-boss-sh.js.map +1 -0
- package/dist/generators/template-docs.d.ts +3 -0
- package/dist/generators/template-docs.d.ts.map +1 -0
- package/dist/generators/template-docs.js +19 -0
- package/dist/generators/template-docs.js.map +1 -0
- package/dist/generators/template-loader.d.ts +3 -0
- package/dist/generators/template-loader.d.ts.map +1 -0
- package/dist/generators/template-loader.js +308 -0
- package/dist/generators/template-loader.js.map +1 -0
- package/dist/generators/worker-configs.d.ts +3 -0
- package/dist/generators/worker-configs.d.ts.map +1 -0
- package/dist/generators/worker-configs.js +119 -0
- package/dist/generators/worker-configs.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +57 -0
- package/dist/index.js.map +1 -0
- package/dist/presets/__tests__/quality-presets.test.d.ts +2 -0
- package/dist/presets/__tests__/quality-presets.test.d.ts.map +1 -0
- package/dist/presets/__tests__/quality-presets.test.js +152 -0
- package/dist/presets/__tests__/quality-presets.test.js.map +1 -0
- package/dist/presets/quality-presets.d.ts +3 -0
- package/dist/presets/quality-presets.d.ts.map +1 -0
- package/dist/presets/quality-presets.js +65 -0
- package/dist/presets/quality-presets.js.map +1 -0
- package/dist/types/index.d.ts +42 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/__tests__/file-system.test.d.ts +2 -0
- package/dist/utils/__tests__/file-system.test.d.ts.map +1 -0
- package/dist/utils/__tests__/file-system.test.js +83 -0
- package/dist/utils/__tests__/file-system.test.js.map +1 -0
- package/dist/utils/__tests__/git.test.d.ts +2 -0
- package/dist/utils/__tests__/git.test.d.ts.map +1 -0
- package/dist/utils/__tests__/git.test.js +79 -0
- package/dist/utils/__tests__/git.test.js.map +1 -0
- package/dist/utils/__tests__/template-loader.test.d.ts +2 -0
- package/dist/utils/__tests__/template-loader.test.d.ts.map +1 -0
- package/dist/utils/__tests__/template-loader.test.js +109 -0
- package/dist/utils/__tests__/template-loader.test.js.map +1 -0
- package/dist/utils/__tests__/validators.test.d.ts +2 -0
- package/dist/utils/__tests__/validators.test.d.ts.map +1 -0
- package/dist/utils/__tests__/validators.test.js +118 -0
- package/dist/utils/__tests__/validators.test.js.map +1 -0
- package/dist/utils/file-system.d.ts +8 -0
- package/dist/utils/file-system.d.ts.map +1 -0
- package/dist/utils/file-system.js +54 -0
- package/dist/utils/file-system.js.map +1 -0
- package/dist/utils/git.d.ts +7 -0
- package/dist/utils/git.d.ts.map +1 -0
- package/dist/utils/git.js +98 -0
- package/dist/utils/git.js.map +1 -0
- package/dist/utils/logger.d.ts +13 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +42 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/prompts.d.ts +18 -0
- package/dist/utils/prompts.d.ts.map +1 -0
- package/dist/utils/prompts.js +197 -0
- package/dist/utils/prompts.js.map +1 -0
- package/dist/utils/template-loader.d.ts +18 -0
- package/dist/utils/template-loader.d.ts.map +1 -0
- package/dist/utils/template-loader.js +92 -0
- package/dist/utils/template-loader.js.map +1 -0
- package/dist/utils/validators.d.ts +21 -0
- package/dist/utils/validators.d.ts.map +1 -0
- package/dist/utils/validators.js +50 -0
- package/dist/utils/validators.js.map +1 -0
- package/package.json +79 -0
- package/templates/spec-kit/README.md +17 -0
- package/templates/spec-kit/memory/constitution.md +50 -0
- package/templates/spec-kit/scripts/bash/check-prerequisites.sh +166 -0
- package/templates/spec-kit/scripts/bash/common.sh +156 -0
- package/templates/spec-kit/scripts/bash/create-new-feature.sh +297 -0
- package/templates/spec-kit/scripts/bash/setup-plan.sh +61 -0
- package/templates/spec-kit/scripts/bash/update-agent-context.sh +799 -0
- package/templates/spec-kit/scripts/powershell/check-prerequisites.ps1 +148 -0
- package/templates/spec-kit/scripts/powershell/common.ps1 +137 -0
- package/templates/spec-kit/scripts/powershell/create-new-feature.ps1 +283 -0
- package/templates/spec-kit/scripts/powershell/setup-plan.ps1 +61 -0
- package/templates/spec-kit/scripts/powershell/update-agent-context.ps1 +448 -0
- package/templates/spec-kit/src/specify_cli/__init__.py +1369 -0
- package/templates/spec-kit/templates/agent-file-template.md +28 -0
- package/templates/spec-kit/templates/checklist-template.md +40 -0
- package/templates/spec-kit/templates/commands/analyze.md +187 -0
- package/templates/spec-kit/templates/commands/checklist.md +297 -0
- package/templates/spec-kit/templates/commands/clarify.md +184 -0
- package/templates/spec-kit/templates/commands/constitution.md +82 -0
- package/templates/spec-kit/templates/commands/implement.md +138 -0
- package/templates/spec-kit/templates/commands/plan.md +95 -0
- package/templates/spec-kit/templates/commands/specify.md +261 -0
- package/templates/spec-kit/templates/commands/tasks.md +140 -0
- package/templates/spec-kit/templates/commands/taskstoissues.md +33 -0
- package/templates/spec-kit/templates/plan-template.md +104 -0
- package/templates/spec-kit/templates/spec-template.md +115 -0
- package/templates/spec-kit/templates/tasks-template.md +251 -0
- package/templates/spec-kit/templates/vscode-settings.json +14 -0
- package/templates/t3-app/README.md +41 -0
- package/templates/t3-app/base/README.md +29 -0
- package/templates/t3-app/base/_gitignore +47 -0
- package/templates/t3-app/base/next-env.d.ts +5 -0
- package/templates/t3-app/base/next.config.js +22 -0
- package/templates/t3-app/base/package.json +26 -0
- package/templates/t3-app/base/public/favicon.ico +0 -0
- package/templates/t3-app/base/src/env.js +40 -0
- package/templates/t3-app/base/src/styles/globals.css +16 -0
- package/templates/t3-app/base/tsconfig.json +42 -0
- package/templates/t3-app/extras/config/_eslint.base.js +45 -0
- package/templates/t3-app/extras/config/_eslint.drizzle.js +58 -0
- package/templates/t3-app/extras/config/_prettier.config.js +2 -0
- package/templates/t3-app/extras/config/_tailwind.prettier.config.js +4 -0
- package/templates/t3-app/extras/config/biome.jsonc +69 -0
- package/templates/t3-app/extras/config/drizzle-config-mysql.ts +12 -0
- package/templates/t3-app/extras/config/drizzle-config-postgres.ts +12 -0
- package/templates/t3-app/extras/config/drizzle-config-sqlite.ts +12 -0
- package/templates/t3-app/extras/config/next-config-appdir.js +10 -0
- package/templates/t3-app/extras/config/postcss.config.js +5 -0
- package/templates/t3-app/extras/pnpm/_npmrc +2 -0
- package/templates/t3-app/extras/prisma/schema/base-planetscale.prisma +25 -0
- package/templates/t3-app/extras/prisma/schema/base.prisma +21 -0
- package/templates/t3-app/extras/prisma/schema/with-auth-planetscale.prisma +79 -0
- package/templates/t3-app/extras/prisma/schema/with-auth.prisma +75 -0
- package/templates/t3-app/extras/prisma/schema/with-better-auth-planetscale.prisma +90 -0
- package/templates/t3-app/extras/prisma/schema/with-better-auth.prisma +89 -0
- package/templates/t3-app/extras/src/app/_components/post-tw.tsx +50 -0
- package/templates/t3-app/extras/src/app/_components/post.tsx +54 -0
- package/templates/t3-app/extras/src/app/api/auth/[...all]/route.ts +5 -0
- package/templates/t3-app/extras/src/app/api/auth/[...nextauth]/route.ts +3 -0
- package/templates/t3-app/extras/src/app/api/trpc/[trpc]/route.ts +34 -0
- package/templates/t3-app/extras/src/app/layout/base.tsx +24 -0
- package/templates/t3-app/extras/src/app/layout/with-trpc-tw.tsx +29 -0
- package/templates/t3-app/extras/src/app/layout/with-trpc.tsx +28 -0
- package/templates/t3-app/extras/src/app/layout/with-tw.tsx +25 -0
- package/templates/t3-app/extras/src/app/page/base.tsx +39 -0
- package/templates/t3-app/extras/src/app/page/with-auth-trpc-tw.tsx +69 -0
- package/templates/t3-app/extras/src/app/page/with-auth-trpc.tsx +70 -0
- package/templates/t3-app/extras/src/app/page/with-better-auth-trpc-tw.tsx +105 -0
- package/templates/t3-app/extras/src/app/page/with-better-auth-trpc.tsx +103 -0
- package/templates/t3-app/extras/src/app/page/with-better-auth-tw.tsx +90 -0
- package/templates/t3-app/extras/src/app/page/with-better-auth.tsx +88 -0
- package/templates/t3-app/extras/src/app/page/with-trpc-tw.tsx +53 -0
- package/templates/t3-app/extras/src/app/page/with-trpc.tsx +54 -0
- package/templates/t3-app/extras/src/app/page/with-tw.tsx +37 -0
- package/templates/t3-app/extras/src/env/with-auth-db-planetscale.js +58 -0
- package/templates/t3-app/extras/src/env/with-auth-db.js +52 -0
- package/templates/t3-app/extras/src/env/with-auth.js +51 -0
- package/templates/t3-app/extras/src/env/with-better-auth-db-planetscale.js +58 -0
- package/templates/t3-app/extras/src/env/with-better-auth-db.js +50 -0
- package/templates/t3-app/extras/src/env/with-better-auth.js +49 -0
- package/templates/t3-app/extras/src/env/with-db-planetscale.js +50 -0
- package/templates/t3-app/extras/src/env/with-db.js +44 -0
- package/templates/t3-app/extras/src/index.module.css +177 -0
- package/templates/t3-app/extras/src/pages/_app/base.tsx +18 -0
- package/templates/t3-app/extras/src/pages/_app/with-auth-trpc-tw.tsx +27 -0
- package/templates/t3-app/extras/src/pages/_app/with-auth-trpc.tsx +27 -0
- package/templates/t3-app/extras/src/pages/_app/with-auth-tw.tsx +25 -0
- package/templates/t3-app/extras/src/pages/_app/with-auth.tsx +25 -0
- package/templates/t3-app/extras/src/pages/_app/with-better-auth-trpc-tw.tsx +20 -0
- package/templates/t3-app/extras/src/pages/_app/with-better-auth-trpc.tsx +20 -0
- package/templates/t3-app/extras/src/pages/_app/with-trpc-tw.tsx +20 -0
- package/templates/t3-app/extras/src/pages/_app/with-trpc.tsx +20 -0
- package/templates/t3-app/extras/src/pages/_app/with-tw.tsx +18 -0
- package/templates/t3-app/extras/src/pages/api/auth/[...all].ts +8 -0
- package/templates/t3-app/extras/src/pages/api/trpc/[trpc].ts +19 -0
- package/templates/t3-app/extras/src/pages/index/base.tsx +47 -0
- package/templates/t3-app/extras/src/pages/index/with-auth-trpc-tw.tsx +81 -0
- package/templates/t3-app/extras/src/pages/index/with-auth-trpc.tsx +82 -0
- package/templates/t3-app/extras/src/pages/index/with-better-auth-trpc-tw.tsx +99 -0
- package/templates/t3-app/extras/src/pages/index/with-better-auth-trpc.tsx +100 -0
- package/templates/t3-app/extras/src/pages/index/with-better-auth-tw.tsx +87 -0
- package/templates/t3-app/extras/src/pages/index/with-better-auth.tsx +88 -0
- package/templates/t3-app/extras/src/pages/index/with-trpc-tw.tsx +52 -0
- package/templates/t3-app/extras/src/pages/index/with-trpc.tsx +53 -0
- package/templates/t3-app/extras/src/pages/index/with-tw.tsx +45 -0
- package/templates/t3-app/extras/src/server/api/root.ts +23 -0
- package/templates/t3-app/extras/src/server/api/routers/post/base.ts +40 -0
- package/templates/t3-app/extras/src/server/api/routers/post/with-auth-drizzle.ts +39 -0
- package/templates/t3-app/extras/src/server/api/routers/post/with-auth-prisma.ts +41 -0
- package/templates/t3-app/extras/src/server/api/routers/post/with-auth.ts +37 -0
- package/templates/t3-app/extras/src/server/api/routers/post/with-drizzle.ts +30 -0
- package/templates/t3-app/extras/src/server/api/routers/post/with-prisma.ts +31 -0
- package/templates/t3-app/extras/src/server/api/trpc-app/base.ts +103 -0
- package/templates/t3-app/extras/src/server/api/trpc-app/with-auth-db.ts +133 -0
- package/templates/t3-app/extras/src/server/api/trpc-app/with-auth.ts +130 -0
- package/templates/t3-app/extras/src/server/api/trpc-app/with-better-auth-db.ts +134 -0
- package/templates/t3-app/extras/src/server/api/trpc-app/with-better-auth.ts +131 -0
- package/templates/t3-app/extras/src/server/api/trpc-app/with-db.ts +106 -0
- package/templates/t3-app/extras/src/server/api/trpc-pages/base.ts +122 -0
- package/templates/t3-app/extras/src/server/api/trpc-pages/with-auth-db.ts +160 -0
- package/templates/t3-app/extras/src/server/api/trpc-pages/with-auth.ts +158 -0
- package/templates/t3-app/extras/src/server/api/trpc-pages/with-better-auth-db.ts +168 -0
- package/templates/t3-app/extras/src/server/api/trpc-pages/with-better-auth.ts +166 -0
- package/templates/t3-app/extras/src/server/api/trpc-pages/with-db.ts +125 -0
- package/templates/t3-app/extras/src/server/auth/config/base.ts +52 -0
- package/templates/t3-app/extras/src/server/auth/config/with-drizzle.ts +67 -0
- package/templates/t3-app/extras/src/server/auth/config/with-prisma.ts +56 -0
- package/templates/t3-app/extras/src/server/auth/index.ts +10 -0
- package/templates/t3-app/extras/src/server/better-auth/client.ts +5 -0
- package/templates/t3-app/extras/src/server/better-auth/config/base.ts +12 -0
- package/templates/t3-app/extras/src/server/better-auth/config/with-drizzle.ts +26 -0
- package/templates/t3-app/extras/src/server/better-auth/config/with-prisma.ts +26 -0
- package/templates/t3-app/extras/src/server/better-auth/index.ts +1 -0
- package/templates/t3-app/extras/src/server/better-auth/server.ts +7 -0
- package/templates/t3-app/extras/src/server/db/db-prisma-planetscale.ts +19 -0
- package/templates/t3-app/extras/src/server/db/db-prisma.ts +16 -0
- package/templates/t3-app/extras/src/server/db/index-drizzle/with-mysql.ts +18 -0
- package/templates/t3-app/extras/src/server/db/index-drizzle/with-planetscale.ts +7 -0
- package/templates/t3-app/extras/src/server/db/index-drizzle/with-postgres.ts +18 -0
- package/templates/t3-app/extras/src/server/db/index-drizzle/with-sqlite.ts +19 -0
- package/templates/t3-app/extras/src/server/db/schema-drizzle/base-mysql.ts +26 -0
- package/templates/t3-app/extras/src/server/db/schema-drizzle/base-planetscale.ts +26 -0
- package/templates/t3-app/extras/src/server/db/schema-drizzle/base-postgres.ts +26 -0
- package/templates/t3-app/extras/src/server/db/schema-drizzle/base-sqlite.ts +27 -0
- package/templates/t3-app/extras/src/server/db/schema-drizzle/with-auth-mysql.ts +111 -0
- package/templates/t3-app/extras/src/server/db/schema-drizzle/with-auth-planetscale.ts +100 -0
- package/templates/t3-app/extras/src/server/db/schema-drizzle/with-auth-postgres.ts +108 -0
- package/templates/t3-app/extras/src/server/db/schema-drizzle/with-auth-sqlite.ts +105 -0
- package/templates/t3-app/extras/src/server/db/schema-drizzle/with-better-auth-mysql.ts +106 -0
- package/templates/t3-app/extras/src/server/db/schema-drizzle/with-better-auth-planetscale.ts +106 -0
- package/templates/t3-app/extras/src/server/db/schema-drizzle/with-better-auth-postgres.ts +105 -0
- package/templates/t3-app/extras/src/server/db/schema-drizzle/with-better-auth-sqlite.ts +134 -0
- package/templates/t3-app/extras/src/styles/globals.css +6 -0
- package/templates/t3-app/extras/src/trpc/query-client.ts +25 -0
- package/templates/t3-app/extras/src/trpc/react.tsx +78 -0
- package/templates/t3-app/extras/src/trpc/server.ts +30 -0
- package/templates/t3-app/extras/src/utils/api.ts +68 -0
- package/templates/t3-app/extras/start-database/mysql.sh +86 -0
- package/templates/t3-app/extras/start-database/postgres.sh +88 -0
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
# GitHub MCP Operations
|
|
2
|
+
|
|
3
|
+
**CRITICAL:**
|
|
4
|
+
- **GitHub MCP is already authenticated and available** - use it directly for GitHub API operations (repositories, PRs, issues, branch protection)
|
|
5
|
+
- Use git commands for local git operations (branches, pushes, merges)
|
|
6
|
+
- **ALWAYS use HTTPS URLs for git remotes:** `https://github.com/<owner>/<repo>.git` (NEVER use SSH `git@github.com` format)
|
|
7
|
+
- **Git authentication:** Git automatically uses `GITHUB_TOKEN` environment variable for HTTPS authentication (set to same value as `GITHUB_PERSONAL_ACCESS_TOKEN` for consistency)
|
|
8
|
+
|
|
9
|
+
## Organization Selection
|
|
10
|
+
|
|
11
|
+
**CRITICAL: Use MCP for ALL GitHub Operations**
|
|
12
|
+
|
|
13
|
+
**When user requests to create repository in an organization:**
|
|
14
|
+
|
|
15
|
+
1. **Ask user directly for organization name:**
|
|
16
|
+
- Simply ask: "What is the name of the GitHub organization you want to create the repository in?"
|
|
17
|
+
- Wait for user to provide the organization name as a string (e.g., "my-org", "company-name")
|
|
18
|
+
- Store the organization name for use in repository creation and transfer
|
|
19
|
+
|
|
20
|
+
2. **DO NOT:**
|
|
21
|
+
- NOT OK List organizations using `search_users` MCP tool with `type:org` - this searches public organizations
|
|
22
|
+
- NOT OK Use curl to call GitHub API endpoints - use GitHub MCP tools instead
|
|
23
|
+
- NOT OK Try to enumerate user's organizations - just ask the user directly
|
|
24
|
+
|
|
25
|
+
3. **Use GitHub MCP for all operations:**
|
|
26
|
+
- Use GitHub MCP `createRepository` tool to create the repository
|
|
27
|
+
- Use GitHub MCP transfer tool (if available) to transfer repository to organization
|
|
28
|
+
- Use GitHub MCP for all repository, branch, and PR operations
|
|
29
|
+
|
|
30
|
+
## Repository Creation
|
|
31
|
+
|
|
32
|
+
**CRITICAL: BOSS's Role in Repository Setup**
|
|
33
|
+
|
|
34
|
+
**BOSS does NOT:**
|
|
35
|
+
- NOT OK Push to main branch (husky pre-push hooks block this - enforced for everyone)
|
|
36
|
+
- NOT OK Create Container-Use environments for repository setup operations
|
|
37
|
+
- NOT OK Use Container-Use MCP for BOSS's own git operations
|
|
38
|
+
|
|
39
|
+
**BOSS DOES:**
|
|
40
|
+
- OK Use git commands for orchestration: create branches, push code, merge branches, add remotes
|
|
41
|
+
- OK Use GitHub MCP for GitHub API operations: create repositories, create PRs, set branch protection
|
|
42
|
+
|
|
43
|
+
**BOSS DOES (continued):**
|
|
44
|
+
- OK Use GitHub MCP to check if repository exists (`search_repositories` or similar)
|
|
45
|
+
- OK Use GitHub MCP to create repository if it doesn't exist (`createRepository`)
|
|
46
|
+
- OK Use GitHub MCP to set branch protection (use GitHub MCP tools, or if not available, use `run_terminal_cmd` with curl as fallback)
|
|
47
|
+
- OK Use git commands to add remotes: `git remote add origin https://github.com/<owner>/<repo>.git` (ALWAYS use HTTPS, NEVER SSH)
|
|
48
|
+
- OK Use git commands to push branches: `git push origin <branch-name>` (except main - blocked by hooks)
|
|
49
|
+
- OK **Git authentication:** Git automatically uses `GITHUB_TOKEN` environment variable for HTTPS authentication (set to same value as `GITHUB_PERSONAL_ACCESS_TOKEN` for consistency)
|
|
50
|
+
- OK **GitHub MCP is authenticated:** GitHub MCP server is already up and authenticated - use it directly, no additional setup needed
|
|
51
|
+
- OK Update `.boss/project-config.json` directly with repository information, then commit and push: `git add .boss/project-config.json && git commit -m "chore: update project-config.json" && git push`
|
|
52
|
+
|
|
53
|
+
**IMPORTANT LIMITATION:** The GitHub MCP `createRepository` tool currently only creates repositories under the authenticated user's personal account, not under organizations. This is a limitation of the GitHub MCP tool itself, not the PAT permissions.
|
|
54
|
+
|
|
55
|
+
**AUTOMATIC TRANSFER:** When an organization is requested, automatically ask the user if they want to transfer the repository. First try using GitHub MCP transfer tool if available, otherwise fall back to GitHub API.
|
|
56
|
+
|
|
57
|
+
When creating a GitHub repository:
|
|
58
|
+
|
|
59
|
+
1. **Ask User for Preferences:**
|
|
60
|
+
- Should repository be **private** or **public**? (default: private)
|
|
61
|
+
- Should it be created in an **organization**? (if yes, proceed to step 2)
|
|
62
|
+
- Repository name (if different from project name)
|
|
63
|
+
|
|
64
|
+
2. **If Organization Was Requested - Get Organization Name:**
|
|
65
|
+
- **CRITICAL:** Ask user directly for the organization name as a string
|
|
66
|
+
- Simply ask: "What is the name of the GitHub organization you want to create the repository in?"
|
|
67
|
+
- Wait for user to provide the organization name (e.g., "my-org", "company-name")
|
|
68
|
+
- Store the organization name for use in repository transfer
|
|
69
|
+
- **DO NOT use `search_users` MCP tool** - this searches public organizations, not the user's organizations
|
|
70
|
+
- **DO NOT use curl** - use GitHub MCP tools for all operations
|
|
71
|
+
|
|
72
|
+
3. **Create Repository:**
|
|
73
|
+
```typescript
|
|
74
|
+
// Use GitHub MCP to create repository (GitHub MCP is already authenticated - use it directly)
|
|
75
|
+
// NOTE: This will create under personal account even if organization is specified
|
|
76
|
+
const repo = await mcp.github.createRepository({
|
|
77
|
+
name: "project-name",
|
|
78
|
+
description: "BOSS project",
|
|
79
|
+
private: true, // Ask user, default to private
|
|
80
|
+
// organization parameter is not supported by GitHub MCP
|
|
81
|
+
});
|
|
82
|
+
```
|
|
83
|
+
**After creating repository, use HTTPS URL for git remote:**
|
|
84
|
+
- Repository URL format: `https://github.com/<owner>/<repo>.git`
|
|
85
|
+
- Add remote: `git remote add origin https://github.com/<owner>/<repo>.git` (NEVER use SSH `git@github.com` format)
|
|
86
|
+
- Git will automatically use `GITHUB_TOKEN` environment variable for authentication (set to same value as `GITHUB_PERSONAL_ACCESS_TOKEN` for consistency)
|
|
87
|
+
|
|
88
|
+
4. **If Organization Was Selected - Automatic Transfer:**
|
|
89
|
+
- Inform the user: "Repository created under your personal account. Would you like me to transfer it to [org-name] now?"
|
|
90
|
+
- If user confirms:
|
|
91
|
+
- Transfer the repository (see "Repository Transfer" section below for complete instructions)
|
|
92
|
+
- First try GitHub MCP transfer tool if available
|
|
93
|
+
- If MCP tool not available, use `run_terminal_cmd` to execute curl command
|
|
94
|
+
- Verify response status is `202 Accepted`
|
|
95
|
+
- Wait for transfer to complete (poll status if needed, or wait a few seconds)
|
|
96
|
+
- **Verify dependencies are installed** - `start-boss.sh` already runs `pnpm install` automatically, so just verify `node_modules` exists (do NOT run install again)
|
|
97
|
+
- Update git remote URL using HTTPS: `git remote set-url origin https://github.com/<new-owner>/<repo>.git` (NEVER use SSH format)
|
|
98
|
+
- Update `project-config.json` with transferred repository info
|
|
99
|
+
|
|
100
|
+
5. **Update project-config.json:**
|
|
101
|
+
- Set `repository.remote = "origin"`
|
|
102
|
+
- Set `repository.url` (use org URL if transferred, personal URL if not)
|
|
103
|
+
- Set `repository.owner` (org name if transferred, personal account if not)
|
|
104
|
+
- Set `repository.name`, `private`
|
|
105
|
+
- Set `repository.organization` to the org name (even if not yet transferred)
|
|
106
|
+
- Set `initialization.remoteCreated = true`
|
|
107
|
+
|
|
108
|
+
## Repository Transfer
|
|
109
|
+
|
|
110
|
+
**OFFICIAL INSTRUCTIONS:** Transfer repositories using GitHub MCP if available, otherwise fall back to GitHub REST API.
|
|
111
|
+
|
|
112
|
+
**Official Documentation:** https://docs.github.com/en/rest/repos/repos#transfer-a-repository
|
|
113
|
+
|
|
114
|
+
**Method 1: Try GitHub MCP First (Preferred)**
|
|
115
|
+
|
|
116
|
+
Check if GitHub MCP provides a `transfer_repository` or similar tool. If available, use it:
|
|
117
|
+
|
|
118
|
+
```typescript
|
|
119
|
+
// Try GitHub MCP transfer tool if available
|
|
120
|
+
try {
|
|
121
|
+
const result = await mcp.github.transferRepository({
|
|
122
|
+
owner: currentOwner,
|
|
123
|
+
repo: repoName,
|
|
124
|
+
new_owner: targetOrgName,
|
|
125
|
+
// Optional: team_ids, new_name
|
|
126
|
+
});
|
|
127
|
+
// Transfer successful via MCP
|
|
128
|
+
} catch (error) {
|
|
129
|
+
// MCP tool not available, fall back to API method
|
|
130
|
+
}
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
**Method 2: Fallback to GitHub REST API (If MCP Not Available)**
|
|
134
|
+
|
|
135
|
+
If GitHub MCP doesn't have a transfer tool, use direct HTTP requests via `run_terminal_cmd`.
|
|
136
|
+
|
|
137
|
+
**Endpoint:** `POST /repos/{owner}/{repo}/transfer`
|
|
138
|
+
|
|
139
|
+
**Request Headers:**
|
|
140
|
+
- `Authorization: Bearer {GITHUB_PERSONAL_ACCESS_TOKEN}`
|
|
141
|
+
- `Accept: application/vnd.github.v3+json`
|
|
142
|
+
|
|
143
|
+
**Request Body:**
|
|
144
|
+
```json
|
|
145
|
+
{
|
|
146
|
+
"new_owner": "new_owner_username_or_org",
|
|
147
|
+
"team_ids": [1234567, 2345678], // Optional: array of team IDs (for org transfers)
|
|
148
|
+
"new_name": "new_repository_name" // Optional: rename during transfer
|
|
149
|
+
}
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
**Response:** `202 Accepted` - Transfer initiated successfully
|
|
153
|
+
|
|
154
|
+
**Using run_terminal_cmd with curl (Fallback if MCP not available):**
|
|
155
|
+
```bash
|
|
156
|
+
curl -X POST \
|
|
157
|
+
-H "Authorization: Bearer $GITHUB_PERSONAL_ACCESS_TOKEN" \
|
|
158
|
+
-H "Accept: application/vnd.github.v3+json" \
|
|
159
|
+
-H "Content-Type: application/json" \
|
|
160
|
+
https://api.github.com/repos/{current-owner}/{repo-name}/transfer \
|
|
161
|
+
-d "{\"new_owner\": \"{target-org}\"}"
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
**Critical Requirements:**
|
|
165
|
+
- OK **Administrative access required** - You must have admin access to the repository being transferred
|
|
166
|
+
- OK **Organization permissions** - If transferring to an organization, you must have permission to create repositories in that organization
|
|
167
|
+
- OK **Acceptance window** - The new owner has 24 hours to accept the transfer, otherwise it expires
|
|
168
|
+
- OK **Update git remote** - After successful transfer, update the git remote URL using Container-Use MCP
|
|
169
|
+
- OK **Update project-config.json** - Update repository owner, URL, and organization fields
|
|
170
|
+
|
|
171
|
+
**Post-Transfer Steps:**
|
|
172
|
+
1. Wait for transfer to complete (poll repository status or wait a few seconds)
|
|
173
|
+
2. **CRITICAL: Verify dependencies are installed** - Before creating Container-Use environments, ensure `node_modules` exists:
|
|
174
|
+
- **NOTE:** `start-boss.sh` already runs `pnpm install` (or `npm install`) automatically before launching Claude
|
|
175
|
+
- **DO NOT run `pnpm install` again** - dependencies should already be installed
|
|
176
|
+
- Only verify `node_modules` directory exists (if missing, that's unexpected)
|
|
177
|
+
- This prevents pre-push hook failures due to missing dependencies
|
|
178
|
+
3. Update git remote URL in Container-Use environment
|
|
179
|
+
4. Verify remote was updated correctly
|
|
180
|
+
5. Update `project-config.json` with new owner and URL
|
|
181
|
+
|
|
182
|
+
## Branch Operations
|
|
183
|
+
|
|
184
|
+
- **Create branches:** BOSS uses git commands: `git checkout -b <branch-name>` or Container-Use MCP for worker branches (creates environment = branch)
|
|
185
|
+
- **Push branches:** BOSS uses git commands: `git push origin <branch-name>` (except main - blocked by husky hooks)
|
|
186
|
+
- **Git authentication:** Git automatically uses `GITHUB_TOKEN` environment variable for HTTPS authentication (set to same value as `GITHUB_PERSONAL_ACCESS_TOKEN` for consistency)
|
|
187
|
+
- **ALWAYS use HTTPS remotes:** Ensure remote URL is `https://github.com/<owner>/<repo>.git` (NEVER SSH format)
|
|
188
|
+
- **List branches:** Use GitHub MCP for remote branch info, or git commands for local branches: `git branch` or `git branch -a`
|
|
189
|
+
|
|
190
|
+
## Branch Protection
|
|
191
|
+
|
|
192
|
+
**CRITICAL: MAIN BRANCH IS PROTECTED - PRs REQUIRED**
|
|
193
|
+
|
|
194
|
+
- **Main branch is locked during initial setup** - direct pushes are blocked
|
|
195
|
+
- **ALL changes to main must go through pull requests** - no exceptions
|
|
196
|
+
- Branch protection is set up automatically during initial setup with:
|
|
197
|
+
- Required pull request reviews before merging
|
|
198
|
+
- Required status checks to pass
|
|
199
|
+
- Required branches to be up to date
|
|
200
|
+
- Force pushes disabled
|
|
201
|
+
- Branch deletions disabled
|
|
202
|
+
|
|
203
|
+
**NEVER:**
|
|
204
|
+
- NOT OK Push directly to main branch
|
|
205
|
+
- NOT OK Bypass PR requirement
|
|
206
|
+
- NOT OK Skip PR creation
|
|
207
|
+
|
|
208
|
+
**ALWAYS:**
|
|
209
|
+
- OK Push to feature branch (`feature/boss-initial-setup` or `feature/*`)
|
|
210
|
+
- OK Create PR from feature branch to main
|
|
211
|
+
- OK Use PRs for all changes to main
|
|
212
|
+
|
|
213
|
+
## Pull Requests
|
|
214
|
+
|
|
215
|
+
**CRITICAL: AUTOMATIC PR CREATION - NO USER PROMPTS - MANDATORY**
|
|
216
|
+
|
|
217
|
+
- **ALWAYS** create PRs automatically - **NEVER ask user if they want a PR created**
|
|
218
|
+
- **MANDATORY:** After merging worker changes and pushing to remote, **IMMEDIATELY** create PR using GitHub MCP
|
|
219
|
+
- **Main branch protection requires PRs** - direct pushes will fail
|
|
220
|
+
- Use GitHub MCP `mcp__github__create_pull_request` to create PR from feature branch to main
|
|
221
|
+
- Include worker summaries, quality gate results, and related specs/issues in PR body
|
|
222
|
+
- Link to container-use environments for review
|
|
223
|
+
- PR title format: `feat: [feature-name] - [brief description]` or `chore: [description]`
|
|
224
|
+
- **DO NOT wait for user confirmation** - create PR automatically as part of workflow completion
|
|
225
|
+
- **DO NOT skip PR creation** - it's mandatory for all changes to main
|
|
226
|
+
|
|
227
|
+
## GitHub Repository Requirements
|
|
228
|
+
|
|
229
|
+
**CRITICAL: Repository Privacy Policy**
|
|
230
|
+
|
|
231
|
+
- **Default to PRIVATE repositories** - Ask user for preference
|
|
232
|
+
- When using GitHub MCP to create repositories, ask user:
|
|
233
|
+
- Should it be private or public? (default: private)
|
|
234
|
+
- Should it be in an organization? (if yes, which org?)
|
|
235
|
+
- This applies to:
|
|
236
|
+
- Initial repository creation during setup
|
|
237
|
+
- Any new repositories created for projects, features, or sub-projects
|
|
238
|
+
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
# Initial Setup Workflow
|
|
2
|
+
|
|
3
|
+
**CRITICAL: AUTOMATIC INITIALIZATION CHECK ON STARTUP**
|
|
4
|
+
|
|
5
|
+
**When BOSS starts (via `./start-boss.sh`), you MUST automatically:**
|
|
6
|
+
|
|
7
|
+
1. **Check Initialization Status (AUTOMATIC - DO THIS FIRST)**
|
|
8
|
+
- Read `.boss/project-config.json` immediately on startup
|
|
9
|
+
- Check `initialization.stage` to determine what needs to be done
|
|
10
|
+
- **If `initialization.stage !== "ready"`, automatically complete initial setup without asking user**
|
|
11
|
+
- **DO NOT wait for user to ask** - check and complete setup automatically
|
|
12
|
+
|
|
13
|
+
2. **Verify Bootstrap State**
|
|
14
|
+
- **CRITICAL:** Main branch should be EMPTY (only empty commit) - bootstrap files are NOT on main
|
|
15
|
+
- **CRITICAL:** Feature branch `feature/boss-initial-setup` should already exist with ALL bootstrap files (created during bootstrap)
|
|
16
|
+
- **CRITICAL: Verify dependencies are installed** - Before creating Container-Use environments:
|
|
17
|
+
- **NOTE:** `start-boss.sh` already runs `pnpm install` (or `npm install`) automatically before launching Claude
|
|
18
|
+
- **DO NOT run `pnpm install` again** - dependencies should already be installed
|
|
19
|
+
- Only verify `node_modules` directory exists (if missing, that's unexpected - `start-boss.sh` should have installed them)
|
|
20
|
+
- This prevents pre-push/pre-commit hook failures due to missing dependencies (e.g., `tsc` not found)
|
|
21
|
+
- If feature branch doesn't exist, create it from main
|
|
22
|
+
- Switch to this branch using Container-Use MCP (create environment on this branch)
|
|
23
|
+
- Update `project-config.json` with `currentBranch: "feature/boss-initial-setup"`
|
|
24
|
+
|
|
25
|
+
3. **Run Initial Setup Checklist**
|
|
26
|
+
- **CRITICAL:** BOSS handles initialization directly using GitHub MCP - do NOT spawn workers for this
|
|
27
|
+
- Checklist includes:
|
|
28
|
+
- [ ] Check if remote repository exists using GitHub MCP `search_repositories` tool
|
|
29
|
+
- [ ] If no remote, ask user:
|
|
30
|
+
- Should repository be private or public? (default: private)
|
|
31
|
+
- Should it be created in an organization? (if yes, proceed to list orgs)
|
|
32
|
+
- Repository name (if different from project name)
|
|
33
|
+
- [ ] If organization was requested:
|
|
34
|
+
- [ ] **CRITICAL:** Ask user directly for the organization name as a string
|
|
35
|
+
- [ ] Simply ask: "What is the name of the GitHub organization you want to create the repository in?"
|
|
36
|
+
- [ ] Wait for user to provide the organization name (e.g., "my-org", "company-name")
|
|
37
|
+
- [ ] Store the organization name for use in repository transfer
|
|
38
|
+
- [ ] **DO NOT use `search_users` MCP tool** - this searches public organizations
|
|
39
|
+
- [ ] **DO NOT use curl** - use GitHub MCP tools for all operations
|
|
40
|
+
- [ ] Create GitHub repository using GitHub MCP
|
|
41
|
+
- [ ] **CRITICAL: Lock main branch and require PRs** - Use GitHub MCP to set branch protection:
|
|
42
|
+
- First, try to use GitHub MCP tools for branch protection (if available)
|
|
43
|
+
- If GitHub MCP doesn't have a branch protection tool, use `run_terminal_cmd` with curl as fallback:
|
|
44
|
+
- Make HTTP PUT request to: `https://api.github.com/repos/{owner}/{repo}/branches/main/protection`
|
|
45
|
+
- Headers: `Authorization: Bearer {GITHUB_PERSONAL_ACCESS_TOKEN}`, `Accept: application/vnd.github.v3+json` (use GITHUB_PERSONAL_ACCESS_TOKEN, not GITHUB_TOKEN, for API calls)
|
|
46
|
+
- Body:
|
|
47
|
+
```json
|
|
48
|
+
{
|
|
49
|
+
"required_pull_request_reviews": {
|
|
50
|
+
"required": true,
|
|
51
|
+
"dismiss_stale_reviews": true,
|
|
52
|
+
"require_code_owner_reviews": false,
|
|
53
|
+
"required_approving_review_count": 1
|
|
54
|
+
},
|
|
55
|
+
"enforce_admins": true,
|
|
56
|
+
"required_status_checks": {
|
|
57
|
+
"strict": true,
|
|
58
|
+
"contexts": []
|
|
59
|
+
},
|
|
60
|
+
"restrictions": null,
|
|
61
|
+
"allow_force_pushes": false,
|
|
62
|
+
"allow_deletions": false,
|
|
63
|
+
"required_linear_history": false,
|
|
64
|
+
"allow_squash_merge": true,
|
|
65
|
+
"allow_merge_commit": true,
|
|
66
|
+
"allow_rebase_merge": true
|
|
67
|
+
}
|
|
68
|
+
```
|
|
69
|
+
- Verify protection was set: Check response status is 200
|
|
70
|
+
- [ ] **CRITICAL ORDER - Follow EXACTLY:**
|
|
71
|
+
1. **Add remote using HTTPS:** `git remote add origin https://github.com/<owner>/<repo>.git` (ALWAYS use HTTPS format, NEVER SSH `git@github.com` format)
|
|
72
|
+
2. **Check current branch:** `git branch --show-current` - verify you're on the correct branch
|
|
73
|
+
3. **Handle uncommitted changes:** If on `feature/boss-initial-setup` with uncommitted changes, commit them first: `git add . && git commit -m "chore: bootstrap files"` (these should be on feature branch)
|
|
74
|
+
4. **Switch to main branch:** `git checkout main` (if uncommitted changes prevent checkout, commit them to current branch first, then switch)
|
|
75
|
+
5. **FIRST push empty main branch:** `git push -u origin main` (main is EMPTY - only empty commit, no validation needed, git will use GITHUB_TOKEN automatically, which is set to same value as GITHUB_PERSONAL_ACCESS_TOKEN)
|
|
76
|
+
- **NOTE:** The pre-push hook allows empty main push without validation checks
|
|
77
|
+
- **Main branch must be pushed first (empty) before feature branch**
|
|
78
|
+
6. **Switch back to feature branch:** `git checkout feature/boss-initial-setup` (branch should already exist from bootstrap)
|
|
79
|
+
7. **Verify validation checks pass BEFORE pushing feature branch:**
|
|
80
|
+
- **BEFORE pushing feature branch, verify all checks pass:**
|
|
81
|
+
1. **Typecheck:** Run `pnpm typecheck` (or `npm run typecheck`) - must pass
|
|
82
|
+
2. **Lint:** Run `pnpm lint` (or `npm run lint`) - must pass
|
|
83
|
+
3. **Security:** Run `bash scripts/security-check.sh` - must pass
|
|
84
|
+
4. **Tests:** Run `pnpm test:unit` (or `npm run test:unit`) - must pass
|
|
85
|
+
- **If any check fails, fix the issues before pushing**
|
|
86
|
+
8. **THEN push feature branch:** `git push -u origin feature/boss-initial-setup` (contains all bootstrap files, git will use GITHUB_TOKEN automatically, which is set to same value as GITHUB_PERSONAL_ACCESS_TOKEN)
|
|
87
|
+
9. **Update `.boss/project-config.json`** with repository information:
|
|
88
|
+
- Set `repository.remote = "origin"`
|
|
89
|
+
- Set `repository.url = "https://github.com/{owner}/{repo}"`
|
|
90
|
+
- Set `repository.owner`, `repository.name`, `repository.private`
|
|
91
|
+
- Set `initialization.remoteCreated = true`
|
|
92
|
+
10. **Commit and push project-config.json:** `git add .boss/project-config.json && git commit -m "chore: update project-config.json" && git push`
|
|
93
|
+
11. **Mark `initialization.stage = "ready"`** in `project-config.json`
|
|
94
|
+
12. **Commit and push again:** `git add .boss/project-config.json && git commit -m "chore: mark initialization as ready" && git push`
|
|
95
|
+
13. **FINAL STEP - Create PR from feature/boss-initial-setup to main:** Use GitHub MCP `create_pull_request` with:
|
|
96
|
+
- **Title:** `"chore: BOSS initial setup - bootstrap files"`
|
|
97
|
+
- **Body:** `"This PR contains all BOSS bootstrap files and initial project structure. Ready for review and merge."`
|
|
98
|
+
- **Base branch:** `"main"`
|
|
99
|
+
- **Head branch:** `"feature/boss-initial-setup"`
|
|
100
|
+
- **DO NOT ask user** - create PR automatically
|
|
101
|
+
- [ ] **DO NOT create Container-Use environments for initialization** - BOSS handles this via git commands
|
|
102
|
+
- [ ] **NEVER push feature branch before main branch** - main must be pushed first
|
|
103
|
+
- [ ] **After initial setup, NEVER push directly to main** - always use PRs
|
|
104
|
+
|
|
105
|
+
4. **After Initial Setup**
|
|
106
|
+
- All BOSS and worker work happens on `feature/boss-initial-setup` branch
|
|
107
|
+
- Workers spawn from this branch
|
|
108
|
+
- **AUTOMATICALLY** create PR from `feature/boss-initial-setup` to `main` when work is complete
|
|
109
|
+
- **DO NOT ask user** - always create PR automatically after pushing changes
|
|
110
|
+
|
|
111
|
+
## Pre-Push Hook Behavior During Initialization
|
|
112
|
+
|
|
113
|
+
**CRITICAL UNDERSTANDING:** The pre-push hook (`.husky/pre-push`) has special behavior for the first push to main:
|
|
114
|
+
|
|
115
|
+
1. **First Push Detection:** The hook checks if remote main branch exists using `git ls-remote --heads origin main`
|
|
116
|
+
2. **Empty Main Allowed:** If remote main doesn't exist AND main branch is empty (only empty commit or minimal files), the hook allows the push WITHOUT validation checks
|
|
117
|
+
3. **Non-Empty Main:** If main branch contains files, validation checks will run even for first push
|
|
118
|
+
4. **Feature Branch Validation:** All validation checks run normally for feature branch pushes:
|
|
119
|
+
- TypeScript typecheck (`pnpm typecheck`)
|
|
120
|
+
- Linting (`pnpm lint`)
|
|
121
|
+
- Security checks (`bash scripts/security-check.sh`)
|
|
122
|
+
- Unit tests (`pnpm test:unit`)
|
|
123
|
+
- Test file presence check (blocks non-interactive pushes if no test files exist)
|
|
124
|
+
5. **After First Push:** Once main branch exists remotely, all future pushes to main are blocked (must use feature branches and PRs)
|
|
125
|
+
|
|
126
|
+
**IMPORTANT:** Before pushing main branch during initialization:
|
|
127
|
+
- **ALWAYS verify all validation checks pass first**
|
|
128
|
+
- Run the checks manually: `pnpm typecheck && pnpm lint && bash scripts/security-check.sh && pnpm test:unit`
|
|
129
|
+
- Fix any failures before attempting to push
|
|
130
|
+
- The bootstrap process should have created passing code, but verify before pushing
|
|
131
|
+
|
|
132
|
+
## Project Config Structure
|
|
133
|
+
|
|
134
|
+
**CRITICAL:** Always check `.boss/project-config.json` for project status, initialization stages, and current state. This file is the single source of truth for:
|
|
135
|
+
- Initialization status (bootstrap, remote setup, initial setup completion)
|
|
136
|
+
- Current branch and workflow stage
|
|
137
|
+
- Remote repository information
|
|
138
|
+
- Worker activity summaries
|
|
139
|
+
- Project metadata
|
|
140
|
+
|
|
141
|
+
**DO NOT** use git commands to determine project status. Read `.boss/project-config.json` instead.
|
|
142
|
+
|
|
143
|
+
**Project Config Structure:**
|
|
144
|
+
```json
|
|
145
|
+
{
|
|
146
|
+
"initialization": {
|
|
147
|
+
"stage": "bootstrap", // Values: "bootstrap" | "remote-setup" | "initial-setup" | "ready"
|
|
148
|
+
"bootstrapComplete": true,
|
|
149
|
+
"remoteCreated": false,
|
|
150
|
+
"initialSetupComplete": false
|
|
151
|
+
},
|
|
152
|
+
"repository": {
|
|
153
|
+
"remote": "origin", // Values: "origin" or null
|
|
154
|
+
"url": "https://github.com/owner/repo", // string or null
|
|
155
|
+
"owner": "username", // string or null
|
|
156
|
+
"name": "project-name", // string or null
|
|
157
|
+
"private": true, // boolean or null
|
|
158
|
+
"organization": "org-name" // string or null
|
|
159
|
+
},
|
|
160
|
+
"currentBranch": "feature/boss-initial-setup",
|
|
161
|
+
"workflow": {
|
|
162
|
+
"stage": "initialization", // current workflow stage
|
|
163
|
+
"activeWorkers": [],
|
|
164
|
+
"completedTasks": []
|
|
165
|
+
},
|
|
166
|
+
"workers": {
|
|
167
|
+
"summaries": []
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
**When to Update project-config.json:**
|
|
173
|
+
- After completing initialization steps
|
|
174
|
+
- When spawning/merging workers
|
|
175
|
+
- When creating/updating remote repository
|
|
176
|
+
- When changing branches or workflow stages
|
|
177
|
+
- After any significant project state change
|
|
178
|
+
|
|
179
|
+
**CRITICAL: After ANY change to project-config.json, you MUST:**
|
|
180
|
+
1. **Immediately commit the change:** `git add .boss/project-config.json && git commit -m "chore: update project-config.json"`
|
|
181
|
+
2. **Immediately push the change:** `git push` (or `git push origin <branch-name>` if not tracking)
|
|
182
|
+
3. **DO NOT wait** - do this automatically without asking for confirmation
|
|
183
|
+
4. **DO NOT leave project-config.json changes uncommitted** - always commit and push immediately after modification
|
|
184
|
+
|
|
185
|
+
This ensures project state is always persisted and synchronized with the remote repository.
|
|
186
|
+
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Quality Standards
|
|
2
|
+
|
|
3
|
+
- **Test-First (NON-NEGOTIABLE)** - TDD cycle: red → green → refactor
|
|
4
|
+
- **BDD (Mandatory)** - Behavior-Driven Development with Given/When/Then
|
|
5
|
+
- **Feature Documentation (NON-NEGOTIABLE)** - Every feature must be documented
|
|
6
|
+
- **Coverage:** Coverage thresholds are defined in `.boss/config.yaml` and enforced by quality gates
|
|
7
|
+
- **Mutation Testing:** Mutation testing thresholds are defined in `.boss/config.yaml` and enforced by quality gates
|
|
8
|
+
|
|
9
|
+
Quality gates are configured based on the quality preset selected during bootstrap:
|
|
10
|
+
- **Startup:** Coverage ≥60%
|
|
11
|
+
- **Production:** Coverage ≥80%, Mutation ≥80%
|
|
12
|
+
- **Enterprise:** Coverage ≥90%, Mutation ≥80%
|
|
13
|
+
|
|
14
|
+
See `.boss/config.yaml` for the exact thresholds configured for this project.
|
|
15
|
+
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Spec-Kit Commands
|
|
2
|
+
|
|
3
|
+
**Spec-Kit is the foundation of our development methodology.** Workers use Spec-Kit commands throughout the development lifecycle. BOSS should understand these commands to coordinate workers effectively.
|
|
4
|
+
|
|
5
|
+
## Available Spec-Kit Commands
|
|
6
|
+
|
|
7
|
+
- **`/speckit.constitution`** - Create or update project constitution (used by `architect`)
|
|
8
|
+
- **`/speckit.clarify`** - Identify underspecified areas and ask targeted clarification questions (used by `clarifier` and `product-owner`)
|
|
9
|
+
- **`/speckit.specify`** - Create or update feature specifications (used by `spec-writer`)
|
|
10
|
+
- **`/speckit.plan`** - Generate technical implementation plans (used by `planner`)
|
|
11
|
+
- **`/speckit.tasks`** - Break down plans into actionable tasks with [P] parallel markers (used by `planner`)
|
|
12
|
+
- **`/speckit.implement`** - Execute implementation following task breakdown (used by `developer-*` workers)
|
|
13
|
+
- **`/speckit.checklist`** - Generate requirement quality checklists (used by `spec-writer`, `tester`, `security-engineer`, `technical-writer`)
|
|
14
|
+
- **`/speckit.analyze`** - Run project consistency analysis (used by `reviewer`, `code-reviewer`, `consolidator`)
|
|
15
|
+
|
|
16
|
+
## Spec-Kit Structure
|
|
17
|
+
|
|
18
|
+
- **Templates**: `.specify/templates/` - Template files for specs, plans, tasks, checklists
|
|
19
|
+
- **Scripts**: `.specify/scripts/` - Executable scripts for Spec-Kit commands
|
|
20
|
+
- **Memory**: `.specify/memory/constitution.md` - Governing principles (NON-NEGOTIABLE)
|
|
21
|
+
- **Specs**: `.specify/specs/[feature-name]/` - Feature specifications, plans, tasks, checklists
|
|
22
|
+
|
|
23
|
+
## When Workers Use Spec-Kit Commands
|
|
24
|
+
|
|
25
|
+
- **Phase 1 (Constitution)**: `architect` uses `/speckit.constitution` or follows constitution template
|
|
26
|
+
- **Phase 2 (Clarification)**: `clarifier` uses `/speckit.clarify` to identify ambiguities
|
|
27
|
+
- **Phase 3 (Specification)**: `spec-writer` uses `/speckit.specify` and `/speckit.checklist`
|
|
28
|
+
- **Phase 4 (Planning)**: `planner` uses `/speckit.plan` to generate technical plans
|
|
29
|
+
- **Phase 6 (Task Breakdown)**: `planner` uses `/speckit.tasks` to create task breakdown
|
|
30
|
+
- **Phase 7 (Implementation)**: `developer-*` workers use `/speckit.implement` or follow TDD manually
|
|
31
|
+
- **Phase 5 & 7 (Validation/Review)**: `reviewer` and `code-reviewer` use `/speckit.analyze`
|
|
32
|
+
- **Cross-Phase**: `tester`, `security-engineer`, `technical-writer` use `/speckit.checklist` as needed
|
|
33
|
+
|
|
34
|
+
## BOSS Methodology
|
|
35
|
+
|
|
36
|
+
This project uses Spec-Kit for specification-driven development with the following phases:
|
|
37
|
+
|
|
38
|
+
1. **Constitution** - Governing principles (NON-NEGOTIABLE)
|
|
39
|
+
2. **Clarification** - Business requirements gathering
|
|
40
|
+
3. **Specification** - User stories in Given/When/Then format
|
|
41
|
+
4. **Planning** - Technical approach and architecture
|
|
42
|
+
5. **Validation** - Constitution compliance check
|
|
43
|
+
6. **Task Breakdown** - Granular tasks with [P] parallel markers
|
|
44
|
+
7. **Implementation** - TDD + BDD with feature documentation
|
|
45
|
+
8. **Consolidation** - Integration and delivery artifacts
|
|
46
|
+
|