@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,251 @@
|
|
|
1
|
+
---
|
|
2
|
+
|
|
3
|
+
description: "Task list template for feature implementation"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Tasks: [FEATURE NAME]
|
|
7
|
+
|
|
8
|
+
**Input**: Design documents from `/specs/[###-feature-name]/`
|
|
9
|
+
**Prerequisites**: plan.md (required), spec.md (required for user stories), research.md, data-model.md, contracts/
|
|
10
|
+
|
|
11
|
+
**Tests**: The examples below include test tasks. Tests are OPTIONAL - only include them if explicitly requested in the feature specification.
|
|
12
|
+
|
|
13
|
+
**Organization**: Tasks are grouped by user story to enable independent implementation and testing of each story.
|
|
14
|
+
|
|
15
|
+
## Format: `[ID] [P?] [Story] Description`
|
|
16
|
+
|
|
17
|
+
- **[P]**: Can run in parallel (different files, no dependencies)
|
|
18
|
+
- **[Story]**: Which user story this task belongs to (e.g., US1, US2, US3)
|
|
19
|
+
- Include exact file paths in descriptions
|
|
20
|
+
|
|
21
|
+
## Path Conventions
|
|
22
|
+
|
|
23
|
+
- **Single project**: `src/`, `tests/` at repository root
|
|
24
|
+
- **Web app**: `backend/src/`, `frontend/src/`
|
|
25
|
+
- **Mobile**: `api/src/`, `ios/src/` or `android/src/`
|
|
26
|
+
- Paths shown below assume single project - adjust based on plan.md structure
|
|
27
|
+
|
|
28
|
+
<!--
|
|
29
|
+
============================================================================
|
|
30
|
+
IMPORTANT: The tasks below are SAMPLE TASKS for illustration purposes only.
|
|
31
|
+
|
|
32
|
+
The /speckit.tasks command MUST replace these with actual tasks based on:
|
|
33
|
+
- User stories from spec.md (with their priorities P1, P2, P3...)
|
|
34
|
+
- Feature requirements from plan.md
|
|
35
|
+
- Entities from data-model.md
|
|
36
|
+
- Endpoints from contracts/
|
|
37
|
+
|
|
38
|
+
Tasks MUST be organized by user story so each story can be:
|
|
39
|
+
- Implemented independently
|
|
40
|
+
- Tested independently
|
|
41
|
+
- Delivered as an MVP increment
|
|
42
|
+
|
|
43
|
+
DO NOT keep these sample tasks in the generated tasks.md file.
|
|
44
|
+
============================================================================
|
|
45
|
+
-->
|
|
46
|
+
|
|
47
|
+
## Phase 1: Setup (Shared Infrastructure)
|
|
48
|
+
|
|
49
|
+
**Purpose**: Project initialization and basic structure
|
|
50
|
+
|
|
51
|
+
- [ ] T001 Create project structure per implementation plan
|
|
52
|
+
- [ ] T002 Initialize [language] project with [framework] dependencies
|
|
53
|
+
- [ ] T003 [P] Configure linting and formatting tools
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## Phase 2: Foundational (Blocking Prerequisites)
|
|
58
|
+
|
|
59
|
+
**Purpose**: Core infrastructure that MUST be complete before ANY user story can be implemented
|
|
60
|
+
|
|
61
|
+
**⚠️ CRITICAL**: No user story work can begin until this phase is complete
|
|
62
|
+
|
|
63
|
+
Examples of foundational tasks (adjust based on your project):
|
|
64
|
+
|
|
65
|
+
- [ ] T004 Setup database schema and migrations framework
|
|
66
|
+
- [ ] T005 [P] Implement authentication/authorization framework
|
|
67
|
+
- [ ] T006 [P] Setup API routing and middleware structure
|
|
68
|
+
- [ ] T007 Create base models/entities that all stories depend on
|
|
69
|
+
- [ ] T008 Configure error handling and logging infrastructure
|
|
70
|
+
- [ ] T009 Setup environment configuration management
|
|
71
|
+
|
|
72
|
+
**Checkpoint**: Foundation ready - user story implementation can now begin in parallel
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## Phase 3: User Story 1 - [Title] (Priority: P1) 🎯 MVP
|
|
77
|
+
|
|
78
|
+
**Goal**: [Brief description of what this story delivers]
|
|
79
|
+
|
|
80
|
+
**Independent Test**: [How to verify this story works on its own]
|
|
81
|
+
|
|
82
|
+
### Tests for User Story 1 (OPTIONAL - only if tests requested) ⚠️
|
|
83
|
+
|
|
84
|
+
> **NOTE: Write these tests FIRST, ensure they FAIL before implementation**
|
|
85
|
+
|
|
86
|
+
- [ ] T010 [P] [US1] Contract test for [endpoint] in tests/contract/test_[name].py
|
|
87
|
+
- [ ] T011 [P] [US1] Integration test for [user journey] in tests/integration/test_[name].py
|
|
88
|
+
|
|
89
|
+
### Implementation for User Story 1
|
|
90
|
+
|
|
91
|
+
- [ ] T012 [P] [US1] Create [Entity1] model in src/models/[entity1].py
|
|
92
|
+
- [ ] T013 [P] [US1] Create [Entity2] model in src/models/[entity2].py
|
|
93
|
+
- [ ] T014 [US1] Implement [Service] in src/services/[service].py (depends on T012, T013)
|
|
94
|
+
- [ ] T015 [US1] Implement [endpoint/feature] in src/[location]/[file].py
|
|
95
|
+
- [ ] T016 [US1] Add validation and error handling
|
|
96
|
+
- [ ] T017 [US1] Add logging for user story 1 operations
|
|
97
|
+
|
|
98
|
+
**Checkpoint**: At this point, User Story 1 should be fully functional and testable independently
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
## Phase 4: User Story 2 - [Title] (Priority: P2)
|
|
103
|
+
|
|
104
|
+
**Goal**: [Brief description of what this story delivers]
|
|
105
|
+
|
|
106
|
+
**Independent Test**: [How to verify this story works on its own]
|
|
107
|
+
|
|
108
|
+
### Tests for User Story 2 (OPTIONAL - only if tests requested) ⚠️
|
|
109
|
+
|
|
110
|
+
- [ ] T018 [P] [US2] Contract test for [endpoint] in tests/contract/test_[name].py
|
|
111
|
+
- [ ] T019 [P] [US2] Integration test for [user journey] in tests/integration/test_[name].py
|
|
112
|
+
|
|
113
|
+
### Implementation for User Story 2
|
|
114
|
+
|
|
115
|
+
- [ ] T020 [P] [US2] Create [Entity] model in src/models/[entity].py
|
|
116
|
+
- [ ] T021 [US2] Implement [Service] in src/services/[service].py
|
|
117
|
+
- [ ] T022 [US2] Implement [endpoint/feature] in src/[location]/[file].py
|
|
118
|
+
- [ ] T023 [US2] Integrate with User Story 1 components (if needed)
|
|
119
|
+
|
|
120
|
+
**Checkpoint**: At this point, User Stories 1 AND 2 should both work independently
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
## Phase 5: User Story 3 - [Title] (Priority: P3)
|
|
125
|
+
|
|
126
|
+
**Goal**: [Brief description of what this story delivers]
|
|
127
|
+
|
|
128
|
+
**Independent Test**: [How to verify this story works on its own]
|
|
129
|
+
|
|
130
|
+
### Tests for User Story 3 (OPTIONAL - only if tests requested) ⚠️
|
|
131
|
+
|
|
132
|
+
- [ ] T024 [P] [US3] Contract test for [endpoint] in tests/contract/test_[name].py
|
|
133
|
+
- [ ] T025 [P] [US3] Integration test for [user journey] in tests/integration/test_[name].py
|
|
134
|
+
|
|
135
|
+
### Implementation for User Story 3
|
|
136
|
+
|
|
137
|
+
- [ ] T026 [P] [US3] Create [Entity] model in src/models/[entity].py
|
|
138
|
+
- [ ] T027 [US3] Implement [Service] in src/services/[service].py
|
|
139
|
+
- [ ] T028 [US3] Implement [endpoint/feature] in src/[location]/[file].py
|
|
140
|
+
|
|
141
|
+
**Checkpoint**: All user stories should now be independently functional
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
[Add more user story phases as needed, following the same pattern]
|
|
146
|
+
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
## Phase N: Polish & Cross-Cutting Concerns
|
|
150
|
+
|
|
151
|
+
**Purpose**: Improvements that affect multiple user stories
|
|
152
|
+
|
|
153
|
+
- [ ] TXXX [P] Documentation updates in docs/
|
|
154
|
+
- [ ] TXXX Code cleanup and refactoring
|
|
155
|
+
- [ ] TXXX Performance optimization across all stories
|
|
156
|
+
- [ ] TXXX [P] Additional unit tests (if requested) in tests/unit/
|
|
157
|
+
- [ ] TXXX Security hardening
|
|
158
|
+
- [ ] TXXX Run quickstart.md validation
|
|
159
|
+
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
## Dependencies & Execution Order
|
|
163
|
+
|
|
164
|
+
### Phase Dependencies
|
|
165
|
+
|
|
166
|
+
- **Setup (Phase 1)**: No dependencies - can start immediately
|
|
167
|
+
- **Foundational (Phase 2)**: Depends on Setup completion - BLOCKS all user stories
|
|
168
|
+
- **User Stories (Phase 3+)**: All depend on Foundational phase completion
|
|
169
|
+
- User stories can then proceed in parallel (if staffed)
|
|
170
|
+
- Or sequentially in priority order (P1 → P2 → P3)
|
|
171
|
+
- **Polish (Final Phase)**: Depends on all desired user stories being complete
|
|
172
|
+
|
|
173
|
+
### User Story Dependencies
|
|
174
|
+
|
|
175
|
+
- **User Story 1 (P1)**: Can start after Foundational (Phase 2) - No dependencies on other stories
|
|
176
|
+
- **User Story 2 (P2)**: Can start after Foundational (Phase 2) - May integrate with US1 but should be independently testable
|
|
177
|
+
- **User Story 3 (P3)**: Can start after Foundational (Phase 2) - May integrate with US1/US2 but should be independently testable
|
|
178
|
+
|
|
179
|
+
### Within Each User Story
|
|
180
|
+
|
|
181
|
+
- Tests (if included) MUST be written and FAIL before implementation
|
|
182
|
+
- Models before services
|
|
183
|
+
- Services before endpoints
|
|
184
|
+
- Core implementation before integration
|
|
185
|
+
- Story complete before moving to next priority
|
|
186
|
+
|
|
187
|
+
### Parallel Opportunities
|
|
188
|
+
|
|
189
|
+
- All Setup tasks marked [P] can run in parallel
|
|
190
|
+
- All Foundational tasks marked [P] can run in parallel (within Phase 2)
|
|
191
|
+
- Once Foundational phase completes, all user stories can start in parallel (if team capacity allows)
|
|
192
|
+
- All tests for a user story marked [P] can run in parallel
|
|
193
|
+
- Models within a story marked [P] can run in parallel
|
|
194
|
+
- Different user stories can be worked on in parallel by different team members
|
|
195
|
+
|
|
196
|
+
---
|
|
197
|
+
|
|
198
|
+
## Parallel Example: User Story 1
|
|
199
|
+
|
|
200
|
+
```bash
|
|
201
|
+
# Launch all tests for User Story 1 together (if tests requested):
|
|
202
|
+
Task: "Contract test for [endpoint] in tests/contract/test_[name].py"
|
|
203
|
+
Task: "Integration test for [user journey] in tests/integration/test_[name].py"
|
|
204
|
+
|
|
205
|
+
# Launch all models for User Story 1 together:
|
|
206
|
+
Task: "Create [Entity1] model in src/models/[entity1].py"
|
|
207
|
+
Task: "Create [Entity2] model in src/models/[entity2].py"
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
---
|
|
211
|
+
|
|
212
|
+
## Implementation Strategy
|
|
213
|
+
|
|
214
|
+
### MVP First (User Story 1 Only)
|
|
215
|
+
|
|
216
|
+
1. Complete Phase 1: Setup
|
|
217
|
+
2. Complete Phase 2: Foundational (CRITICAL - blocks all stories)
|
|
218
|
+
3. Complete Phase 3: User Story 1
|
|
219
|
+
4. **STOP and VALIDATE**: Test User Story 1 independently
|
|
220
|
+
5. Deploy/demo if ready
|
|
221
|
+
|
|
222
|
+
### Incremental Delivery
|
|
223
|
+
|
|
224
|
+
1. Complete Setup + Foundational → Foundation ready
|
|
225
|
+
2. Add User Story 1 → Test independently → Deploy/Demo (MVP!)
|
|
226
|
+
3. Add User Story 2 → Test independently → Deploy/Demo
|
|
227
|
+
4. Add User Story 3 → Test independently → Deploy/Demo
|
|
228
|
+
5. Each story adds value without breaking previous stories
|
|
229
|
+
|
|
230
|
+
### Parallel Team Strategy
|
|
231
|
+
|
|
232
|
+
With multiple developers:
|
|
233
|
+
|
|
234
|
+
1. Team completes Setup + Foundational together
|
|
235
|
+
2. Once Foundational is done:
|
|
236
|
+
- Developer A: User Story 1
|
|
237
|
+
- Developer B: User Story 2
|
|
238
|
+
- Developer C: User Story 3
|
|
239
|
+
3. Stories complete and integrate independently
|
|
240
|
+
|
|
241
|
+
---
|
|
242
|
+
|
|
243
|
+
## Notes
|
|
244
|
+
|
|
245
|
+
- [P] tasks = different files, no dependencies
|
|
246
|
+
- [Story] label maps task to specific user story for traceability
|
|
247
|
+
- Each user story should be independently completable and testable
|
|
248
|
+
- Verify tests fail before implementing
|
|
249
|
+
- Commit after each task or logical group
|
|
250
|
+
- Stop at any checkpoint to validate story independently
|
|
251
|
+
- Avoid: vague tasks, same file conflicts, cross-story dependencies that break independence
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"chat.promptFilesRecommendations": {
|
|
3
|
+
"speckit.constitution": true,
|
|
4
|
+
"speckit.specify": true,
|
|
5
|
+
"speckit.plan": true,
|
|
6
|
+
"speckit.tasks": true,
|
|
7
|
+
"speckit.implement": true
|
|
8
|
+
},
|
|
9
|
+
"chat.tools.terminal.autoApprove": {
|
|
10
|
+
".specify/scripts/bash/": true,
|
|
11
|
+
".specify/scripts/powershell/": true
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# T3 App Template
|
|
2
|
+
|
|
3
|
+
T3 Stack template downloaded from [create-t3-app](https://create.t3.gg/).
|
|
4
|
+
|
|
5
|
+
## What is T3?
|
|
6
|
+
|
|
7
|
+
The T3 Stack is a web development framework designed for simplicity, modularity, and full-stack type safety. It comprises:
|
|
8
|
+
|
|
9
|
+
- **Next.js** - React framework
|
|
10
|
+
- **tRPC** - End-to-end typesafe APIs
|
|
11
|
+
- **Tailwind CSS** - Utility-first CSS
|
|
12
|
+
- **TypeScript** - Type safety
|
|
13
|
+
- **Prisma** - Database ORM
|
|
14
|
+
- **NextAuth.js** - Authentication
|
|
15
|
+
|
|
16
|
+
## Source
|
|
17
|
+
|
|
18
|
+
Template files from: https://github.com/t3-oss/create-t3-app
|
|
19
|
+
|
|
20
|
+
Downloaded from the main branch (latest version).
|
|
21
|
+
|
|
22
|
+
## Structure
|
|
23
|
+
|
|
24
|
+
The T3 template uses a modular structure:
|
|
25
|
+
|
|
26
|
+
- `base/` - Base template files (always included)
|
|
27
|
+
- `extras/` - Optional components:
|
|
28
|
+
- `config/` - Configuration files (ESLint, Prettier, etc.)
|
|
29
|
+
- `src/` - Additional source files (tRPC, auth, etc.)
|
|
30
|
+
- `prisma/` - Database schemas
|
|
31
|
+
- `start-database/` - Database setup scripts
|
|
32
|
+
|
|
33
|
+
## Usage
|
|
34
|
+
|
|
35
|
+
This template will be used by the BOSS bootstrap CLI when users select the `t3-app` template option.
|
|
36
|
+
|
|
37
|
+
The bootstrap process will:
|
|
38
|
+
1. Copy `base/` files to project root
|
|
39
|
+
2. Copy `extras/` files (all features included for BOSS)
|
|
40
|
+
3. Update package.json with project name
|
|
41
|
+
4. Handle special files (those starting with `_` are copied without the underscore)
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Create T3 App
|
|
2
|
+
|
|
3
|
+
This is a [T3 Stack](https://create.t3.gg/) project bootstrapped with `create-t3-app`.
|
|
4
|
+
|
|
5
|
+
## What's next? How do I make an app with this?
|
|
6
|
+
|
|
7
|
+
We try to keep this project as simple as possible, so you can start with just the scaffolding we set up for you, and add additional things later when they become necessary.
|
|
8
|
+
|
|
9
|
+
If you are not familiar with the different technologies used in this project, please refer to the respective docs. If you still are in the wind, please join our [Discord](https://t3.gg/discord) and ask for help.
|
|
10
|
+
|
|
11
|
+
- [Next.js](https://nextjs.org)
|
|
12
|
+
- [NextAuth.js](https://next-auth.js.org)
|
|
13
|
+
- [Prisma](https://prisma.io)
|
|
14
|
+
- [Drizzle](https://orm.drizzle.team)
|
|
15
|
+
- [Tailwind CSS](https://tailwindcss.com)
|
|
16
|
+
- [tRPC](https://trpc.io)
|
|
17
|
+
|
|
18
|
+
## Learn More
|
|
19
|
+
|
|
20
|
+
To learn more about the [T3 Stack](https://create.t3.gg/), take a look at the following resources:
|
|
21
|
+
|
|
22
|
+
- [Documentation](https://create.t3.gg/)
|
|
23
|
+
- [Learn the T3 Stack](https://create.t3.gg/en/faq#what-learning-resources-are-currently-available) — Check out these awesome tutorials
|
|
24
|
+
|
|
25
|
+
You can check out the [create-t3-app GitHub repository](https://github.com/t3-oss/create-t3-app) — your feedback and contributions are welcome!
|
|
26
|
+
|
|
27
|
+
## How do I deploy this?
|
|
28
|
+
|
|
29
|
+
Follow our deployment guides for [Vercel](https://create.t3.gg/en/deployment/vercel), [Netlify](https://create.t3.gg/en/deployment/netlify) and [Docker](https://create.t3.gg/en/deployment/docker) for more information.
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
|
|
2
|
+
|
|
3
|
+
# dependencies
|
|
4
|
+
/node_modules
|
|
5
|
+
/.pnp
|
|
6
|
+
.pnp.js
|
|
7
|
+
|
|
8
|
+
# testing
|
|
9
|
+
/coverage
|
|
10
|
+
|
|
11
|
+
# database
|
|
12
|
+
/prisma/db.sqlite
|
|
13
|
+
/prisma/db.sqlite-journal
|
|
14
|
+
db.sqlite
|
|
15
|
+
/generated/
|
|
16
|
+
|
|
17
|
+
# next.js
|
|
18
|
+
/.next/
|
|
19
|
+
/out/
|
|
20
|
+
next-env.d.ts
|
|
21
|
+
|
|
22
|
+
# production
|
|
23
|
+
/build
|
|
24
|
+
|
|
25
|
+
# misc
|
|
26
|
+
.DS_Store
|
|
27
|
+
*.pem
|
|
28
|
+
|
|
29
|
+
# debug
|
|
30
|
+
npm-debug.log*
|
|
31
|
+
yarn-debug.log*
|
|
32
|
+
yarn-error.log*
|
|
33
|
+
.pnpm-debug.log*
|
|
34
|
+
|
|
35
|
+
# local env files
|
|
36
|
+
# do not commit any .env files to git, except for the .env.example file. https://create.t3.gg/en/usage/env-variables#using-environment-variables
|
|
37
|
+
.env
|
|
38
|
+
.env*.local
|
|
39
|
+
|
|
40
|
+
# vercel
|
|
41
|
+
.vercel
|
|
42
|
+
|
|
43
|
+
# typescript
|
|
44
|
+
*.tsbuildinfo
|
|
45
|
+
|
|
46
|
+
# idea files
|
|
47
|
+
.idea
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Run `build` or `dev` with `SKIP_ENV_VALIDATION` to skip env validation. This is especially useful
|
|
3
|
+
* for Docker builds.
|
|
4
|
+
*/
|
|
5
|
+
import "./src/env.js";
|
|
6
|
+
|
|
7
|
+
/** @type {import("next").NextConfig} */
|
|
8
|
+
const config = {
|
|
9
|
+
reactStrictMode: true,
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* If you are using `appDir` then you must comment the below `i18n` config out.
|
|
13
|
+
*
|
|
14
|
+
* @see https://github.com/vercel/next.js/issues/41980
|
|
15
|
+
*/
|
|
16
|
+
i18n: {
|
|
17
|
+
locales: ["en"],
|
|
18
|
+
defaultLocale: "en",
|
|
19
|
+
},
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
export default config;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "template",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"private": true,
|
|
6
|
+
"scripts": {
|
|
7
|
+
"dev": "next dev --turbo",
|
|
8
|
+
"build": "next build",
|
|
9
|
+
"start": "next start",
|
|
10
|
+
"preview": "next build && next start",
|
|
11
|
+
"typecheck": "tsc --noEmit"
|
|
12
|
+
},
|
|
13
|
+
"dependencies": {
|
|
14
|
+
"@t3-oss/env-nextjs": "^0.12.0",
|
|
15
|
+
"next": "^15.5.9",
|
|
16
|
+
"react": "^19.2.3",
|
|
17
|
+
"react-dom": "^19.2.3",
|
|
18
|
+
"zod": "^3.24.2"
|
|
19
|
+
},
|
|
20
|
+
"devDependencies": {
|
|
21
|
+
"@types/node": "^24.10.1",
|
|
22
|
+
"@types/react": "~19.1.0",
|
|
23
|
+
"@types/react-dom": "~19.1.0",
|
|
24
|
+
"typescript": "^5.8.2"
|
|
25
|
+
}
|
|
26
|
+
}
|
|
Binary file
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { createEnv } from "@t3-oss/env-nextjs";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
|
|
4
|
+
export const env = createEnv({
|
|
5
|
+
/**
|
|
6
|
+
* Specify your server-side environment variables schema here. This way you can ensure the app
|
|
7
|
+
* isn't built with invalid env vars.
|
|
8
|
+
*/
|
|
9
|
+
server: {
|
|
10
|
+
NODE_ENV: z.enum(["development", "test", "production"]),
|
|
11
|
+
},
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Specify your client-side environment variables schema here. This way you can ensure the app
|
|
15
|
+
* isn't built with invalid env vars. To expose them to the client, prefix them with
|
|
16
|
+
* `NEXT_PUBLIC_`.
|
|
17
|
+
*/
|
|
18
|
+
client: {
|
|
19
|
+
// NEXT_PUBLIC_CLIENTVAR: z.string(),
|
|
20
|
+
},
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* You can't destruct `process.env` as a regular object in the Next.js edge runtimes (e.g.
|
|
24
|
+
* middlewares) or client-side so we need to destruct manually.
|
|
25
|
+
*/
|
|
26
|
+
runtimeEnv: {
|
|
27
|
+
NODE_ENV: process.env.NODE_ENV,
|
|
28
|
+
// NEXT_PUBLIC_CLIENTVAR: process.env.NEXT_PUBLIC_CLIENTVAR,
|
|
29
|
+
},
|
|
30
|
+
/**
|
|
31
|
+
* Run `build` or `dev` with `SKIP_ENV_VALIDATION` to skip env validation. This is especially
|
|
32
|
+
* useful for Docker builds.
|
|
33
|
+
*/
|
|
34
|
+
skipValidation: !!process.env.SKIP_ENV_VALIDATION,
|
|
35
|
+
/**
|
|
36
|
+
* Makes it so that empty strings are treated as undefined. `SOME_VAR: z.string()` and
|
|
37
|
+
* `SOME_VAR=''` will throw an error.
|
|
38
|
+
*/
|
|
39
|
+
emptyStringAsUndefined: true,
|
|
40
|
+
});
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
html,
|
|
2
|
+
body {
|
|
3
|
+
padding: 0;
|
|
4
|
+
margin: 0;
|
|
5
|
+
font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen,
|
|
6
|
+
Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
a {
|
|
10
|
+
color: inherit;
|
|
11
|
+
text-decoration: none;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
* {
|
|
15
|
+
box-sizing: border-box;
|
|
16
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
/* Base Options: */
|
|
4
|
+
"esModuleInterop": true,
|
|
5
|
+
"skipLibCheck": true,
|
|
6
|
+
"target": "es2022",
|
|
7
|
+
"allowJs": true,
|
|
8
|
+
"resolveJsonModule": true,
|
|
9
|
+
"moduleDetection": "force",
|
|
10
|
+
"isolatedModules": true,
|
|
11
|
+
"verbatimModuleSyntax": true,
|
|
12
|
+
|
|
13
|
+
/* Strictness */
|
|
14
|
+
"strict": true,
|
|
15
|
+
"noUncheckedIndexedAccess": true,
|
|
16
|
+
"checkJs": true,
|
|
17
|
+
|
|
18
|
+
/* Bundled projects */
|
|
19
|
+
"lib": ["dom", "dom.iterable", "ES2022"],
|
|
20
|
+
"noEmit": true,
|
|
21
|
+
"module": "ESNext",
|
|
22
|
+
"moduleResolution": "Bundler",
|
|
23
|
+
"jsx": "preserve",
|
|
24
|
+
"plugins": [{ "name": "next" }],
|
|
25
|
+
"incremental": true,
|
|
26
|
+
|
|
27
|
+
/* Path Aliases */
|
|
28
|
+
"baseUrl": ".",
|
|
29
|
+
"paths": {
|
|
30
|
+
"~/*": ["./src/*"]
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
"include": [
|
|
34
|
+
"next-env.d.ts",
|
|
35
|
+
"**/*.ts",
|
|
36
|
+
"**/*.tsx",
|
|
37
|
+
"**/*.cjs",
|
|
38
|
+
"**/*.js",
|
|
39
|
+
".next/types/**/*.ts"
|
|
40
|
+
],
|
|
41
|
+
"exclude": ["node_modules", "generated"]
|
|
42
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { FlatCompat } from "@eslint/eslintrc";
|
|
2
|
+
import tseslint from 'typescript-eslint';
|
|
3
|
+
|
|
4
|
+
const compat = new FlatCompat({
|
|
5
|
+
baseDirectory: import.meta.dirname,
|
|
6
|
+
});
|
|
7
|
+
|
|
8
|
+
export default tseslint.config(
|
|
9
|
+
{
|
|
10
|
+
ignores: ['.next']
|
|
11
|
+
},
|
|
12
|
+
...compat.extends("next/core-web-vitals"),
|
|
13
|
+
{
|
|
14
|
+
files: ['**/*.ts', '**/*.tsx'],
|
|
15
|
+
extends: [
|
|
16
|
+
...tseslint.configs.recommended,
|
|
17
|
+
...tseslint.configs.recommendedTypeChecked,
|
|
18
|
+
...tseslint.configs.stylisticTypeChecked
|
|
19
|
+
],
|
|
20
|
+
rules: {
|
|
21
|
+
"@typescript-eslint/array-type": "off",
|
|
22
|
+
"@typescript-eslint/consistent-type-definitions": "off",
|
|
23
|
+
"@typescript-eslint/consistent-type-imports": [
|
|
24
|
+
"warn",
|
|
25
|
+
{ prefer: "type-imports", fixStyle: "inline-type-imports" },
|
|
26
|
+
],
|
|
27
|
+
"@typescript-eslint/no-unused-vars": ["warn", { argsIgnorePattern: "^_" }],
|
|
28
|
+
"@typescript-eslint/require-await": "off",
|
|
29
|
+
"@typescript-eslint/no-misused-promises": [
|
|
30
|
+
"error",
|
|
31
|
+
{ checksVoidReturn: { attributes: false } },
|
|
32
|
+
],
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
linterOptions: {
|
|
37
|
+
reportUnusedDisableDirectives: true
|
|
38
|
+
},
|
|
39
|
+
languageOptions: {
|
|
40
|
+
parserOptions: {
|
|
41
|
+
projectService: true
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
)
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { FlatCompat } from "@eslint/eslintrc";
|
|
2
|
+
import tseslint from 'typescript-eslint';
|
|
3
|
+
// @ts-ignore -- no types for this plugin
|
|
4
|
+
import drizzle from "eslint-plugin-drizzle";
|
|
5
|
+
|
|
6
|
+
const compat = new FlatCompat({
|
|
7
|
+
baseDirectory: import.meta.dirname,
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
export default tseslint.config(
|
|
11
|
+
{
|
|
12
|
+
ignores: ['.next']
|
|
13
|
+
},
|
|
14
|
+
...compat.extends("next/core-web-vitals"),
|
|
15
|
+
{
|
|
16
|
+
files: ['**/*.ts', '**/*.tsx'],
|
|
17
|
+
plugins: {
|
|
18
|
+
drizzle,
|
|
19
|
+
},
|
|
20
|
+
extends: [
|
|
21
|
+
...tseslint.configs.recommended,
|
|
22
|
+
...tseslint.configs.recommendedTypeChecked,
|
|
23
|
+
...tseslint.configs.stylisticTypeChecked
|
|
24
|
+
],
|
|
25
|
+
rules: {
|
|
26
|
+
"@typescript-eslint/array-type": "off",
|
|
27
|
+
"@typescript-eslint/consistent-type-definitions": "off",
|
|
28
|
+
"@typescript-eslint/consistent-type-imports": [
|
|
29
|
+
"warn",
|
|
30
|
+
{ prefer: "type-imports", fixStyle: "inline-type-imports" },
|
|
31
|
+
],
|
|
32
|
+
"@typescript-eslint/no-unused-vars": ["warn", { argsIgnorePattern: "^_" }],
|
|
33
|
+
"@typescript-eslint/require-await": "off",
|
|
34
|
+
"@typescript-eslint/no-misused-promises": [
|
|
35
|
+
"error",
|
|
36
|
+
{ checksVoidReturn: { attributes: false } },
|
|
37
|
+
],
|
|
38
|
+
"drizzle/enforce-delete-with-where": [
|
|
39
|
+
"error",
|
|
40
|
+
{ drizzleObjectName: ["db", "ctx.db"] },
|
|
41
|
+
],
|
|
42
|
+
"drizzle/enforce-update-with-where": [
|
|
43
|
+
"error",
|
|
44
|
+
{ drizzleObjectName: ["db", "ctx.db"] },
|
|
45
|
+
],
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
linterOptions: {
|
|
50
|
+
reportUnusedDisableDirectives: true
|
|
51
|
+
},
|
|
52
|
+
languageOptions: {
|
|
53
|
+
parserOptions: {
|
|
54
|
+
projectService: true
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
)
|