| name | jules-cli |
| description | docs/tasks.mdに記載されたタスクをJules CLIを使って依頼・管理します。タスクを日本語でフォーマットしてJulesに送信し、進捗を追跡して完了後にtasks.mdを更新します。 |
Jules CLI統合スキル
docs/tasks.mdに記載されたタスクをGoogleの非同期コーディングエージェントJulesに依頼・管理するスキルです。SDDで分割したタスクを効率的にJulesに割り当て、進捗を追跡します。
概要
このスキルは以下の機能を提供します:
- docs/tasks.mdからタスクを読み取り、選択可能なリストを表示
- 選択されたタスクを日本語でフォーマットしてJulesに依頼
- Julesの進捗状況を確認・管理
- 完了したタスクをtasks.mdで更新
- 複数タスクの並行依頼サポート
このスキルを使用する場面
以下の状況でこのスキルを有効にしてください:
タスク実行時
- docs/tasks.mdのタスクをJulesに依頼したい場合
- 長時間かかるタスクを非同期で実行したい場合
- 複数のタスクを並行して実行したい場合
- Jules CLIを使った開発ワークフローを構築する場合
プロジェクト管理時
- タスクの進捗をJulesで管理したい場合
- チーム内でJulesを活用している場合
- 自動化可能なタスクをJulesに任せたい場合
基本的な使い方
タスクの依頼
「次のタスクをJulesに依頼してください」「タスクをJulesで実行してください」などと依頼されたら:
tasks.mdの読み取り
- docs/tasks.mdの内容を確認
- TODO状態のタスクを特定
- 依存関係を確認
タスクの選択
- ユーザーにタスクリストを表示
- 依頼するタスクを選択してもらう
- 複数選択も可能
Jules依頼文の作成
- タスクの説明、受入基準、技術的文脈を日本語でフォーマット
- Julesが理解しやすい形式に整形
- 必要な参照情報を含める
julesコマンドの実行
jules "依頼文"コマンドを実行- タスクIDを記録
- ユーザーに依頼完了を報告
進捗の追跡
- 必要に応じてJulesの進捗を確認
- 完了したら結果をレビュー
- tasks.mdを更新
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. tasks.mdを読み取る
↓
2. TODO状態のタスクをリスト表示
↓
3. ユーザーがタスクを選択
↓
4. 依頼文を日本語で作成
↓
5. ユーザーに依頼文を確認してもらう
↓
6. julesコマンドを実行
↓
7. タスクIDを記録
↓
8. 進捗を定期的に確認(必要に応じて)
↓
9. 完了したら結果をレビュー
↓
10. tasks.mdを更新(ステータスをIN_PROGRESSまたはREVIEW)
↓
11. レビュー完了後、DONEにマーク
詳細な実行手順
ステップ1: タスクの選択
ファシリテーター: docs/tasks.mdから実行可能なタスクを確認しました。
以下のタスクが利用可能です:
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エラーもゼロです。
受入基準をすべて満たしています。
tasks.mdを更新してTask 1.1をREVIEWステータスにマークします。
ステップ7: tasks.mdの更新
# tasks.mdのステータスを更新
Task 1.1: TODO → IN_PROGRESS(Jules実行中)→ REVIEW(完了、レビュー待ち)→ DONE(承認済み)
更新内容:
- ステータスをREVIEWに変更
- Jules task ID(task-abc123)を記録
- 完了日時を記録
tasks.md更新の原則
1. ステータス管理
Julesに依頼したタスクは以下のステータスで管理します:
ステータスの遷移:
TODO → IN_PROGRESS(Jules実行中)→ REVIEW(完了、レビュー待ち)→ DONE(承認済み)
各ステータスの意味:
TODO: 未着手IN_PROGRESS: Julesが作業中REVIEW: Julesが完了、レビュー待ちDONE: レビュー完了、承認済み
2. タスク情報の記録
tasks.mdには以下の情報を記録します:
追加情報:
#### タスク1.1: ユーザー認証APIエンドポイントの実装
**説明**: POST /api/auth/login と POST /api/auth/logout のエンドポイントを実装
**受入基準**:
- src/api/auth.tsが存在する
- テストが通過する
**ステータス**: `REVIEW`
**Jules Task ID**: task-abc123
**開始日時**: 2024-01-15 10:30
**完了日時**: 2024-01-15 12:15
**作業時間**: 1時間45分
3. レビューとDONEへの移行
ファシリテーター: Task 1.1のレビューが完了しました。
実装は要件を満たしており、コード品質も良好です。
ステータスをDONEにマークします。
完了サマリー:
ユーザー認証APIエンドポイント(login/logout)を実装。
JWTとbcryptを使用した安全な認証を実現。
すべてのテストが通過し、ESLintエラーもゼロ。
複数タスクの並行処理
並行実行の条件
以下の条件を満たすタスクは並行してJulesに依頼できます:
条件:
- 依存関係が存在しない
- 異なるファイル・コンポーネントを対象とする
- 相互に影響を与えない
例:
並行実行可能:
- Task 1.1: APIエンドポイントの実装
- Task 1.2: データモデルの定義
- Task 1.3: 設定ファイルの作成
順次実行が必要:
- Task 1.1: APIエンドポイントの実装(依存: なし)
- Task 2.1: 認証ミドルウェアの実装(依存: Task 1.1)
並行実行の手順
1. 並行実行可能なタスクを特定
2. それぞれのタスクについて依頼文を作成
3. 複数のjulesコマンドを順次実行
4. すべてのタスクIDを記録
5. 各タスクの進捗を個別に追跡
エラーハンドリング
Julesでエラーが発生した場合
対処手順:
1. エラー内容を確認
jules status <task-id>
2. エラーの原因を分析
- 依頼文の不明瞭さ
- 技術的な問題
- 依存関係の問題
3. ユーザーに報告
- エラーの詳細
- 推定される原因
- 推奨される対処方法
4. 必要に応じて再実行
- 依頼文を修正
- 依存関係を解決
- jules retry <task-id>
5. tasks.mdを更新
- ステータスを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. ドキュメントの同期
tasks.mdを最新に保つ:
- ステータス変更を即座に反映
- Jules Task IDを記録
- 作業時間を記録
- 問題や気づきをメモ
絵文字の使用禁止
すべてのメッセージ、依頼文、ドキュメントで絵文字を使用しません:
禁止事項:
- Jules依頼文に絵文字を含めない
- ユーザーへのメッセージに絵文字を使わない
- tasks.mdの更新に絵文字を含めない
- コミットメッセージに絵文字を使わない
トラブルシューティング
よくある問題と解決方法
問題1: julesコマンドが見つからない
- 原因: Jules CLIがインストールされていない、またはPATHに含まれていない
- 解決: Jules CLIのインストールを確認し、PATHを設定
問題2: 認証エラーが発生する
- 原因: Jules CLIの認証が設定されていない
- 解決:
jules auth loginで認証を設定
問題3: タスクが失敗する
- 原因: 依頼文が不明瞭、または依存関係が不足
- 解決: 依頼文を詳細化し、必要な前提条件を確認
問題4: 並行実行で競合が発生する
- 原因: 同じファイルを編集するタスクを並行実行した
- 解決: 依存関係を見直し、順次実行に変更
今後の拡張
このスキルは将来的に以下の機能を追加予定です:
- Jules CLIの詳細な状態監視
- タスクの優先順位付け
- 自動的なレビュープロセス
- チームでのタスク共有機能
- タスク実行時間の分析とレポート