@sk8metal/michi-cli 0.3.0 → 0.5.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.
Files changed (237) hide show
  1. package/CHANGELOG.md +83 -0
  2. package/dist/scripts/__tests__/spec-impl-workflow.test.js +4 -2
  3. package/dist/scripts/__tests__/spec-impl-workflow.test.js.map +1 -1
  4. package/dist/scripts/config/config-schema.d.ts +52 -0
  5. package/dist/scripts/config/config-schema.d.ts.map +1 -1
  6. package/dist/scripts/config/config-schema.js +25 -0
  7. package/dist/scripts/config/config-schema.js.map +1 -1
  8. package/dist/scripts/config-global.d.ts +10 -0
  9. package/dist/scripts/config-global.d.ts.map +1 -0
  10. package/dist/scripts/config-global.js +111 -0
  11. package/dist/scripts/config-global.js.map +1 -0
  12. package/dist/scripts/confluence-sync.d.ts +22 -4
  13. package/dist/scripts/confluence-sync.d.ts.map +1 -1
  14. package/dist/scripts/confluence-sync.js +22 -12
  15. package/dist/scripts/confluence-sync.js.map +1 -1
  16. package/dist/scripts/jira-sync.d.ts.map +1 -1
  17. package/dist/scripts/jira-sync.js +201 -167
  18. package/dist/scripts/jira-sync.js.map +1 -1
  19. package/dist/scripts/list-projects.js.map +1 -1
  20. package/dist/scripts/multi-project-estimate.js.map +1 -1
  21. package/dist/scripts/phase-runner.d.ts +1 -1
  22. package/dist/scripts/phase-runner.d.ts.map +1 -1
  23. package/dist/scripts/phase-runner.js +295 -522
  24. package/dist/scripts/phase-runner.js.map +1 -1
  25. package/dist/scripts/pr-automation.d.ts.map +1 -1
  26. package/dist/scripts/pr-automation.js +11 -3
  27. package/dist/scripts/pr-automation.js.map +1 -1
  28. package/dist/scripts/pre-flight-check.d.ts.map +1 -1
  29. package/dist/scripts/pre-flight-check.js +10 -6
  30. package/dist/scripts/pre-flight-check.js.map +1 -1
  31. package/dist/scripts/resource-dashboard.js.map +1 -1
  32. package/dist/scripts/spec-impl-workflow.d.ts.map +1 -1
  33. package/dist/scripts/spec-impl-workflow.js +23 -7
  34. package/dist/scripts/spec-impl-workflow.js.map +1 -1
  35. package/dist/scripts/template/renderer.d.ts +1 -1
  36. package/dist/scripts/template/renderer.d.ts.map +1 -1
  37. package/dist/scripts/test-interactive.d.ts.map +1 -1
  38. package/dist/scripts/test-interactive.js +0 -15
  39. package/dist/scripts/test-interactive.js.map +1 -1
  40. package/dist/scripts/test-new-features.js +6 -3
  41. package/dist/scripts/test-new-features.js.map +1 -1
  42. package/dist/scripts/test-spec-generator.d.ts.map +1 -1
  43. package/dist/scripts/test-spec-generator.js +1 -2
  44. package/dist/scripts/test-spec-generator.js.map +1 -1
  45. package/dist/scripts/utils/__tests__/config-loader.test.js +114 -1
  46. package/dist/scripts/utils/__tests__/config-loader.test.js.map +1 -1
  47. package/dist/scripts/utils/__tests__/config-validator.test.js +2 -0
  48. package/dist/scripts/utils/__tests__/config-validator.test.js.map +1 -1
  49. package/dist/scripts/utils/__tests__/env-config.test.js +0 -2
  50. package/dist/scripts/utils/__tests__/env-config.test.js.map +1 -1
  51. package/dist/scripts/utils/__tests__/project-meta.test.d.ts +6 -0
  52. package/dist/scripts/utils/__tests__/project-meta.test.d.ts.map +1 -0
  53. package/dist/scripts/utils/__tests__/project-meta.test.js +154 -0
  54. package/dist/scripts/utils/__tests__/project-meta.test.js.map +1 -0
  55. package/dist/scripts/utils/__tests__/security-validator.test.d.ts +6 -0
  56. package/dist/scripts/utils/__tests__/security-validator.test.d.ts.map +1 -0
  57. package/dist/scripts/utils/__tests__/security-validator.test.js +219 -0
  58. package/dist/scripts/utils/__tests__/security-validator.test.js.map +1 -0
  59. package/dist/scripts/utils/config-loader.d.ts +14 -3
  60. package/dist/scripts/utils/config-loader.d.ts.map +1 -1
  61. package/dist/scripts/utils/config-loader.js +284 -46
  62. package/dist/scripts/utils/config-loader.js.map +1 -1
  63. package/dist/scripts/utils/config-sections.d.ts +54 -0
  64. package/dist/scripts/utils/config-sections.d.ts.map +1 -0
  65. package/dist/scripts/utils/config-sections.js +178 -0
  66. package/dist/scripts/utils/config-sections.js.map +1 -0
  67. package/dist/scripts/utils/config-validator.d.ts +4 -0
  68. package/dist/scripts/utils/config-validator.d.ts.map +1 -1
  69. package/dist/scripts/utils/config-validator.js +57 -1
  70. package/dist/scripts/utils/config-validator.js.map +1 -1
  71. package/dist/scripts/utils/confluence-approval.d.ts.map +1 -1
  72. package/dist/scripts/utils/confluence-approval.js +5 -3
  73. package/dist/scripts/utils/confluence-approval.js.map +1 -1
  74. package/dist/scripts/utils/confluence-hierarchy.d.ts.map +1 -1
  75. package/dist/scripts/utils/confluence-hierarchy.js.map +1 -1
  76. package/dist/scripts/utils/env-config.d.ts +1 -1
  77. package/dist/scripts/utils/env-config.d.ts.map +1 -1
  78. package/dist/scripts/utils/env-config.js +2 -14
  79. package/dist/scripts/utils/env-config.js.map +1 -1
  80. package/dist/scripts/utils/interactive-helpers.d.ts +32 -0
  81. package/dist/scripts/utils/interactive-helpers.d.ts.map +1 -0
  82. package/dist/scripts/utils/interactive-helpers.js +92 -0
  83. package/dist/scripts/utils/interactive-helpers.js.map +1 -0
  84. package/dist/scripts/utils/jira-issue-type-fetcher.d.ts.map +1 -1
  85. package/dist/scripts/utils/jira-issue-type-fetcher.js +27 -18
  86. package/dist/scripts/utils/jira-issue-type-fetcher.js.map +1 -1
  87. package/dist/scripts/utils/project-meta.d.ts +9 -0
  88. package/dist/scripts/utils/project-meta.d.ts.map +1 -1
  89. package/dist/scripts/utils/project-meta.js +22 -0
  90. package/dist/scripts/utils/project-meta.js.map +1 -1
  91. package/dist/scripts/utils/release-notes-generator.d.ts.map +1 -1
  92. package/dist/scripts/utils/release-notes-generator.js +2 -1
  93. package/dist/scripts/utils/release-notes-generator.js.map +1 -1
  94. package/dist/scripts/utils/security-validator.d.ts +55 -0
  95. package/dist/scripts/utils/security-validator.d.ts.map +1 -0
  96. package/dist/scripts/utils/security-validator.js +232 -0
  97. package/dist/scripts/utils/security-validator.js.map +1 -0
  98. package/dist/scripts/utils/spec-updater.d.ts +19 -0
  99. package/dist/scripts/utils/spec-updater.d.ts.map +1 -1
  100. package/dist/scripts/utils/spec-updater.js.map +1 -1
  101. package/dist/scripts/utils/tasks-converter.d.ts.map +1 -1
  102. package/dist/scripts/utils/tasks-converter.js +2 -2
  103. package/dist/scripts/utils/tasks-converter.js.map +1 -1
  104. package/dist/scripts/utils/tasks-format-validator.d.ts.map +1 -1
  105. package/dist/scripts/utils/tasks-format-validator.js +0 -12
  106. package/dist/scripts/utils/tasks-format-validator.js.map +1 -1
  107. package/dist/scripts/utils/test-runner.d.ts.map +1 -1
  108. package/dist/scripts/utils/test-runner.js +3 -2
  109. package/dist/scripts/utils/test-runner.js.map +1 -1
  110. package/dist/scripts/validate-phase.d.ts +1 -1
  111. package/dist/scripts/validate-phase.d.ts.map +1 -1
  112. package/dist/scripts/validate-phase.js +12 -62
  113. package/dist/scripts/validate-phase.js.map +1 -1
  114. package/dist/scripts/workflow-orchestrator.d.ts.map +1 -1
  115. package/dist/scripts/workflow-orchestrator.js +11 -16
  116. package/dist/scripts/workflow-orchestrator.js.map +1 -1
  117. package/dist/src/__tests__/integration/setup/init.test.d.ts +5 -0
  118. package/dist/src/__tests__/integration/setup/init.test.d.ts.map +1 -0
  119. package/dist/src/__tests__/integration/setup/init.test.js +352 -0
  120. package/dist/src/__tests__/integration/setup/init.test.js.map +1 -0
  121. package/dist/src/cli.d.ts.map +1 -1
  122. package/dist/src/cli.js +67 -21
  123. package/dist/src/cli.js.map +1 -1
  124. package/dist/src/commands/__tests__/init.test.d.ts +5 -0
  125. package/dist/src/commands/__tests__/init.test.d.ts.map +1 -0
  126. package/dist/src/commands/__tests__/init.test.js +255 -0
  127. package/dist/src/commands/__tests__/init.test.js.map +1 -0
  128. package/dist/src/commands/__tests__/migrate.test.d.ts +5 -0
  129. package/dist/src/commands/__tests__/migrate.test.d.ts.map +1 -0
  130. package/dist/src/commands/__tests__/migrate.test.js +216 -0
  131. package/dist/src/commands/__tests__/migrate.test.js.map +1 -0
  132. package/dist/src/commands/config-validate.d.ts +9 -0
  133. package/dist/src/commands/config-validate.d.ts.map +1 -0
  134. package/dist/src/commands/config-validate.js +90 -0
  135. package/dist/src/commands/config-validate.js.map +1 -0
  136. package/dist/src/commands/init.d.ts +29 -0
  137. package/dist/src/commands/init.d.ts.map +1 -0
  138. package/dist/src/commands/init.js +513 -0
  139. package/dist/src/commands/init.js.map +1 -0
  140. package/dist/src/commands/migrate.d.ts +25 -0
  141. package/dist/src/commands/migrate.d.ts.map +1 -0
  142. package/dist/src/commands/migrate.js +341 -0
  143. package/dist/src/commands/migrate.js.map +1 -0
  144. package/dist/src/commands/setup-existing.d.ts.map +1 -1
  145. package/dist/src/commands/setup-existing.js +0 -1
  146. package/dist/src/commands/setup-existing.js.map +1 -1
  147. package/dist/vitest.config.d.ts.map +1 -1
  148. package/dist/vitest.config.js +32 -8
  149. package/dist/vitest.config.js.map +1 -1
  150. package/docs/michi-development/design/config-unification.md +4789 -0
  151. package/docs/user-guide/getting-started/github-token-setup.md +2 -1
  152. package/docs/user-guide/getting-started/new-repository-setup.md +1 -1
  153. package/docs/user-guide/getting-started/quick-start.md +1 -1
  154. package/docs/user-guide/getting-started/setup.md +35 -14
  155. package/docs/user-guide/guides/customization.md +64 -11
  156. package/docs/user-guide/guides/workflow.md +35 -21
  157. package/docs/user-guide/hands-on/claude-agent-setup.md +2 -2
  158. package/docs/user-guide/hands-on/claude-setup.md +2 -2
  159. package/docs/user-guide/hands-on/cursor-setup.md +2 -2
  160. package/docs/user-guide/hands-on/workflow-walkthrough.md +4 -1
  161. package/docs/user-guide/reference/config.md +30 -5
  162. package/docs/user-guide/reference/quick-reference.md +68 -74
  163. package/docs/user-guide/testing/test-planning-flow.md +4 -0
  164. package/env.example +1 -1
  165. package/package.json +3 -5
  166. package/scripts/__tests__/spec-impl-workflow.test.ts +5 -2
  167. package/scripts/config/config-schema.ts +40 -0
  168. package/scripts/config-global.ts +160 -0
  169. package/scripts/confluence-sync.ts +91 -27
  170. package/scripts/jira-sync.ts +284 -218
  171. package/scripts/list-projects.ts +2 -2
  172. package/scripts/multi-project-estimate.ts +3 -3
  173. package/scripts/phase-runner.ts +391 -594
  174. package/scripts/pr-automation.ts +15 -5
  175. package/scripts/pre-flight-check.ts +20 -9
  176. package/scripts/pre-publish-check.sh +3 -34
  177. package/scripts/resource-dashboard.ts +4 -4
  178. package/scripts/spec-impl-workflow.ts +23 -7
  179. package/scripts/template/renderer.ts +1 -1
  180. package/scripts/test-interactive.ts +0 -19
  181. package/scripts/test-new-features.ts +10 -7
  182. package/scripts/test-npm-package.sh +3 -34
  183. package/scripts/test-spec-generator.ts +3 -7
  184. package/scripts/utils/__tests__/config-loader.test.ts +149 -0
  185. package/scripts/utils/__tests__/config-validator.test.ts +2 -0
  186. package/scripts/utils/__tests__/env-config.test.ts +0 -2
  187. package/scripts/utils/__tests__/project-meta.test.ts +192 -0
  188. package/scripts/utils/__tests__/security-validator.test.ts +272 -0
  189. package/scripts/utils/config-loader.ts +328 -68
  190. package/scripts/utils/config-sections.ts +316 -0
  191. package/scripts/utils/config-validator.ts +66 -1
  192. package/scripts/utils/confluence-approval.ts +8 -6
  193. package/scripts/utils/confluence-hierarchy.ts +27 -27
  194. package/scripts/utils/env-config.ts +2 -14
  195. package/scripts/utils/interactive-helpers.ts +135 -0
  196. package/scripts/utils/jira-issue-type-fetcher.ts +29 -21
  197. package/scripts/utils/project-meta.ts +27 -0
  198. package/scripts/utils/release-notes-generator.ts +3 -2
  199. package/scripts/utils/security-validator.ts +286 -0
  200. package/scripts/utils/spec-updater.ts +37 -15
  201. package/scripts/utils/tasks-converter.ts +4 -6
  202. package/scripts/utils/tasks-format-validator.ts +0 -13
  203. package/scripts/utils/test-runner.ts +4 -3
  204. package/scripts/validate-phase.ts +21 -80
  205. package/scripts/workflow-orchestrator.ts +16 -25
  206. package/templates/claude/commands/kiro/kiro-spec-impl.md +5 -1
  207. package/templates/claude/commands/kiro/kiro-spec-tasks.md +3 -1
  208. package/templates/claude/commands/michi/confluence-sync.md +8 -2
  209. package/templates/claude/commands/michi/design-review.md +4 -0
  210. package/templates/claude/commands/michi/e2e-plan.md +4 -0
  211. package/templates/claude/commands/michi/license-check.md +4 -0
  212. package/templates/claude/commands/michi/pr-resolve.md +4 -0
  213. package/templates/claude/commands/michi/project-switch.md +8 -2
  214. package/templates/claude/commands/michi/spec-design.md +78 -0
  215. package/templates/claude/commands/michi/spec-impl.md +716 -0
  216. package/templates/claude/commands/michi/test-planning.md +174 -0
  217. package/templates/claude/commands/michi/validate-design.md +58 -0
  218. package/templates/claude/commands/michi/version-audit.md +4 -0
  219. package/templates/claude-agent/commands/kiro/kiro-spec-impl.md +1 -1
  220. package/templates/cursor/commands/kiro/kiro-spec-impl.md +1 -1
  221. package/templates/michi/cc-sdd-overrides/README.md +8 -0
  222. package/templates/michi/cc-sdd-overrides/settings/rules/design-review-michi.md +53 -0
  223. package/dist/scripts/config-interactive.d.ts +0 -10
  224. package/dist/scripts/config-interactive.d.ts.map +0 -1
  225. package/dist/scripts/config-interactive.js +0 -372
  226. package/dist/scripts/config-interactive.js.map +0 -1
  227. package/dist/scripts/setup-existing-project.d.ts +0 -15
  228. package/dist/scripts/setup-existing-project.d.ts.map +0 -1
  229. package/dist/scripts/setup-existing-project.js +0 -455
  230. package/dist/scripts/setup-existing-project.js.map +0 -1
  231. package/dist/scripts/setup-interactive.d.ts +0 -10
  232. package/dist/scripts/setup-interactive.d.ts.map +0 -1
  233. package/dist/scripts/setup-interactive.js +0 -413
  234. package/dist/scripts/setup-interactive.js.map +0 -1
  235. package/scripts/config-interactive.ts +0 -550
  236. package/scripts/setup-existing-project.ts +0 -585
  237. package/scripts/setup-interactive.ts +0 -565
@@ -4,83 +4,65 @@
4
4
 
5
5
  ## 新規プロジェクト作成
6
6
 
7
- ### パターンA: 既存リポジトリにMichi共通ルール・コマンドを追加(最も簡単 ⭐)
7
+ ### 推奨: `michi init` コマンド(最も簡単 ⭐)
8
8
 
9
9
  ```bash
10
- # 既存プロジェクトに移動
10
+ # 既存リポジトリに移動
11
11
  cd /path/to/existing-repo
12
12
 
13
- # Michiの共通ルール・コマンド・テンプレートをコピー
14
- npx tsx /path/to/michi/scripts/setup-existing-project.ts --michi-path /path/to/michi
13
+ # 1コマンドで初期設定完了
14
+ michi init --michi-path /path/to/michi
15
15
  ```
16
16
 
17
- このスクリプトが自動的に:
17
+ このコマンドが自動的に:
18
18
 
19
- - 共通ルール(`.cursor/rules/`)をコピー
20
- - カスタムコマンド(`.cursor/commands/kiro/`)をコピー
19
+ - プロジェクトメタデータ(`.kiro/project.json`)を作成
20
+ - 環境変数テンプレート(`.env`)を作成
21
+ - 共通ルール・コマンドをコピー(`--michi-path` 指定時)
21
22
  - Steeringテンプレート(`.kiro/steering/`)をコピー
22
23
  - Specテンプレート(`.kiro/settings/templates/`)をコピー
24
+ - ワークフロー設定(`.michi/config.json`)を作成
25
+ - グローバル設定(`~/.michi/config.json`)があればコピー
26
+ - なければ対話的に設定
23
27
 
24
- **次のステップ**:
25
-
26
- 1. cc-sddを導入: `npx cc-sdd@latest --lang ja --cursor`
27
- 2. 設定を対話的に作成: `npm run setup:interactive`
28
-
29
- ### パターンB: 新規リポジトリを作成してセットアップ
28
+ **オプション**:
30
29
 
31
30
  ```bash
32
- # Michiから実行
33
- cd /path/to/michi
34
-
35
- # 凡例
36
- npm run create-project -- \
37
- --name "<project-id>" \
38
- --project-name "<project-name>" \
39
- --jira-key "<jira-key>"
40
-
41
- # 具体例
42
- npm run create-project -- \
43
- --name "20240115-payment-api" \
44
- --project-name "プロジェクトA" \
45
- --jira-key "PRJA"
31
+ # 非対話モード(プロジェクト名とJIRAキーを指定)
32
+ michi init \
33
+ --name "project-id" \
34
+ --project-name "プロジェクト名" \
35
+ --jira-key "PRJA" \
36
+ --michi-path /path/to/michi \
37
+ -y
38
+
39
+ # ワークフロー設定をスキップ
40
+ michi init --michi-path /path/to/michi --skip-config
41
+
42
+ # 環境を指定(デフォルト: Cursor)
43
+ michi init --michi-path /path/to/michi --cursor
44
+ michi init --michi-path /path/to/michi --claude
46
45
  ```
47
46
 
48
- **リポジトリ名**: `--name`で指定した値がそのままGitHubリポジトリ名として使用されます。
49
-
50
- **例**:
47
+ **次のステップ**:
51
48
 
52
- - `--name "20240115-payment-api"` → GitHubリポジトリ: `org/20240115-payment-api`
53
- - `--name "payment-api"` → GitHubリポジトリ: `org/payment-api`
49
+ 1. `.env` ファイルの内容を確認・編集
50
+ 2. `.michi/config.json` の内容を確認(必要に応じて編集)
51
+ 3. 開発開始: `/kiro:spec-init <機能説明>`
54
52
 
55
- **注意**: リポジトリ名はkebab-case(小文字、ハイフン区切り)を推奨します。
53
+ ### 代替: 個別セットアップ
56
54
 
57
- ### パターンC: 完全手動セットアップ
55
+ グローバル設定を先に作成する場合:
58
56
 
59
57
  ```bash
60
- # 1. リポジトリ作成・クローン
61
- gh repo create org/repo-name --private
62
- jj git clone https://github.com/org/repo-name
63
- cd repo-name
64
-
65
- # 2. cc-sdd導入
66
- npx cc-sdd@latest --cursor --lang ja --yes
67
-
68
- # 3. プロジェクトメタデータ作成
69
- cat > .kiro/project.json << 'EOF'
70
- {
71
- "projectId": "repo-name",
72
- "projectName": "プロジェクト名",
73
- "jiraProjectKey": "PRJX",
74
- "confluenceLabels": ["project:x", "service:y"]
75
- }
76
- EOF
77
-
78
- # 4. Michiから共通ルール・コマンド・テンプレートをコピー
79
- npx tsx /path/to/michi/scripts/setup-existing-project.ts \
80
- --michi-path /path/to/michi
81
-
82
- # 5. npm install
83
- # 6. 初期コミット
58
+ # 1. グローバル設定を作成(組織で一度だけ)
59
+ michi config:global
60
+
61
+ # 2. プロジェクト初期設定
62
+ cd /path/to/project
63
+ michi init --michi-path /path/to/michi
64
+
65
+ # グローバル設定が自動的にコピーされます
84
66
  ```
85
67
 
86
68
  詳細: [新規リポジトリセットアップガイド](../getting-started/new-repository-setup.md)
@@ -128,20 +110,31 @@ gh pr create --head <project-id>/feature/<feature> --base main
128
110
 
129
111
  ## コマンド一覧
130
112
 
131
- | コマンド | 説明 | 分類 |
132
- | ---------------------------------------- | -------------------------- | ---------- |
133
- | `/kiro:spec-init <description>` | 仕様初期化 | cc-sdd |
134
- | `/kiro:spec-requirements <feature>` | 要件定義生成 | cc-sdd |
135
- | `/kiro:spec-design <feature>` | 設計生成 | cc-sdd |
136
- | `/kiro:spec-tasks <feature>` | タスク分割 | cc-sdd |
137
- | `/kiro:spec-impl <feature> <tasks>` | TDD実装 | cc-sdd |
138
- | `/kiro:spec-status <feature>` | 進捗確認 | cc-sdd |
139
- | `/kiro:steering` | Steering作成/更新 | cc-sdd |
140
- | `/kiro:steering-custom` | カスタムSteering作成 | cc-sdd |
141
- | `/kiro:validate-gap <feature>` | 既存コードと要件の差異分析 | cc-sdd |
142
- | `/kiro:validate-design <feature>` | 設計の品質レビューと検証 | cc-sdd |
143
- | `/kiro:confluence-sync <feature> [type]` | Confluence同期 | Michi only |
144
- | `/kiro:project-switch <project_id>` | プロジェクト切り替え | Michi only |
113
+ ### cc-sdd 標準コマンド
114
+
115
+ | コマンド | 説明 |
116
+ | ---------------------------------------- | -------------------------- |
117
+ | `/kiro:spec-init <description>` | 仕様初期化 |
118
+ | `/kiro:spec-requirements <feature>` | 要件定義生成 |
119
+ | `/kiro:spec-design <feature>` | 設計生成(cc-sdd標準版) |
120
+ | `/kiro:spec-tasks <feature>` | タスク分割 |
121
+ | `/kiro:spec-impl <feature> <tasks>` | TDD実装 |
122
+ | `/kiro:spec-status <feature>` | 進捗確認 |
123
+ | `/kiro:steering` | Steering作成/更新 |
124
+ | `/kiro:steering-custom` | カスタムSteering作成 |
125
+ | `/kiro:validate-gap <feature>` | 既存コードと要件の差異分析 |
126
+ | `/kiro:validate-design <feature>` | 設計の品質レビューと検証 |
127
+
128
+ ### Michi 拡張コマンド
129
+
130
+ > **注**: これらのコマンドは Michi 独自の拡張機能です。cc-sdd 標準には含まれません。
131
+
132
+ | コマンド | 説明 |
133
+ | ---------------------------------------- | ---------------------------------------------- |
134
+ | `/michi:spec-design <feature>` | 設計生成(Phase 0.3-0.4 ガイダンス付き)⭐推奨 |
135
+ | `/michi:validate-design <feature>` | 設計レビュー(テスト計画完了確認付き) |
136
+ | `/michi:confluence-sync <feature> [type]` | Confluence同期 |
137
+ | `/michi:project-switch <project_id>` | プロジェクト切り替え |
145
138
 
146
139
  ## Michi CLIコマンド一覧
147
140
 
@@ -149,6 +142,8 @@ gh pr create --head <project-id>/feature/<feature> --base main
149
142
 
150
143
  | コマンド | 説明 |
151
144
  | ------------------------------------------- | ------------------------------------------------- |
145
+ | `michi init` | プロジェクト初期設定(推奨)⭐ |
146
+ | `michi config:global` | グローバル設定作成(~/.michi/config.json) |
152
147
  | `michi jira:sync <feature>` | JIRA連携(tasks.md → Epic/Stories) |
153
148
  | `michi confluence:sync <feature> [type]` | Confluence同期(requirements/design) |
154
149
  | `michi phase:run <feature> <phase>` | フェーズ実行(requirements/design/tasks) |
@@ -157,7 +152,6 @@ gh pr create --head <project-id>/feature/<feature> --base main
157
152
  | `michi project:list` | プロジェクト一覧 |
158
153
  | `michi project:dashboard` | リソースダッシュボード生成 |
159
154
  | `michi workflow:run --feature <name>` | 統合ワークフロー実行 |
160
- | `michi config:interactive` | 対話式設定ツール(.michi/config.json作成) |
161
155
  | `michi config:validate` | 設定ファイルのバリデーション |
162
156
  | `michi tasks:convert <feature>` | AI-DLC形式のtasks.mdをMichiワークフロー形式に変換 |
163
157
  | `michi jira:transition <issueKey> <status>` | JIRAチケットのステータス変更 |
@@ -185,7 +179,7 @@ gh pr create --head <project-id>/feature/<feature> --base main
185
179
  ### 方法1: Cursorコマンド
186
180
 
187
181
  ```
188
- /kiro:project-switch <project-id>
182
+ /michi:project-switch <project-id>
189
183
  ```
190
184
 
191
185
  ### 方法2: ターミナル
@@ -1,5 +1,9 @@
1
1
  # テスト計画フロー
2
2
 
3
+ > **Michi 固有ワークフロー**: このテスト計画フロー(Phase 0.3-0.4, Phase 1, Phase A/B/3)は Michi 独自の拡張機能です。cc-sdd 標準には含まれません。
4
+ >
5
+ > `/michi:spec-design` コマンドを使用すると、設計完了後に自動的に Phase 0.3-0.4 へのガイダンスが表示されます。
6
+
3
7
  このドキュメントでは、michiを使用したプロジェクトでのテスト計画の流れを説明します。
4
8
 
5
9
  ## Phase 0.3: テストタイプの選択
package/env.example CHANGED
@@ -6,7 +6,7 @@ ATLASSIAN_API_TOKEN=your-atlassian-api-token-here
6
6
  # GitHub設定
7
7
  GITHUB_ORG=your-github-org
8
8
  GITHUB_TOKEN=your-github-token-here
9
- GITHUB_REPO=your-org/your-repo
9
+ # Note: GITHUB_REPO is deprecated. Use .kiro/project.json's repository field instead.
10
10
 
11
11
  # Confluence設定
12
12
  CONFLUENCE_PRD_SPACE=PRD
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sk8metal/michi-cli",
3
- "version": "0.3.0",
3
+ "version": "0.5.0",
4
4
  "description": "Managed Intelligent Comprehensive Hub for Integration - AI-driven development workflow automation",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -46,12 +46,10 @@
46
46
  "build": "tsc && node scripts/copy-static-assets.js",
47
47
  "postbuild": "node scripts/set-permissions.js",
48
48
  "prepare": "husky",
49
- "setup:interactive": "tsx scripts/setup-interactive.ts",
50
49
  "michi:setup:cursor": "tsx src/cli.ts setup-existing --cursor",
51
50
  "michi:setup:claude": "tsx src/cli.ts setup-existing --claude",
52
51
  "michi:setup:claude-agent": "tsx src/cli.ts setup-existing --claude-agent",
53
52
  "create-project": "tsx scripts/create-project.ts",
54
- "setup-existing": "tsx scripts/setup-existing-project.ts",
55
53
  "confluence:sync": "tsx scripts/confluence-sync.ts",
56
54
  "jira:sync": "tsx scripts/jira-sync.ts",
57
55
  "github:create-pr": "tsx scripts/pr-automation.ts",
@@ -66,7 +64,7 @@
66
64
  "preflight": "tsx scripts/pre-flight-check.ts",
67
65
  "pre-publish": "bash scripts/pre-publish-check.sh",
68
66
  "test:package": "bash scripts/test-npm-package.sh",
69
- "config:interactive": "tsx scripts/config-interactive.ts",
67
+ "config:global": "tsx scripts/config-global.ts",
70
68
  "config:validate": "tsx scripts/utils/config-validator.ts",
71
69
  "test:interactive": "tsx scripts/test-interactive.ts",
72
70
  "test": "vitest",
@@ -74,7 +72,7 @@
74
72
  "test:ui": "vitest --ui",
75
73
  "test:coverage": "vitest --run --coverage",
76
74
  "test:integration:setup": "vitest --run src/__tests__/integration/setup",
77
- "test:coverage:setup": "vitest --run --coverage src/__tests__/integration/setup",
75
+ "test:coverage:setup": "vitest --run --coverage --coverage.thresholds.lines=0 --coverage.thresholds.functions=0 --coverage.thresholds.branches=0 --coverage.thresholds.statements=0 src/__tests__/integration/setup",
78
76
  "lint": "eslint .",
79
77
  "lint:fix": "eslint . --fix",
80
78
  "format": "prettier --write .",
@@ -32,6 +32,11 @@ vi.mock('../utils/config-loader.js', () => ({
32
32
  })),
33
33
  }));
34
34
 
35
+ // project-metaをモック
36
+ vi.mock('../utils/project-meta.js', () => ({
37
+ getRepositoryInfo: vi.fn(() => 'owner/repo'),
38
+ }));
39
+
35
40
  // spec-loaderをモック
36
41
  const mockGetJiraInfoFromSpec = vi.fn();
37
42
  const mockCheckJiraInfoStatus = vi.fn();
@@ -62,7 +67,6 @@ describe('spec-impl-workflow', () => {
62
67
  process.env.ATLASSIAN_EMAIL = 'test@example.com';
63
68
  process.env.ATLASSIAN_API_TOKEN = 'test-token';
64
69
  process.env.GITHUB_TOKEN = 'github-token';
65
- process.env.GITHUB_REPO = 'owner/repo';
66
70
  });
67
71
 
68
72
  afterEach(() => {
@@ -71,7 +75,6 @@ describe('spec-impl-workflow', () => {
71
75
  delete process.env.ATLASSIAN_EMAIL;
72
76
  delete process.env.ATLASSIAN_API_TOKEN;
73
77
  delete process.env.GITHUB_TOKEN;
74
- delete process.env.GITHUB_REPO;
75
78
  });
76
79
 
77
80
  // ==========================================================================
@@ -146,6 +146,31 @@ export const ValidationConfigSchema = z.object({
146
146
  weekendExclusion: z.boolean().default(true),
147
147
  });
148
148
 
149
+ /**
150
+ * Atlassian設定スキーマ
151
+ */
152
+ export const AtlassianConfigSchema = z.object({
153
+ url: z.string().optional(),
154
+ email: z.string().optional(),
155
+ apiToken: z.string().optional(),
156
+ });
157
+
158
+ /**
159
+ * プロジェクトメタデータスキーマ
160
+ */
161
+ export const ProjectMetaSchema = z.object({
162
+ projectId: z.string().min(1),
163
+ projectName: z.string().min(1),
164
+ language: z.enum(['ja', 'en']).optional(),
165
+ jiraProjectKey: z.string().optional(),
166
+ confluenceLabels: z.array(z.string()).optional(),
167
+ status: z.string().optional(),
168
+ team: z.array(z.string()).optional(),
169
+ stakeholders: z.array(z.string()).optional(),
170
+ repository: z.string().optional(),
171
+ description: z.string().optional(),
172
+ });
173
+
149
174
  /**
150
175
  * 全体設定スキーマ
151
176
  */
@@ -154,6 +179,8 @@ export const AppConfigSchema = z.object({
154
179
  jira: JiraConfigSchema.optional(),
155
180
  workflow: WorkflowConfigSchema.optional(),
156
181
  validation: ValidationConfigSchema.optional(),
182
+ atlassian: AtlassianConfigSchema.optional(),
183
+ project: ProjectMetaSchema.optional(),
157
184
  });
158
185
 
159
186
  /**
@@ -177,4 +204,17 @@ export type JiraStatusMapping = z.infer<typeof JiraStatusMappingSchema>;
177
204
  export type JiraConfig = z.infer<typeof JiraConfigSchema>;
178
205
  export type WorkflowConfig = z.infer<typeof WorkflowConfigSchema>;
179
206
  export type ValidationConfig = z.infer<typeof ValidationConfigSchema>;
207
+ export type AtlassianConfig = z.infer<typeof AtlassianConfigSchema>;
208
+ export type ProjectMeta = z.infer<typeof ProjectMetaSchema>;
180
209
  export type AppConfig = z.infer<typeof AppConfigSchema>;
210
+
211
+ /**
212
+ * 設定の読み込み元
213
+ */
214
+ export type ConfigSource =
215
+ | 'default' // default-config.json
216
+ | 'global-env' // ~/.michi/.env
217
+ | 'global-config' // ~/.michi/config.json
218
+ | 'project-meta' // .kiro/project.json
219
+ | 'project-config' // .michi/config.json
220
+ | 'project-env'; // .env
@@ -0,0 +1,160 @@
1
+ /**
2
+ * グローバル設定ツール
3
+ * ~/.michi/config.json を対話的に作成・更新
4
+ */
5
+
6
+ import { readFileSync, writeFileSync, existsSync, mkdirSync } from 'fs';
7
+ import { dirname } from 'path';
8
+ import { createInterface, confirm } from './utils/interactive-helpers.js';
9
+ import {
10
+ getConfluenceConfig,
11
+ getJiraConfig,
12
+ getWorkflowConfig,
13
+ type ConfluenceConfigResult,
14
+ type JiraConfigResult,
15
+ type WorkflowConfigResult,
16
+ } from './utils/config-sections.js';
17
+ import { getGlobalConfigPath } from './utils/config-loader.js';
18
+ import { AppConfigSchema } from './config/config-schema.js';
19
+
20
+ /**
21
+ * プロジェクト設定全体
22
+ */
23
+ interface ProjectConfig {
24
+ confluence?: ConfluenceConfigResult;
25
+ jira?: JiraConfigResult;
26
+ workflow?: WorkflowConfigResult;
27
+ }
28
+
29
+ /**
30
+ * メイン処理
31
+ */
32
+ async function main(): Promise<void> {
33
+ const rl = createInterface();
34
+
35
+ try {
36
+ console.log('🌐 Michi グローバル設定ツール');
37
+ console.log('='.repeat(60));
38
+ console.log('このツールで ~/.michi/config.json を作成・更新できます。');
39
+ console.log('');
40
+ console.log('グローバル設定は、すべてのプロジェクトに適用されます。');
41
+ console.log('プロジェクト固有の設定は .michi/config.json で上書きできます。');
42
+ console.log('');
43
+
44
+ const globalConfigPath = getGlobalConfigPath();
45
+ const globalConfigDir = dirname(globalConfigPath);
46
+
47
+ let existingConfig: ProjectConfig | null = null;
48
+
49
+ // 既存の設定ファイルを確認
50
+ if (existsSync(globalConfigPath)) {
51
+ console.log(`⚠️ 既存のグローバル設定ファイルが見つかりました: ${globalConfigPath}`);
52
+ const overwrite = await confirm(rl, '上書きしますか?', false);
53
+
54
+ if (!overwrite) {
55
+ console.log('中止しました。');
56
+ process.exit(0);
57
+ }
58
+
59
+ try {
60
+ const content = readFileSync(globalConfigPath, 'utf-8');
61
+ existingConfig = JSON.parse(content) as ProjectConfig;
62
+ console.log('既存の設定を読み込みました。\n');
63
+ } catch {
64
+ console.log(
65
+ '既存の設定ファイルの読み込みに失敗しました。新規作成します。\n',
66
+ );
67
+ }
68
+ }
69
+
70
+ // 設定を対話的に取得
71
+ const config: ProjectConfig = existingConfig || {};
72
+
73
+ // Confluence設定
74
+ const configureConfluence = await confirm(
75
+ rl,
76
+ 'Confluence設定をカスタマイズしますか?',
77
+ false,
78
+ );
79
+ if (configureConfluence) {
80
+ config.confluence = await getConfluenceConfig(rl);
81
+ }
82
+
83
+ // JIRA設定
84
+ const configureJira = await confirm(
85
+ rl,
86
+ 'JIRA設定をカスタマイズしますか?',
87
+ false,
88
+ );
89
+ if (configureJira) {
90
+ config.jira = await getJiraConfig(rl);
91
+ }
92
+
93
+ // ワークフロー設定
94
+ const configureWorkflow = await confirm(
95
+ rl,
96
+ 'ワークフロー設定をカスタマイズしますか?',
97
+ false,
98
+ );
99
+ if (configureWorkflow) {
100
+ config.workflow = await getWorkflowConfig(rl);
101
+ }
102
+
103
+ // 設定の確認
104
+ console.log('\n📋 設定内容の確認');
105
+ console.log('='.repeat(60));
106
+ console.log(JSON.stringify(config, null, 2));
107
+ console.log('');
108
+
109
+ const confirmSave = await confirm(rl, 'この設定を保存しますか?', true);
110
+
111
+ if (!confirmSave) {
112
+ console.log('保存をキャンセルしました。');
113
+ process.exit(0);
114
+ }
115
+
116
+ // ディレクトリを作成(存在しない場合)
117
+ if (!existsSync(globalConfigDir)) {
118
+ mkdirSync(globalConfigDir, { recursive: true });
119
+ console.log(`\n📁 ディレクトリを作成しました: ${globalConfigDir}`);
120
+ }
121
+
122
+ // 設定ファイルを保存
123
+ writeFileSync(globalConfigPath, JSON.stringify(config, null, 2) + '\n', 'utf-8');
124
+ console.log(`\n✅ グローバル設定ファイルを保存しました: ${globalConfigPath}`);
125
+
126
+ // バリデーション(スキーマチェックのみ)
127
+ console.log('\n🔍 設定ファイルのバリデーション...');
128
+ try {
129
+ AppConfigSchema.parse(config);
130
+ console.log('✅ 設定ファイルは有効です。');
131
+ } catch (error) {
132
+ console.warn('⚠️ 設定ファイルに問題があります:');
133
+ console.warn(error instanceof Error ? error.message : error);
134
+ console.warn(' プロジェクト固有の設定で補完することができます。');
135
+ }
136
+
137
+ console.log('\n🎉 グローバル設定が完了しました!');
138
+ console.log(' この設定はすべてのプロジェクトに適用されます。');
139
+ console.log(' プロジェクト固有の設定で上書きしたい場合は:');
140
+ console.log(' グローバル設定をコピーして .michi/config.json として編集してください');
141
+ } catch (error) {
142
+ console.error(
143
+ '❌ エラーが発生しました:',
144
+ error instanceof Error ? error.message : error,
145
+ );
146
+ process.exit(1);
147
+ } finally {
148
+ rl.close();
149
+ }
150
+ }
151
+
152
+ // CLI実行
153
+ if (import.meta.url === `file://${process.argv[1]}`) {
154
+ main().catch((error) => {
155
+ console.error('❌ 予期しないエラー:', error);
156
+ process.exit(1);
157
+ });
158
+ }
159
+
160
+ export { main as configGlobal };