@sk8metal/michi-cli 0.0.9 → 0.2.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/CHANGELOG.md +27 -0
- package/README.md +236 -57
- package/dist/scripts/__tests__/create-project.test.js +24 -28
- package/dist/scripts/__tests__/create-project.test.js.map +1 -1
- package/dist/scripts/__tests__/jira-transitions.test.d.ts +5 -0
- package/dist/scripts/__tests__/jira-transitions.test.d.ts.map +1 -0
- package/dist/scripts/__tests__/jira-transitions.test.js +172 -0
- package/dist/scripts/__tests__/jira-transitions.test.js.map +1 -0
- package/dist/scripts/__tests__/multi-project-estimate.test.js +14 -15
- package/dist/scripts/__tests__/multi-project-estimate.test.js.map +1 -1
- package/dist/scripts/__tests__/setup-existing-project.test.js +79 -0
- package/dist/scripts/__tests__/setup-existing-project.test.js.map +1 -1
- package/dist/scripts/__tests__/setup-interactive.test.js +23 -17
- package/dist/scripts/__tests__/setup-interactive.test.js.map +1 -1
- package/dist/scripts/__tests__/spec-impl-workflow.test.d.ts +5 -0
- package/dist/scripts/__tests__/spec-impl-workflow.test.d.ts.map +1 -0
- package/dist/scripts/__tests__/spec-impl-workflow.test.js +321 -0
- package/dist/scripts/__tests__/spec-impl-workflow.test.js.map +1 -0
- package/dist/scripts/__tests__/spec-loader.test.d.ts +5 -0
- package/dist/scripts/__tests__/spec-loader.test.d.ts.map +1 -0
- package/dist/scripts/__tests__/spec-loader.test.js +153 -0
- package/dist/scripts/__tests__/spec-loader.test.js.map +1 -0
- package/dist/scripts/__tests__/validate-phase.test.js +109 -22
- package/dist/scripts/__tests__/validate-phase.test.js.map +1 -1
- package/dist/scripts/config/config-schema.d.ts +31 -0
- package/dist/scripts/config/config-schema.d.ts.map +1 -1
- package/dist/scripts/config/config-schema.js +64 -26
- package/dist/scripts/config/config-schema.js.map +1 -1
- package/dist/scripts/config-interactive.d.ts.map +1 -1
- package/dist/scripts/config-interactive.js +53 -38
- package/dist/scripts/config-interactive.js.map +1 -1
- package/dist/scripts/confluence-sync.d.ts.map +1 -1
- package/dist/scripts/confluence-sync.js +0 -11
- package/dist/scripts/confluence-sync.js.map +1 -1
- package/dist/scripts/constants/__tests__/environments.test.js +39 -5
- package/dist/scripts/constants/__tests__/environments.test.js.map +1 -1
- package/dist/scripts/constants/environments.d.ts +1 -1
- package/dist/scripts/constants/environments.d.ts.map +1 -1
- package/dist/scripts/constants/environments.js +22 -7
- package/dist/scripts/constants/environments.js.map +1 -1
- package/dist/scripts/constants/test-commands.d.ts +36 -0
- package/dist/scripts/constants/test-commands.d.ts.map +1 -0
- package/dist/scripts/constants/test-commands.js +70 -0
- package/dist/scripts/constants/test-commands.js.map +1 -0
- package/dist/scripts/jira-sync.d.ts +89 -3
- package/dist/scripts/jira-sync.d.ts.map +1 -1
- package/dist/scripts/jira-sync.js +366 -96
- package/dist/scripts/jira-sync.js.map +1 -1
- package/dist/scripts/markdown-to-confluence.js +1 -1
- package/dist/scripts/markdown-to-confluence.js.map +1 -1
- package/dist/scripts/phase-runner.d.ts +1 -1
- package/dist/scripts/phase-runner.d.ts.map +1 -1
- package/dist/scripts/phase-runner.js +809 -13
- package/dist/scripts/phase-runner.js.map +1 -1
- package/dist/scripts/pr-automation.d.ts.map +1 -1
- package/dist/scripts/pr-automation.js.map +1 -1
- package/dist/scripts/pre-flight-check.js +1 -1
- package/dist/scripts/pre-flight-check.js.map +1 -1
- package/dist/scripts/setup-existing-project.js +61 -29
- package/dist/scripts/setup-existing-project.js.map +1 -1
- package/dist/scripts/setup-interactive.js +3 -3
- package/dist/scripts/setup-interactive.js.map +1 -1
- package/dist/scripts/spec-impl-workflow.d.ts +94 -0
- package/dist/scripts/spec-impl-workflow.d.ts.map +1 -0
- package/dist/scripts/spec-impl-workflow.js +354 -0
- package/dist/scripts/spec-impl-workflow.js.map +1 -0
- package/dist/scripts/template/__tests__/renderer.test.js.map +1 -1
- package/dist/scripts/test-execution-generator.d.ts +52 -0
- package/dist/scripts/test-execution-generator.d.ts.map +1 -0
- package/dist/scripts/test-execution-generator.js +576 -0
- package/dist/scripts/test-execution-generator.js.map +1 -0
- package/dist/scripts/test-interactive.d.ts +10 -0
- package/dist/scripts/test-interactive.d.ts.map +1 -0
- package/dist/scripts/test-interactive.js +627 -0
- package/dist/scripts/test-interactive.js.map +1 -0
- package/dist/scripts/test-new-features.d.ts +5 -0
- package/dist/scripts/test-new-features.d.ts.map +1 -0
- package/dist/scripts/test-new-features.js +145 -0
- package/dist/scripts/test-new-features.js.map +1 -0
- package/dist/scripts/test-spec-generator.d.ts +29 -0
- package/dist/scripts/test-spec-generator.d.ts.map +1 -0
- package/dist/scripts/test-spec-generator.js +494 -0
- package/dist/scripts/test-spec-generator.js.map +1 -0
- package/dist/scripts/test-workflow-stages.d.ts +6 -0
- package/dist/scripts/test-workflow-stages.d.ts.map +1 -0
- package/dist/scripts/test-workflow-stages.js +43 -0
- package/dist/scripts/test-workflow-stages.js.map +1 -0
- package/dist/scripts/utils/__tests__/aidlc-parser.test.d.ts +5 -0
- package/dist/scripts/utils/__tests__/aidlc-parser.test.d.ts.map +1 -0
- package/dist/scripts/utils/__tests__/aidlc-parser.test.js +315 -0
- package/dist/scripts/utils/__tests__/aidlc-parser.test.js.map +1 -0
- package/dist/scripts/utils/__tests__/business-days.test.d.ts +5 -0
- package/dist/scripts/utils/__tests__/business-days.test.d.ts.map +1 -0
- package/dist/scripts/utils/__tests__/business-days.test.js +171 -0
- package/dist/scripts/utils/__tests__/business-days.test.js.map +1 -0
- package/dist/scripts/utils/__tests__/config-loader.test.js +1 -1
- package/dist/scripts/utils/__tests__/config-loader.test.js.map +1 -1
- package/dist/scripts/utils/__tests__/config-validator.test.js +164 -35
- package/dist/scripts/utils/__tests__/config-validator.test.js.map +1 -1
- package/dist/scripts/utils/__tests__/env-config.test.d.ts +5 -0
- package/dist/scripts/utils/__tests__/env-config.test.d.ts.map +1 -0
- package/dist/scripts/utils/__tests__/env-config.test.js +218 -0
- package/dist/scripts/utils/__tests__/env-config.test.js.map +1 -0
- package/dist/scripts/utils/__tests__/jira-issue-type-fetcher.test.d.ts +5 -0
- package/dist/scripts/utils/__tests__/jira-issue-type-fetcher.test.d.ts.map +1 -0
- package/dist/scripts/utils/__tests__/jira-issue-type-fetcher.test.js +202 -0
- package/dist/scripts/utils/__tests__/jira-issue-type-fetcher.test.js.map +1 -0
- package/dist/scripts/utils/__tests__/tasks-converter.test.d.ts +5 -0
- package/dist/scripts/utils/__tests__/tasks-converter.test.d.ts.map +1 -0
- package/dist/scripts/utils/__tests__/tasks-converter.test.js +500 -0
- package/dist/scripts/utils/__tests__/tasks-converter.test.js.map +1 -0
- package/dist/scripts/utils/__tests__/tasks-format-validator.test.d.ts +5 -0
- package/dist/scripts/utils/__tests__/tasks-format-validator.test.d.ts.map +1 -0
- package/dist/scripts/utils/__tests__/tasks-format-validator.test.js +314 -0
- package/dist/scripts/utils/__tests__/tasks-format-validator.test.js.map +1 -0
- package/dist/scripts/utils/__tests__/test-runner.test.d.ts +5 -0
- package/dist/scripts/utils/__tests__/test-runner.test.d.ts.map +1 -0
- package/dist/scripts/utils/__tests__/test-runner.test.js +64 -0
- package/dist/scripts/utils/__tests__/test-runner.test.js.map +1 -0
- package/dist/scripts/utils/aidlc-parser.d.ts +86 -0
- package/dist/scripts/utils/aidlc-parser.d.ts.map +1 -0
- package/dist/scripts/utils/aidlc-parser.js +208 -0
- package/dist/scripts/utils/aidlc-parser.js.map +1 -0
- package/dist/scripts/utils/business-days.d.ts +52 -0
- package/dist/scripts/utils/business-days.d.ts.map +1 -0
- package/dist/scripts/utils/business-days.js +98 -0
- package/dist/scripts/utils/business-days.js.map +1 -0
- package/dist/scripts/utils/ci-generator.d.ts +14 -0
- package/dist/scripts/utils/ci-generator.d.ts.map +1 -0
- package/dist/scripts/utils/ci-generator.js +61 -0
- package/dist/scripts/utils/ci-generator.js.map +1 -0
- package/dist/scripts/utils/config-loader.js +2 -2
- package/dist/scripts/utils/config-loader.js.map +1 -1
- package/dist/scripts/utils/config-validator.d.ts +7 -1
- package/dist/scripts/utils/config-validator.d.ts.map +1 -1
- package/dist/scripts/utils/config-validator.js +136 -23
- package/dist/scripts/utils/config-validator.js.map +1 -1
- package/dist/scripts/utils/confluence-approval.d.ts +46 -0
- package/dist/scripts/utils/confluence-approval.d.ts.map +1 -0
- package/dist/scripts/utils/confluence-approval.js +118 -0
- package/dist/scripts/utils/confluence-approval.js.map +1 -0
- package/dist/scripts/utils/confluence-hierarchy.d.ts.map +1 -1
- package/dist/scripts/utils/confluence-hierarchy.js +1 -1
- package/dist/scripts/utils/confluence-hierarchy.js.map +1 -1
- package/dist/scripts/utils/docker-generator.d.ts +9 -0
- package/dist/scripts/utils/docker-generator.d.ts.map +1 -0
- package/dist/scripts/utils/docker-generator.js +132 -0
- package/dist/scripts/utils/docker-generator.js.map +1 -0
- package/dist/scripts/utils/docker-requirement-detector.d.ts +15 -0
- package/dist/scripts/utils/docker-requirement-detector.d.ts.map +1 -0
- package/dist/scripts/utils/docker-requirement-detector.js +124 -0
- package/dist/scripts/utils/docker-requirement-detector.js.map +1 -0
- package/dist/scripts/utils/env-config.d.ts +54 -0
- package/dist/scripts/utils/env-config.d.ts.map +1 -0
- package/dist/scripts/utils/env-config.js +414 -0
- package/dist/scripts/utils/env-config.js.map +1 -0
- package/dist/scripts/utils/jira-issue-type-fetcher.d.ts +70 -0
- package/dist/scripts/utils/jira-issue-type-fetcher.d.ts.map +1 -0
- package/dist/scripts/utils/jira-issue-type-fetcher.js +147 -0
- package/dist/scripts/utils/jira-issue-type-fetcher.js.map +1 -0
- package/dist/scripts/utils/language-detector.d.ts +14 -0
- package/dist/scripts/utils/language-detector.d.ts.map +1 -0
- package/dist/scripts/utils/language-detector.js +119 -0
- package/dist/scripts/utils/language-detector.js.map +1 -0
- package/dist/scripts/utils/markdown-parser.d.ts +55 -0
- package/dist/scripts/utils/markdown-parser.d.ts.map +1 -0
- package/dist/scripts/utils/markdown-parser.js +289 -0
- package/dist/scripts/utils/markdown-parser.js.map +1 -0
- package/dist/scripts/utils/project-detector.d.ts +17 -0
- package/dist/scripts/utils/project-detector.d.ts.map +1 -0
- package/dist/scripts/utils/project-detector.js +166 -0
- package/dist/scripts/utils/project-detector.js.map +1 -0
- package/dist/scripts/utils/project-finder.js +2 -2
- package/dist/scripts/utils/project-finder.js.map +1 -1
- package/dist/scripts/utils/release-notes-generator.d.ts +56 -0
- package/dist/scripts/utils/release-notes-generator.d.ts.map +1 -0
- package/dist/scripts/utils/release-notes-generator.js +162 -0
- package/dist/scripts/utils/release-notes-generator.js.map +1 -0
- package/dist/scripts/utils/spec-loader.d.ts +79 -0
- package/dist/scripts/utils/spec-loader.d.ts.map +1 -0
- package/dist/scripts/utils/spec-loader.js +80 -0
- package/dist/scripts/utils/spec-loader.js.map +1 -0
- package/dist/scripts/utils/spec-updater.d.ts +7 -0
- package/dist/scripts/utils/spec-updater.d.ts.map +1 -1
- package/dist/scripts/utils/spec-updater.js.map +1 -1
- package/dist/scripts/utils/tasks-converter.d.ts +57 -0
- package/dist/scripts/utils/tasks-converter.d.ts.map +1 -0
- package/dist/scripts/utils/tasks-converter.js +322 -0
- package/dist/scripts/utils/tasks-converter.js.map +1 -0
- package/dist/scripts/utils/tasks-format-validator.d.ts +36 -0
- package/dist/scripts/utils/tasks-format-validator.d.ts.map +1 -0
- package/dist/scripts/utils/tasks-format-validator.js +158 -0
- package/dist/scripts/utils/tasks-format-validator.js.map +1 -0
- package/dist/scripts/utils/template-applier.d.ts +37 -0
- package/dist/scripts/utils/template-applier.d.ts.map +1 -0
- package/dist/scripts/utils/template-applier.js +129 -0
- package/dist/scripts/utils/template-applier.js.map +1 -0
- package/dist/scripts/utils/test-config-generator.d.ts +12 -0
- package/dist/scripts/utils/test-config-generator.d.ts.map +1 -0
- package/dist/scripts/utils/test-config-generator.js +185 -0
- package/dist/scripts/utils/test-config-generator.js.map +1 -0
- package/dist/scripts/utils/test-runner.d.ts +31 -0
- package/dist/scripts/utils/test-runner.d.ts.map +1 -0
- package/dist/scripts/utils/test-runner.js +103 -0
- package/dist/scripts/utils/test-runner.js.map +1 -0
- package/dist/scripts/validate-phase.d.ts +1 -1
- package/dist/scripts/validate-phase.d.ts.map +1 -1
- package/dist/scripts/validate-phase.js +171 -8
- package/dist/scripts/validate-phase.js.map +1 -1
- package/dist/scripts/workflow-orchestrator.d.ts +8 -0
- package/dist/scripts/workflow-orchestrator.d.ts.map +1 -1
- package/dist/scripts/workflow-orchestrator.js +108 -7
- package/dist/scripts/workflow-orchestrator.js.map +1 -1
- package/dist/src/__tests__/integration/internationalization.test.d.ts +8 -0
- package/dist/src/__tests__/integration/internationalization.test.d.ts.map +1 -0
- package/dist/src/__tests__/integration/internationalization.test.js +333 -0
- package/dist/src/__tests__/integration/internationalization.test.js.map +1 -0
- package/dist/src/__tests__/integration/setup/claude-agent.test.d.ts +1 -1
- package/dist/src/__tests__/integration/setup/claude-agent.test.js +17 -20
- package/dist/src/__tests__/integration/setup/claude-agent.test.js.map +1 -1
- package/dist/src/__tests__/integration/setup/claude.test.js +82 -0
- package/dist/src/__tests__/integration/setup/claude.test.js.map +1 -1
- package/dist/src/__tests__/integration/setup/cursor.test.js +23 -19
- package/dist/src/__tests__/integration/setup/cursor.test.js.map +1 -1
- package/dist/src/__tests__/integration/setup/validation.test.js +41 -58
- package/dist/src/__tests__/integration/setup/validation.test.js.map +1 -1
- package/dist/src/cli.d.ts.map +1 -1
- package/dist/src/cli.js +209 -18
- package/dist/src/cli.js.map +1 -1
- package/dist/src/commands/setup-existing.d.ts +4 -0
- package/dist/src/commands/setup-existing.d.ts.map +1 -1
- package/dist/src/commands/setup-existing.js +367 -47
- package/dist/src/commands/setup-existing.js.map +1 -1
- package/docs/README.md +3 -1
- package/docs/context.md +59 -0
- package/docs/design-issue-55.md +240 -0
- package/docs/design-issue-56.md +181 -0
- package/docs/michi-development/testing/manual-verification-flow.md +2242 -0
- package/docs/michi-development/testing/pre-publish-checklist.md +560 -0
- package/docs/plan.md +275 -0
- package/docs/user-guide/getting-started/github-token-setup.md +509 -0
- package/docs/{getting-started → user-guide/getting-started}/quick-start.md +16 -0
- package/docs/{getting-started → user-guide/getting-started}/setup.md +28 -1
- package/docs/user-guide/guides/agent-skills-integration.md +217 -0
- package/docs/{guides → user-guide/guides}/customization.md +2 -2
- package/docs/user-guide/guides/internationalization.md +540 -0
- package/docs/{guides → user-guide/guides}/multi-project.md +3 -3
- package/docs/{guides → user-guide/guides}/phase-automation.md +92 -34
- package/docs/user-guide/guides/workflow.md +570 -0
- package/docs/user-guide/hands-on/README.md +142 -0
- package/docs/user-guide/hands-on/claude-agent-setup.md +455 -0
- package/docs/user-guide/hands-on/claude-setup.md +398 -0
- package/docs/user-guide/hands-on/cursor-setup.md +352 -0
- package/docs/user-guide/hands-on/troubleshooting.md +964 -0
- package/docs/user-guide/hands-on/verification-checklist.md +438 -0
- package/docs/user-guide/hands-on/workflow-walkthrough.md +906 -0
- package/docs/user-guide/reference/config.md +564 -0
- package/docs/{reference → user-guide/reference}/quick-reference.md +53 -40
- package/docs/{reference → user-guide/reference}/tasks-template.md +2 -2
- package/docs/user-guide/release/ci-setup.md +541 -0
- package/docs/user-guide/release/release-flow.md +476 -0
- package/docs/user-guide/templates/test-specs/README.md +173 -0
- package/docs/user-guide/templates/test-specs/e2e-test-spec-template.md +547 -0
- package/docs/user-guide/templates/test-specs/integration-test-spec-template.md +435 -0
- package/docs/user-guide/templates/test-specs/performance-test-spec-template.md +454 -0
- package/docs/user-guide/templates/test-specs/security-test-spec-template.md +664 -0
- package/docs/user-guide/templates/test-specs/unit-test-spec-template.md +328 -0
- package/docs/{testing → user-guide/testing}/integration-tests.md +24 -9
- package/docs/user-guide/testing/tdd-cycle.md +349 -0
- package/docs/user-guide/testing/test-execution-flow.md +396 -0
- package/docs/user-guide/testing/test-failure-handling.md +521 -0
- package/docs/user-guide/testing/test-planning-flow.md +181 -0
- package/docs/user-guide/testing-strategy.md +185 -0
- package/docs/verification-guide.md +518 -0
- package/package.json +7 -2
- package/scripts/__tests__/create-project.test.ts +67 -49
- package/scripts/__tests__/jira-transitions.test.ts +225 -0
- package/scripts/__tests__/multi-project-estimate.test.ts +36 -30
- package/scripts/__tests__/setup-existing-project.test.ts +98 -1
- package/scripts/__tests__/setup-interactive.test.ts +52 -46
- package/scripts/__tests__/spec-impl-workflow.test.ts +429 -0
- package/scripts/__tests__/spec-loader.test.ts +199 -0
- package/scripts/__tests__/validate-phase.test.ts +178 -54
- package/scripts/config/config-schema.ts +100 -50
- package/scripts/config-interactive.ts +191 -136
- package/scripts/confluence-sync.ts +0 -12
- package/scripts/constants/__tests__/environments.test.ts +42 -6
- package/scripts/constants/environments.ts +33 -13
- package/scripts/constants/test-commands.ts +96 -0
- package/scripts/jira-sync.ts +767 -232
- package/scripts/markdown-to-confluence.ts +1 -1
- package/scripts/phase-runner.ts +1056 -63
- package/scripts/pr-automation.ts +0 -1
- package/scripts/pre-flight-check.ts +1 -1
- package/scripts/pre-publish-check.sh +311 -0
- package/scripts/quick-verify.sh +115 -0
- package/scripts/setup-existing-project.ts +201 -117
- package/scripts/setup-interactive.ts +4 -4
- package/scripts/spec-impl-workflow.ts +505 -0
- package/scripts/template/__tests__/renderer.test.ts +1 -2
- package/scripts/test-execution-generator.ts +695 -0
- package/scripts/test-interactive.ts +779 -0
- package/scripts/test-new-features.ts +168 -0
- package/scripts/test-npm-package.sh +345 -0
- package/scripts/test-spec-generator.ts +574 -0
- package/scripts/test-workflow-stages.ts +53 -0
- package/scripts/utils/__tests__/aidlc-parser.test.ts +349 -0
- package/scripts/utils/__tests__/business-days.test.ts +214 -0
- package/scripts/utils/__tests__/config-loader.test.ts +1 -1
- package/scripts/utils/__tests__/config-validator.test.ts +309 -88
- package/scripts/utils/__tests__/env-config.test.ts +259 -0
- package/scripts/utils/__tests__/jira-issue-type-fetcher.test.ts +272 -0
- package/scripts/utils/__tests__/tasks-converter.test.ts +582 -0
- package/scripts/utils/__tests__/tasks-format-validator.test.ts +338 -0
- package/scripts/utils/__tests__/test-runner.test.ts +77 -0
- package/scripts/utils/aidlc-parser.ts +289 -0
- package/scripts/utils/business-days.ts +115 -0
- package/scripts/utils/ci-generator.ts +84 -0
- package/scripts/utils/config-loader.ts +2 -2
- package/scripts/utils/config-validator.ts +304 -117
- package/scripts/utils/confluence-approval.ts +167 -0
- package/scripts/utils/confluence-hierarchy.ts +2 -4
- package/scripts/utils/docker-generator.ts +151 -0
- package/scripts/utils/docker-requirement-detector.ts +153 -0
- package/scripts/utils/env-config.ts +526 -0
- package/scripts/utils/jira-issue-type-fetcher.ts +199 -0
- package/scripts/utils/language-detector.ts +139 -0
- package/scripts/utils/markdown-parser.ts +376 -0
- package/scripts/utils/project-detector.ts +192 -0
- package/scripts/utils/project-finder.ts +2 -2
- package/scripts/utils/release-notes-generator.ts +210 -0
- package/scripts/utils/spec-loader.ts +125 -0
- package/scripts/utils/spec-updater.ts +8 -1
- package/scripts/utils/tasks-converter.ts +601 -0
- package/scripts/utils/tasks-format-validator.ts +193 -0
- package/scripts/utils/template-applier.ts +202 -0
- package/scripts/utils/test-config-generator.ts +210 -0
- package/scripts/utils/test-runner.ts +133 -0
- package/scripts/validate-phase.ts +207 -12
- package/scripts/workflow-orchestrator.ts +130 -12
- package/templates/ci/github-actions/java.yml +54 -0
- package/templates/ci/github-actions/nodejs.yml +46 -0
- package/templates/ci/github-actions/php.yml +52 -0
- package/templates/ci/screwdriver/java.yaml +17 -0
- package/templates/ci/screwdriver/nodejs.yaml +17 -0
- package/templates/ci/screwdriver/php.yaml +20 -0
- package/templates/claude/agents/design-reviewer/AGENT.md +497 -0
- package/templates/claude/agents/e2e-first-planner/AGENT.md +410 -0
- package/templates/claude/agents/oss-license-checker/AGENT.md +265 -0
- package/templates/claude/agents/pr-resolver/AGENT.md +196 -0
- package/templates/claude/agents/stable-version-auditor/AGENT.md +279 -0
- package/templates/claude/commands/kiro/kiro-spec-impl.md +253 -0
- package/templates/claude/commands/kiro/kiro-spec-tasks.md +368 -0
- package/templates/claude/commands/michi/design-review.md +66 -0
- package/templates/claude/commands/michi/e2e-plan.md +113 -0
- package/templates/claude/commands/michi/license-check.md +80 -0
- package/templates/claude/commands/michi/pr-resolve.md +153 -0
- package/templates/claude/commands/michi/version-audit.md +91 -0
- package/templates/claude/skills/design-review/SKILL.md +648 -0
- package/templates/claude/skills/e2e-first-planning/SKILL.md +360 -0
- package/templates/claude/skills/oss-license/SKILL.md +232 -0
- package/templates/claude/skills/stable-version/SKILL.md +252 -0
- package/templates/claude-agent/README.md +7 -1
- package/templates/claude-agent/agents/.gitkeep +0 -0
- package/templates/claude-agent/agents/designer.md +79 -0
- package/templates/claude-agent/agents/developer.md +68 -0
- package/templates/claude-agent/agents/manager-agent.md +59 -0
- package/templates/claude-agent/agents/tester.md +101 -0
- package/templates/claude-agent/commands/kiro/.gitkeep +0 -0
- package/templates/claude-agent/commands/kiro/kiro-spec-impl.md +244 -0
- package/templates/claude-agent/commands/kiro/kiro-spec-tasks.md +354 -0
- package/templates/cline/rules/atlassian-integration.md +36 -0
- package/templates/cline/rules/michi-core.md +56 -0
- package/templates/codex/AGENTS.override.md +277 -0
- package/templates/codex/prompts/confluence-sync.md +177 -0
- package/templates/codex/rules/README.md +210 -0
- package/templates/common/.kiro/project.json.template +21 -0
- package/templates/cursor/commands/kiro/kiro-spec-impl.md +244 -0
- package/templates/cursor/commands/kiro/kiro-spec-tasks.md +354 -0
- package/templates/gemini/commands/README.md +41 -0
- package/templates/gemini/rules/GEMINI.md +80 -0
- package/docs/guides/workflow.md +0 -342
- package/docs/reference/config.md +0 -545
- package/scripts/setup-existing.sh +0 -279
- /package/docs/{contributing → michi-development/contributing}/development.md +0 -0
- /package/docs/{contributing → michi-development/contributing}/release.md +0 -0
- /package/docs/{testing-strategy.md → michi-development/testing-strategy.md} +0 -0
- /package/docs/{getting-started → user-guide/getting-started}/new-repository-setup.md +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tasks-format-validator.js","sourceRoot":"","sources":["../../../scripts/utils/tasks-format-validator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* テンプレート適用エンジン
|
|
3
|
+
* テスト仕様書テンプレートにデータを適用
|
|
4
|
+
*/
|
|
5
|
+
import type { Component, Flow, Requirement } from './markdown-parser.js';
|
|
6
|
+
export interface TestCase {
|
|
7
|
+
id: string;
|
|
8
|
+
name: string;
|
|
9
|
+
description: string;
|
|
10
|
+
preconditions: string[];
|
|
11
|
+
steps: string[];
|
|
12
|
+
expectedResults: string[];
|
|
13
|
+
type: 'normal' | 'error' | 'edge';
|
|
14
|
+
}
|
|
15
|
+
export interface TemplateData {
|
|
16
|
+
feature: string;
|
|
17
|
+
testType: string;
|
|
18
|
+
author?: string;
|
|
19
|
+
date: string;
|
|
20
|
+
purpose?: string;
|
|
21
|
+
scope?: string;
|
|
22
|
+
tool?: string;
|
|
23
|
+
version?: string;
|
|
24
|
+
testCases: TestCase[];
|
|
25
|
+
components?: Component[];
|
|
26
|
+
flows?: Flow[];
|
|
27
|
+
requirements?: Requirement[];
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* テスト仕様書テンプレートを読み込む
|
|
31
|
+
*/
|
|
32
|
+
export declare function loadTestSpecTemplate(testType: string, projectRoot?: string): string;
|
|
33
|
+
/**
|
|
34
|
+
* テンプレートにデータを適用
|
|
35
|
+
*/
|
|
36
|
+
export declare function applyTemplate(template: string, data: TemplateData): string;
|
|
37
|
+
//# sourceMappingURL=template-applier.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template-applier.d.ts","sourceRoot":"","sources":["../../../scripts/utils/template-applier.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAMzE,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;CACnC;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC;IACzB,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;IACf,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC;CAC9B;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,GAAE,MAAsB,GAAG,MAAM,CA+BlG;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,GAAG,MAAM,CA+C1E"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* テンプレート適用エンジン
|
|
3
|
+
* テスト仕様書テンプレートにデータを適用
|
|
4
|
+
*/
|
|
5
|
+
import { readFileSync, existsSync } from 'fs';
|
|
6
|
+
import { join, dirname } from 'path';
|
|
7
|
+
import { fileURLToPath } from 'url';
|
|
8
|
+
// ES module で __dirname を取得
|
|
9
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
10
|
+
const __dirname = dirname(__filename);
|
|
11
|
+
/**
|
|
12
|
+
* テスト仕様書テンプレートを読み込む
|
|
13
|
+
*/
|
|
14
|
+
export function loadTestSpecTemplate(testType, projectRoot = process.cwd()) {
|
|
15
|
+
const templatePath = join(projectRoot, '.kiro', 'settings', 'templates', 'test-specs', `${testType}-test-spec-template.md`);
|
|
16
|
+
// プロジェクトのテンプレートが存在しない場合、Michiのテンプレートを使用
|
|
17
|
+
if (!existsSync(templatePath)) {
|
|
18
|
+
const michiTemplatePath = join(__dirname, '..', '..', 'docs', 'user-guide', 'templates', 'test-specs', `${testType}-test-spec-template.md`);
|
|
19
|
+
if (existsSync(michiTemplatePath)) {
|
|
20
|
+
return readFileSync(michiTemplatePath, 'utf-8');
|
|
21
|
+
}
|
|
22
|
+
throw new Error(`テンプレートが見つかりません: ${testType}-test-spec-template.md`);
|
|
23
|
+
}
|
|
24
|
+
return readFileSync(templatePath, 'utf-8');
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* テンプレートにデータを適用
|
|
28
|
+
*/
|
|
29
|
+
export function applyTemplate(template, data) {
|
|
30
|
+
let result = template;
|
|
31
|
+
// 基本情報の置換
|
|
32
|
+
result = result.replace(/\{\{TEST_NAME\}\}/g, `${data.feature} ${data.testType}テスト`);
|
|
33
|
+
result = result.replace(/\{\{AUTHOR\}\}/g, data.author || 'Auto-generated');
|
|
34
|
+
result = result.replace(/\{\{DATE\}\}/g, data.date);
|
|
35
|
+
result = result.replace(/\{\{PURPOSE\}\}/g, data.purpose || `${data.feature}の${data.testType}テストを実施する`);
|
|
36
|
+
result = result.replace(/\{\{SCOPE\}\}/g, data.scope || `${data.feature}の全コンポーネント`);
|
|
37
|
+
result = result.replace(/\{\{TOOL_NAME\}\}/g, data.tool || 'Vitest');
|
|
38
|
+
result = result.replace(/\{\{VERSION\}\}/g, data.version || '1.0.0');
|
|
39
|
+
// 言語・フレームワーク情報
|
|
40
|
+
result = result.replace(/\{\{LANGUAGE\}\}/g, 'TypeScript');
|
|
41
|
+
result = result.replace(/\{\{LANGUAGE_VERSION\}\}/g, '5.x');
|
|
42
|
+
result = result.replace(/\{\{FRAMEWORK\}\}/g, 'Vitest');
|
|
43
|
+
result = result.replace(/\{\{FRAMEWORK_VERSION\}\}/g, '1.0.0');
|
|
44
|
+
result = result.replace(/\{\{MOCKING_LIBRARY\}\}/g, 'Vitest (built-in)');
|
|
45
|
+
result = result.replace(/\{\{DEPENDENCIES\}\}/g, 'Node.js 20+');
|
|
46
|
+
// テストデータパス
|
|
47
|
+
result = result.replace(/\{\{MOCK_DATA_PATH\}\}/g, `tests/__mocks__/${data.feature}`);
|
|
48
|
+
result = result.replace(/\{\{FIXTURES_PATH\}\}/g, `tests/__fixtures__/${data.feature}`);
|
|
49
|
+
result = result.replace(/\{\{DATA_SETUP_DESCRIPTION\}\}/g, 'モックデータはJSONファイルで管理');
|
|
50
|
+
// カバレッジ目標
|
|
51
|
+
result = result.replace(/\{\{TARGET_COVERAGE\}\}/g, '95');
|
|
52
|
+
result = result.replace(/\{\{MIN_COVERAGE\}\}/g, '80');
|
|
53
|
+
result = result.replace(/\{\{COVERAGE_REPORT_PATH\}\}/g, 'coverage/lcov.info');
|
|
54
|
+
result = result.replace(/\{\{HTML_REPORT_PATH\}\}/g, 'coverage/index.html');
|
|
55
|
+
// コンポーネント一覧テーブルの生成
|
|
56
|
+
if (data.components && data.components.length > 0) {
|
|
57
|
+
const componentTable = generateComponentTable(data.components);
|
|
58
|
+
result = result.replace(/\|\s*\{\{COMPONENT_1\}\}\s*\|.*?\n/, componentTable);
|
|
59
|
+
}
|
|
60
|
+
// テストケースセクションの生成
|
|
61
|
+
if (data.testCases && data.testCases.length > 0) {
|
|
62
|
+
const testCasesSection = generateTestCasesSection(data.testCases);
|
|
63
|
+
result = replaceTestCasesSection(result, testCasesSection);
|
|
64
|
+
}
|
|
65
|
+
// 残りのプレースホルダーをクリーンアップ
|
|
66
|
+
result = cleanupPlaceholders(result);
|
|
67
|
+
return result;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* コンポーネント一覧テーブルを生成
|
|
71
|
+
*/
|
|
72
|
+
function generateComponentTable(components) {
|
|
73
|
+
let table = '';
|
|
74
|
+
for (const component of components) {
|
|
75
|
+
const priority = component.requirements.length > 3 ? 'High' : 'Medium';
|
|
76
|
+
table += `| ${component.name} | Class | ${component.intent} | ${priority} |\n`;
|
|
77
|
+
}
|
|
78
|
+
return table;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* テストケースセクションを生成
|
|
82
|
+
*/
|
|
83
|
+
function generateTestCasesSection(testCases) {
|
|
84
|
+
let section = '';
|
|
85
|
+
for (const tc of testCases) {
|
|
86
|
+
section += `\n### Test Case ${tc.id}: ${tc.name}\n\n`;
|
|
87
|
+
section += `**Description**: ${tc.description}\n\n`;
|
|
88
|
+
if (tc.preconditions.length > 0) {
|
|
89
|
+
section += '**Preconditions**:\n';
|
|
90
|
+
tc.preconditions.forEach(p => section += `- ${p}\n`);
|
|
91
|
+
section += '\n';
|
|
92
|
+
}
|
|
93
|
+
section += '**Test Steps**:\n';
|
|
94
|
+
tc.steps.forEach((step, idx) => section += `${idx + 1}. ${step}\n`);
|
|
95
|
+
section += '\n';
|
|
96
|
+
section += '**Expected Results**:\n';
|
|
97
|
+
tc.expectedResults.forEach(r => section += `- ${r}\n`);
|
|
98
|
+
section += '\n';
|
|
99
|
+
section += '**Actual Results**:\n';
|
|
100
|
+
section += '[To be filled during test execution]\n\n';
|
|
101
|
+
section += '**Status**: [ ] Pass / [ ] Fail / [ ] Blocked\n\n';
|
|
102
|
+
section += '**Notes**:\n\n';
|
|
103
|
+
section += '---\n\n';
|
|
104
|
+
}
|
|
105
|
+
return section;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* テストケースセクションを置換
|
|
109
|
+
*/
|
|
110
|
+
function replaceTestCasesSection(template, testCasesSection) {
|
|
111
|
+
// "## 4. Test Cases"セクションを検索して置換
|
|
112
|
+
const sectionMatch = template.match(/##\s+4\.\s+Test Cases[\s\S]*?(?=##\s+\d+\.|$)/);
|
|
113
|
+
if (sectionMatch) {
|
|
114
|
+
return template.replace(sectionMatch[0], `## 4. Test Cases\n${testCasesSection}`);
|
|
115
|
+
}
|
|
116
|
+
// セクションが見つからない場合は末尾に追加
|
|
117
|
+
return template + `\n\n## 4. Test Cases\n${testCasesSection}`;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* プレースホルダーをクリーンアップ
|
|
121
|
+
*/
|
|
122
|
+
function cleanupPlaceholders(content) {
|
|
123
|
+
// 残っているプレースホルダーを削除または空文字に置換
|
|
124
|
+
return content
|
|
125
|
+
.replace(/\{\{[A-Z_0-9]+\}\}/g, '')
|
|
126
|
+
.replace(/\|\s*\|\s*\|\s*\|/g, '') // 空のテーブル行を削除
|
|
127
|
+
.replace(/\n{3,}/g, '\n\n'); // 連続する空行を2行に制限
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=template-applier.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template-applier.js","sourceRoot":"","sources":["../../../scripts/utils/template-applier.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* テスト設定生成ユーティリティ
|
|
3
|
+
* プロジェクトの言語に応じてテストフレームワーク設定を生成
|
|
4
|
+
*/
|
|
5
|
+
export interface TestConfig {
|
|
6
|
+
language: string;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* テストフレームワーク設定ファイルを生成
|
|
10
|
+
*/
|
|
11
|
+
export declare function generateTestConfig(feature: string, config: TestConfig, projectRoot?: string): Promise<void>;
|
|
12
|
+
//# sourceMappingURL=test-config-generator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-config-generator.d.ts","sourceRoot":"","sources":["../../../scripts/utils/test-config-generator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,UAAU,EAClB,WAAW,GAAE,MAAsB,GAClC,OAAO,CAAC,IAAI,CAAC,CAyBf"}
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* テスト設定生成ユーティリティ
|
|
3
|
+
* プロジェクトの言語に応じてテストフレームワーク設定を生成
|
|
4
|
+
*/
|
|
5
|
+
import { writeFileSync, existsSync } from 'fs';
|
|
6
|
+
import { join } from 'path';
|
|
7
|
+
/**
|
|
8
|
+
* テストフレームワーク設定ファイルを生成
|
|
9
|
+
*/
|
|
10
|
+
export async function generateTestConfig(feature, config, projectRoot = process.cwd()) {
|
|
11
|
+
const { language } = config;
|
|
12
|
+
switch (language) {
|
|
13
|
+
case 'Node.js/TypeScript':
|
|
14
|
+
await generateVitestConfig(projectRoot);
|
|
15
|
+
break;
|
|
16
|
+
case 'Java':
|
|
17
|
+
await generateJUnitConfig(projectRoot);
|
|
18
|
+
break;
|
|
19
|
+
case 'PHP':
|
|
20
|
+
await generatePHPUnitConfig(projectRoot);
|
|
21
|
+
break;
|
|
22
|
+
case 'Python':
|
|
23
|
+
await generatePytestConfig(projectRoot);
|
|
24
|
+
break;
|
|
25
|
+
case 'Go':
|
|
26
|
+
console.log(' ℹ️ Goは標準のtestingパッケージを使用(設定不要)');
|
|
27
|
+
break;
|
|
28
|
+
case 'Rust':
|
|
29
|
+
console.log(' ℹ️ Rustは標準のcargo testを使用(設定不要)');
|
|
30
|
+
break;
|
|
31
|
+
default:
|
|
32
|
+
console.log(' ⏭️ テスト設定: スキップ(言語不明)');
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Vitest設定を生成(Node.js/TypeScript)
|
|
37
|
+
*/
|
|
38
|
+
async function generateVitestConfig(projectRoot) {
|
|
39
|
+
const outputPath = join(projectRoot, 'vitest.config.ts');
|
|
40
|
+
// 既存の設定ファイルがある場合はスキップ
|
|
41
|
+
if (existsSync(outputPath)) {
|
|
42
|
+
console.log(' ℹ️ vitest.config.ts: 既存(スキップ)');
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
const config = `import { defineConfig } from 'vitest/config';
|
|
46
|
+
|
|
47
|
+
export default defineConfig({
|
|
48
|
+
test: {
|
|
49
|
+
globals: true,
|
|
50
|
+
environment: 'node',
|
|
51
|
+
coverage: {
|
|
52
|
+
provider: 'v8',
|
|
53
|
+
reporter: ['text', 'json', 'html', 'lcov'],
|
|
54
|
+
exclude: [
|
|
55
|
+
'node_modules/',
|
|
56
|
+
'dist/',
|
|
57
|
+
'**/*.d.ts',
|
|
58
|
+
'**/*.config.*',
|
|
59
|
+
'**/mockData',
|
|
60
|
+
'tests/fixtures'
|
|
61
|
+
],
|
|
62
|
+
thresholds: {
|
|
63
|
+
lines: 80,
|
|
64
|
+
functions: 80,
|
|
65
|
+
branches: 80,
|
|
66
|
+
statements: 80
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
`;
|
|
72
|
+
writeFileSync(outputPath, config, 'utf-8');
|
|
73
|
+
console.log(' ✅ テスト設定: vitest.config.ts');
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* JUnit設定を生成(Java)
|
|
77
|
+
*/
|
|
78
|
+
async function generateJUnitConfig(projectRoot) {
|
|
79
|
+
const outputPath = join(projectRoot, 'build.gradle');
|
|
80
|
+
// 既存のbuild.gradleがある場合はスキップ
|
|
81
|
+
if (!existsSync(outputPath)) {
|
|
82
|
+
const config = `plugins {
|
|
83
|
+
id 'java'
|
|
84
|
+
id 'jacoco'
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
group = 'com.example'
|
|
88
|
+
version = '1.0.0'
|
|
89
|
+
sourceCompatibility = '17'
|
|
90
|
+
|
|
91
|
+
repositories {
|
|
92
|
+
mavenCentral()
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
dependencies {
|
|
96
|
+
testImplementation 'org.junit.jupiter:junit-jupiter:5.10.0'
|
|
97
|
+
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
test {
|
|
101
|
+
useJUnitPlatform()
|
|
102
|
+
finalizedBy jacocoTestReport
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
jacoco {
|
|
106
|
+
toolVersion = "0.8.11"
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
jacocoTestReport {
|
|
110
|
+
dependsOn test
|
|
111
|
+
reports {
|
|
112
|
+
xml.required = true
|
|
113
|
+
html.required = true
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
`;
|
|
117
|
+
writeFileSync(outputPath, config, 'utf-8');
|
|
118
|
+
console.log(' ✅ テスト設定: build.gradle');
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
console.log(' ℹ️ build.gradle: 既存(スキップ)');
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* PHPUnit設定を生成(PHP)
|
|
126
|
+
*/
|
|
127
|
+
async function generatePHPUnitConfig(projectRoot) {
|
|
128
|
+
const outputPath = join(projectRoot, 'phpunit.xml');
|
|
129
|
+
// 既存の設定ファイルがある場合はスキップ
|
|
130
|
+
if (existsSync(outputPath)) {
|
|
131
|
+
console.log(' ℹ️ phpunit.xml: 既存(スキップ)');
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
const config = `<?xml version="1.0" encoding="UTF-8"?>
|
|
135
|
+
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
136
|
+
xsi:noNamespaceSchemaLocation="vendor/phpunit/phpunit/phpunit.xsd"
|
|
137
|
+
bootstrap="vendor/autoload.php"
|
|
138
|
+
colors="true">
|
|
139
|
+
<testsuites>
|
|
140
|
+
<testsuite name="Unit">
|
|
141
|
+
<directory suffix="Test.php">./tests/Unit</directory>
|
|
142
|
+
</testsuite>
|
|
143
|
+
<testsuite name="Feature">
|
|
144
|
+
<directory suffix="Test.php">./tests/Feature</directory>
|
|
145
|
+
</testsuite>
|
|
146
|
+
</testsuites>
|
|
147
|
+
<coverage>
|
|
148
|
+
<report>
|
|
149
|
+
<html outputDirectory="coverage/html"/>
|
|
150
|
+
<clover outputFile="coverage/clover.xml"/>
|
|
151
|
+
</report>
|
|
152
|
+
</coverage>
|
|
153
|
+
</phpunit>
|
|
154
|
+
`;
|
|
155
|
+
writeFileSync(outputPath, config, 'utf-8');
|
|
156
|
+
console.log(' ✅ テスト設定: phpunit.xml');
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Pytest設定を生成(Python)
|
|
160
|
+
*/
|
|
161
|
+
async function generatePytestConfig(projectRoot) {
|
|
162
|
+
const outputPath = join(projectRoot, 'pytest.ini');
|
|
163
|
+
// 既存の設定ファイルがある場合はスキップ
|
|
164
|
+
if (existsSync(outputPath)) {
|
|
165
|
+
console.log(' ℹ️ pytest.ini: 既存(スキップ)');
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
const config = `[pytest]
|
|
169
|
+
testpaths = tests
|
|
170
|
+
python_files = test_*.py
|
|
171
|
+
python_classes = Test*
|
|
172
|
+
python_functions = test_*
|
|
173
|
+
|
|
174
|
+
# Coverage settings
|
|
175
|
+
addopts =
|
|
176
|
+
--cov=src
|
|
177
|
+
--cov-report=html
|
|
178
|
+
--cov-report=xml
|
|
179
|
+
--cov-report=term-missing
|
|
180
|
+
--cov-fail-under=80
|
|
181
|
+
`;
|
|
182
|
+
writeFileSync(outputPath, config, 'utf-8');
|
|
183
|
+
console.log(' ✅ テスト設定: pytest.ini');
|
|
184
|
+
}
|
|
185
|
+
//# sourceMappingURL=test-config-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-config-generator.js","sourceRoot":"","sources":["../../../scripts/utils/test-config-generator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAM5B;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,OAAe,EACf,MAAkB,EAClB,cAAsB,OAAO,CAAC,GAAG,EAAE;IAEnC,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;IAE5B,QAAQ,QAAQ,EAAE,CAAC;QACnB,KAAK,oBAAoB;YACvB,MAAM,oBAAoB,CAAC,WAAW,CAAC,CAAC;YACxC,MAAM;QACR,KAAK,MAAM;YACT,MAAM,mBAAmB,CAAC,WAAW,CAAC,CAAC;YACvC,MAAM;QACR,KAAK,KAAK;YACR,MAAM,qBAAqB,CAAC,WAAW,CAAC,CAAC;YACzC,MAAM;QACR,KAAK,QAAQ;YACX,MAAM,oBAAoB,CAAC,WAAW,CAAC,CAAC;YACxC,MAAM;QACR,KAAK,IAAI;YACP,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;YAClD,MAAM;QACR,KAAK,MAAM;YACT,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;YAClD,MAAM;QACR;YACE,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;IAC1C,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,oBAAoB,CAAC,WAAmB;IACrD,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;IAEzD,sBAAsB;IACtB,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;QACjD,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;CA0BhB,CAAC;IAEA,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3C,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;AAC9C,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,mBAAmB,CAAC,WAAmB;IACpD,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;IAErD,4BAA4B;IAC5B,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkClB,CAAC;QAEE,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;IAC1C,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;IAC/C,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,qBAAqB,CAAC,WAAmB;IACtD,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IAEpD,sBAAsB;IACtB,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;QAC5C,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;CAoBhB,CAAC;IAEA,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3C,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,oBAAoB,CAAC,WAAmB;IACrD,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IAEnD,sBAAsB;IACtB,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;QAC3C,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG;;;;;;;;;;;;;CAahB,CAAC;IAEA,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3C,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;AACxC,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* テスト実行ユーティリティ
|
|
3
|
+
* プロジェクトの言語に応じてテストを実行し、レポートを生成
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* テスト実行結果
|
|
7
|
+
*/
|
|
8
|
+
export interface TestResult {
|
|
9
|
+
success: boolean;
|
|
10
|
+
language: string;
|
|
11
|
+
command: string;
|
|
12
|
+
output: string;
|
|
13
|
+
error?: string;
|
|
14
|
+
duration: number;
|
|
15
|
+
timestamp: string;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* テストを実行
|
|
19
|
+
* @param language プロジェクトの言語
|
|
20
|
+
* @param projectRoot プロジェクトルートディレクトリ
|
|
21
|
+
* @returns テスト実行結果
|
|
22
|
+
*/
|
|
23
|
+
export declare function executeTests(language: string, projectRoot?: string): Promise<TestResult>;
|
|
24
|
+
/**
|
|
25
|
+
* テスト結果からMarkdownレポートを生成
|
|
26
|
+
* @param result テスト実行結果
|
|
27
|
+
* @param featureName 機能名
|
|
28
|
+
* @returns Markdownレポート
|
|
29
|
+
*/
|
|
30
|
+
export declare function generateTestReport(result: TestResult, featureName: string): string;
|
|
31
|
+
//# sourceMappingURL=test-runner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-runner.d.ts","sourceRoot":"","sources":["../../../scripts/utils/test-runner.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;GAKG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,MAAM,EAChB,WAAW,GAAE,MAAsB,GAClC,OAAO,CAAC,UAAU,CAAC,CAoCrB;AAwBD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,UAAU,EAClB,WAAW,EAAE,MAAM,GAClB,MAAM,CA+BR"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* テスト実行ユーティリティ
|
|
3
|
+
* プロジェクトの言語に応じてテストを実行し、レポートを生成
|
|
4
|
+
*/
|
|
5
|
+
import { exec } from 'child_process';
|
|
6
|
+
import { promisify } from 'util';
|
|
7
|
+
const execAsync = promisify(exec);
|
|
8
|
+
/**
|
|
9
|
+
* テストを実行
|
|
10
|
+
* @param language プロジェクトの言語
|
|
11
|
+
* @param projectRoot プロジェクトルートディレクトリ
|
|
12
|
+
* @returns テスト実行結果
|
|
13
|
+
*/
|
|
14
|
+
export async function executeTests(language, projectRoot = process.cwd()) {
|
|
15
|
+
const startTime = Date.now();
|
|
16
|
+
const timestamp = new Date().toISOString();
|
|
17
|
+
// 言語に応じてテストコマンドを決定
|
|
18
|
+
const command = getTestCommand(language);
|
|
19
|
+
try {
|
|
20
|
+
const { stdout, stderr } = await execAsync(command, {
|
|
21
|
+
cwd: projectRoot,
|
|
22
|
+
env: { ...process.env, CI: 'true' }
|
|
23
|
+
});
|
|
24
|
+
const duration = (Date.now() - startTime) / 1000;
|
|
25
|
+
return {
|
|
26
|
+
success: true,
|
|
27
|
+
language,
|
|
28
|
+
command,
|
|
29
|
+
output: stdout + stderr,
|
|
30
|
+
duration,
|
|
31
|
+
timestamp
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
const duration = (Date.now() - startTime) / 1000;
|
|
36
|
+
return {
|
|
37
|
+
success: false,
|
|
38
|
+
language,
|
|
39
|
+
command,
|
|
40
|
+
output: error.stdout || '',
|
|
41
|
+
error: error.message || String(error),
|
|
42
|
+
duration,
|
|
43
|
+
timestamp
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* 言語に応じたテストコマンドを取得
|
|
49
|
+
*/
|
|
50
|
+
function getTestCommand(language) {
|
|
51
|
+
switch (language) {
|
|
52
|
+
case 'Node.js/TypeScript':
|
|
53
|
+
return 'npm test';
|
|
54
|
+
case 'Java':
|
|
55
|
+
return 'gradle test';
|
|
56
|
+
case 'PHP':
|
|
57
|
+
return 'composer test';
|
|
58
|
+
case 'Python':
|
|
59
|
+
return 'pytest';
|
|
60
|
+
case 'Go':
|
|
61
|
+
return 'go test ./...';
|
|
62
|
+
case 'Rust':
|
|
63
|
+
return 'cargo test';
|
|
64
|
+
default:
|
|
65
|
+
throw new Error(`Unsupported language: ${language}`);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* テスト結果からMarkdownレポートを生成
|
|
70
|
+
* @param result テスト実行結果
|
|
71
|
+
* @param featureName 機能名
|
|
72
|
+
* @returns Markdownレポート
|
|
73
|
+
*/
|
|
74
|
+
export function generateTestReport(result, featureName) {
|
|
75
|
+
const status = result.success ? '✅ 成功' : '❌ 失敗';
|
|
76
|
+
let report = `# テスト実行レポート: ${featureName}\n\n`;
|
|
77
|
+
report += '## 実行結果\n\n';
|
|
78
|
+
report += `- **ステータス**: ${status}\n`;
|
|
79
|
+
report += `- **言語**: ${result.language}\n`;
|
|
80
|
+
report += `- **コマンド**: \`${result.command}\`\n`;
|
|
81
|
+
report += `- **実行時間**: ${result.duration.toFixed(2)}秒\n`;
|
|
82
|
+
report += `- **タイムスタンプ**: ${result.timestamp}\n\n`;
|
|
83
|
+
if (result.success) {
|
|
84
|
+
report += '## テスト出力\n\n';
|
|
85
|
+
report += '```\n';
|
|
86
|
+
report += result.output;
|
|
87
|
+
report += '\n```\n\n';
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
report += '## エラー情報\n\n';
|
|
91
|
+
report += '```\n';
|
|
92
|
+
report += result.error || 'Unknown error';
|
|
93
|
+
report += '\n```\n\n';
|
|
94
|
+
if (result.output) {
|
|
95
|
+
report += '## テスト出力\n\n';
|
|
96
|
+
report += '```\n';
|
|
97
|
+
report += result.output;
|
|
98
|
+
report += '\n```\n\n';
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
return report;
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=test-runner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-runner.js","sourceRoot":"","sources":["../../../scripts/utils/test-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* フェーズ完了バリデーションスクリプト
|
|
3
3
|
* 各フェーズで必須項目が完了しているかチェック
|
|
4
4
|
*/
|
|
5
|
-
type Phase = 'requirements' | 'design' | 'tasks';
|
|
5
|
+
type Phase = 'requirements' | 'design' | 'test-type-selection' | 'test-spec' | 'tasks' | 'environment-setup' | 'phase-a' | 'phase-b';
|
|
6
6
|
interface ValidationResult {
|
|
7
7
|
phase: Phase;
|
|
8
8
|
valid: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate-phase.d.ts","sourceRoot":"","sources":["../../scripts/validate-phase.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,KAAK,KAAK,
|
|
1
|
+
{"version":3,"file":"validate-phase.d.ts","sourceRoot":"","sources":["../../scripts/validate-phase.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,KAAK,KAAK,GACN,cAAc,GACd,QAAQ,GACR,qBAAqB,GACrB,WAAW,GACX,OAAO,GACP,mBAAmB,GACnB,SAAS,GACT,SAAS,CAAC;AAEd,UAAU,gBAAgB;IACxB,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAuVD;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,gBAAgB,CAsD7E"}
|