--- 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で実行してください」などと依頼されたら: 1. **tasks.mdの読み取り** - docs/tasks.mdの内容を確認 - TODO状態のタスクを特定 - 依存関係を確認 2. **タスクの選択** - ユーザーにタスクリストを表示 - 依頼するタスクを選択してもらう - 複数選択も可能 3. **Jules依頼文の作成** - タスクの説明、受入基準、技術的文脈を日本語でフォーマット - Julesが理解しやすい形式に整形 - 必要な参照情報を含める 4. **julesコマンドの実行** - `jules "依頼文"` コマンドを実行 - タスクIDを記録 - ユーザーに依頼完了を報告 5. **進捗の追跡** - 必要に応じて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コマンド ### タスクの作成・依頼 ```bash # 基本的な依頼 jules "タスクの説明" # 長い依頼文の場合はヒアドキュメントを使用 jules "$(cat <<'EOF' タスク: ユーザー認証APIの実装 概要: POST /api/auth/login エンドポイントを実装してください。 受入基準: - src/api/auth.tsが存在する - テストが通過する 技術的文脈: - Next.js 14 - JWT + bcrypt EOF )" ``` ### タスクの状態確認 ```bash # タスクリストの表示 jules list # 特定のタスクの状態確認 jules status # タスクの詳細表示 jules show ``` ### タスクの管理 ```bash # タスクのキャンセル jules cancel # タスクの再実行 jules retry # 完了したタスクの結果取得 jules result ``` ## ワークフロー ### 基本的な実行フロー ``` 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には以下の情報を記録します: **追加情報**: ```markdown #### タスク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 2. エラーの原因を分析 - 依頼文の不明瞭さ - 技術的な問題 - 依存関係の問題 3. ユーザーに報告 - エラーの詳細 - 推定される原因 - 推奨される対処方法 4. 必要に応じて再実行 - 依頼文を修正 - 依存関係を解決 - jules retry 5. tasks.mdを更新 - ステータスをBLOCKEDに変更 - エラー内容を記録 ``` **例**: ``` ファシリテーター: Task 1.1の実行中にエラーが発生しました。 エラー内容: 依存パッケージ'jose'がインストールされていません。 推奨される対処: 1. npm install joseを実行 2. Julesのタスクを再実行 このまま対処を進めますか?それとも手動で解決しますか? ``` ### タスクが長時間完了しない場合 **対処手順**: ``` 1. 現在の状態を確認 jules status 2. 作業内容を確認 jules show 3. ユーザーに状況を報告 - 現在の進捗 - 推定残り時間 - 次のアクション 4. 必要に応じてキャンセルまたは待機を提案 ``` ## 制約事項 ### 実行の制限 以下の場合はJulesへの依頼を控えます: 1. **タスクの曖昧性** - 受入基準が不明確 - 実装方法が複数考えられる - 技術的文脈が不足している 2. **リスクの高い操作** - 本番環境への直接的な変更 - データベースの削除操作 - 認証情報の変更 3. **ユーザーの判断が必要な場合** - 技術選択が必要 - アーキテクチャの決定が必要 - トレードオフの判断が必要 これらの場合は、ユーザーに確認または詳細化を依頼します。 ### 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の詳細な状態監視 - タスクの優先順位付け - 自動的なレビュープロセス - チームでのタスク共有機能 - タスク実行時間の分析とレポート