@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
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 glxmart
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
# BOSS Bootstrap CLI
|
|
2
|
+
|
|
3
|
+
Command-line tool for scaffolding new BOSS projects with complete configuration.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
pnpm add -g @glxmart/boss-cli
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Usage
|
|
12
|
+
|
|
13
|
+
### Interactive Mode
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
boss bootstrap
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
### Command Line Options
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
boss bootstrap --template nextjs-app-turbo --quality production --name my-project
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
### Available Commands
|
|
26
|
+
|
|
27
|
+
- `boss bootstrap` - Bootstrap a new BOSS project
|
|
28
|
+
- `boss doctor` - Check prerequisites and system health
|
|
29
|
+
- `boss templates` - List available templates
|
|
30
|
+
|
|
31
|
+
## Templates
|
|
32
|
+
|
|
33
|
+
- `nextjs-app-turbo` - Next.js 15 + Turbo + Tailwind + Prisma + Vitest + shadcn/ui
|
|
34
|
+
- `api-service-fastify` - Fastify + TypeScript + Prisma + Vitest
|
|
35
|
+
- `blank` - Minimal TypeScript + Vitest setup
|
|
36
|
+
|
|
37
|
+
## Quality Presets
|
|
38
|
+
|
|
39
|
+
- `startup` - Fast iteration, minimal gates
|
|
40
|
+
- `production` - Balanced quality & speed
|
|
41
|
+
- `enterprise` - Maximum quality, comprehensive checks
|
|
42
|
+
|
|
43
|
+
## What Gets Created
|
|
44
|
+
|
|
45
|
+
- `.boss/` - BOSS orchestration configuration
|
|
46
|
+
- `.specify/` - Spec-Kit structure (templates, scripts, memory)
|
|
47
|
+
- `.container-use/` - Container-use environment configuration
|
|
48
|
+
- `.claude/` - Claude Code/Cursor rules and commands
|
|
49
|
+
- `CLAUDE.md` - Primary Claude Code configuration
|
|
50
|
+
- `start-boss.sh` - Launch script with MCP restrictions
|
|
51
|
+
- `.github/workflows/` - CI/CD pipelines
|
|
52
|
+
- `.husky/` - Git hooks
|
|
53
|
+
- `docker-compose.yml` - Local infrastructure
|
|
54
|
+
- Template-specific code structure
|
|
55
|
+
|
|
56
|
+
## Development
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
# Install dependencies
|
|
60
|
+
pnpm install
|
|
61
|
+
|
|
62
|
+
# Build
|
|
63
|
+
pnpm build
|
|
64
|
+
|
|
65
|
+
# Run in development
|
|
66
|
+
pnpm dev
|
|
67
|
+
|
|
68
|
+
# Run tests
|
|
69
|
+
pnpm test
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## Local Testing
|
|
73
|
+
|
|
74
|
+
### Easiest Way: Integration Tests
|
|
75
|
+
|
|
76
|
+
The easiest way to test the CLI locally is using the existing integration tests:
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
# Run all integration tests
|
|
80
|
+
pnpm test:integration
|
|
81
|
+
|
|
82
|
+
# This will automatically:
|
|
83
|
+
# - Build the CLI
|
|
84
|
+
# - Create test projects
|
|
85
|
+
# - Verify the structure
|
|
86
|
+
# - Clean up afterwards
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### Automated Testing Script
|
|
90
|
+
|
|
91
|
+
For manual testing with more control, use the `test-local.sh` script. Test projects are created in your home directory by default:
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
# Basic test (builds, creates test project in $HOME, verifies)
|
|
95
|
+
pnpm test:local
|
|
96
|
+
# or
|
|
97
|
+
./test-local.sh
|
|
98
|
+
|
|
99
|
+
# Test with specific template and quality
|
|
100
|
+
pnpm test:local -- --template nextjs-app-turbo --quality production
|
|
101
|
+
|
|
102
|
+
# Create test project in a different directory
|
|
103
|
+
pnpm test:local -- --dir ~/test-projects
|
|
104
|
+
|
|
105
|
+
# Link CLI globally and test
|
|
106
|
+
pnpm test:local -- --link
|
|
107
|
+
|
|
108
|
+
# Verify existing test project
|
|
109
|
+
pnpm test:local -- --verify-only
|
|
110
|
+
|
|
111
|
+
# Clean up test project
|
|
112
|
+
pnpm test:local -- --cleanup-only
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
See `pnpm test:local -- --help` or `./test-local.sh --help` for all options.
|
|
116
|
+
|
|
117
|
+
### Manual Testing
|
|
118
|
+
|
|
119
|
+
For manual testing without the script:
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
# Build the CLI
|
|
123
|
+
pnpm install && pnpm build
|
|
124
|
+
|
|
125
|
+
# Link globally (optional)
|
|
126
|
+
pnpm link --global
|
|
127
|
+
|
|
128
|
+
# Create a test project
|
|
129
|
+
boss bootstrap --template blank --quality startup --name test-project --non-interactive
|
|
130
|
+
|
|
131
|
+
# Or use tsx directly (no build needed)
|
|
132
|
+
pnpm exec tsx src/index.ts bootstrap --template blank --quality startup --name test-project --non-interactive
|
|
133
|
+
```
|
|
134
|
+
|
|
File without changes
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
# BOSS Commands
|
|
2
|
+
|
|
3
|
+
## Available Commands
|
|
4
|
+
|
|
5
|
+
### Container-Use Commands
|
|
6
|
+
|
|
7
|
+
- \`container-use log <env_id>\` - View worker logs
|
|
8
|
+
- \`container-use checkout <env_id>\` - Checkout worker branch
|
|
9
|
+
- \`container-use diff <env_id>\` - View code changes
|
|
10
|
+
- \`container-use merge <env_id>\` - Merge worker branch
|
|
11
|
+
|
|
12
|
+
### Spec-Kit Commands
|
|
13
|
+
|
|
14
|
+
- \`bash .specify/scripts/speckit.plan.sh\` - Generate plan
|
|
15
|
+
- \`bash .specify/scripts/speckit.tasks.sh\` - Generate tasks
|
|
16
|
+
- \`bash .specify/scripts/speckit.implement.sh\` - Implement features
|
|
17
|
+
|
|
18
|
+
### BOSS Commands
|
|
19
|
+
|
|
20
|
+
- \`./start-boss.sh\` - Start BOSS with MCP restrictions
|
|
21
|
+
|
|
22
|
+
### Initial Setup Command
|
|
23
|
+
|
|
24
|
+
**Command:** `boss-initial-setup`
|
|
25
|
+
|
|
26
|
+
**Purpose:** Complete the initial project setup after bootstrap.
|
|
27
|
+
|
|
28
|
+
**When to Run:**
|
|
29
|
+
- After bootstrap completes
|
|
30
|
+
- When `initialization.stage` in `.boss/project-config.json` is `"bootstrap"` or `"remote-setup"`
|
|
31
|
+
|
|
32
|
+
**What It Does:**
|
|
33
|
+
1. Checks `.boss/project-config.json` for current initialization status
|
|
34
|
+
2. Verifies if remote repository exists
|
|
35
|
+
3. If no remote exists:
|
|
36
|
+
- Asks user:
|
|
37
|
+
- Should repository be **private** or **public**? (default: private)
|
|
38
|
+
- Should it be created in an **organization**? (if yes, which org?)
|
|
39
|
+
- Repository name (if different from project name)
|
|
40
|
+
- Creates GitHub repository using GitHub MCP
|
|
41
|
+
- Adds remote using Container-Use MCP (NOT git CLI)
|
|
42
|
+
- Pushes initial commit to remote
|
|
43
|
+
- Updates `.boss/project-config.json` with remote information
|
|
44
|
+
4. Marks `initialization.stage = "ready"` in project-config.json
|
|
45
|
+
5. Updates project status to indicate setup is complete
|
|
46
|
+
|
|
47
|
+
**How to Execute:**
|
|
48
|
+
- BOSS can run this command directly when user asks to complete setup
|
|
49
|
+
- Or BOSS can spawn an initial-setup worker using Container-Use MCP
|
|
50
|
+
- Worker should follow the checklist in its prompt.md
|
|
51
|
+
|
|
52
|
+
**Checklist for Initial Setup:**
|
|
53
|
+
- [ ] Read `.boss/project-config.json` to check current status
|
|
54
|
+
- [ ] **Verify:** Main branch is EMPTY (only empty commit) - bootstrap files are NOT on main
|
|
55
|
+
- [ ] **Verify:** Feature branch `feature/boss-initial-setup` exists with ALL bootstrap files (created during bootstrap)
|
|
56
|
+
- [ ] Confirm you are on `feature/boss-initial-setup` branch (created during bootstrap)
|
|
57
|
+
- [ ] Check if remote repository exists (read project-config.json, NOT git)
|
|
58
|
+
- [ ] If no remote:
|
|
59
|
+
- [ ] Ask user for repository preferences (private/public, org)
|
|
60
|
+
- [ ] Create GitHub repository using GitHub MCP (will create under personal account)
|
|
61
|
+
- [ ] If organization was requested:
|
|
62
|
+
- [ ] Ask user: "Repository created under your personal account. Would you like me to transfer it to [org-name] now?"
|
|
63
|
+
- [ ] If user confirms:
|
|
64
|
+
- [ ] Transfer repository using GitHub API: `POST /repos/{owner}/{repo}/transfer` with `{"new_owner": "org-name"}`
|
|
65
|
+
- [ ] Wait for transfer to complete
|
|
66
|
+
- [ ] Update git remote URL to reflect new owner using Container-Use MCP
|
|
67
|
+
- [ ] **CRITICAL: Lock main branch and require PRs** - Use GitHub API to set branch protection:
|
|
68
|
+
- [ ] Make HTTP PUT request to: `https://api.github.com/repos/{owner}/{repo}/branches/main/protection`
|
|
69
|
+
- [ ] Headers: `Authorization: Bearer {GITHUB_PERSONAL_ACCESS_TOKEN}`, `Accept: application/vnd.github.v3+json` (use GITHUB_PERSONAL_ACCESS_TOKEN, not GITHUB_TOKEN, for API calls)
|
|
70
|
+
- [ ] Body (JSON):
|
|
71
|
+
```json
|
|
72
|
+
{
|
|
73
|
+
"required_pull_request_reviews": {
|
|
74
|
+
"required": true,
|
|
75
|
+
"dismiss_stale_reviews": true,
|
|
76
|
+
"require_code_owner_reviews": false,
|
|
77
|
+
"required_approving_review_count": 1
|
|
78
|
+
},
|
|
79
|
+
"enforce_admins": true,
|
|
80
|
+
"required_status_checks": {
|
|
81
|
+
"strict": true,
|
|
82
|
+
"contexts": []
|
|
83
|
+
},
|
|
84
|
+
"restrictions": null,
|
|
85
|
+
"allow_force_pushes": false,
|
|
86
|
+
"allow_deletions": false,
|
|
87
|
+
"required_linear_history": false,
|
|
88
|
+
"allow_squash_merge": true,
|
|
89
|
+
"allow_merge_commit": true,
|
|
90
|
+
"allow_rebase_merge": true
|
|
91
|
+
}
|
|
92
|
+
```
|
|
93
|
+
- [ ] Verify protection was set: Check response status is 200
|
|
94
|
+
- [ ] **DO NOT skip this step** - branch protection is mandatory
|
|
95
|
+
- [ ] **CRITICAL ORDER - Follow EXACTLY:**
|
|
96
|
+
1. **Add remote using HTTPS:** `git remote add origin https://github.com/<owner>/<repo>.git` (ALWAYS use HTTPS, NEVER SSH `git@github.com` format)
|
|
97
|
+
2. **If transferred, update remote:** `git remote set-url origin https://github.com/<new-owner>/<repo>.git` (use HTTPS format)
|
|
98
|
+
3. **Check current branch:** `git branch --show-current` - verify you're on the correct branch
|
|
99
|
+
4. **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)
|
|
100
|
+
5. **Switch to main branch:** `git checkout main` (if uncommitted changes prevent checkout, commit them to current branch first, then switch)
|
|
101
|
+
6. **FIRST push empty main branch:** `git push -u origin main` (main is EMPTY - only empty commit, no validation needed, MUST be pushed first, git will use GITHUB_TOKEN from environment automatically, which is set to same value as GITHUB_PERSONAL_ACCESS_TOKEN)
|
|
102
|
+
- **NOTE:** The pre-push hook allows empty main push without validation checks
|
|
103
|
+
- **Main branch must be pushed first (empty) before feature branch**
|
|
104
|
+
7. **Switch back to feature branch:** `git checkout feature/boss-initial-setup` (branch should already exist from bootstrap)
|
|
105
|
+
8. **Verify validation checks pass BEFORE pushing feature branch:**
|
|
106
|
+
- **BEFORE pushing feature branch, verify all checks pass:**
|
|
107
|
+
1. **Typecheck:** Run `pnpm typecheck` (or `npm run typecheck`) - must pass
|
|
108
|
+
2. **Lint:** Run `pnpm lint` (or `npm run lint`) - must pass
|
|
109
|
+
3. **Security:** Run `bash scripts/security-check.sh` - must pass
|
|
110
|
+
4. **Tests:** Run `pnpm test:unit` (or `npm run test:unit`) - must pass
|
|
111
|
+
- **If any check fails, fix the issues before pushing**
|
|
112
|
+
9. **THEN push feature branch:** `git push -u origin feature/boss-initial-setup` (contains all bootstrap files, git will use GITHUB_TOKEN from environment automatically, which is set to same value as GITHUB_PERSONAL_ACCESS_TOKEN)
|
|
113
|
+
10. **Update project-config.json** with repository info (including final owner after transfer)
|
|
114
|
+
11. **Commit and push project-config.json:** `git add .boss/project-config.json && git commit -m "chore: update project-config.json" && git push`
|
|
115
|
+
12. **Mark `initialization.stage = "ready"`** in project-config.json
|
|
116
|
+
13. **Update `initialization.remoteCreated = true`** and `initialization.initialSetupComplete = true`
|
|
117
|
+
14. **Commit and push again:** `git add .boss/project-config.json && git commit -m "chore: mark initialization as ready" && git push`
|
|
118
|
+
15. **FINAL STEP - Create PR from feature/boss-initial-setup to main:** Use GitHub MCP `create_pull_request` with:
|
|
119
|
+
- **Title:** `"chore: BOSS initial setup - bootstrap files"`
|
|
120
|
+
- **Body:** `"This PR contains all BOSS bootstrap files and initial project structure. Ready for review and merge."`
|
|
121
|
+
- **Base branch:** `"main"`
|
|
122
|
+
- **Head branch:** `"feature/boss-initial-setup"`
|
|
123
|
+
- **DO NOT ask user** - create PR automatically
|
|
124
|
+
- [ ] **NEVER push feature branch before main branch** - empty main must be pushed first
|
|
125
|
+
- [ ] **After this, NEVER push directly to main** - main branch is protected, use PRs for future changes
|
|
126
|
+
- [ ] Report completion to user with PR link
|
|
127
|
+
|
|
128
|
+
**Important Notes:**
|
|
129
|
+
- BOSS uses git commands for orchestration (branches, pushes, merges) - git CLI is allowed and expected
|
|
130
|
+
- Workers use Container-Use MCP for their git operations (automatic)
|
|
131
|
+
- ALWAYS update `.boss/project-config.json` to reflect status changes, then commit and push immediately
|
|
132
|
+
- ALWAYS ask user for repository preferences before creating
|
|
133
|
+
- Default to private repositories unless user specifies otherwise
|
|
134
|
+
- **CRITICAL:** Main branch MUST be protected before any pushes - require PRs for all changes
|
|
135
|
+
- **NEVER push directly to main branch** - always push to feature branch and create PR
|
|
136
|
+
- **ALWAYS create PRs automatically** - never ask user if they want a PR created
|
|
137
|
+
- **MINIMIZE status checks** - only check worker/environment status when necessary, not repeatedly
|
|
138
|
+
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# BOSS Workflow Rules
|
|
2
|
+
|
|
3
|
+
## Spec-Kit Phases
|
|
4
|
+
|
|
5
|
+
Follow the 8-phase Spec-Kit methodology:
|
|
6
|
+
|
|
7
|
+
1. **Constitution** - Create/update constitution.md
|
|
8
|
+
2. **Clarification** - Gather business requirements
|
|
9
|
+
3. **Specification** - Write user stories (Given/When/Then)
|
|
10
|
+
4. **Planning** - Create technical plan
|
|
11
|
+
5. **Validation** - Validate against constitution
|
|
12
|
+
6. **Task Breakdown** - Create tasks.md with [P] markers
|
|
13
|
+
7. **Implementation** - TDD + BDD implementation
|
|
14
|
+
8. **Consolidation** - Merge and create delivery artifacts
|
|
15
|
+
|
|
16
|
+
## Worker Coordination
|
|
17
|
+
|
|
18
|
+
- Workers execute in parallel when tasks marked with [P]
|
|
19
|
+
- Each worker in isolated container-use environment
|
|
20
|
+
- Workers use Spec-Kit templates from \`.specify/templates/\`
|
|
21
|
+
|
|
22
|
+
## Quality Gates
|
|
23
|
+
|
|
24
|
+
- All quality gates must pass before merging
|
|
25
|
+
- Coverage and mutation thresholds are enforced
|
|
26
|
+
- Documentation must be complete
|
|
27
|
+
|
|
28
|
+
## Communication Standards
|
|
29
|
+
|
|
30
|
+
- **CRITICAL:** Use plain text only when communicating with workers - NO emojis
|
|
31
|
+
- All messages, instructions, prompts, and feedback to workers must be in plain text format
|
|
32
|
+
- Emojis should not be used in worker prompts, Container-Use instructions, or any worker-related communication
|
|
33
|
+
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# Code Style
|
|
2
|
+
|
|
3
|
+
## TypeScript
|
|
4
|
+
|
|
5
|
+
- Use strict TypeScript configuration
|
|
6
|
+
- Prefer explicit types over `any`
|
|
7
|
+
- Use interfaces for object shapes
|
|
8
|
+
- Use enums for constants
|
|
9
|
+
|
|
10
|
+
## Naming Conventions
|
|
11
|
+
|
|
12
|
+
- Use camelCase for variables and functions
|
|
13
|
+
- Use PascalCase for classes and types
|
|
14
|
+
- Use UPPER_CASE for constants
|
|
15
|
+
- Use kebab-case for file names
|
|
16
|
+
|
|
17
|
+
## Formatting
|
|
18
|
+
|
|
19
|
+
- Use 2 spaces for indentation
|
|
20
|
+
- Use semicolons
|
|
21
|
+
- Use single quotes for strings
|
|
22
|
+
- Trailing commas in multi-line objects/arrays
|
|
23
|
+
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Security Guidelines
|
|
2
|
+
|
|
3
|
+
## Secrets Management
|
|
4
|
+
|
|
5
|
+
- NEVER commit secrets to git
|
|
6
|
+
- Use 1Password vault "boss" for all secrets
|
|
7
|
+
- Reference secrets via \`op://boss/credential/needed\` format
|
|
8
|
+
- Secrets are injected at runtime via container-use
|
|
9
|
+
|
|
10
|
+
## Dependencies
|
|
11
|
+
|
|
12
|
+
- Keep dependencies up to date
|
|
13
|
+
- Use security scanning tools
|
|
14
|
+
- Review dependency changes in PRs
|
|
15
|
+
|
|
16
|
+
## Code Security
|
|
17
|
+
|
|
18
|
+
- Validate all user input
|
|
19
|
+
- Use parameterized queries for database
|
|
20
|
+
- Implement proper authentication/authorization
|
|
21
|
+
- Follow OWASP guidelines
|
|
22
|
+
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# Testing Requirements
|
|
2
|
+
|
|
3
|
+
## Test-First (NON-NEGOTIABLE)
|
|
4
|
+
|
|
5
|
+
- Write tests BEFORE implementation
|
|
6
|
+
- Follow TDD cycle: red → green → refactor
|
|
7
|
+
- All tests must pass before committing
|
|
8
|
+
|
|
9
|
+
## BDD (Mandatory)
|
|
10
|
+
|
|
11
|
+
- Use Given/When/Then format for test descriptions
|
|
12
|
+
- Use BDD test frameworks (Cucumber, Gherkin, or equivalent)
|
|
13
|
+
- Tests should read like specifications
|
|
14
|
+
|
|
15
|
+
## Coverage
|
|
16
|
+
|
|
17
|
+
- Unit tests: ≥80% coverage
|
|
18
|
+
- Integration tests: Required for all API endpoints
|
|
19
|
+
- Mutation testing: ≥80% score
|
|
20
|
+
|
|
21
|
+
## Test Structure
|
|
22
|
+
|
|
23
|
+
\`\`\`
|
|
24
|
+
describe('Feature Name', () => {
|
|
25
|
+
describe('Given [context]', () => {
|
|
26
|
+
it('When [action], Then [expected result]', () => {
|
|
27
|
+
// Test implementation
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
\`\`\`
|
|
32
|
+
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
{
|
|
2
|
+
"permissions": {
|
|
3
|
+
"allow": [
|
|
4
|
+
"Bash(test:*)",
|
|
5
|
+
"Bash(grep:*)",
|
|
6
|
+
"Bash(cat:*)",
|
|
7
|
+
"Bash(ls:*)",
|
|
8
|
+
"Bash(echo:*)",
|
|
9
|
+
"Bash(curl:*)",
|
|
10
|
+
"Bash(pnpm:*)",
|
|
11
|
+
"Bash(npm:*)",
|
|
12
|
+
"Bash(bash scripts/security-check.sh)",
|
|
13
|
+
"Bash(cat .boss/project-config.json)",
|
|
14
|
+
"Bash(ls .boss/)",
|
|
15
|
+
"Bash(ls -la .boss/)",
|
|
16
|
+
"Bash(git commit:*)",
|
|
17
|
+
"Bash(git merge:*)",
|
|
18
|
+
"Bash(git pull:*)",
|
|
19
|
+
"Bash(git push:*)",
|
|
20
|
+
"Bash(git add:*)",
|
|
21
|
+
"Bash(git branch:*)",
|
|
22
|
+
"Bash(git checkout:*)",
|
|
23
|
+
"Bash(git log:*)",
|
|
24
|
+
"Bash(git ls-tree:*)",
|
|
25
|
+
"Bash(git remote:*)",
|
|
26
|
+
"Bash(git show:*)",
|
|
27
|
+
"Bash(git status:*)",
|
|
28
|
+
"Bash(rm ./*)",
|
|
29
|
+
"Bash(rm -f ./*)",
|
|
30
|
+
"Bash(rm ./.*)",
|
|
31
|
+
"Bash(rm -f ./.*)",
|
|
32
|
+
"Bash(rm ./**/*)",
|
|
33
|
+
"Bash(rm -f ./**/*)",
|
|
34
|
+
"Read(*)",
|
|
35
|
+
"Read(**)",
|
|
36
|
+
"Read(.*)",
|
|
37
|
+
"Read(.*/**)",
|
|
38
|
+
"Read(.boss/**)",
|
|
39
|
+
"Read(.boss/project-config.json)",
|
|
40
|
+
"Write(*)",
|
|
41
|
+
"Write(**)",
|
|
42
|
+
"Write(.*)",
|
|
43
|
+
"Write(.*/**)",
|
|
44
|
+
"Write(.boss/**)",
|
|
45
|
+
"Write(.boss/project-config.json)",
|
|
46
|
+
"Edit(*)",
|
|
47
|
+
"Edit(**)",
|
|
48
|
+
"Edit(.*)",
|
|
49
|
+
"Edit(.*/**)",
|
|
50
|
+
"Edit(.boss/**)",
|
|
51
|
+
"Edit(.boss/project-config.json)",
|
|
52
|
+
"Delete(*)",
|
|
53
|
+
"Delete(**)"
|
|
54
|
+
],
|
|
55
|
+
"ask": [
|
|
56
|
+
"Bash(rm -rf ./*)"
|
|
57
|
+
],
|
|
58
|
+
"deny": [
|
|
59
|
+
"Bash(rm //etc/**)",
|
|
60
|
+
"Bash(rm //usr/**)",
|
|
61
|
+
"Bash(rm //var/**)",
|
|
62
|
+
"Bash(rm //home/**)",
|
|
63
|
+
"Bash(rm -f //etc/**)",
|
|
64
|
+
"Bash(rm -f //usr/**)",
|
|
65
|
+
"Bash(rm -f //var/**)",
|
|
66
|
+
"Bash(rm -rf //etc/**)",
|
|
67
|
+
"Bash(rm -rf //usr/**)",
|
|
68
|
+
"Bash(rm -rf //var/**)",
|
|
69
|
+
"Read(//etc/**)",
|
|
70
|
+
"Read(//usr/**)",
|
|
71
|
+
"Read(//var/**)",
|
|
72
|
+
"Read(//root/**)",
|
|
73
|
+
"Read(//tmp/**)",
|
|
74
|
+
"Write(//etc/**)",
|
|
75
|
+
"Write(//usr/**)",
|
|
76
|
+
"Write(//var/**)",
|
|
77
|
+
"Write(//root/**)",
|
|
78
|
+
"Edit(//etc/**)",
|
|
79
|
+
"Edit(//usr/**)",
|
|
80
|
+
"Edit(//var/**)",
|
|
81
|
+
"Edit(//root/**)",
|
|
82
|
+
"Delete(//etc/**)",
|
|
83
|
+
"Delete(//usr/**)",
|
|
84
|
+
"Delete(//var/**)",
|
|
85
|
+
"Delete(//root/**)"
|
|
86
|
+
]
|
|
87
|
+
}
|
|
88
|
+
}
|
|
File without changes
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
# Container-Use MCP Operations
|
|
2
|
+
|
|
3
|
+
**CRITICAL:** All file, code, and shell operations MUST use Container-Use MCP environments.
|
|
4
|
+
|
|
5
|
+
## Git Hooks Enforcement
|
|
6
|
+
|
|
7
|
+
**MANDATORY:** All git commits MUST respect Husky git hooks:
|
|
8
|
+
- **commit-msg hook** enforces Conventional Commits format (e.g., `feat: description`, `fix: description`)
|
|
9
|
+
- **pre-commit hook** runs lint-staged, typecheck, and tests
|
|
10
|
+
- **pre-push hook** runs additional quality checks
|
|
11
|
+
- **Container-Use environments automatically run git hooks** - hooks are active in containers
|
|
12
|
+
- **Commit messages MUST follow format:** `<type>(<scope>): <description>`
|
|
13
|
+
- Valid types: `feat`, `fix`, `docs`, `style`, `refactor`, `perf`, `test`, `chore`, `ci`, `build`, `revert`
|
|
14
|
+
- Examples: `feat: add user authentication`, `fix(api): handle null response`, `chore: update dependencies`
|
|
15
|
+
- **Hooks are installed during bootstrap** - Husky is initialized automatically
|
|
16
|
+
- **package.json includes `prepare` script** - Runs `husky install` automatically when dependencies are installed
|
|
17
|
+
|
|
18
|
+
**NEVER:**
|
|
19
|
+
- NOT OK Use `--no-verify` flag to skip hooks (Container-Use commits will fail if hooks fail)
|
|
20
|
+
- NOT OK Bypass commit message validation
|
|
21
|
+
- NOT OK Skip pre-commit checks
|
|
22
|
+
- NOT OK Commit with invalid message format
|
|
23
|
+
|
|
24
|
+
**ALWAYS:**
|
|
25
|
+
- OK Let git hooks run automatically (Container-Use respects hooks - they cannot be bypassed)
|
|
26
|
+
- OK Use proper Conventional Commits format: `<type>(<scope>): <description>`
|
|
27
|
+
- OK Ensure hooks pass before committing (commits will be rejected if hooks fail)
|
|
28
|
+
- OK Run `pnpm install` after bootstrap to ensure Husky is fully set up
|
|
29
|
+
|
|
30
|
+
## How Container-Use Works
|
|
31
|
+
|
|
32
|
+
1. **Environment Creation**
|
|
33
|
+
- Use `mcp_container-use_create_environment` to create a new environment
|
|
34
|
+
- Container-Use automatically creates a branch: `container-use/<env-id>`
|
|
35
|
+
- Each environment is an isolated container with its own git branch
|
|
36
|
+
- Branch naming convention: `container-use/<env-id>` (e.g., `container-use/env-abc123`)
|
|
37
|
+
- **Git hooks are active in Container-Use environments** - commits will be validated
|
|
38
|
+
|
|
39
|
+
2. **Container Configuration (MANDATORY - BEFORE Worker Spawning)**
|
|
40
|
+
- **CRITICAL:** This is the ONLY exception where BOSS uses `environment_file_write`
|
|
41
|
+
- **Purpose:** Configure container with worker-specific context, not BOSS's orchestration context
|
|
42
|
+
- **Overwrite `.claude/CLAUDE.md` in container:**
|
|
43
|
+
- Read `.boss/workers/[worker-name]/CLAUDE.md`
|
|
44
|
+
- Use `mcp_container-use_environment_file_write` to write to `.claude/CLAUDE.md` in container
|
|
45
|
+
- Container needs worker's instructions, not BOSS's orchestration instructions
|
|
46
|
+
- **Copy worker-specific `.claude` files to container:**
|
|
47
|
+
- Check if `.boss/workers/[worker-name]/.claude/` exists
|
|
48
|
+
- If exists, copy all files maintaining directory structure:
|
|
49
|
+
- `.claude/commands/` - Worker-specific commands
|
|
50
|
+
- `.claude/skills/` - Worker-specific skills
|
|
51
|
+
- `.claude/agents/` - Worker-specific agent configs
|
|
52
|
+
- `.claude/settings*.json` - Worker-specific settings (if any)
|
|
53
|
+
- Use `mcp_container-use_environment_file_write` for each file
|
|
54
|
+
- **Why:** Container's Claude Code needs worker role context, not BOSS orchestrator context
|
|
55
|
+
|
|
56
|
+
3. **Worker Spawning (MANDATORY for BOSS)**
|
|
57
|
+
- **CRITICAL:** BOSS must use `mcp_container-use_execute_in_environment` to spawn workers
|
|
58
|
+
- **BOSS must NEVER write deliverables directly** using `environment_file_write` or `environment_run_cmd`
|
|
59
|
+
- **Workers write all deliverables** (constitution.md, spec.md, plan.md, code, tests, etc.)
|
|
60
|
+
- Each worker runs in its own isolated environment/container with worker-specific `.claude` config
|
|
61
|
+
- Workers can access secrets from 1Password (configured in container-config.json)
|
|
62
|
+
- All git operations happen automatically within the environment
|
|
63
|
+
- **BOSS's role:** Orchestrate (create environment, configure container, spawn worker, review, merge)
|
|
64
|
+
- **Worker's role:** Execute (write files, run commands, create code)
|
|
65
|
+
|
|
66
|
+
4. **Environment Management**
|
|
67
|
+
- `mcp_container-use_list_environments` - List all active environments
|
|
68
|
+
- `mcp_container-use_get_environment` - Get environment details
|
|
69
|
+
- `mcp_container-use_delete_environment` - Delete environment (discards work)
|
|
70
|
+
- `mcp_container-use_merge_environment` - Merge environment branch into target branch
|
|
71
|
+
|
|
72
|
+
5. **Work Review**
|
|
73
|
+
- Use `container-use log <env_id>` (CLI) to view command history
|
|
74
|
+
- Use `container-use diff <env_id>` (CLI) to view code changes
|
|
75
|
+
- Use `container-use checkout <env_id>` (CLI) to test locally
|
|
76
|
+
- Inform user: `container-use log <env_id>` AND `container-use checkout <env_id>`
|
|
77
|
+
|
|
78
|
+
**Key Rules:**
|
|
79
|
+
- **[DO]** ALWAYS create environments for any file/code/shell operation
|
|
80
|
+
- **[DO]** ALWAYS use Container-Use MCP tools (never git CLI)
|
|
81
|
+
- **[DO]** ALWAYS inform user how to view work via container-use CLI
|
|
82
|
+
- **[DO]** Configure container environment BEFORE spawning worker:
|
|
83
|
+
- Overwrite `.claude/CLAUDE.md` with worker's CLAUDE.md
|
|
84
|
+
- Copy worker-specific `.claude/` files to container
|
|
85
|
+
- This is the ONLY exception where BOSS uses `environment_file_write`
|
|
86
|
+
- **[DO]** For large files, use shell commands (heredoc/cat) instead of `environment_file_write` with large content
|
|
87
|
+
- **[DON'T]** NEVER use git CLI directly
|
|
88
|
+
- **[DON'T]** NEVER modify .git directory manually
|
|
89
|
+
- **[DON'T]** NEVER execute operations outside environments
|
|
90
|
+
- **[DON'T]** NEVER use `environment_file_write` to create deliverables - workers write deliverables
|
|
91
|
+
- **[DON'T]** NEVER use `environment_file_write` with very large content (>1000 lines) - use shell commands instead
|
|
92
|
+
|
|
93
|
+
## Efficient File Operations
|
|
94
|
+
|
|
95
|
+
**CRITICAL:** For large files (README.md, long documentation, large config files, constitution.md, spec.md), use shell commands with heredoc syntax instead of `environment_file_write` with large content fields. This reduces MCP payload size, improves performance, and reduces token usage.
|
|
96
|
+
|
|
97
|
+
**Decision Tree:**
|
|
98
|
+
- **Files >100 lines or >5KB:** Use `environment_run_cmd` with heredoc/cat
|
|
99
|
+
- **Files <100 lines and <5KB:** Can use `environment_file_write` (but heredoc still preferred)
|
|
100
|
+
|
|
101
|
+
**Preferred Method (Large Files - README, docs, specs):**
|
|
102
|
+
```typescript
|
|
103
|
+
// Use environment_run_cmd with heredoc for large files
|
|
104
|
+
await mcp.containerUse.environment_run_cmd({
|
|
105
|
+
environment_id: "env-123",
|
|
106
|
+
command: `cat > README.md << 'EOF'
|
|
107
|
+
# Project Title
|
|
108
|
+
|
|
109
|
+
Long content here...
|
|
110
|
+
Multiple lines...
|
|
111
|
+
EOF`
|
|
112
|
+
});
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
**Alternative for Very Large Files (Multi-step):**
|
|
116
|
+
```typescript
|
|
117
|
+
// For extremely large files, write in chunks or use echo with >> append
|
|
118
|
+
await mcp.containerUse.environment_run_cmd({
|
|
119
|
+
environment_id: "env-123",
|
|
120
|
+
command: `cat > large-file.md << 'EOF'
|
|
121
|
+
[content part 1]
|
|
122
|
+
EOF
|
|
123
|
+
cat >> large-file.md << 'EOF'
|
|
124
|
+
[content part 2]
|
|
125
|
+
EOF`
|
|
126
|
+
});
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
**Small Files Only (<50 lines):**
|
|
130
|
+
```typescript
|
|
131
|
+
// Only use environment_file_write for very small files
|
|
132
|
+
await mcp.containerUse.environment_file_write({
|
|
133
|
+
environment_id: "env-123",
|
|
134
|
+
target_file: "src/utils.ts",
|
|
135
|
+
contents: "export function helper() { return true; }" // Small content only
|
|
136
|
+
});
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
**Why:** Large content in MCP calls increases payload size, latency, and token usage. Shell commands with heredoc are more efficient for files >100 lines. Container-Use executes shell commands efficiently inside the container.
|
|
140
|
+
|