@sk8metal/michi-cli 0.10.1 → 0.12.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 (139) hide show
  1. package/README.md +71 -848
  2. package/dist/scripts/constants/environments.d.ts +1 -1
  3. package/dist/scripts/constants/environments.d.ts.map +1 -1
  4. package/dist/scripts/constants/environments.js +0 -20
  5. package/dist/scripts/constants/environments.js.map +1 -1
  6. package/dist/scripts/phase-runner.js +1 -1
  7. package/dist/scripts/phase-runner.js.map +1 -1
  8. package/dist/scripts/utils/multi-repo-validator.d.ts +18 -0
  9. package/dist/scripts/utils/multi-repo-validator.d.ts.map +1 -1
  10. package/dist/scripts/utils/multi-repo-validator.js +42 -0
  11. package/dist/scripts/utils/multi-repo-validator.js.map +1 -1
  12. package/dist/scripts/utils/tasks-format-validator.js +3 -3
  13. package/dist/scripts/utils/tasks-format-validator.js.map +1 -1
  14. package/dist/scripts/utils/template-finder.d.ts +2 -2
  15. package/dist/scripts/utils/template-finder.d.ts.map +1 -1
  16. package/dist/scripts/utils/template-finder.js +3 -8
  17. package/dist/scripts/utils/template-finder.js.map +1 -1
  18. package/dist/src/cli.d.ts.map +1 -1
  19. package/dist/src/cli.js +0 -8
  20. package/dist/src/cli.js.map +1 -1
  21. package/dist/src/commands/init.d.ts +0 -4
  22. package/dist/src/commands/init.d.ts.map +1 -1
  23. package/dist/src/commands/init.js +6 -30
  24. package/dist/src/commands/init.js.map +1 -1
  25. package/dist/src/commands/setup-existing.d.ts +2 -6
  26. package/dist/src/commands/setup-existing.d.ts.map +1 -1
  27. package/dist/src/commands/setup-existing.js +8 -142
  28. package/dist/src/commands/setup-existing.js.map +1 -1
  29. package/docs/README.md +20 -83
  30. package/docs/getting-started/configuration.md +350 -0
  31. package/docs/getting-started/installation.md +59 -0
  32. package/docs/getting-started/quick-start.md +76 -0
  33. package/docs/guides/atlassian-integration.md +116 -0
  34. package/docs/guides/claude-code.md +155 -0
  35. package/docs/guides/multi-repo.md +117 -0
  36. package/docs/guides/workflow.md +382 -0
  37. package/docs/reference/ai-commands.md +92 -0
  38. package/docs/reference/cli.md +752 -0
  39. package/docs/reference/environment-variables.md +192 -0
  40. package/docs/troubleshooting.md +498 -0
  41. package/package.json +1 -3
  42. package/scripts/__tests__/create-project.test.ts +12 -12
  43. package/scripts/__tests__/setup-existing-project.test.ts +22 -22
  44. package/scripts/constants/__tests__/environments.test.ts +7 -50
  45. package/scripts/constants/environments.ts +1 -27
  46. package/scripts/phase-runner.ts +1 -1
  47. package/scripts/template/__tests__/renderer.test.ts +21 -21
  48. package/scripts/utils/__tests__/multi-repo-validator.test.ts +159 -1
  49. package/scripts/utils/multi-repo-validator.ts +50 -0
  50. package/scripts/utils/tasks-format-validator.ts +3 -3
  51. package/scripts/utils/template-finder.ts +5 -11
  52. package/templates/claude/agents/e2e-first-planner/AGENT.md +1 -1
  53. package/templates/claude/agents/pr-resolver/AGENT.md +15 -3
  54. package/templates/claude/commands/michi/e2e-plan.md +1 -1
  55. package/templates/claude/commands/michi/spec-design.md +2 -2
  56. package/templates/claude/commands/michi/spec-tasks.md +156 -0
  57. package/templates/claude/commands/michi/test-planning.md +1 -1
  58. package/templates/claude/commands/michi/validate-design.md +3 -3
  59. package/templates/claude/commands/michi-multi-repo/impl-all.md +30 -1
  60. package/templates/claude/commands/michi-multi-repo/propagate-specs.md +14 -1
  61. package/templates/claude/commands/michi-multi-repo/spec-review.md +16 -2
  62. package/templates/claude-agent/agents/repo-spec-executor.md +1 -1
  63. package/templates/claude-agent/commands/michi/spec-tasks.md +117 -0
  64. package/templates/claude-agent/rules/code-size-monitor.md +26 -0
  65. package/templates/claude-agent/rules/code-size-rules.md +32 -0
  66. package/templates/michi/cc-sdd-overrides/settings/rules/design-review-michi.md +1 -1
  67. package/docs/context.md +0 -59
  68. package/docs/michi-development/contributing/development.md +0 -341
  69. package/docs/michi-development/contributing/release.md +0 -365
  70. package/docs/michi-development/design/config-unification.md +0 -733
  71. package/docs/michi-development/design/design-config-current-state.md +0 -330
  72. package/docs/michi-development/design/design-config-implementation.md +0 -628
  73. package/docs/michi-development/design/design-config-migration.md +0 -952
  74. package/docs/michi-development/design/design-config-security.md +0 -771
  75. package/docs/michi-development/design/design-config-solution.md +0 -583
  76. package/docs/michi-development/design/design-config-testing.md +0 -892
  77. package/docs/michi-development/testing/manual-verification-flow.md +0 -871
  78. package/docs/michi-development/testing/manual-verification-other-tools.md +0 -1279
  79. package/docs/michi-development/testing/manual-verification-troubleshooting.md +0 -122
  80. package/docs/michi-development/testing/pre-publish-checklist.md +0 -560
  81. package/docs/michi-development/testing-strategy.md +0 -87
  82. package/docs/plan.md +0 -275
  83. package/docs/user-guide/getting-started/github-token-setup.md +0 -510
  84. package/docs/user-guide/getting-started/new-repository-setup.md +0 -704
  85. package/docs/user-guide/getting-started/quick-start.md +0 -212
  86. package/docs/user-guide/getting-started/setup.md +0 -819
  87. package/docs/user-guide/guides/agent-skills-integration.md +0 -222
  88. package/docs/user-guide/guides/customization.md +0 -537
  89. package/docs/user-guide/guides/internationalization.md +0 -540
  90. package/docs/user-guide/guides/migration-guide.md +0 -138
  91. package/docs/user-guide/guides/multi-project.md +0 -368
  92. package/docs/user-guide/guides/multi-repo-guide.md +0 -1590
  93. package/docs/user-guide/guides/phase-automation.md +0 -419
  94. package/docs/user-guide/guides/workflow.md +0 -574
  95. package/docs/user-guide/hands-on/README.md +0 -142
  96. package/docs/user-guide/hands-on/claude-agent-setup.md +0 -597
  97. package/docs/user-guide/hands-on/claude-setup.md +0 -452
  98. package/docs/user-guide/hands-on/cursor-setup.md +0 -353
  99. package/docs/user-guide/hands-on/troubleshooting.md +0 -964
  100. package/docs/user-guide/hands-on/verification-checklist.md +0 -439
  101. package/docs/user-guide/hands-on/workflow-walkthrough.md +0 -1078
  102. package/docs/user-guide/reference/config.md +0 -589
  103. package/docs/user-guide/reference/multi-repo-api.md +0 -771
  104. package/docs/user-guide/reference/quick-reference.md +0 -297
  105. package/docs/user-guide/reference/security-test-payloads.md +0 -50
  106. package/docs/user-guide/reference/tasks-template.md +0 -550
  107. package/docs/user-guide/release/ci-setup-java.md +0 -114
  108. package/docs/user-guide/release/ci-setup-nodejs.md +0 -94
  109. package/docs/user-guide/release/ci-setup-php.md +0 -102
  110. package/docs/user-guide/release/ci-setup-troubleshooting.md +0 -94
  111. package/docs/user-guide/release/ci-setup.md +0 -188
  112. package/docs/user-guide/release/release-flow.md +0 -476
  113. package/docs/user-guide/templates/test-specs/README.md +0 -173
  114. package/docs/user-guide/templates/test-specs/e2e-test-spec-template.md +0 -553
  115. package/docs/user-guide/templates/test-specs/integration-test-spec-template.md +0 -435
  116. package/docs/user-guide/templates/test-specs/performance-test-spec-template.md +0 -454
  117. package/docs/user-guide/templates/test-specs/security-test-spec-template.md +0 -625
  118. package/docs/user-guide/templates/test-specs/unit-test-spec-template.md +0 -328
  119. package/docs/user-guide/testing/integration-tests.md +0 -312
  120. package/docs/user-guide/testing/tdd-cycle.md +0 -349
  121. package/docs/user-guide/testing/test-execution-flow.md +0 -396
  122. package/docs/user-guide/testing/test-failure-handling.md +0 -521
  123. package/docs/user-guide/testing/test-planning-flow.md +0 -185
  124. package/docs/user-guide/testing-strategy.md +0 -185
  125. package/docs/verification-guide.md +0 -518
  126. package/templates/cline/rules/atlassian-integration.md +0 -36
  127. package/templates/cline/rules/michi-core.md +0 -56
  128. package/templates/codex/AGENTS.override.md +0 -277
  129. package/templates/codex/prompts/confluence-sync.md +0 -177
  130. package/templates/codex/rules/README.md +0 -210
  131. package/templates/cursor/commands/kiro/kiro-spec-impl.md +0 -244
  132. package/templates/cursor/commands/kiro/kiro-spec-tasks.md +0 -354
  133. package/templates/cursor/commands/michi/confluence-sync.md +0 -76
  134. package/templates/cursor/commands/michi/project-switch.md +0 -69
  135. package/templates/cursor/rules/atlassian-mcp.mdc +0 -188
  136. package/templates/cursor/rules/github-ssot.mdc +0 -151
  137. package/templates/cursor/rules/multi-project.mdc +0 -81
  138. package/templates/gemini/commands/README.md +0 -41
  139. package/templates/gemini/rules/GEMINI.md +0 -80
@@ -1,349 +0,0 @@
1
- # TDDサイクル
2
-
3
- このドキュメントでは、michiを使用したプロジェクトでのテスト駆動開発(TDD)サイクルについて説明します。
4
-
5
- ## michiワークフローにおけるTDDの位置づけ
6
-
7
- TDDは **Phase 2: TDD実装** フェーズで実践します。Phase 0.4で作成したテスト仕様書に基づき、テストコードと実装コードを同時進行で作成します。
8
-
9
- 詳細なワークフローは [ワークフローガイド](../guides/workflow.md#phase-2-tdd実装) を参照してください。
10
-
11
- ## TDDとは
12
-
13
- **テスト駆動開発(Test-Driven Development, TDD)** は、コードを書く前にテストを書く開発手法です。テストファーストの考え方により、以下のメリットが得られます:
14
-
15
- - **設計の改善**: テストを先に書くことで、使いやすいインターフェースを設計できる
16
- - **バグの早期発見**: 実装直後にテストで検証するため、バグを早く見つけられる
17
- - **リファクタリングの安心感**: テストがあることで、コード改善時の品質が保証される
18
- - **ドキュメントとしての役割**: テストコードが仕様書の役割を果たす
19
-
20
- ## RED-GREEN-REFACTORサイクル
21
-
22
- TDDは以下の3ステップを繰り返します:
23
-
24
- ```
25
- RED → GREEN → REFACTOR → RED → GREEN → REFACTOR → ...
26
- ```
27
-
28
- ### 1. RED: 失敗するテストを書く
29
-
30
- まず、**実装が存在しない状態で**テストを書きます。このテストは必ず失敗します(RED)。
31
-
32
- #### 例(Node.js/Vitest)
33
-
34
- ```typescript
35
- // tests/unit/calculator.test.ts
36
- import { describe, it, expect } from 'vitest';
37
- import { calculateTotal } from '../src/calculator';
38
-
39
- describe('calculateTotal', () => {
40
- it('should return sum of array elements', () => {
41
- const result = calculateTotal([10, 20, 30]);
42
- expect(result).toBe(60); // このテストは失敗する(関数がまだ存在しない)
43
- });
44
- });
45
- ```
46
-
47
- **実行結果**:
48
- ```
49
- ❌ FAIL tests/unit/calculator.test.ts
50
- calculateTotal
51
- ✗ should return sum of array elements
52
- Module not found: Cannot find module '../src/calculator'
53
- ```
54
-
55
- **重要**: この段階でテストが失敗することを確認してください。もしテストが成功する場合、テストが正しく機能していない可能性があります。
56
-
57
- ### 2. GREEN: 最小限の実装でテストを通す
58
-
59
- 次に、テストを通すための**最小限の実装**を書きます。この段階では、コードの美しさやパフォーマンスは気にしません。
60
-
61
- #### 例
62
-
63
- ```typescript
64
- // src/calculator.ts
65
- export function calculateTotal(numbers: number[]): number {
66
- let sum = 0;
67
- for (const num of numbers) {
68
- sum += num;
69
- }
70
- return sum;
71
- }
72
- ```
73
-
74
- **実行結果**:
75
- ```
76
- ✅ PASS tests/unit/calculator.test.ts
77
- calculateTotal
78
- ✓ should return sum of array elements (2ms)
79
- ```
80
-
81
- **重要**: テストが成功したら、すぐに次のステップに進みます。
82
-
83
- ### 3. REFACTOR: コードを改善する
84
-
85
- テストが通った状態で、コードを**リファクタリング**します。この段階で、コードの重複を排除したり、可読性を向上させたりします。
86
-
87
- #### 例
88
-
89
- ```typescript
90
- // src/calculator.ts (リファクタリング後)
91
- export function calculateTotal(numbers: number[]): number {
92
- return numbers.reduce((sum, num) => sum + num, 0);
93
- }
94
- ```
95
-
96
- **実行結果**:
97
- ```
98
- ✅ PASS tests/unit/calculator.test.ts
99
- calculateTotal
100
- ✓ should return sum of array elements (2ms)
101
- ```
102
-
103
- **重要**: リファクタリング後も、すべてのテストが成功することを確認してください。
104
-
105
- ### サイクルの繰り返し
106
-
107
- 上記の3ステップを繰り返して、機能を少しずつ追加していきます。
108
-
109
- #### 次のテストケース(RED)
110
-
111
- ```typescript
112
- it('should return 0 for empty array', () => {
113
- const result = calculateTotal([]);
114
- expect(result).toBe(0); // 既存の実装でも成功するが、明示的にテスト
115
- });
116
-
117
- it('should throw error for non-numeric values', () => {
118
- expect(() => calculateTotal([10, 'invalid', 30])).toThrow(TypeError); // 失敗
119
- });
120
- ```
121
-
122
- #### 実装の追加(GREEN)
123
-
124
- ```typescript
125
- export function calculateTotal(numbers: number[]): number {
126
- // 型チェックを追加
127
- if (!numbers.every(num => typeof num === 'number')) {
128
- throw new TypeError('All elements must be numbers');
129
- }
130
- return numbers.reduce((sum, num) => sum + num, 0);
131
- }
132
- ```
133
-
134
- ## 最も重要な原則: テストは仕様
135
-
136
- TDDで最も重要な原則は、**テストは仕様を表す**ということです。
137
-
138
- ### ❌ 絶対にやってはいけないこと
139
-
140
- **実装に合わせてテストを修正する**
141
-
142
- ```typescript
143
- // 悪い例
144
- it('should return sum of array elements', () => {
145
- const result = calculateTotal([10, 20, 30]);
146
- expect(result).toBe(70); // ❌ 実装が70を返すからテストを変更
147
- });
148
- ```
149
-
150
- **理由**: これでは、テストが仕様ではなく、実装を追認しているだけになります。バグがあっても見逃してしまいます。
151
-
152
- ### ✅ 正しいアプローチ
153
-
154
- **仕様が変更された場合のみテストを修正する**
155
-
156
- ```typescript
157
- // 良い例
158
- // 仕様変更: 「合計に消費税10%を加算する」
159
- it('should return sum with 10% tax', () => {
160
- const result = calculateTotalWithTax([10, 20, 30]);
161
- expect(result).toBe(66); // ✅ 60 + (60 * 0.1) = 66
162
- });
163
- ```
164
-
165
- ### 判断フローチャート
166
-
167
- ```
168
- テストが失敗した
169
-
170
- なぜ失敗したのか?
171
-
172
- ├─ 仕様が変更された
173
- │ → ✅ テストを修正する
174
-
175
- ├─ 実装にバグがある
176
- │ → ✅ 実装を修正する
177
-
178
- └─ テストが間違っている
179
- → ✅ テストを修正する
180
- ```
181
-
182
- **注意**: 「実装がこうなっているから」という理由でテストを変更してはいけません。
183
-
184
- ## TDDのベストプラクティス
185
-
186
- ### 1. 小さなステップで進む
187
-
188
- 一度に大きな機能を実装しようとせず、小さな単位で RED → GREEN → REFACTOR を繰り返します。
189
-
190
- **悪い例**:
191
- ```typescript
192
- // 一度に複数の機能をテスト
193
- it('should calculate, filter, and format', () => {
194
- // 複雑なテスト...
195
- });
196
- ```
197
-
198
- **良い例**:
199
- ```typescript
200
- it('should calculate total', () => { /* ... */ });
201
- it('should filter negative numbers', () => { /* ... */ });
202
- it('should format as currency', () => { /* ... */ });
203
- ```
204
-
205
- ### 2. テストが失敗することを確認する
206
-
207
- 新しいテストを書いたら、必ず一度は失敗することを確認します。
208
-
209
- ```bash
210
- # テストを書く
211
- # ↓
212
- npm test # 失敗することを確認
213
- # ↓
214
- # 実装を書く
215
- # ↓
216
- npm test # 成功することを確認
217
- ```
218
-
219
- ### 3. 1つのテストで1つのことを検証する
220
-
221
- テストは小さく、焦点を絞って書きます。
222
-
223
- **悪い例**:
224
- ```typescript
225
- it('should work correctly', () => {
226
- expect(calculateTotal([10, 20])).toBe(30);
227
- expect(calculateTotal([])).toBe(0);
228
- expect(() => calculateTotal([10, 'x'])).toThrow();
229
- });
230
- ```
231
-
232
- **良い例**:
233
- ```typescript
234
- it('should return sum of array elements', () => {
235
- expect(calculateTotal([10, 20])).toBe(30);
236
- });
237
-
238
- it('should return 0 for empty array', () => {
239
- expect(calculateTotal([])).toBe(0);
240
- });
241
-
242
- it('should throw error for invalid input', () => {
243
- expect(() => calculateTotal([10, 'x'])).toThrow();
244
- });
245
- ```
246
-
247
- ### 4. テストコードも保守する
248
-
249
- テストコードもプロダクションコードと同じように、リファクタリングして保守します。
250
-
251
- ```typescript
252
- // 共通のヘルパー関数を使う
253
- function createTestData() {
254
- return [10, 20, 30];
255
- }
256
-
257
- it('should calculate total', () => {
258
- const data = createTestData();
259
- expect(calculateTotal(data)).toBe(60);
260
- });
261
- ```
262
-
263
- ## 言語別のTDD例
264
-
265
- ### Node.js/TypeScript (Vitest)
266
-
267
- ```typescript
268
- // RED
269
- import { describe, it, expect } from 'vitest';
270
- import { User } from '../src/user';
271
-
272
- describe('User', () => {
273
- it('should create user with name', () => {
274
- const user = new User('Alice');
275
- expect(user.getName()).toBe('Alice');
276
- });
277
- });
278
-
279
- // GREEN
280
- export class User {
281
- constructor(private name: string) {}
282
- getName() { return this.name; }
283
- }
284
-
285
- // REFACTOR(リファクタリングの余地がない場合はスキップ)
286
- ```
287
-
288
- ### Java (JUnit 5 + Gradle)
289
-
290
- ```java
291
- // RED
292
- import org.junit.jupiter.api.Test;
293
- import static org.junit.jupiter.api.Assertions.*;
294
-
295
- class UserTest {
296
- @Test
297
- void shouldCreateUserWithName() {
298
- User user = new User("Alice");
299
- assertEquals("Alice", user.getName());
300
- }
301
- }
302
-
303
- // GREEN
304
- public class User {
305
- private String name;
306
- public User(String name) { this.name = name; }
307
- public String getName() { return name; }
308
- }
309
- ```
310
-
311
- ### PHP (PHPUnit)
312
-
313
- ```php
314
- // RED
315
- <?php
316
- use PHPUnit\Framework\TestCase;
317
-
318
- class UserTest extends TestCase
319
- {
320
- public function testShouldCreateUserWithName()
321
- {
322
- $user = new User('Alice');
323
- $this->assertEquals('Alice', $user->getName());
324
- }
325
- }
326
-
327
- // GREEN
328
- class User
329
- {
330
- private $name;
331
- public function __construct($name) { $this->name = $name; }
332
- public function getName() { return $this->name; }
333
- }
334
- ```
335
-
336
- ## まとめ
337
-
338
- TDDの核心は以下の3つです:
339
-
340
- 1. **RED-GREEN-REFACTORサイクル**を繰り返す
341
- 2. **テストは仕様**であり、実装に合わせて変更してはいけない
342
- 3. **小さなステップ**で進む
343
-
344
- TDDを実践することで、品質の高いコードを効率的に書けるようになります。
345
-
346
- ## 次のステップ
347
-
348
- - [テスト実行フロー](./test-execution-flow.md): Phase A/Bでのテスト実行
349
- - [テスト失敗時の対応](./test-failure-handling.md): テスト失敗時の対処方法