Jules CLI統合スキル
docs/sdd/tasks/に記載されたタスクをGoogleの非同期コーディングエージェントJulesに依頼・管理するスキルです。SDDで分割したタスクを効率的にJulesに割り当て、進捗を追跡します。
概要
このスキルは以下の機能を提供します:
- docs/sdd/tasks/からタスクを読み取り、選択可能なリストを表示
- 選択されたタスクを日本語でフォーマットしてJulesに依頼
- Julesの進捗状況を確認・管理
- 完了したタスクをdocs/sdd/tasks/で更新
- 複数タスクの並行依頼サポート
このスキルを使用する場面
以下の状況でこのスキルを有効にしてください:
タスク実行時
- docs/sdd/tasks/のタスクをJulesに依頼したい場合
- 長時間かかるタスクを非同期で実行したい場合
- 複数のタスクを並行して実行したい場合
- Jules CLIを使った開発ワークフローを構築する場合
プロジェクト管理時
- タスクの進捗をJulesで管理したい場合
- チーム内でJulesを活用している場合
- 自動化可能なタスクをJulesに任せたい場合
基本的な使い方
タスクの依頼
「次のタスクをJulesに依頼してください」「タスクをJulesで実行してください」などと依頼されたら:
-
docs/sdd/tasks/の読み取り
- docs/sdd/tasks/の内容を確認
- TODO状態のタスクを特定
- 依存関係を確認
-
タスクの選択
- ユーザーにタスクリストを表示
- 依頼するタスクを選択してもらう
- 複数選択も可能
-
Jules依頼文の作成
- タスクの説明、受入基準、技術的文脈を日本語でフォーマット
- Julesが理解しやすい形式に整形
- 必要な参照情報を含める
-
julesコマンドの実行
jules "依頼文"コマンドを実行- タスクIDを記録
- ユーザーに依頼完了を報告
-
進捗の追跡
- 必要に応じてJulesの進捗を確認
- 完了したら結果をレビュー
- docs/sdd/tasks/を更新
Jules依頼文の原則
1. 明確で具体的な指示
Julesが理解しやすい形式で依頼文を作成します:
基本構造:
タスク: [タスクタイトル]
概要:
[タスクの詳細な説明]
受入基準:
- [基準1]
- [基準2]
- [基準3]
技術的文脈:
- [フレームワークやライブラリ]
- [参照すべきファイルやコード]
- [制約事項]
推定工数: [時間]
良い例:
タスク: ユーザー認証APIエンドポイントの実装
概要:
POST /api/auth/login と POST /api/auth/logout のエンドポイントを実装してください。
JWTトークンを使用した認証方式を採用し、パスワードはbcryptでハッシュ化します。
受入基準:
- src/api/auth.tsが存在し、login/logoutエンドポイントが実装されている
- すべてのテストが通過する(npm test)
- ESLintエラーがゼロである
- JWTトークンが正しく生成・検証される
技術的文脈:
- フレームワーク: Next.js 14 App Router
- 認証ライブラリ: jose(JWT)、bcrypt(パスワードハッシュ化)
- 参照実装: src/api/users.ts
- データベース: PostgreSQL with Prisma ORM
推定工数: 2時間
悪い例:
ログイン機能を作って
2. 日本語での依頼
すべての依頼文は日本語で記述します:
理由:
- ユーザーが日本語での依頼を希望している
- タスクの内容が日本語で記載されている場合が多い
- Julesは多言語対応しており、日本語も理解できる
注意事項:
- 技術用語は英語のまま使用(例: JWT, API, bcrypt)
- ファイルパスやコマンドは英語のまま
- 説明文や受入基準は日本語で記述
3. 文脈の提供
Julesが適切に作業できるよう、必要な文脈を提供します:
含めるべき情報:
- プロジェクトの技術スタック
- 参照すべき既存コード
- コーディング規約やスタイルガイド
- 制約事項や注意点
- 依存関係のあるタスク
例:
技術的文脈:
- このプロジェクトはNext.js 14のApp Routerを使用しています
- 既存の実装パターンはsrc/api/users.tsを参照してください
- ESLintとPrettierの設定に従ってください
- データベーススキーマはprisma/schema.prismaで定義されています
- Task 1.2(データモデルの定義)の完了が前提です
4. 受入基準の明確化
検証可能な受入基準を提供します:
良い受入基準:
受入基準:
- src/components/LoginForm.tsxが存在する
- npm testを実行してすべてのテストが通過する
- npm run lintを実行してエラーがゼロである
- ログイン成功時にJWTトークンが返される
- ログイン失敗時に適切なエラーメッセージが返される
- パスワードはbcryptでハッシュ化されている
悪い受入基準:
受入基準:
- ちゃんと動く
- きれいなコード
Jules CLIコマンド
タスクの作成・依頼
# 基本的な依頼
jules "タスクの説明"
# 長い依頼文の場合はヒアドキュメントを使用
jules "$(cat <<'EOF'
タスク: ユーザー認証APIの実装
概要:
POST /api/auth/login エンドポイントを実装してください。
受入基準:
- src/api/auth.tsが存在する
- テストが通過する
技術的文脈:
- Next.js 14
- JWT + bcrypt
EOF
)"
タスクの状態確認
# タスクリストの表示
jules list
# 特定のタスクの状態確認
jules status <task-id>
# タスクの詳細表示
jules show <task-id>
タスクの管理
# タスクのキャンセル
jules cancel <task-id>
# タスクの再実行
jules retry <task-id>
# 完了したタスクの結果取得
jules result <task-id>
ワークフロー
基本的な実行フロー
1. docs/sdd/tasks/を読み取る
↓
2. TODO状態のタスクをリスト表示
↓
3. ユーザーがタスクを選択
↓
4. 依頼文を日本語で作成
↓
5. ユーザーに依頼文を確認してもらう
↓
6. julesコマンドを実行
↓
7. タスクIDを記録
↓
8. 進捗を定期的に確認(必要に応じて)
↓
9. 完了したら結果をレビュー
↓
10. docs/sdd/tasks/を更新(ステータスをREVIEWに変更)
↓
11. レビュー完了後、DONEにマーク
詳細な実行手順
ステップ1: タスクの選択
ファシリテーター: docs/sdd/tasks/から実行可能なタスクを確認しました。
以下のタスクが利用可能です:
1. Task 1.1: ユーザー認証APIエンドポイントの実装
推定工数: 2時間
依存関係: なし
2. Task 1.2: データモデルの定義
推定工数: 1時間
依存関係: なし
3. Task 2.1: 認証ミドルウェアの実装
推定工数: 1.5時間
依存関係: Task 1.1
どのタスクをJulesに依頼しますか?(番号で選択、複数選択可)
ユーザー: 1と2
ファシリテーター: 承知しました。Task 1.1とTask 1.2をJulesに依頼します。
ステップ2: 依頼文の作成と確認
ファシリテーター: 以下の依頼文でJulesに送信します。確認してください:
【Task 1.1の依頼文】
タスク: ユーザー認証APIエンドポイントの実装
概要:
POST /api/auth/login と POST /api/auth/logout のエンドポイントを実装してください。
JWTトークンを使用した認証方式を採用し、パスワードはbcryptでハッシュ化します。
受入基準:
- src/api/auth.tsが存在し、login/logoutエンドポイントが実装されている
- すべてのテストが通過する(npm test)
- ESLintエラーがゼロである
技術的文脈:
- フレームワーク: Next.js 14
- 認証: JWT + bcrypt
- 参照実装: src/api/users.ts
推定工数: 2時間
このまま送信してよろしいですか?
ユーザー: はい
ファシリテーター: Julesに依頼を送信します。
ステップ3: julesコマンドの実行
# Task 1.1の依頼
jules "$(cat <<'EOF'
タスク: ユーザー認証APIエンドポイントの実装
概要:
POST /api/auth/login と POST /api/auth/logout のエンドポイントを実装してください。
JWTトークンを使用した認証方式を採用し、パスワードはbcryptでハッシュ化します。
受入基準:
- src/api/auth.tsが存在し、login/logoutエンドポイントが実装されている
- すべてのテストが通過する(npm test)
- ESLintエラーがゼロである
技術的文脈:
- フレームワーク: Next.js 14
- 認証: JWT + bcrypt
- 参照実装: src/api/users.ts
推定工数: 2時間
EOF
)"
# Task 1.2の依頼
jules "$(cat <<'EOF'
タスク: データモデルの定義
概要:
Prismaスキーマファイルにユーザーと認証関連のデータモデルを定義してください。
受入基準:
- prisma/schema.prismaにUserモデルが定義されている
- prisma migrateが正常に実行できる
- TypeScript型定義が自動生成される
技術的文脈:
- ORM: Prisma
- データベース: PostgreSQL
- 既存のスキーマを参考にしてください
推定工数: 1時間
EOF
)"
ステップ4: タスクIDの記録とユーザーへの報告
ファシリテーター: Julesへの依頼が完了しました。
依頼したタスク:
- Task 1.1: task-abc123(進行中)
- Task 1.2: task-def456(進行中)
進捗は以下のコマンドで確認できます:
jules status task-abc123
jules status task-def456
完了を待つ間、他の作業を進めることができます。
ステップ5: 進捗の確認
# 定期的に進捗を確認
jules list
# 特定のタスクの詳細確認
jules status task-abc123
ステップ6: 完了後の処理
ファシリテーター: Task 1.1が完了しました。結果を確認します。
# 結果の取得
jules result task-abc123
ファシリテーター: 実装内容を確認しました。以下のファイルが作成されています:
- src/api/auth.ts
- src/api/auth/login/route.ts
- src/api/auth/logout/route.ts
- tests/api/auth.test.ts
テストが通過し、ESLintエラーもゼロです。
受入基準をすべて満たしています。
docs/sdd/tasks/を更新してTask 1.1をREVIEWステータスにマークします。
ステップ7: docs/sdd/tasks/の更新
# docs/sdd/tasks/のステータスを更新
Task 1.1: TODO → IN_PROGRESS(Jules実行中)→ REVIEW(完了、レビュー待ち)→ DONE(承認済み)
更新内容:
- ステータスをREVIEWに変更
- Jules task ID(task-abc123)を記録
- 完了日時を記録
docs/sdd/tasks/更新の原則
1. ステータス管理
Julesに依頼したタスクは以下のステータスで管理します:
ステータスの遷移:
TODO → IN_PROGRESS(Jules実行中)→ REVIEW(完了、レビュー待ち)→ DONE(承認済み)
各ステータスの意味:
TODO: 未着手IN_PROGRESS: Julesが作業中REVIEW: Julesが完了(PRベースの場合はPR作成済み)、レビュー待ちDONE: レビュー完了、承認済み(PRベースの場合はマージ済み)
2. タスク情報の記録
docs/sdd/tasks/には以下の情報を記録します:
追加情報:
#### タスク1.1: ユーザー認証APIエンドポイントの実装
**説明**: POST /api/auth/login と POST /api/auth/logout のエンドポイントを実装
**受入基準**:
- src/api/auth.tsが存在する
- テストが通過する
**ステータス**: `REVIEW`
**Jules Task ID**: task-abc123
**開始日時**: 2025-01-15 10:30
**Jules完了日時**: 2025-01-15 12:15(JulesがPRを作成した日時)
注意: 完了日時(タスクとしての最終完了)はDONEへの移行時にマージ日時として記録します。REVIEWステータスではJules完了日時(PR作成日時)のみ記録してください。
3. レビューとDONEへの移行
ファシリテーター: Task 1.1のレビューが完了しました。
実装は要件を満たしており、コード品質も良好です。
ステータスをDONEにマークします。
完了サマリー:
ユーザー認証APIエンドポイント(login/logout)を実装。
JWTとbcryptを使用した安全な認証を実現。
すべてのテストが通過し、ESLintエラーもゼロ。
PRベースのワークフロー(開発ブランチ連携)
概要
JulesにタスクをPRベースで依頼する場合、Julesは開発ブランチに対してPRを作成します。これにより、コードレビュー→マージのフローでタスクの品質を担保しつつ、進捗を可視化できます。
開発ブランチの指定
依頼文にPR作成先の開発ブランチを明記します:
PR作成先: develop(またはプロジェクトで使用する開発ブランチ名)
ユーザーに開発ブランチ名を確認してから依頼文に含めてください。
PRベースのステータス遷移
TODO → IN_PROGRESS(Jules作業中)→ REVIEW(PR作成済み)→ DONE(PRマージ済み)
各ステータスの詳細:
TODO: 未着手IN_PROGRESS: Julesが作業中(jules依頼後)REVIEW: JulesがPRを作成済み、レビュー待ちDONE: PRがレビュー承認され、開発ブランチにマージ済み
PRベースの依頼文テンプレート
タスク: [タスクタイトル]([TASK-XXX])
概要:
[タスクの詳細な説明]
受入基準:
- [基準1]
- [基準2]
技術的文脈:
- [フレームワーク、ライブラリ]
- [参照すべきファイルやコード]
PR作成先: [開発ブランチ名]
コミット規約: [プロジェクトのコミット規約]
完了条件:
- 上記受入基準をすべて満たすPRを作成すること
- テストが通過すること
- リントエラーがないこと
実行情報の段階的記録
タスクの進行に応じて、情報を段階的にタスクファイルへ記録します。
段階1: Jules依頼時(即時記録)
## 実行情報
**実行方式**: Jules CLI
**Jules Task ID**: task-abc123
**PR作成先**: develop
**開始日時**: 2025-01-15 10:30
段階2: PR作成時(Jules完了後に追記)
**PR番号**: #42
**PRブランチ**: jules/task-001-auth-api
**PR作成日時**: 2025-01-15 12:15
段階3: PRマージ時(レビュー承認後に追記)
**マージ日時**: 2025-01-15 14:00
注意: 既存セクション「ステータス」の「完了日時」はPRマージ日時を指します。PRベースのワークフローでは 完了日時 = マージ日時 として統一してください。
PRレビューとマージ
1. JulesがPRを作成(ステータス: REVIEW)
2. レビュー実施:
- 受入基準の充足確認
- コード品質の確認
- テスト結果の確認
3. 問題がある場合:
- PRにコメントを追加
- Julesに修正を再依頼、または手動修正
4. 問題がない場合:
- PRをマージ
- ステータスをDONEに更新
- タスクファイルにマージ日時を記録
複数タスクの並行処理
並行実行の条件
以下の条件を満たすタスクは並行してJulesに依頼できます:
条件:
- 依存関係が存在しない
- 異なるファイル・コンポーネントを対象とする
- 相互に影響を与えない
例:
並行実行可能:
- Task 1.1: APIエンドポイントの実装
- Task 1.2: データモデルの定義
- Task 1.3: 設定ファイルの作成
順次実行が必要:
- Task 1.1: APIエンドポイントの実装(依存: なし)
- Task 2.1: 認証ミドルウェアの実装(依存: Task 1.1)
並行実行の手順
1. 並行実行可能なタスクを特定(依存関係グラフ分析)
2. それぞれのタスクについて依頼文を作成(PR作成先を明記)
3. 複数のjulesコマンドを連続投入して非同期で並行依頼
4. すべてのタスクIDを即時記録(PR番号はPR作成後に追記。[実行情報の段階的記録](#実行情報の段階的記録)を参照)
5. 各タスクの進捗を個別に追跡
6. 全PRのレビュー・マージを管理
依存関係グループの順次実行
グループA(並列実行): TASK-001, TASK-002, TASK-003
↓ 全PRマージ完了
開発ブランチを最新に更新
↓
グループB(並列実行): TASK-004, TASK-005
↓ 全PRマージ完了
グループC(並列実行): TASK-006
エラーハンドリング
Julesでエラーが発生した場合
対処手順:
1. エラー内容を確認
jules status <task-id>
2. エラーの原因を分析
- 依頼文の不明瞭さ
- 技術的な問題
- 依存関係の問題
3. ユーザーに報告
- エラーの詳細
- 推定される原因
- 推奨される対処方法
4. 必要に応じて再実行
- 依頼文を修正
- 依存関係を解決
- jules retry <task-id>
5. docs/sdd/tasks/を更新
- ステータスをBLOCKEDに変更
- エラー内容を記録
例:
ファシリテーター: Task 1.1の実行中にエラーが発生しました。
エラー内容:
依存パッケージ'jose'がインストールされていません。
推奨される対処:
1. npm install joseを実行
2. Julesのタスクを再実行
このまま対処を進めますか?それとも手動で解決しますか?
タスクが長時間完了しない場合
対処手順:
1. 現在の状態を確認
jules status <task-id>
2. 作業内容を確認
jules show <task-id>
3. ユーザーに状況を報告
- 現在の進捗
- 推定残り時間
- 次のアクション
4. 必要に応じてキャンセルまたは待機を提案
制約事項
実行の制限
以下の場合はJulesへの依頼を控えます:
-
タスクの曖昧性
- 受入基準が不明確
- 実装方法が複数考えられる
- 技術的文脈が不足している
-
リスクの高い操作
- 本番環境への直接的な変更
- データベースの削除操作
- 認証情報の変更
-
ユーザーの判断が必要な場合
- 技術選択が必要
- アーキテクチャの決定が必要
- トレードオフの判断が必要
これらの場合は、ユーザーに確認または詳細化を依頼します。
Jules CLIの制限
考慮事項:
- Jules CLIを利用できる環境が必要
- julesコマンドがPATHに含まれている必要がある
- 認証が正しく設定されている必要がある
- ネットワーク接続が必要
ベストプラクティス
1. 依頼文の品質
明確で具体的な依頼文を作成:
- 曖昧な表現を避ける
- 具体的な成果物を明示する
- 検証可能な受入基準を提供する
- 必要な文脈をすべて含める
2. タスクの粒度
適切な粒度でタスクを依頼:
- 1つのタスクは1-3時間程度
- 1つの明確な目的を持つ
- 独立して完結する
- 検証が容易
3. 進捗管理
定期的な進捗確認:
- 長時間のタスクは定期的に状態を確認
- 問題が発生したら早期に対処
- 完了したらすぐにレビュー
4. ドキュメントの同期
docs/sdd/tasks/を最新に保つ:
- ステータス変更を即座に反映
- Jules Task IDを記録
- 作業時間を記録
- 問題や気づきをメモ
絵文字の使用禁止
すべてのメッセージ、依頼文、ドキュメントで絵文字を使用しません:
禁止事項:
- Jules依頼文に絵文字を含めない
- ユーザーへのメッセージに絵文字を使わない
- docs/sdd/tasks/の更新に絵文字を含めない
- コミットメッセージに絵文字を使わない
トラブルシューティング
よくある問題と解決方法
問題1: julesコマンドが見つからない
- 原因: Jules CLIがインストールされていない、またはPATHに含まれていない
- 解決: Jules CLIのインストールを確認し、PATHを設定
問題2: 認証エラーが発生する
- 原因: Jules CLIの認証が設定されていない
- 解決:
jules auth loginで認証を設定
問題3: タスクが失敗する
- 原因: 依頼文が不明瞭、または依存関係が不足
- 解決: 依頼文を詳細化し、必要な前提条件を確認
問題4: 並行実行で競合が発生する
- 原因: 同じファイルを編集するタスクを並行実行した
- 解決: 依存関係を見直し、順次実行に変更
Agent Teams連携
Agent TeamsとJulesを組み合わせたハイブリッド実行の詳細は、以下のリファレンスを参照してください:
- 連携パターン・タスク割り当て判定・実行手順・進捗管理: agent_teams_guide_ja.md の「パターン5: Jules CLI + Agent Teamsハイブリッド実行」セクション
今後の拡張
このスキルは将来的に以下の機能を追加予定です:
- Jules CLIの詳細な状態監視
- タスクの優先順位付け
- 自動的なレビュープロセス
- チームでのタスク共有機能
- タスク実行時間の分析とレポート