@k2works/claude-code-booster 4.0.0 → 4.1.1
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.
- package/lib/assets/.claude/README.md +8 -1
- package/lib/assets/.claude/skills/practicing-getting-start-tdd/SKILL.md +195 -0
- package/lib/assets/CLAUDE.md +6 -0
- package/package.json +1 -1
- package/lib/assets/.claude/agent-memory/xp-programmer/MEMORY.md +0 -6
- package/lib/assets/.claude/agent-memory/xp-programmer/project_cargo_tracker.md +0 -11
- package/lib/assets/.claude/agent-memory/xp-programmer/project_ddd_patterns.md +0 -27
- package/lib/assets/.claude/agent-memory/xp-programmer/project_us07_route_assignment.md +0 -19
|
@@ -99,6 +99,12 @@ Claude Code をより効率的に使うための基本設定テンプレート
|
|
|
99
99
|
| `creating-release-report` | リリース完了報告書を作成。release_plan・iteration_report・git log・CHANGELOG からデータ収集。 |
|
|
100
100
|
| `creating-iteration-report` | イテレーション完了報告書を作成。iteration_plan・release_plan・テスト結果からデータ収集。 |
|
|
101
101
|
|
|
102
|
+
#### 学習系
|
|
103
|
+
|
|
104
|
+
| スキル | 説明 |
|
|
105
|
+
| :--- | :--- |
|
|
106
|
+
| `practicing-getting-start-tdd` | TDD プログラミング入門の対話式チュートリアル。FizzBuzz を題材に 14 言語で TDD を体験。 |
|
|
107
|
+
|
|
102
108
|
#### 共通
|
|
103
109
|
|
|
104
110
|
| スキル | 説明 |
|
|
@@ -210,7 +216,8 @@ Claude Code をより効率的に使うための基本設定テンプレート
|
|
|
210
216
|
│ ├── orchestrating-development/SKILL.md
|
|
211
217
|
│ ├── orchestrating-operation/SKILL.md
|
|
212
218
|
│ ├── orchestrating-project/SKILL.md
|
|
213
|
-
│
|
|
219
|
+
│ ├── validating-iteration-plan/SKILL.md
|
|
220
|
+
│ └── practicing-getting-start-tdd/SKILL.md
|
|
214
221
|
├── README.md
|
|
215
222
|
├── settings.json # Claude Code 設定
|
|
216
223
|
└── settings.local.json # ローカル環境用設定
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: practicing-getting-start-tdd
|
|
3
|
+
description: "テスト駆動開発から始めるプログラミング入門」の対話式チュートリアル。FizzBuzz を題材に TDD の Red-Green-Refactor サイクルを 14 言語で体験する。「TDD を練習したい」「FizzBuzz で TDD を学びたい」「テスト駆動開発の入門をしたい」「Java で TDD を体験したい」「Python で TDD を始めたい」「プログラミング入門チュートリアルをやりたい」「getting-start-tdd をやりたい」「TDD のハンズオンがしたい」「Red-Green-Refactor を体験したい」といった場面で発動する。TDD チュートリアルやプログラミング入門の要望があれば積極的に使用すること。"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# TDD プログラミング入門 - 対話式チュートリアル
|
|
7
|
+
|
|
8
|
+
FizzBuzz 問題を題材に、TDD(テスト駆動開発)の手法を実践的に学ぶ対話式チュートリアル。ユーザーが自分の手でコードを書き、テストを通す体験を通じて TDD のサイクルと各言語の特徴を身につける。
|
|
9
|
+
|
|
10
|
+
## 教材
|
|
11
|
+
|
|
12
|
+
`docs/article/getting-start-tdd/` に 14 言語 x 12 章の完全な教材がある。チュートリアル進行時は該当する言語・章の教材を参照し、内容に沿って進行する。
|
|
13
|
+
|
|
14
|
+
## チュートリアルの進め方
|
|
15
|
+
|
|
16
|
+
### Step 0: 開発環境の準備
|
|
17
|
+
|
|
18
|
+
チュートリアルを始める前に、開発環境を準備する。環境構築は**ユーザーにインストラクションを提示し、合意を得てから**進める。勝手にコマンドを実行しない。
|
|
19
|
+
|
|
20
|
+
#### 推奨環境: GitHub Codespaces
|
|
21
|
+
|
|
22
|
+
最もスムーズに始められる環境。devcontainer に Nix が設定済みで、言語ごとの開発環境が即座に利用可能。
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
# Codespace 起動後、選択した言語の開発環境に入る
|
|
26
|
+
nix develop .#java # Java の場合
|
|
27
|
+
nix develop .#python # Python の場合
|
|
28
|
+
nix develop .#node # JavaScript/TypeScript の場合
|
|
29
|
+
# ... 各言語に対応した flake が用意されている
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
#### ローカル環境
|
|
33
|
+
|
|
34
|
+
ローカルで進める場合は、OS に応じたパッケージマネージャで各言語の開発環境を構築する。
|
|
35
|
+
|
|
36
|
+
| OS | パッケージマネージャ | 環境構築方法 |
|
|
37
|
+
|----|--------------------|-------------|
|
|
38
|
+
| Windows | [Scoop](https://scoop.sh/) | Scoop で各言語のランタイム・ビルドツールを直接インストール(Nix は非対応) |
|
|
39
|
+
| macOS | [Homebrew](https://brew.sh/) + [Nix](https://nixos.org/download) | Nix で `nix develop .#{lang}` または Homebrew で個別インストール |
|
|
40
|
+
| Linux | [Nix](https://nixos.org/download) | `nix develop .#{lang}` で開発環境に入る |
|
|
41
|
+
|
|
42
|
+
##### Windows(Scoop)での環境構築例
|
|
43
|
+
|
|
44
|
+
Windows では Nix が使えないため、Scoop で各言語のツールを個別にインストールする。
|
|
45
|
+
|
|
46
|
+
```powershell
|
|
47
|
+
# Scoop のインストール(未導入の場合)
|
|
48
|
+
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
|
|
49
|
+
Invoke-RestMethod -Uri https://get.scoop.sh | Invoke-Expression
|
|
50
|
+
|
|
51
|
+
# Java の場合
|
|
52
|
+
scoop bucket add java
|
|
53
|
+
scoop install openjdk gradle
|
|
54
|
+
|
|
55
|
+
# Python の場合
|
|
56
|
+
scoop install python
|
|
57
|
+
pip install pytest
|
|
58
|
+
|
|
59
|
+
# Node.js(JavaScript/TypeScript)の場合
|
|
60
|
+
scoop install nodejs
|
|
61
|
+
npm install
|
|
62
|
+
|
|
63
|
+
# Go の場合
|
|
64
|
+
scoop install go
|
|
65
|
+
|
|
66
|
+
# Rust の場合
|
|
67
|
+
scoop install rustup
|
|
68
|
+
rustup default stable
|
|
69
|
+
|
|
70
|
+
# Ruby の場合
|
|
71
|
+
scoop install ruby
|
|
72
|
+
|
|
73
|
+
# PHP の場合
|
|
74
|
+
scoop install php composer
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
各言語の詳細なセットアップ手順は、教材の各章(特に第 1 章・第 5 章)に記載されている。
|
|
78
|
+
|
|
79
|
+
#### 環境構築の進め方
|
|
80
|
+
|
|
81
|
+
1. ユーザーの現在の環境(OS、既存ツール)を確認する
|
|
82
|
+
2. 推奨環境(GitHub Codespaces)を提案する
|
|
83
|
+
3. ローカル環境を希望する場合は、OS に応じたインストール手順を**提示して確認を求める**
|
|
84
|
+
4. ユーザーの合意を得てから、ステップごとにコマンドを実行する
|
|
85
|
+
5. 環境が正しく構築できたことを確認してからチュートリアルに進む
|
|
86
|
+
|
|
87
|
+
### Step 1: 言語選択
|
|
88
|
+
|
|
89
|
+
ユーザーに学びたい言語を尋ねる。対応言語と特徴を簡潔に提示する。
|
|
90
|
+
|
|
91
|
+
| 言語 | 特徴 |
|
|
92
|
+
|------|------|
|
|
93
|
+
| Java | 静的型付け、OOP、JUnit 5 |
|
|
94
|
+
| JavaScript/TypeScript | 動的/静的型付け、Vitest |
|
|
95
|
+
| Python | 動的型付け、pytest |
|
|
96
|
+
| Ruby | 動的型付け、Minitest |
|
|
97
|
+
| PHP | 動的型付け、PHPUnit |
|
|
98
|
+
| Go | 静的型付け、標準 testing |
|
|
99
|
+
| Rust | 所有権、標準テスト |
|
|
100
|
+
| C# | 静的型付け、xUnit |
|
|
101
|
+
| F# | 関数型、Expecto |
|
|
102
|
+
| Clojure | LISP、clojure.test |
|
|
103
|
+
| Scala | OOP+FP、ScalaTest |
|
|
104
|
+
| Elixir | 関数型、ExUnit |
|
|
105
|
+
| Haskell | 純粋関数型、Hspec |
|
|
106
|
+
|
|
107
|
+
### Step 2: 章の選択
|
|
108
|
+
|
|
109
|
+
全 12 章 4 部構成。ユーザーの経験レベルに応じて開始章を提案する。
|
|
110
|
+
|
|
111
|
+
**第 1 部: TDD の基本サイクル**(初心者はここから)
|
|
112
|
+
1. TODO リストと最初のテスト
|
|
113
|
+
2. 仮実装と三角測量
|
|
114
|
+
3. 明白な実装とリファクタリング
|
|
115
|
+
|
|
116
|
+
**第 2 部: 開発環境と自動化**
|
|
117
|
+
4. バージョン管理と Conventional Commits
|
|
118
|
+
5. パッケージ管理と静的解析
|
|
119
|
+
6. タスクランナーと CI/CD
|
|
120
|
+
|
|
121
|
+
**第 3 部: オブジェクト指向設計**
|
|
122
|
+
7. カプセル化とポリモーフィズム
|
|
123
|
+
8. デザインパターンの適用
|
|
124
|
+
9. SOLID 原則とモジュール設計
|
|
125
|
+
|
|
126
|
+
**第 4 部: 関数型プログラミングへの展開**
|
|
127
|
+
10. 高階関数と関数合成
|
|
128
|
+
11. 不変データとパイプライン処理
|
|
129
|
+
12. エラーハンドリングと型安全性
|
|
130
|
+
|
|
131
|
+
### Step 3: 対話式チュートリアルの実施
|
|
132
|
+
|
|
133
|
+
教材ファイルを読み込み、以下のルールで対話的に進行する。
|
|
134
|
+
|
|
135
|
+
#### 教材ファイルの特定
|
|
136
|
+
|
|
137
|
+
言語ごとにファイル名パターンが異なる。
|
|
138
|
+
|
|
139
|
+
- 多くの言語: `docs/article/getting-start-tdd/{lang}/01-todo-list-and-first-test.md` 等
|
|
140
|
+
- C#: `docs/article/getting-start-tdd/csharp/chapter01.md` 等
|
|
141
|
+
- F#: `docs/article/getting-start-tdd/fsharp/chapter01.md` 等
|
|
142
|
+
|
|
143
|
+
#### 進行ルール
|
|
144
|
+
|
|
145
|
+
1. **章の導入**: その章で学ぶ概念と目標を簡潔に説明する
|
|
146
|
+
2. **TODO リスト提示**: 章の TODO リストを提示し、全体像を共有する
|
|
147
|
+
3. **段階的な課題提示**: 一度にすべてを見せず、1 ステップずつ課題を出す
|
|
148
|
+
4. **考えさせる**: テストコードを見せる前に「どんなテストを書くべきか?」と問いかける
|
|
149
|
+
5. **Red フェーズ**: 失敗するテストを書くよう促す。ユーザーが書いたテストにフィードバックを与える
|
|
150
|
+
6. **Green フェーズ**: テストを通す最小限のコードを書くよう促す。正解を教えるのではなくヒントを与える
|
|
151
|
+
7. **Refactor フェーズ**: コードの改善ポイントを一緒に考える
|
|
152
|
+
8. **振り返り**: ステップ完了後に学んだ概念を簡潔にまとめる
|
|
153
|
+
|
|
154
|
+
#### 対話のトーン
|
|
155
|
+
|
|
156
|
+
- 励ましと好奇心を持って接する
|
|
157
|
+
- 間違いを責めず、なぜそうなるかを一緒に考える
|
|
158
|
+
- TDD の書籍からの引用を適宜挟み、理論的背景を伝える
|
|
159
|
+
- ユーザーのペースに合わせる(速い人にはテンポよく、慎重な人にはじっくり)
|
|
160
|
+
|
|
161
|
+
#### ヒントの段階
|
|
162
|
+
|
|
163
|
+
ユーザーが詰まった場合、段階的にヒントを出す。
|
|
164
|
+
|
|
165
|
+
1. **方向性のヒント**: 「3 の倍数を判定するには、どの演算子が使えそうですか?」
|
|
166
|
+
2. **構造のヒント**: 「if 文と剰余演算子(%)を組み合わせてみましょう」
|
|
167
|
+
3. **コード例の一部**: 「`number % 3 == 0` という条件式を使えます」
|
|
168
|
+
4. **完全な解答**: 教材のコードを提示し、なぜそうなるかを解説する
|
|
169
|
+
|
|
170
|
+
#### セッション管理
|
|
171
|
+
|
|
172
|
+
- 各ステップ完了時に TODO リストを更新して進捗を可視化する
|
|
173
|
+
- 長いセッションでは適度な区切り(章の終わり)で休憩を提案する
|
|
174
|
+
- 次回再開時のために、現在の進捗状況を報告する
|
|
175
|
+
|
|
176
|
+
### Step 4: 章のまとめ
|
|
177
|
+
|
|
178
|
+
章の終わりに以下を実施する。
|
|
179
|
+
|
|
180
|
+
1. 学んだ概念の要約
|
|
181
|
+
2. TODO リストの最終状態確認
|
|
182
|
+
3. 次章の予告と接続
|
|
183
|
+
4. (希望があれば)追加の練習問題を提案
|
|
184
|
+
|
|
185
|
+
## 応用: 複数言語での比較
|
|
186
|
+
|
|
187
|
+
ユーザーが複数言語に興味がある場合、`docs/article/getting-start-tdd/integration/` の多言語統合解説を参照し、言語間の比較視点を提供する。
|
|
188
|
+
|
|
189
|
+
## 注意事項
|
|
190
|
+
|
|
191
|
+
- このスキルはユーザーに「教える」のではなく「一緒に学ぶ」姿勢で進行する
|
|
192
|
+
- コードを書くのはユーザー自身。AI はガイド役に徹する
|
|
193
|
+
- ユーザーが「答えを教えて」と言った場合は教材のコードを提示するが、なぜそうなるかの理解を促す
|
|
194
|
+
- 環境構築は必ずユーザーの合意を得てから進める。コマンドの実行前にインストラクションを提示し、確認を取る
|
|
195
|
+
- GitHub Codespaces + Nix devcontainer が推奨環境。ローカルの場合は OS に応じたパッケージマネージャを使う(Windows: Scoop で各言語を直接インストール、macOS: Homebrew + Nix、Linux: Nix)
|
package/lib/assets/CLAUDE.md
CHANGED
|
@@ -97,6 +97,12 @@
|
|
|
97
97
|
| `creating-release-report` | リリース完了報告書作成 |
|
|
98
98
|
| `creating-iteration-report` | イテレーション完了報告書作成 |
|
|
99
99
|
|
|
100
|
+
### 学習
|
|
101
|
+
|
|
102
|
+
| スキル | 用途 |
|
|
103
|
+
| :--- | :--- |
|
|
104
|
+
| `practicing-getting-start-tdd` | TDD プログラミング入門の対話式チュートリアル |
|
|
105
|
+
|
|
100
106
|
### 共通
|
|
101
107
|
|
|
102
108
|
| スキル | 用途 |
|
package/package.json
CHANGED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
# Agent Memory Index
|
|
2
|
-
|
|
3
|
-
## Project memories
|
|
4
|
-
- [project_cargo_tracker.md](project_cargo_tracker.md) — cargo-tracker のプロジェクト構成と gradlew 実行場所、既存テスト失敗状況
|
|
5
|
-
- [project_ddd_patterns.md](project_ddd_patterns.md) — cargo-tracker の DDD パターン(集約・値オブジェクト・ドメインイベントの実装規約)
|
|
6
|
-
- [project_us07_route_assignment.md](project_us07_route_assignment.md) — US07 route assignment: H2-compatible Flyway migrations, insert/update switching in repository, WebMvcTest mock requirements
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: cargo-tracker-project-context
|
|
3
|
-
description: case-study-cargo-tracker プロジェクトの基本構成と開発上の注意点
|
|
4
|
-
type: project
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
Spring Boot 3.4.x / Java 25 / Gradle プロジェクト。`apps/cargo-tracker/` 配下に gradlew.bat がある。
|
|
8
|
-
|
|
9
|
-
**Why:** リポジトリルートではなく `apps/cargo-tracker/` でコマンドを実行する必要がある。また既存の統合テスト(BookingRepository 統合テスト、ShipperRepository 統合テスト、Spring コンテキストテスト)は現時点で失敗しており、これらは既存の事前失敗であることが確認済み。
|
|
10
|
-
|
|
11
|
-
**How to apply:** テスト実行コマンドは `Set-Location "C:\Users\PC202411-1\IdeaProjects\case-study-cargo-tracker\apps\cargo-tracker"; & ".\gradlew.bat" "test"` を使う。全テスト実行時に既存失敗があっても quote コンテキストが Green ならば問題なし。
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: cargo-tracker-ddd-patterns
|
|
3
|
-
description: case-study-cargo-tracker の DDD パターン(集約、値オブジェクト、ドメインイベント)の実装規約
|
|
4
|
-
type: project
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## 集約ルート(Aggregate Root)パターン
|
|
8
|
-
- `register()`/`issue()` ファクトリメソッドでドメインイベントを発行し集約を生成
|
|
9
|
-
- `reconstitute()` ファクトリメソッドはドメインイベントを発行せず永続化ストアから再構成
|
|
10
|
-
- 全フィールドは `final`(イミュータブル)
|
|
11
|
-
- `domainEvents` は `List<DomainEvent>` で内部に持ち、`getDomainEvents()` で `unmodifiableList` を返す
|
|
12
|
-
|
|
13
|
-
## 値オブジェクト(Value Object)パターン
|
|
14
|
-
- コンストラクタで全バリデーション(null/blank チェック、正数チェック)
|
|
15
|
-
- `equals()/hashCode()` を実装
|
|
16
|
-
- `BigDecimal` の `equals` では精度差異が出るため `compareTo()==0` と `stripTrailingZeros()` を使う
|
|
17
|
-
|
|
18
|
-
## ドメインイベント
|
|
19
|
-
- `DomainEvent` はマーカーインターフェース
|
|
20
|
-
- イベントは Java `record` で実装(例: `record QuoteIssuedEvent(QuoteId quoteId, QuoteNumber quoteNumber) implements DomainEvent`)
|
|
21
|
-
|
|
22
|
-
## package-info.java
|
|
23
|
-
- コンテキストルートに `@NonNullApi` アノテーション付きの package-info.java を作成
|
|
24
|
-
|
|
25
|
-
**Why:** booking コンテキストが確立したパターン。quote コンテキスト実装時に同一パターンを踏襲した。
|
|
26
|
-
|
|
27
|
-
**How to apply:** 新しいコンテキスト実装時に同様のパターンを使う。
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: US07 route assignment implementation
|
|
3
|
-
description: Implementation patterns and notes for US07 (route selection and booking assignment)
|
|
4
|
-
type: project
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
US07 implemented on 2026-04-02. All 253 tests pass with inside-out TDD.
|
|
8
|
-
|
|
9
|
-
**Key patterns:**
|
|
10
|
-
- Added AssignedRoute value object (record), BookingRouteAssignedEvent, Booking.assignRoute() to domain layer
|
|
11
|
-
- Added AssignRouteCommand + AssignRouteCommandService to application layer
|
|
12
|
-
- Flyway V006 adds 3 columns to bookings table; H2-compatible: one ALTER TABLE per column
|
|
13
|
-
- BookingRecord record added 3 fields (after status, before createdAt)
|
|
14
|
-
- BookingMapper.java: added update() method; BookingRepositoryImpl.save() switches insert/update via findById check
|
|
15
|
-
- WebMvcTest: must add @MockitoBean for AssignRouteCommandService in BookingRestControllerTest and BookingWebControllerTest
|
|
16
|
-
|
|
17
|
-
**Why:** H2 does not support ADD COLUMN c1, c2 in one statement. Must split into separate ALTER TABLE statements.
|
|
18
|
-
|
|
19
|
-
**How to apply:** When creating Flyway migrations, use H2-compatible syntax. Split multi-column additions into separate ALTER TABLE statements.
|