@k2works/claude-code-booster 0.2.1 → 0.4.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.
@@ -115,6 +115,40 @@ ucc --> sm : "状態"
115
115
 
116
116
  要件定義の詳細は[要件定義ガイド](要件定義ガイド.md)を参照
117
117
 
118
+ ### 機能要件
119
+
120
+ #### アーキテクチャ設計
121
+
122
+ アーキテクチャ設計の詳細は [アーキテクチャ設計ガイド](アーキテクチャ設計ガイド.md) を参照
123
+
124
+ #### データモデル設計
125
+
126
+ データモデル設計の詳細は [データモデル設計ガイド](データモデル設計ガイド.md) を参照
127
+
128
+ #### ドメインモデル設計
129
+
130
+ ドメインモデル設計の詳細は [ドメインモデル設計ガイド](ドメインモデル設計ガイド.md) を参照
131
+
132
+ #### UI設計
133
+
134
+ UI設計の詳細は [UI設計ガイド](UI設計ガイド.md) を参照
135
+
136
+ ### 非機能要件
137
+
138
+ 非機能要件の詳細は [非機能要件ガイド](非機能要件定義ガイド.md) を参照
139
+
140
+ #### テスト戦略
141
+
142
+ テスト戦略の詳細は [テスト戦略ガイド](テスト戦略ガイド.md) を参照
143
+
144
+ #### 非機能要件定義
145
+
146
+ 非機能要件定義は [非機能要件定義ガイド](非機能要件定義ガイド.md) を参照
147
+
148
+ #### 運用要件定義
149
+
150
+ 運用要件定義は [運用要件定義ガイド](運用要件定義ガイド.md) を参照
151
+
118
152
  ### ユースケース・ユーザーストーリー
119
153
 
120
154
  ユースケース・ユーザーストーリーの詳細は[ユースケース作成ガイド](ユースケース作成ガイド.md)を参照
@@ -151,49 +185,15 @@ state イテレーション {
151
185
  計画づくりの詳細は [リリース・イテレーション計画ガイド](リリース・イテレーション計画ガイド.md) を参照。
152
186
 
153
187
 
154
- ### 機能要件
155
-
156
- #### アーキテクチャ設計
157
-
158
- アーキテクチャ設計の詳細は [アーキテクチャ設計ガイド](アーキテクチャ設計ガイド.md) を参照
159
-
160
- #### データモデル設計
161
-
162
- データモデル設計の詳細は [データモデル設計ガイド](データモデル設計ガイド.md) を参照
163
-
164
- #### ドメインモデル設計
165
-
166
- ドメインモデル設計の詳細は [ドメインモデル設計ガイド](ドメインモデル設計ガイド.md) を参照
167
-
168
- #### UI設計
169
-
170
- UI設計の詳細は [UI設計ガイド](UI設計ガイド.md) を参照
171
-
172
- ### 非機能要件
173
-
174
- 非機能要件の詳細は [非機能要件ガイド](非機能要件定義ガイド.md) を参照
175
-
176
- #### テスト戦略
177
-
178
- テスト戦略の詳細は [テスト戦略ガイド](テスト戦略ガイド.md) を参照
179
-
180
- #### 非機能要件定義
181
-
182
- 非機能要件定義は [非機能要件定義ガイド](非機能要件定義ガイド.md) を参照
183
-
184
- #### 運用要件定義
185
-
186
- 運用要件定義は [運用要件定義ガイド](運用要件定義ガイド.md) を参照
187
-
188
188
  ## 開発
189
189
 
190
190
  ```plantuml
191
191
  @startuml
192
192
 
193
193
  [*] --> イテレーション計画
194
- イテレーション計画 --> ユーザーストーリー作成
195
- ユーザーストーリー作成 --> ユースケース作成
196
- ユースケース作成 --> コーディングとテスト
194
+ イテレーション計画 --> ユースケース作成
195
+ ユースケース作成 --> ユーザーストーリー作成
196
+ ユーザーストーリー作成 --> コーディングとテスト
197
197
  アーキテクチャ設計 --> コーディングとテスト
198
198
  コーディングとテスト --> アーキテクチャ設計
199
199
  データモデル設計 --> コーディングとテスト
@@ -202,7 +202,7 @@ UI設計の詳細は [UI設計ガイド](UI設計ガイド.md) を参照
202
202
  コーディングとテスト --> ドメインモデル設計
203
203
  コーディングとテスト --> ユーザーインターフェース設計
204
204
  ユーザーインターフェース設計 --> コーディングとテスト
205
- コーディングとテスト --> ユースケース作成
205
+ コーディングとテスト --> ユーザーストーリー作成
206
206
  コーディングとテスト --> イテレーションレビュー
207
207
  イテレーションレビュー --> イテレーション計画
208
208
  イテレーションレビュー --> [*]
@@ -210,173 +210,7 @@ UI設計の詳細は [UI設計ガイド](UI設計ガイド.md) を参照
210
210
  @enduml
211
211
  ```
212
212
 
213
- 開発は、以下の2つのアプローチを状況に応じて使い分けます:
214
-
215
- 1. インサイドアウトアプローチ
216
- - データモデルから実装を開始
217
- - ドメイン駆動設計に適合
218
- - テストファーストな開発
219
-
220
- 2. アウトサイドインアプローチ
221
- - UIから実装を開始
222
- - プロトタイプ駆動開発に適合
223
- - モックを活用した開発
224
-
225
-
226
- ```plantuml
227
- @startuml
228
- start
229
- :ユーザーストーリー;
230
- if (CRUD実装済み?) then (はい)
231
- :ドメインモデル;
232
- :アウトサイドイン;
233
- else (いいえ)
234
- :貧血ドメインモデル;
235
- :インサイドサイドアウト;
236
- endif
237
- if (API実装済み?) then (はい)
238
- :インサイドサイドアウト;
239
- else (いいえ)
240
- :アウトサイドイン;
241
- endif
242
- stop
243
- @enduml
244
- ```
245
- #### インサイドアウト
246
-
247
- ```plantuml
248
- @startuml
249
- start
250
- :データベース;
251
- :インフラストラクチャ層;
252
- :ドメイン層;
253
- :サービス層;
254
- :プレゼンテーション層;
255
- stop
256
- @enduml
257
- ```
258
-
259
- ```plantuml
260
- @startuml
261
- [*] --> コーディングとテスト
262
- コーディングとテスト --> TODO : TODOリストを作成
263
- TODO --> Red : 最小限の実装
264
- Red --> Green : テストを書く
265
- Green --> Refactor : リファクタリング
266
- Refactor --> Red : 次の実装
267
- Red : 動作の確認
268
- Green : テストが成功
269
- Refactor : コードの重複を除去してリファクタリング
270
- Refactor --> TODO : リファクタリングが完了したらTODOリストに戻る
271
- TODO --> コーディングとテスト : TODOリストが空になるまで繰り返す
272
- コーディングとテスト --> イテレーションレビュー
273
- @enduml
274
- ```
275
-
276
- #### アウトサイドイン
277
-
278
- ```plantuml
279
- @startuml
280
- start
281
- :プレゼンテーション層;
282
- :サービス層;
283
- :ドメイン層;
284
- :インフラストラクチャ層;
285
- :データベース;
286
- stop
287
- @enduml
288
- ```
289
-
290
- ```plantuml
291
- @startuml
292
- [*] --> コーディングとテスト
293
- コーディングとテスト --> TODO : TODOリストを作成
294
- TODO --> Red : テストを書く
295
- Red --> Green : 最小限の実装
296
- Green --> Refactor : リファクタリング
297
- Refactor --> Red : 次のテストを書く
298
- Red : テストに失敗
299
- Green : テストに通る最小限の実装
300
- Refactor : コードの重複を除去してリファクタリング
301
- Refactor --> TODO : リファクタリングが完了したらTODOリストに戻る
302
- TODO --> コーディングとテスト : TODOリストが空になるまで繰り返す
303
- コーディングとテスト --> イテレーションレビュー
304
- @enduml
305
- ```
306
-
307
- ### コーディングとテスト
308
-
309
- ```plantuml
310
- @startuml "イテレーション開発プロセス"
311
-
312
- start
313
-
314
- partition "イテレーション開始" {
315
- }
316
-
317
- repeat :TODO確認;
318
- partition "TDD実装サイクル" {
319
- repeat
320
- :TODO選択;
321
-
322
- repeat
323
- :失敗テスト作成 (Red);
324
- :最小実装 (Green);
325
- :リファクタリング (Refactor);
326
- :品質チェック;
327
- if (品質OK?) then (yes)
328
- :コミット;
329
- else (no)
330
- :修正;
331
- endif
332
- repeat while (TODO完了?)
333
- partition "コードレビュー" {
334
- }
335
- repeat while (全TODO完了?)
336
- }
337
-
338
- if (イテレーション完了?) then (yes)
339
- partition "受け入れ" {
340
- partition "ユーザーレビュー" {
341
- }
342
- if (受け入れOK?) then (yes)
343
- partition "ふりかえり" {
344
- }
345
- else (no)
346
- partition "修正対応" {
347
- }
348
- endif
349
- }
350
- else (no)
351
- partition "設計リファクタリング" {
352
- partition "アーキテクチャリファクタリング" {
353
- }
354
- partition "データモデルリファクタリング" {
355
- }
356
- partition "ドメインモデルリファクタリング" {
357
- }
358
- partition "UIリファクタリング" {
359
- }
360
- }
361
- endif
362
- repeat while (次のTODO?)
363
-
364
- stop
365
-
366
- @enduml
367
- ```
368
- - 必ずイテレーション単位で開発を行う
369
- - 勝手に次のイテレーションに進まない
370
- - コミットは必ずTODO単位で実施する
371
- - コミットの前に必ず品質確認を実施する
372
- - コミットメッセージはAngularのコミットメッセージの書き方を参考にする
373
- - feat: 新機能の追加
374
- - fix: バグ修正
375
- - docs: ドキュメントの変更
376
- - style: フォーマットやセミコロンの追加など、コードの動作に影響しない変更
377
- - refactor: リファクタリング(バグ修正や機能追加ではない)
378
- - test: テストコードの追加や修正
379
- - chore: ビルドプロセスや補助ツールの変更
213
+ 開発の詳細は [コーディングとテストガイド](コーディングとテストガイド.md) を参照
380
214
 
381
215
  ## 運用
382
216
 
@@ -21,6 +21,7 @@ dateCreated: 2025-09-09T03:26:59.844Z
21
21
  **利害関係者と利益**:<そのユースケースに関する利害関係者と主な利益>
22
22
 
23
23
  **事前条件**:<すでにそうなっていると想定している状態>
24
+
24
25
  - xxxxx
25
26
  - xxxxx
26
27
  - xxxxx
@@ -32,20 +33,24 @@ dateCreated: 2025-09-09T03:26:59.844Z
32
33
  **トリガー**:<何がユースケースを開発するか。時間イベントの場合もある>
33
34
 
34
35
  **主成功シナリオ**:
36
+
35
37
  <トリガーから目的の達成、事後処理までのシナリオのステップをここに記述する>
36
38
  <ステップ番号><アクション記述>
37
39
 
38
40
  **拡張**:
41
+
39
42
  <拡張を1つずつここに記述する。それぞれで主成功シナリオのステップを参照する>
40
43
  - <変更されたステップ><条件>:<アクションまたはサブユースケース>
41
44
  - <変更されたステップ><条件>:<アクションまたはサブユースケース>
42
45
 
43
46
  **技術およびデータのバリエーションリスト**:
47
+
44
48
  <結果としてシナリオの分岐が起きるバリエーションをここに記述する>
45
49
  <ステップ番号またはバリエーション番号><バリエーションのリスト>
46
50
  <ステップ番号またはバリエーション番号><バリエーションのリスト>
47
51
 
48
52
  **関連情報**:
53
+
49
54
  <プロジェクトで必要な関連情報を何でも記述する>
50
55
 
51
56
  ---
@@ -4,6 +4,9 @@ import fs from 'fs';
4
4
  import path from 'path';
5
5
  import { execSync } from 'child_process';
6
6
 
7
+ // Increase buffer to safely handle large diffs/logs
8
+ const MAX_BUFFER = 256 * 1024 * 1024; // 256 MB
9
+
7
10
  // Function to register the journal:generate task
8
11
  export default function(gulp) {
9
12
  // Helper function to generate journal for a specific date
@@ -16,7 +19,7 @@ export default function(gulp) {
16
19
  const journalFile = path.join(journalDir, `${formattedDate}.md`);
17
20
 
18
21
  // Get commits for this date
19
- const commits = execSync(`git log --since="${dateStr} 00:00:00" --until="${dateStr} 23:59:59" --format="%h %s%n%b"`, { maxBuffer: 1024 * 1024 * 10 }).toString();
22
+ const commits = execSync(`git log --since="${dateStr} 00:00:00" --until="${dateStr} 23:59:59" --format="%h %s%n%b"`, { maxBuffer: MAX_BUFFER }).toString();
20
23
 
21
24
  // Skip if no commits
22
25
  if (!commits.trim()) {
@@ -25,23 +28,30 @@ export default function(gulp) {
25
28
  }
26
29
 
27
30
  // Get detailed changes for each commit on this date
28
- const commitHashesOutput = execSync(`git log --since="${dateStr} 00:00:00" --until="${dateStr} 23:59:59" --format="%h"`, { maxBuffer: 1024 * 1024 * 10 }).toString();
31
+ const commitHashesOutput = execSync(`git log --since="${dateStr} 00:00:00" --until="${dateStr} 23:59:59" --format="%h"`, { maxBuffer: MAX_BUFFER }).toString();
29
32
  const commitHashes = commitHashesOutput.split('\n').map(line => line.trim()).filter(Boolean);
30
33
 
31
34
  const detailedCommits = [];
32
35
 
33
36
  commitHashes.forEach(hash => {
34
37
  // Get commit details
35
- const commitMessage = execSync(`git show -s --format="%s%n%b" ${hash}`, { maxBuffer: 1024 * 1024 * 10 }).toString().trim();
38
+ const commitMessage = execSync(`git show -s --format="%s%n%b" ${hash}`, { maxBuffer: MAX_BUFFER }).toString().trim();
36
39
 
37
40
  // Get files changed
38
- const filesChangedOutput = execSync(`git show --name-status ${hash}`, { maxBuffer: 1024 * 1024 * 10 }).toString();
41
+ const filesChangedOutput = execSync(`git show --name-status ${hash}`, { maxBuffer: MAX_BUFFER }).toString();
39
42
  const filesChanged = filesChangedOutput.split('\n')
40
43
  .map(line => line.trim())
41
44
  .filter(line => /^[AMDRT]\s/.test(line));
42
45
 
43
- // Get code changes (diff)
44
- const diff = execSync(`git show ${hash} --color=never`, { maxBuffer: 1024 * 1024 * 10 }).toString();
46
+ // Get code changes (diff) with robust handling for large diffs
47
+ let diff = '';
48
+ try {
49
+ diff = execSync(`git show ${hash} --color=never`, { maxBuffer: MAX_BUFFER }).toString();
50
+ } catch (e) {
51
+ // Fallback to a summary if diff is too large or any error occurs
52
+ const summary = execSync(`git show --stat --oneline ${hash} --color=never`, { maxBuffer: MAX_BUFFER }).toString();
53
+ diff = `[Diff too large or failed to load. Showing summary instead.]\n\n${summary}`;
54
+ }
45
55
 
46
56
  detailedCommits.push({
47
57
  hash,
@@ -144,7 +154,7 @@ export default function(gulp) {
144
154
  }
145
155
 
146
156
  // Get all commit dates
147
- const datesOutput = execSync('git log --format=%ad --date=short').toString();
157
+ const datesOutput = execSync('git log --format=%ad --date=short', { maxBuffer: MAX_BUFFER }).toString();
148
158
  const dates = [...new Set(datesOutput.split('\n').map(line => line.trim()).filter(Boolean))];
149
159
 
150
160
  dates.forEach(dateStr => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@k2works/claude-code-booster",
3
- "version": "0.2.1",
3
+ "version": "0.4.0",
4
4
  "description": "AI Agent Development Support Tool",
5
5
  "main": "main.js",
6
6
  "bin": {