@sk8metal/michi-cli 0.0.7 → 0.0.9

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 (175) hide show
  1. package/CHANGELOG.md +55 -0
  2. package/README.md +205 -11
  3. package/dist/scripts/__tests__/create-project.test.d.ts +2 -0
  4. package/dist/scripts/__tests__/create-project.test.d.ts.map +1 -0
  5. package/dist/scripts/__tests__/create-project.test.js +247 -0
  6. package/dist/scripts/__tests__/create-project.test.js.map +1 -0
  7. package/dist/scripts/__tests__/multi-project-estimate.test.d.ts +2 -0
  8. package/dist/scripts/__tests__/multi-project-estimate.test.d.ts.map +1 -0
  9. package/dist/scripts/__tests__/multi-project-estimate.test.js +119 -0
  10. package/dist/scripts/__tests__/multi-project-estimate.test.js.map +1 -0
  11. package/dist/scripts/__tests__/setup-existing-project.test.d.ts +2 -0
  12. package/dist/scripts/__tests__/setup-existing-project.test.d.ts.map +1 -0
  13. package/dist/scripts/__tests__/setup-existing-project.test.js +129 -0
  14. package/dist/scripts/__tests__/setup-existing-project.test.js.map +1 -0
  15. package/dist/scripts/__tests__/setup-interactive.test.d.ts +2 -0
  16. package/dist/scripts/__tests__/setup-interactive.test.d.ts.map +1 -0
  17. package/dist/scripts/__tests__/setup-interactive.test.js +160 -0
  18. package/dist/scripts/__tests__/setup-interactive.test.js.map +1 -0
  19. package/dist/scripts/config/default-config.json +57 -0
  20. package/dist/scripts/confluence-sync.d.ts +4 -0
  21. package/dist/scripts/confluence-sync.d.ts.map +1 -1
  22. package/dist/scripts/confluence-sync.js +12 -23
  23. package/dist/scripts/confluence-sync.js.map +1 -1
  24. package/dist/scripts/constants/__tests__/environments.test.d.ts +2 -0
  25. package/dist/scripts/constants/__tests__/environments.test.d.ts.map +1 -0
  26. package/dist/scripts/constants/__tests__/environments.test.js +91 -0
  27. package/dist/scripts/constants/__tests__/environments.test.js.map +1 -0
  28. package/dist/scripts/constants/__tests__/languages.test.d.ts +2 -0
  29. package/dist/scripts/constants/__tests__/languages.test.d.ts.map +1 -0
  30. package/dist/scripts/constants/__tests__/languages.test.js +82 -0
  31. package/dist/scripts/constants/__tests__/languages.test.js.map +1 -0
  32. package/dist/scripts/constants/environments.d.ts +33 -0
  33. package/dist/scripts/constants/environments.d.ts.map +1 -0
  34. package/dist/scripts/constants/environments.js +49 -0
  35. package/dist/scripts/constants/environments.js.map +1 -0
  36. package/dist/scripts/constants/languages.d.ts +23 -0
  37. package/dist/scripts/constants/languages.d.ts.map +1 -0
  38. package/dist/scripts/constants/languages.js +53 -0
  39. package/dist/scripts/constants/languages.js.map +1 -0
  40. package/dist/scripts/create-project.d.ts +4 -0
  41. package/dist/scripts/create-project.d.ts.map +1 -1
  42. package/dist/scripts/create-project.js +227 -137
  43. package/dist/scripts/create-project.js.map +1 -1
  44. package/dist/scripts/jira-sync.d.ts.map +1 -1
  45. package/dist/scripts/jira-sync.js +15 -0
  46. package/dist/scripts/jira-sync.js.map +1 -1
  47. package/dist/scripts/list-projects.d.ts.map +1 -1
  48. package/dist/scripts/list-projects.js +42 -15
  49. package/dist/scripts/list-projects.js.map +1 -1
  50. package/dist/scripts/multi-project-estimate.d.ts.map +1 -1
  51. package/dist/scripts/multi-project-estimate.js +56 -21
  52. package/dist/scripts/multi-project-estimate.js.map +1 -1
  53. package/dist/scripts/resource-dashboard.d.ts.map +1 -1
  54. package/dist/scripts/resource-dashboard.js +74 -17
  55. package/dist/scripts/resource-dashboard.js.map +1 -1
  56. package/dist/scripts/setup-existing-project.d.ts +3 -1
  57. package/dist/scripts/setup-existing-project.d.ts.map +1 -1
  58. package/dist/scripts/setup-existing-project.js +306 -217
  59. package/dist/scripts/setup-existing-project.js.map +1 -1
  60. package/dist/scripts/setup-interactive.d.ts +10 -0
  61. package/dist/scripts/setup-interactive.d.ts.map +1 -0
  62. package/dist/scripts/setup-interactive.js +413 -0
  63. package/dist/scripts/setup-interactive.js.map +1 -0
  64. package/dist/scripts/template/__tests__/renderer.test.d.ts +2 -0
  65. package/dist/scripts/template/__tests__/renderer.test.d.ts.map +1 -0
  66. package/dist/scripts/template/__tests__/renderer.test.js +165 -0
  67. package/dist/scripts/template/__tests__/renderer.test.js.map +1 -0
  68. package/dist/scripts/template/renderer.d.ts +70 -0
  69. package/dist/scripts/template/renderer.d.ts.map +1 -0
  70. package/dist/scripts/template/renderer.js +99 -0
  71. package/dist/scripts/template/renderer.js.map +1 -0
  72. package/dist/scripts/utils/__tests__/config-validator.test.js +5 -0
  73. package/dist/scripts/utils/__tests__/config-validator.test.js.map +1 -1
  74. package/dist/scripts/utils/__tests__/spec-updater.test.d.ts +5 -0
  75. package/dist/scripts/utils/__tests__/spec-updater.test.d.ts.map +1 -0
  76. package/dist/scripts/utils/__tests__/spec-updater.test.js +158 -0
  77. package/dist/scripts/utils/__tests__/spec-updater.test.js.map +1 -0
  78. package/dist/scripts/utils/confluence-hierarchy.d.ts +2 -1
  79. package/dist/scripts/utils/confluence-hierarchy.d.ts.map +1 -1
  80. package/dist/scripts/utils/confluence-hierarchy.js +5 -0
  81. package/dist/scripts/utils/confluence-hierarchy.js.map +1 -1
  82. package/dist/scripts/utils/project-finder.d.ts +30 -0
  83. package/dist/scripts/utils/project-finder.d.ts.map +1 -0
  84. package/dist/scripts/utils/project-finder.js +147 -0
  85. package/dist/scripts/utils/project-finder.js.map +1 -0
  86. package/dist/scripts/utils/spec-updater.d.ts +72 -0
  87. package/dist/scripts/utils/spec-updater.d.ts.map +1 -0
  88. package/dist/scripts/utils/spec-updater.js +141 -0
  89. package/dist/scripts/utils/spec-updater.js.map +1 -0
  90. package/dist/scripts/utils/template-finder.d.ts +37 -0
  91. package/dist/scripts/utils/template-finder.d.ts.map +1 -0
  92. package/dist/scripts/utils/template-finder.js +63 -0
  93. package/dist/scripts/utils/template-finder.js.map +1 -0
  94. package/dist/src/__tests__/integration/setup/claude-agent.test.d.ts +5 -0
  95. package/dist/src/__tests__/integration/setup/claude-agent.test.d.ts.map +1 -0
  96. package/dist/src/__tests__/integration/setup/claude-agent.test.js +125 -0
  97. package/dist/src/__tests__/integration/setup/claude-agent.test.js.map +1 -0
  98. package/dist/src/__tests__/integration/setup/claude.test.d.ts +5 -0
  99. package/dist/src/__tests__/integration/setup/claude.test.d.ts.map +1 -0
  100. package/dist/src/__tests__/integration/setup/claude.test.js +111 -0
  101. package/dist/src/__tests__/integration/setup/claude.test.js.map +1 -0
  102. package/dist/src/__tests__/integration/setup/cursor.test.d.ts +5 -0
  103. package/dist/src/__tests__/integration/setup/cursor.test.d.ts.map +1 -0
  104. package/dist/src/__tests__/integration/setup/cursor.test.js +162 -0
  105. package/dist/src/__tests__/integration/setup/cursor.test.js.map +1 -0
  106. package/dist/src/__tests__/integration/setup/helpers/fs-assertions.d.ts +32 -0
  107. package/dist/src/__tests__/integration/setup/helpers/fs-assertions.d.ts.map +1 -0
  108. package/dist/src/__tests__/integration/setup/helpers/fs-assertions.js +72 -0
  109. package/dist/src/__tests__/integration/setup/helpers/fs-assertions.js.map +1 -0
  110. package/dist/src/__tests__/integration/setup/helpers/test-project.d.ts +38 -0
  111. package/dist/src/__tests__/integration/setup/helpers/test-project.d.ts.map +1 -0
  112. package/dist/src/__tests__/integration/setup/helpers/test-project.js +83 -0
  113. package/dist/src/__tests__/integration/setup/helpers/test-project.js.map +1 -0
  114. package/dist/src/__tests__/integration/setup/validation.test.d.ts +5 -0
  115. package/dist/src/__tests__/integration/setup/validation.test.d.ts.map +1 -0
  116. package/dist/src/__tests__/integration/setup/validation.test.js +318 -0
  117. package/dist/src/__tests__/integration/setup/validation.test.js.map +1 -0
  118. package/dist/src/cli.d.ts.map +1 -1
  119. package/dist/src/cli.js +20 -0
  120. package/dist/src/cli.js.map +1 -1
  121. package/dist/src/commands/setup-existing.d.ts +22 -0
  122. package/dist/src/commands/setup-existing.d.ts.map +1 -0
  123. package/dist/src/commands/setup-existing.js +408 -0
  124. package/dist/src/commands/setup-existing.js.map +1 -0
  125. package/dist/vitest.config.d.ts.map +1 -1
  126. package/dist/vitest.config.js +9 -6
  127. package/dist/vitest.config.js.map +1 -1
  128. package/docs/README.md +2 -2
  129. package/docs/contributing/development.md +37 -0
  130. package/docs/getting-started/{new-project-setup.md → new-repository-setup.md} +165 -38
  131. package/docs/getting-started/quick-start.md +57 -6
  132. package/docs/getting-started/setup.md +551 -180
  133. package/docs/guides/customization.md +4 -4
  134. package/docs/guides/multi-project.md +12 -9
  135. package/docs/reference/quick-reference.md +27 -18
  136. package/docs/testing/integration-tests.md +297 -0
  137. package/docs/testing-strategy.md +87 -0
  138. package/package.json +23 -6
  139. package/scripts/__tests__/create-project.test.ts +292 -0
  140. package/scripts/__tests__/multi-project-estimate.test.ts +145 -0
  141. package/scripts/__tests__/setup-existing-project.test.ts +147 -0
  142. package/scripts/__tests__/setup-interactive.test.ts +199 -0
  143. package/scripts/confluence-sync.ts +17 -29
  144. package/scripts/constants/__tests__/environments.test.ts +110 -0
  145. package/scripts/constants/__tests__/languages.test.ts +100 -0
  146. package/scripts/constants/environments.ts +61 -0
  147. package/scripts/constants/languages.ts +70 -0
  148. package/scripts/copy-static-assets.js +50 -0
  149. package/scripts/create-project.ts +251 -158
  150. package/scripts/jira-sync.ts +16 -1
  151. package/scripts/list-projects.ts +51 -24
  152. package/scripts/multi-project-estimate.ts +58 -22
  153. package/scripts/resource-dashboard.ts +91 -26
  154. package/scripts/setup-existing-project.ts +350 -230
  155. package/scripts/setup-existing.sh +159 -25
  156. package/scripts/setup-interactive.ts +565 -0
  157. package/scripts/template/__tests__/renderer.test.ts +207 -0
  158. package/scripts/template/renderer.ts +133 -0
  159. package/scripts/utils/__tests__/config-validator.test.ts +6 -0
  160. package/scripts/utils/__tests__/spec-updater.test.ts +220 -0
  161. package/scripts/utils/confluence-hierarchy.ts +7 -1
  162. package/scripts/utils/project-finder.ts +184 -0
  163. package/scripts/utils/spec-updater.ts +212 -0
  164. package/scripts/utils/template-finder.ts +75 -0
  165. package/templates/claude/commands/michi/confluence-sync.md +38 -0
  166. package/templates/claude/commands/michi/project-switch.md +36 -0
  167. package/templates/claude/rules/atlassian-integration.md +35 -0
  168. package/templates/claude/rules/michi-core.md +54 -0
  169. package/templates/claude-agent/README.md +25 -0
  170. package/templates/cursor/commands/michi/confluence-sync.md +76 -0
  171. package/templates/cursor/commands/michi/project-switch.md +69 -0
  172. package/templates/cursor/rules/atlassian-mcp.mdc +188 -0
  173. package/templates/cursor/rules/github-ssot.mdc +151 -0
  174. package/templates/cursor/rules/multi-project.mdc +81 -0
  175. package/scripts/setup-env.sh +0 -52
@@ -363,7 +363,7 @@ Confluenceスペース
363
363
 
364
364
  ```bash
365
365
  # 対話式設定ツールを実行
366
- npx @michi/cli config:interactive
366
+ npx @sk8metal/michi-cli config:interactive
367
367
 
368
368
  # または
369
369
  npm run config:interactive
@@ -371,7 +371,7 @@ npm run config:interactive
371
371
 
372
372
  ### 使い方
373
373
 
374
- 1. **コマンド実行**: `npx @michi/cli config:interactive`
374
+ 1. **コマンド実行**: `npx @sk8metal/michi-cli config:interactive`
375
375
  2. **設定項目を選択**:
376
376
  - Confluence設定のカスタマイズ
377
377
  - JIRA設定のカスタマイズ
@@ -394,7 +394,7 @@ npm run config:interactive
394
394
 
395
395
  ```bash
396
396
  # 設定ファイルのバリデーション
397
- npx @michi/cli config:validate
397
+ npx @sk8metal/michi-cli config:validate
398
398
 
399
399
  # または
400
400
  npm run config:validate
@@ -474,7 +474,7 @@ npm run config:validate
474
474
  ### Michi関連
475
475
  - [セットアップガイド](../getting-started/setup.md)
476
476
  - [ワークフローガイド](./workflow.md)
477
- - [新規プロジェクトセットアップ](../getting-started/new-project-setup.md)
477
+ - [新規リポジトリセットアップ](../getting-started/new-repository-setup.md)
478
478
  - [設定値リファレンス](../reference/config.md)
479
479
 
480
480
  ### cc-sdd関連
@@ -10,7 +10,7 @@ Michiは、複数プロジェクト(3-5案件)を同時並行で管理でき
10
10
 
11
11
  ### プロジェクト構成
12
12
 
13
- **構成**: 1つのリポジトリ内で複数プロジェクトを管理します。各プロジェクトは独立したディレクトリに配置され、それぞれに`.kiro/project.json`を持ちます。
13
+ **構成**: 1つのリポジトリ内で複数プロジェクトを管理します。**すべてのプロジェクト(単一プロジェクトも含む)は`projects/`ディレクトリ配下に配置され、それぞれに`.kiro/project.json`を持ちます。**
14
14
 
15
15
  ```
16
16
  repository/ ← 1つのGitHubリポジトリ
@@ -23,14 +23,17 @@ repository/ ← 1つのGitHubリポジトリ
23
23
  │ │ └── .kiro/
24
24
  │ └── 20240310-analytics-api/ ← プロジェクトC
25
25
  │ └── .kiro/
26
- └── michi/統合ハブ(オプション)
27
- └── .kiro/
26
+ ├── package.jsonリポジトリルート(共有)
27
+ ├── tsconfig.json ← リポジトリルート(共有)
28
+ └── .gitignore ← リポジトリルート(共有)
28
29
  ```
29
30
 
30
- **プロジェクト識別方法**:
31
+ **重要な原則**:
32
+ - **統一されたディレクトリ構成**: 単一プロジェクトも`projects/{project-id}/`配下に配置
31
33
  - 各プロジェクトディレクトリに`.kiro/project.json`を配置
32
34
  - 作業ディレクトリ(`process.cwd()`)から`.kiro/project.json`を読み込んでプロジェクトを識別
33
35
  - プロジェクト切り替えは、該当ディレクトリに移動するだけ
36
+ - `package.json`や`tsconfig.json`はリポジトリルートに配置(複数プロジェクトで共有)
34
37
 
35
38
  ### 統合管理
36
39
 
@@ -47,7 +50,7 @@ repository/ ← 1つのGitHubリポジトリ
47
50
 
48
51
  ### 新規プロジェクト追加
49
52
 
50
- 詳細な手順は [新規プロジェクトセットアップガイド](../getting-started/new-project-setup.md) を参照してください。
53
+ 詳細な手順は [新規リポジトリセットアップガイド](../getting-started/new-repository-setup.md) を参照してください。
51
54
 
52
55
  **クイックスタート**:
53
56
  1. 既存リポジトリに追加: `bash /path/to/michi/scripts/setup-existing.sh`
@@ -62,7 +65,7 @@ repository/ ← 1つのGitHubリポジトリ
62
65
 
63
66
  ### 環境変数設定
64
67
 
65
- 各プロジェクトで`.env`ファイルを設定します。詳細は [新規プロジェクトセットアップガイド](../getting-started/new-project-setup.md#step-5-環境変数設定) を参照してください。
68
+ 各プロジェクトで`.env`ファイルを設定します。詳細は [新規リポジトリセットアップガイド](../getting-started/new-repository-setup.md#step-5-環境変数設定) を参照してください。
66
69
 
67
70
  ### 動作確認
68
71
 
@@ -75,7 +78,7 @@ cat .kiro/project.json
75
78
  # テスト機能で確認(オプション)
76
79
  /kiro:spec-init テスト機能
77
80
  /kiro:spec-requirements test-feature
78
- npx @michi/cli phase:run test-feature requirements
81
+ npx @sk8metal/michi-cli phase:run test-feature requirements
79
82
  ```
80
83
 
81
84
  ## プロジェクト切り替え
@@ -210,7 +213,7 @@ ls -la .kiro/specs/
210
213
 
211
214
  **解決方法**:
212
215
  1. プロジェクトディレクトリが正しいか確認
213
- 2. `.kiro/project.json`を作成([新規プロジェクトセットアップガイド](../getting-started/new-project-setup.md)を参照)
216
+ 2. `.kiro/project.json`を作成([新規リポジトリセットアップガイド](../getting-started/new-repository-setup.md)を参照)
214
217
 
215
218
  ## プロジェクト横断操作
216
219
 
@@ -322,7 +325,7 @@ shared-infrastructure/
322
325
  **Confluenceラベル**: `project:{projectId}, service:{service}`
323
326
  - 例: `project:20240115-payment-api, service:payment`
324
327
 
325
- **ラベル生成ロジック**: 詳細は [新規プロジェクトセットアップガイド](../getting-started/new-project-setup.md#ラベル生成ロジック) を参照してください。
328
+ **ラベル生成ロジック**: 詳細は [新規リポジトリセットアップガイド](../getting-started/new-repository-setup.md#ラベル生成ロジック) を参照してください。
326
329
  ### チーム構成の明確化
327
330
 
328
331
  各プロジェクトの `team` フィールドに担当者を記載:
@@ -4,17 +4,25 @@
4
4
 
5
5
  ## 新規プロジェクト作成
6
6
 
7
- ### パターンA: 既存リポジトリにMichiワークフローを追加(最も簡単 ⭐)
7
+ ### パターンA: 既存リポジトリにMichi共通ルール・コマンドを追加(最も簡単 ⭐)
8
8
 
9
9
  ```bash
10
10
  # 既存プロジェクトに移動
11
11
  cd /path/to/existing-repo
12
12
 
13
- # 対話式セットアップスクリプト実行
13
+ # Michiの共通ルール・コマンド・テンプレートをコピー
14
14
  bash /path/to/michi/scripts/setup-existing.sh
15
15
  ```
16
16
 
17
- プロジェクト名、JIRAキーを入力するだけで完了!
17
+ このスクリプトが自動的に:
18
+ - 共通ルール(`.cursor/rules/`)をコピー
19
+ - カスタムコマンド(`.cursor/commands/kiro/`)をコピー
20
+ - Steeringテンプレート(`.kiro/steering/`)をコピー
21
+ - Specテンプレート(`.kiro/settings/templates/`)をコピー
22
+
23
+ **次のステップ**:
24
+ 1. cc-sddを導入: `npx cc-sdd@latest --lang ja --cursor`
25
+ 2. 設定を対話的に作成: `npm run setup:interactive`
18
26
 
19
27
  ### パターンB: 新規リポジトリを作成してセットアップ
20
28
 
@@ -64,17 +72,18 @@ cat > .kiro/project.json << 'EOF'
64
72
  }
65
73
  EOF
66
74
 
67
- # 4. Michiから共通ファイルコピー(自動スクリプト推奨)
75
+ # 4. Michiから共通ルール・コマンド・テンプレートをコピー(自動スクリプト推奨)
76
+ bash /path/to/michi/scripts/setup-existing.sh
77
+
78
+ # または直接実行
68
79
  npx tsx /path/to/michi/scripts/setup-existing-project.ts \
69
- --michi-path /path/to/michi \
70
- --project-name "プロジェクト名" \
71
- --jira-key "PRJX"
80
+ --michi-path /path/to/michi
72
81
 
73
82
  # 5. npm install
74
83
  # 6. 初期コミット
75
84
  ```
76
85
 
77
- 詳細: [新規プロジェクトセットアップガイド](./new-project-setup.md)
86
+ 詳細: [新規リポジトリセットアップガイド](../getting-started/new-repository-setup.md)
78
87
 
79
88
  ## 開発フロー
80
89
 
@@ -87,21 +96,21 @@ npx tsx /path/to/michi/scripts/setup-existing-project.ts \
87
96
  /kiro:spec-init <機能説明>
88
97
  /kiro:spec-requirements <feature>
89
98
  jj commit -m "docs: 要件定義" && jj git push
90
- npx @michi/cli phase:run <feature> requirements
99
+ npx @sk8metal/michi-cli phase:run <feature> requirements
91
100
  ```
92
101
 
93
102
  **設計**:
94
103
  ```bash
95
104
  /kiro:spec-design <feature>
96
105
  jj commit -m "docs: 設計" && jj git push
97
- npx @michi/cli phase:run <feature> design
106
+ npx @sk8metal/michi-cli phase:run <feature> design
98
107
  ```
99
108
 
100
109
  **タスク分割**:
101
110
  ```bash
102
111
  /kiro:spec-tasks <feature>
103
112
  jj commit -m "docs: タスク分割" && jj git push
104
- npx @michi/cli phase:run <feature> tasks
113
+ npx @sk8metal/michi-cli phase:run <feature> tasks
105
114
  ```
106
115
 
107
116
  **実装**:
@@ -110,7 +119,7 @@ npx @michi/cli phase:run <feature> tasks
110
119
  jj commit -m "feat: 実装 [<jira-key>-XXX]"
111
120
  jj bookmark create <project-id>/feature/<feature> -r '@-'
112
121
  jj git push --bookmark <project-id>/feature/<feature> --allow-new
113
- gh pr create --head <project-id>/feature/<feature> --base init
122
+ gh pr create --head <project-id>/feature/<feature> --base main
114
123
  ```
115
124
 
116
125
  ## コマンド一覧
@@ -132,7 +141,7 @@ gh pr create --head <project-id>/feature/<feature> --base init
132
141
 
133
142
  ## Michi CLIコマンド一覧
134
143
 
135
- **使用方法**: `npx @michi/cli <command>` または `michi <command>`(グローバルインストール後)
144
+ **使用方法**: `npx @sk8metal/michi-cli <command>` または `michi <command>`(グローバルインストール後)
136
145
 
137
146
  | コマンド | 説明 |
138
147
  |---------|------|
@@ -150,8 +159,8 @@ gh pr create --head <project-id>/feature/<feature> --base init
150
159
  | `michi --version` | バージョン表示 |
151
160
 
152
161
  **インストール方法**:
153
- - **npx実行(推奨)**: `npx @michi/cli <command>` - 常に最新版を使用
154
- - **グローバルインストール**: `npm install -g @michi/cli` 後、`michi <command>`
162
+ - **npx実行(推奨)**: `npx @sk8metal/michi-cli <command>` - 常に最新版を使用
163
+ - **グローバルインストール**: `npm install -g @sk8metal/michi-cli` 後、`michi <command>`
155
164
  - **ローカル開発**: `npm run michi <command>` または `npx tsx src/cli.ts <command>`
156
165
 
157
166
  ## npmスクリプト一覧(michiリポジトリ内)
@@ -185,14 +194,14 @@ cat .kiro/project.json
185
194
  ```bash
186
195
  cd /path/to/michi
187
196
  # 全プロジェクトの一覧を表示
188
- npx @michi/cli project:list
197
+ npx @sk8metal/michi-cli project:list
189
198
  ```
190
199
 
191
200
  ### リソースダッシュボード
192
201
 
193
202
  ```bash
194
203
  # Confluenceにプロジェクト横断ダッシュボードを作成
195
- npx @michi/cli project:dashboard
204
+ npx @sk8metal/michi-cli project:dashboard
196
205
  ```
197
206
 
198
207
  ### 見積もり集計
@@ -287,7 +296,7 @@ npm install
287
296
  ## 参考リンク
288
297
 
289
298
  - [セットアップガイド](./setup.md)
290
- - [新規プロジェクトセットアップ](./new-project-setup.md)
299
+ - [新規リポジトリセットアップ](../getting-started/new-repository-setup.md)
291
300
  - [ワークフローガイド](./workflow.md)
292
301
  - [マルチプロジェクト管理](./multi-project.md)
293
302
  - [テスト・検証](./testing.md)
@@ -0,0 +1,297 @@
1
+ # 統合テストガイド
2
+
3
+ ## 概要
4
+
5
+ Michiプロジェクトの統合テストは、`setup-existing`コマンドの動作を検証するために作成されています。
6
+
7
+ ## テスト構造
8
+
9
+ ```
10
+ src/__tests__/integration/setup/
11
+ ├── helpers/
12
+ │ ├── test-project.ts # テストプロジェクト作成ヘルパー
13
+ │ └── fs-assertions.ts # ファイルシステムアサーション
14
+ ├── cursor.test.ts # Cursor環境テスト
15
+ ├── claude.test.ts # Claude環境テスト
16
+ ├── claude-agent.test.ts # Claude Agent環境テスト
17
+ └── validation.test.ts # 引数バリデーションテスト
18
+ ```
19
+
20
+ ## テストケース
21
+
22
+ ### 1. 環境別テスト
23
+
24
+ #### Cursor環境 (`cursor.test.ts`)
25
+
26
+ - ✅ `.cursor/rules/` ディレクトリ作成
27
+ - ✅ `.cursor/commands/` ディレクトリ作成
28
+ - ✅ `.kiro/` ディレクトリ構造作成
29
+ - ✅ `project.json` 作成とメタデータ検証
30
+ - ✅ `.env` テンプレート作成
31
+ - ✅ テンプレートレンダリング
32
+ - ✅ 言語サポート(ja, en)
33
+ - ✅ Git統合(リモートURL検出)
34
+ - ✅ エラーハンドリング
35
+
36
+ #### Claude環境 (`claude.test.ts`)
37
+
38
+ - ✅ `.claude/rules/` ディレクトリ作成
39
+ - ✅ `.kiro/` ディレクトリ構造作成
40
+ - ✅ `project.json` 作成
41
+ - ✅ `.env` テンプレート作成
42
+ - ✅ Cursor固有ディレクトリが作成されないことを確認
43
+ - ✅ 言語サポート
44
+
45
+ #### Claude Agent環境 (`claude-agent.test.ts`)
46
+
47
+ - ✅ `.claude/subagents/` ディレクトリ作成
48
+ - ✅ `.kiro/` ディレクトリ構造作成
49
+ - ✅ `project.json` 作成
50
+ - ✅ `.env` テンプレート作成
51
+ - ✅ 他の環境固有ディレクトリが作成されないことを確認
52
+ - ✅ 言語サポート(ja, en, zh-TW)
53
+
54
+ ### 2. バリデーションテスト (`validation.test.ts`)
55
+
56
+ #### 環境選択
57
+
58
+ - ✅ デフォルト環境(cursor)
59
+ - ✅ `--cursor` フラグ
60
+ - ✅ `--claude` フラグ
61
+ - ✅ `--claude-agent` フラグ
62
+
63
+ #### 言語バリデーション
64
+
65
+ - ✅ サポート言語: `ja`, `en`, `zh-TW`
66
+ - ✅ 非サポート言語でエラー
67
+
68
+ #### プロジェクト名バリデーション
69
+
70
+ **正常系:**
71
+ - ✅ 有効なプロジェクト名
72
+ - ✅ 日本語文字を含むプロジェクト名
73
+ - ✅ 前後の空白はトリム
74
+
75
+ **異常系:**
76
+ - ❌ 空文字列
77
+ - ❌ パストラバーサル文字 (`/`, `\`, `..`)
78
+ - ❌ 制御文字
79
+ - ❌ 100文字超
80
+
81
+ #### JIRAキーバリデーション
82
+
83
+ **正常系:**
84
+ - ✅ 2-10文字の大文字英字
85
+ - ✅ 小文字は自動的に大文字に変換
86
+
87
+ **異常系:**
88
+ - ❌ 1文字以下
89
+ - ❌ 11文字以上
90
+ - ❌ 数字を含む
91
+ - ❌ 特殊文字を含む
92
+
93
+ #### Gitリポジトリバリデーション
94
+
95
+ - ❌ `.git` ディレクトリがない場合エラー
96
+
97
+ ## テスト実行方法
98
+
99
+ ### すべてのテスト実行
100
+
101
+ ```bash
102
+ npm test
103
+ ```
104
+
105
+ ### 統合テストのみ実行
106
+
107
+ ```bash
108
+ npm run test:integration:setup
109
+ ```
110
+
111
+ ### カバレッジ付き実行
112
+
113
+ ```bash
114
+ npm run test:coverage:setup
115
+ ```
116
+
117
+ ### 監視モード
118
+
119
+ ```bash
120
+ npm test -- --watch
121
+ ```
122
+
123
+ ### UI モード
124
+
125
+ ```bash
126
+ npm run test:ui
127
+ ```
128
+
129
+ ## CI/CD
130
+
131
+ GitHub Actionsワークフローが `.github/workflows/test-setup.yml` に定義されています。
132
+
133
+ **実行タイミング:**
134
+ - `main`, `develop`, `feature/**` ブランチへのプッシュ
135
+ - `main`, `develop` ブランチへのプルリクエスト
136
+
137
+ **マトリクス戦略:**
138
+ - Node.js 18.x
139
+ - Node.js 20.x
140
+
141
+ **ステップ:**
142
+ 1. コードチェックアウト
143
+ 2. Node.js セットアップ
144
+ 3. 依存関係インストール
145
+ 4. 統合テスト実行
146
+ 5. カバレッジ生成
147
+ 6. カバレッジアップロード(Codecov)
148
+ 7. Lint実行
149
+ 8. TypeScript型チェック
150
+
151
+ ## トラブルシューティング
152
+
153
+ ### テストが失敗する場合
154
+
155
+ **症状:** テストプロジェクトの作成に失敗
156
+
157
+ **原因:** 一時ディレクトリの権限問題
158
+
159
+ **解決策:**
160
+ ```bash
161
+ # 一時ディレクトリの権限を確認
162
+ ls -la /tmp
163
+
164
+ # 手動でクリーンアップ
165
+ rm -rf /tmp/test-project-*
166
+ ```
167
+
168
+ ---
169
+
170
+ **症状:** Git初期化エラー
171
+
172
+ **原因:** Gitがインストールされていない
173
+
174
+ **解決策:**
175
+ ```bash
176
+ # Gitインストール確認
177
+ git --version
178
+
179
+ # macOS
180
+ brew install git
181
+
182
+ # Ubuntu
183
+ sudo apt-get install git
184
+ ```
185
+
186
+ ---
187
+
188
+ **症状:** TypeScriptコンパイルエラー
189
+
190
+ **原因:** 型定義の不一致
191
+
192
+ **解決策:**
193
+ ```bash
194
+ # 型チェック
195
+ npm run type-check
196
+
197
+ # node_modulesを再インストール
198
+ rm -rf node_modules package-lock.json
199
+ npm install
200
+ ```
201
+
202
+ ### カバレッジが低い場合
203
+
204
+ **目標:** 95%以上のカバレッジ
205
+
206
+ **確認方法:**
207
+ ```bash
208
+ npm run test:coverage:setup
209
+ open coverage/lcov-report/index.html
210
+ ```
211
+
212
+ **改善策:**
213
+ 1. 未テストのエッジケースを追加
214
+ 2. エラーハンドリングのテストを追加
215
+ 3. モックが不十分な箇所を特定
216
+
217
+ ### CI/CDが失敗する場合
218
+
219
+ **症状:** GitHub Actionsでテストが失敗
220
+
221
+ **原因1:** ローカルとCI環境の違い
222
+
223
+ **解決策:**
224
+ ```bash
225
+ # ローカルでCI環境を再現
226
+ docker run -it -v $(pwd):/app node:20 bash
227
+ cd /app
228
+ npm ci
229
+ npm run test:integration:setup
230
+ ```
231
+
232
+ **原因2:** タイムアウト
233
+
234
+ **解決策:** `.github/workflows/test-setup.yml` でタイムアウトを延長
235
+ ```yaml
236
+ - name: Run integration tests
237
+ run: npm run test:integration:setup
238
+ timeout-minutes: 10 # デフォルト: 360分
239
+ ```
240
+
241
+ ## ベストプラクティス
242
+
243
+ ### テスト作成時
244
+
245
+ 1. **TDD原則を守る**
246
+ - テストを先に書く
247
+ - 最小限の実装で通す
248
+ - リファクタリング
249
+
250
+ 2. **テストは独立させる**
251
+ - 各テストは他のテストに依存しない
252
+ - `beforeEach`, `afterEach` でクリーンアップ
253
+
254
+ 3. **意味のあるテスト名**
255
+ ```typescript
256
+ // ❌ Bad
257
+ it('test 1', () => {});
258
+
259
+ // ✅ Good
260
+ it('should create .cursor/rules directory', () => {});
261
+ ```
262
+
263
+ 4. **アサーションは明確に**
264
+ ```typescript
265
+ // ❌ Bad
266
+ expect(result).toBe(true);
267
+
268
+ // ✅ Good
269
+ assertDirectoryExists(
270
+ join(testProject.path, '.cursor/rules'),
271
+ 'Expected .cursor/rules directory to exist'
272
+ );
273
+ ```
274
+
275
+ ### テスト保守時
276
+
277
+ 1. **テストが壊れたら**
278
+ - 実装の変更が正しいか確認
279
+ - テストの期待値を更新
280
+ - リグレッションを防ぐ
281
+
282
+ 2. **新機能追加時**
283
+ - 必ずテストを追加
284
+ - カバレッジを確認
285
+ - エッジケースを考慮
286
+
287
+ 3. **リファクタリング時**
288
+ - テストが通ることを確認
289
+ - テストコードもリファクタリング
290
+ - 重複を削除
291
+
292
+ ## 参考資料
293
+
294
+ - [Vitest公式ドキュメント](https://vitest.dev/)
295
+ - [テスト戦略](../testing-strategy.md)
296
+ - [開発ガイド](../contributing/development.md)
297
+
@@ -0,0 +1,87 @@
1
+ # テスト戦略とカバレッジ計画
2
+
3
+ ## テストカバレッジ目標
4
+
5
+ 最終目標: **95%以上**(AGENTS.mdに定義)
6
+
7
+ ## 段階的引き上げ計画
8
+
9
+ ### Phase 1: 基盤整備(現在)
10
+ - **目標カバレッジ**: 30%
11
+ - **期間**: 2025年1月
12
+ - **対象**:
13
+ - CLI コマンド登録テスト
14
+ - config-loader の基本機能テスト
15
+ - spec-updater の統合テスト
16
+ - validate-phase の主要パステスト
17
+
18
+ ### Phase 2: コア機能の拡充
19
+ - **目標カバレッジ**: 60%
20
+ - **期間**: 2025年2月
21
+ - **対象**:
22
+ - Confluence 同期ロジックのモックテスト
23
+ - JIRA 同期ロジックのモックテスト
24
+ - project-meta, feature-name-validator の完全カバー
25
+ - エラーハンドリングパスの追加
26
+
27
+ ### Phase 3: 統合テストの強化
28
+ - **目標カバレッジ**: 80%
29
+ - **期間**: 2025年3月
30
+ - **対象**:
31
+ - confluence-hierarchy の全パターンテスト
32
+ - PR自動化のE2Eテスト
33
+ - マルチプロジェクト機能の統合テスト
34
+ - エッジケース・エラーケースの網羅
35
+
36
+ ### Phase 4: 最終完成
37
+ - **目標カバレッジ**: 95%
38
+ - **期間**: 2025年4月
39
+ - **対象**:
40
+ - すべての未カバー分岐の追加
41
+ - リグレッションテストの整備
42
+ - パフォーマンステストの追加
43
+ - セキュリティテストの追加
44
+
45
+ ## 現在の除外項目
46
+
47
+ 以下のファイルはカバレッジ計測から除外されています(`vitest.config.ts`):
48
+
49
+ - `node_modules/`
50
+ - `dist/`
51
+ - `**/*.test.ts`, `**/*.spec.ts`
52
+ - `**/__tests__/**`
53
+ - `**/*.d.ts`
54
+ - `**/*.config.ts`
55
+ - `**/scripts/setup-*.ts`
56
+ - `**/scripts/setup-*.sh`
57
+
58
+ ## CI/CDでの扱い
59
+
60
+ ### 現在のアプローチ
61
+ - ローカル開発: カバレッジ閾値30%で実行
62
+ - CI: 同じ閾値を適用し、段階的に引き上げ
63
+
64
+ ### 推奨事項
65
+ - 新規コードには必ずテストを追加
66
+ - PRマージ時にカバレッジ低下を許可しない
67
+ - 月次でカバレッジ改善タスクを計画
68
+
69
+ ## テスト実行コマンド
70
+
71
+ ```bash
72
+ # すべてのテストを実行
73
+ npm run test
74
+
75
+ # テストを1回だけ実行(CI用)
76
+ npm run test:run
77
+
78
+ # カバレッジレポート付きで実行
79
+ npm run test:coverage
80
+
81
+ # UI付きでテストを実行(開発用)
82
+ npm run test:ui
83
+ ```
84
+
85
+ ## 参照
86
+ - [vitest.config.ts](../vitest.config.ts) - カバレッジ閾値設定
87
+ - [AGENTS.md](../AGENTS.md) - 最終目標(95%)の定義
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sk8metal/michi-cli",
3
- "version": "0.0.7",
3
+ "version": "0.0.9",
4
4
  "description": "Managed Intelligent Comprehensive Hub for Integration - AI-driven development workflow automation",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -34,6 +34,7 @@
34
34
  "files": [
35
35
  "dist",
36
36
  "scripts",
37
+ "templates",
37
38
  "docs",
38
39
  "README.md",
39
40
  "CHANGELOG.md",
@@ -42,10 +43,13 @@
42
43
  "mcp.json.example"
43
44
  ],
44
45
  "scripts": {
45
- "build": "tsc",
46
+ "build": "tsc && node scripts/copy-static-assets.js",
46
47
  "postbuild": "node scripts/set-permissions.js",
47
- "prepare": "npm run build",
48
- "setup:env": "bash scripts/setup-env.sh",
48
+ "prepare": "husky",
49
+ "setup:interactive": "tsx scripts/setup-interactive.ts",
50
+ "michi:setup:cursor": "tsx src/cli.ts setup-existing --cursor",
51
+ "michi:setup:claude": "tsx src/cli.ts setup-existing --claude",
52
+ "michi:setup:claude-agent": "tsx src/cli.ts setup-existing --claude-agent",
49
53
  "create-project": "tsx scripts/create-project.ts",
50
54
  "setup-existing": "tsx scripts/setup-existing-project.ts",
51
55
  "confluence:sync": "tsx scripts/confluence-sync.ts",
@@ -66,6 +70,8 @@
66
70
  "test:run": "vitest --run",
67
71
  "test:ui": "vitest --ui",
68
72
  "test:coverage": "vitest --run --coverage",
73
+ "test:integration:setup": "vitest --run src/__tests__/integration/setup",
74
+ "test:coverage:setup": "vitest --run --coverage src/__tests__/integration/setup",
69
75
  "lint": "eslint .",
70
76
  "lint:fix": "eslint . --fix",
71
77
  "format": "prettier --write .",
@@ -90,16 +96,27 @@
90
96
  "@types/turndown": "^5.0.4",
91
97
  "@typescript-eslint/eslint-plugin": "^8.46.4",
92
98
  "@typescript-eslint/parser": "^8.46.4",
99
+ "@vitest/coverage-v8": "^4.0.8",
93
100
  "eslint": "^9.39.1",
101
+ "husky": "^9.1.7",
102
+ "lint-staged": "^16.2.6",
94
103
  "prettier": "^3.1.1",
95
104
  "tsx": "^4.7.0",
96
105
  "typescript": "^5.3.3",
97
106
  "typescript-eslint": "^8.46.4",
98
- "vitest": "^4.0.8",
99
- "@vitest/coverage-v8": "^4.0.8"
107
+ "vitest": "^4.0.8"
100
108
  },
101
109
  "engines": {
102
110
  "node": ">=20.0.0",
103
111
  "npm": ">=10.0.0"
112
+ },
113
+ "lint-staged": {
114
+ "*.{ts,tsx,js,jsx}": [
115
+ "eslint --fix",
116
+ "prettier --write"
117
+ ],
118
+ "*.{json,md,yml,yaml}": [
119
+ "prettier --write"
120
+ ]
104
121
  }
105
122
  }