@sk8metal/michi-cli 0.8.7 → 0.11.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 (116) hide show
  1. package/CHANGELOG.md +70 -1
  2. package/README.md +77 -847
  3. package/dist/scripts/config/config-schema.d.ts +3 -0
  4. package/dist/scripts/config/config-schema.d.ts.map +1 -1
  5. package/dist/scripts/config/config-schema.js +18 -0
  6. package/dist/scripts/config/config-schema.js.map +1 -1
  7. package/dist/scripts/phase-runner.js +1 -1
  8. package/dist/scripts/phase-runner.js.map +1 -1
  9. package/dist/scripts/utils/multi-repo-validator.d.ts +38 -1
  10. package/dist/scripts/utils/multi-repo-validator.d.ts.map +1 -1
  11. package/dist/scripts/utils/multi-repo-validator.js +166 -1
  12. package/dist/scripts/utils/multi-repo-validator.js.map +1 -1
  13. package/dist/scripts/utils/tasks-format-validator.js +3 -3
  14. package/dist/scripts/utils/tasks-format-validator.js.map +1 -1
  15. package/docs/README.md +20 -83
  16. package/docs/getting-started/configuration.md +379 -0
  17. package/docs/getting-started/installation.md +59 -0
  18. package/docs/getting-started/quick-start.md +76 -0
  19. package/docs/guides/ai-tools.md +311 -0
  20. package/docs/guides/atlassian-integration.md +116 -0
  21. package/docs/guides/claude-code.md +155 -0
  22. package/docs/guides/multi-repo.md +117 -0
  23. package/docs/guides/workflow.md +382 -0
  24. package/docs/reference/ai-commands.md +92 -0
  25. package/docs/reference/cli.md +756 -0
  26. package/docs/reference/environment-variables.md +192 -0
  27. package/docs/troubleshooting.md +543 -0
  28. package/package.json +1 -1
  29. package/scripts/__tests__/multi-repo-config-schema.test.ts +106 -0
  30. package/scripts/__tests__/multi-repo-validator.test.ts +229 -1
  31. package/scripts/config/config-schema.ts +20 -0
  32. package/scripts/phase-runner.ts +1 -1
  33. package/scripts/utils/__tests__/multi-repo-validator.test.ts +159 -1
  34. package/scripts/utils/multi-repo-validator.ts +210 -1
  35. package/scripts/utils/tasks-format-validator.ts +3 -3
  36. package/templates/claude/agents/e2e-first-planner/AGENT.md +1 -1
  37. package/templates/claude/agents/mermaid-validator/AGENT.md +257 -0
  38. package/templates/claude/agents/pr-resolver/AGENT.md +15 -3
  39. package/templates/claude/commands/michi/e2e-plan.md +1 -1
  40. package/templates/claude/commands/michi/spec-design.md +2 -2
  41. package/templates/claude/commands/michi/spec-tasks.md +156 -0
  42. package/templates/claude/commands/michi/test-planning.md +1 -1
  43. package/templates/claude/commands/michi/validate-design.md +3 -3
  44. package/templates/claude/commands/michi-multi-repo/impl-all.md +293 -0
  45. package/templates/claude/commands/michi-multi-repo/propagate-specs.md +284 -0
  46. package/templates/claude/commands/michi-multi-repo/spec-design.md +66 -3
  47. package/templates/claude/commands/michi-multi-repo/spec-review.md +261 -0
  48. package/templates/claude/skills/mermaid-validator/SKILL.md +261 -0
  49. package/templates/claude-agent/agents/cross-repo-reviewer.md +194 -0
  50. package/templates/claude-agent/agents/repo-spec-executor.md +113 -0
  51. package/templates/claude-agent/commands/michi/spec-tasks.md +117 -0
  52. package/templates/claude-agent/rules/code-size-monitor.md +26 -0
  53. package/templates/claude-agent/rules/code-size-rules.md +32 -0
  54. package/templates/codex/AGENTS.override.md +1 -1
  55. package/templates/codex/rules/README.md +2 -2
  56. package/templates/cursor/commands/michi/spec-tasks.md +117 -0
  57. package/templates/michi/cc-sdd-overrides/settings/rules/design-review-michi.md +1 -1
  58. package/docs/context.md +0 -59
  59. package/docs/michi-development/contributing/development.md +0 -341
  60. package/docs/michi-development/contributing/release.md +0 -365
  61. package/docs/michi-development/design/config-unification.md +0 -733
  62. package/docs/michi-development/design/design-config-current-state.md +0 -330
  63. package/docs/michi-development/design/design-config-implementation.md +0 -628
  64. package/docs/michi-development/design/design-config-migration.md +0 -952
  65. package/docs/michi-development/design/design-config-security.md +0 -771
  66. package/docs/michi-development/design/design-config-solution.md +0 -583
  67. package/docs/michi-development/design/design-config-testing.md +0 -892
  68. package/docs/michi-development/testing/manual-verification-flow.md +0 -871
  69. package/docs/michi-development/testing/manual-verification-other-tools.md +0 -1279
  70. package/docs/michi-development/testing/manual-verification-troubleshooting.md +0 -122
  71. package/docs/michi-development/testing/pre-publish-checklist.md +0 -560
  72. package/docs/michi-development/testing-strategy.md +0 -87
  73. package/docs/plan.md +0 -275
  74. package/docs/user-guide/getting-started/github-token-setup.md +0 -510
  75. package/docs/user-guide/getting-started/new-repository-setup.md +0 -704
  76. package/docs/user-guide/getting-started/quick-start.md +0 -212
  77. package/docs/user-guide/getting-started/setup.md +0 -819
  78. package/docs/user-guide/guides/agent-skills-integration.md +0 -222
  79. package/docs/user-guide/guides/customization.md +0 -537
  80. package/docs/user-guide/guides/internationalization.md +0 -540
  81. package/docs/user-guide/guides/migration-guide.md +0 -138
  82. package/docs/user-guide/guides/multi-project.md +0 -368
  83. package/docs/user-guide/guides/multi-repo-guide.md +0 -1147
  84. package/docs/user-guide/guides/phase-automation.md +0 -419
  85. package/docs/user-guide/guides/workflow.md +0 -584
  86. package/docs/user-guide/hands-on/README.md +0 -142
  87. package/docs/user-guide/hands-on/claude-agent-setup.md +0 -597
  88. package/docs/user-guide/hands-on/claude-setup.md +0 -452
  89. package/docs/user-guide/hands-on/cursor-setup.md +0 -353
  90. package/docs/user-guide/hands-on/troubleshooting.md +0 -964
  91. package/docs/user-guide/hands-on/verification-checklist.md +0 -439
  92. package/docs/user-guide/hands-on/workflow-walkthrough.md +0 -909
  93. package/docs/user-guide/reference/config.md +0 -589
  94. package/docs/user-guide/reference/multi-repo-api.md +0 -771
  95. package/docs/user-guide/reference/quick-reference.md +0 -297
  96. package/docs/user-guide/reference/security-test-payloads.md +0 -50
  97. package/docs/user-guide/reference/tasks-template.md +0 -550
  98. package/docs/user-guide/release/ci-setup-java.md +0 -114
  99. package/docs/user-guide/release/ci-setup-nodejs.md +0 -94
  100. package/docs/user-guide/release/ci-setup-php.md +0 -102
  101. package/docs/user-guide/release/ci-setup-troubleshooting.md +0 -94
  102. package/docs/user-guide/release/ci-setup.md +0 -188
  103. package/docs/user-guide/release/release-flow.md +0 -476
  104. package/docs/user-guide/templates/test-specs/README.md +0 -173
  105. package/docs/user-guide/templates/test-specs/e2e-test-spec-template.md +0 -553
  106. package/docs/user-guide/templates/test-specs/integration-test-spec-template.md +0 -435
  107. package/docs/user-guide/templates/test-specs/performance-test-spec-template.md +0 -454
  108. package/docs/user-guide/templates/test-specs/security-test-spec-template.md +0 -625
  109. package/docs/user-guide/templates/test-specs/unit-test-spec-template.md +0 -328
  110. package/docs/user-guide/testing/integration-tests.md +0 -312
  111. package/docs/user-guide/testing/tdd-cycle.md +0 -349
  112. package/docs/user-guide/testing/test-execution-flow.md +0 -396
  113. package/docs/user-guide/testing/test-failure-handling.md +0 -521
  114. package/docs/user-guide/testing/test-planning-flow.md +0 -185
  115. package/docs/user-guide/testing-strategy.md +0 -185
  116. package/docs/verification-guide.md +0 -518
@@ -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): テスト失敗時の対処方法