Jules Task Delegation Delegate coding tasks to Google's Jules AI agent on GitHub repositories. Environment Variables | Variable | Required | Description | |----------|----------|-------------| | | For API auth | API key from jules.google.com/settings | Setup (Run Before First Command) Two auth paths are available. Use Path 1 for interactive use, Path 2 for headless/agent use. Path 1: CLI (Interactive) 1. Install CLI 2. Check Auth If fails → tell user to run (or for headless) Path 2: API Key (Headless / Agent Use) 1. Get API Key Get key from jules.google.com/settings (3-key limit per account).…

| head -5 | tr '\\n' ', ')\njules new \"Add unit tests for recently modified files: $FILES. Include edge cases and mocks where needed.\"\n```\n\n### Add Documentation\n```bash\nFILES=$(git diff --name-only HEAD~3 2>/dev/null | grep -E '\\.(js|ts|py|go|java)

Jules Task Delegation Delegate coding tasks to Google's Jules AI agent on GitHub repositories. Environment Variables | Variable | Required | Description | |----------|----------|-------------| | | For API auth | API key from jules.google.com/settings | Setup (Run Before First Command) Two auth paths are available. Use Path 1 for interactive use, Path 2 for headless/agent use. Path 1: CLI (Interactive) 1. Install CLI 2. Check Auth If fails → tell user to run (or for headless) Path 2: API Key (Headless / Agent Use) 1. Get API Key Get key from jules.google.com/settings (3-key limit per account).…

| head -5 | tr '\\n' ', ')\njules new \"Add documentation comments to: $FILES. Include function descriptions, parameters, return values, and examples.\"\n```\n\n### Fix Lint Errors\n```bash\njules new \"Fix all linting errors in the codebase. Run the linter, identify issues, and fix them while maintaining code functionality.\"\n```\n\n### Review PR\n```bash\nPR_NUM=123\nPR_INFO=$(gh pr view $PR_NUM --json title,body,files --jq '\"\\(.title)\\n\\(.body)\\nFiles: \\(.files[].path)\"')\njules new \"Review this PR for bugs, security issues, and improvements: $PR_INFO\"\n```\n\n## Git Integration (Apply + Commit)\n\nAfter Jules completes, apply changes to a new branch:\n\n```bash\nSESSION_ID=\"\u003cid>\"\nTASK_DESC=\"\u003cbrief description>\"\n\n# Create branch, apply, commit\ngit checkout -b \"jules/$SESSION_ID\"\njules remote pull --session \"$SESSION_ID\" --apply\ngit add -A\ngit commit -m \"feat: $TASK_DESC\n\nJules session: $SESSION_ID\"\n\n# Optional: push and create PR\ngit push -u origin \"jules/$SESSION_ID\"\ngh pr create --title \"$TASK_DESC\" --body \"Automated changes from Jules session $SESSION_ID\"\n```\n\n## Poll Until Complete (CLI)\n\nWait for session to finish:\n\n```bash\nSESSION_ID=\"\u003cid>\"\nwhile true; do\n STATUS=$(jules remote list --session 2>/dev/null | grep \"$SESSION_ID\" | awk '{print $NF}')\n case \"$STATUS\" in\n Completed)\n echo \"Done!\"\n jules remote pull --session \"$SESSION_ID\"\n break ;;\n Failed)\n echo \"Failed. Check: https://jules.google.com/session/$SESSION_ID\"\n break ;;\n *User*)\n echo \"Needs input: https://jules.google.com/session/$SESSION_ID\"\n break ;;\n *)\n echo \"Status: $STATUS - waiting 30s...\"\n sleep 30 ;;\n esac\ndone\n```\n\n## AGENTS.md Template\n\nCreate in repo root to improve Jules results:\n\n```markdown\n# AGENTS.md\n\n## Project Overview\n[Brief description]\n\n## Tech Stack\n- Language: [TypeScript/Python/Go/etc.]\n- Framework: [React/FastAPI/Gin/etc.]\n- Testing: [Jest/pytest/go test/etc.]\n\n## Code Conventions\n- [Linter/formatter used]\n- [Naming conventions]\n- [File organization]\n\n## Testing Requirements\n- Unit tests for new features\n- Integration tests for APIs\n- Coverage target: [X]%\n\n## Build & Deploy\n- Build: `[command]`\n- Test: `[command]`\n```\n\n## Session States\n\n| Status | Action |\n|--------|--------|\n| Planning / In Progress | Wait |\n| Awaiting User F | Respond at web UI |\n| Completed | Pull results |\n| Failed | Check web UI |\n\n## Notes\n\n- **No CLI reply** → Use web UI for Jules questions\n- **No CLI cancel** → Use web UI to cancel\n- **GitHub only** → GitLab/Bitbucket not supported\n- **AGENTS.md** → Jules reads from repo root for context\n- **API vs CLI** → Use API (`JULES_API_KEY`) for headless/agent automation; use CLI for interactive sessions\n---","attachment_filenames":[],"attachments":[],"content_json":{"type":"doc","content":[{"type":"heading","attrs":{"level":1},"content":[{"text":"Jules Task Delegation","type":"text"}]},{"type":"paragraph","content":[{"text":"Delegate coding tasks to Google's Jules AI agent on GitHub repositories.","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Environment Variables","type":"text"}]},{"type":"table","attrs":{"layout":null},"content":[{"type":"tr","content":[{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Variable","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Required","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Description","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"JULES_API_KEY","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"For API auth","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"API key from ","type":"text"},{"text":"jules.google.com/settings","type":"text","marks":[{"type":"link","attrs":{"href":"https://jules.google.com/settings","title":null}}]}]}]}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Setup (Run Before First Command)","type":"text"}]},{"type":"paragraph","content":[{"text":"Two auth paths are available. Use ","type":"text"},{"text":"Path 1","type":"text","marks":[{"type":"strong"}]},{"text":" for interactive use, ","type":"text"},{"text":"Path 2","type":"text","marks":[{"type":"strong"}]},{"text":" for headless/agent use.","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Path 1: CLI (Interactive)","type":"text"}]},{"type":"heading","attrs":{"level":4},"content":[{"text":"1. Install CLI","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"which jules || npm install -g @google/jules","type":"text"}]},{"type":"heading","attrs":{"level":4},"content":[{"text":"2. Check Auth","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"jules remote list --repo","type":"text"}]},{"type":"paragraph","content":[{"text":"If fails → tell user to run ","type":"text"},{"text":"jules login","type":"text","marks":[{"type":"code_inline"}]},{"text":" (or ","type":"text"},{"text":"--no-launch-browser","type":"text","marks":[{"type":"code_inline"}]},{"text":" for headless)","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Path 2: API Key (Headless / Agent Use)","type":"text"}]},{"type":"heading","attrs":{"level":4},"content":[{"text":"1. Get API Key","type":"text"}]},{"type":"paragraph","content":[{"text":"Get key from ","type":"text"},{"text":"jules.google.com/settings","type":"text","marks":[{"type":"link","attrs":{"href":"https://jules.google.com/settings","title":null}}]},{"text":" (3-key limit per account).","type":"text"}]},{"type":"heading","attrs":{"level":4},"content":[{"text":"2. Set Environment Variable","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"export JULES_API_KEY=\"your-api-key\"","type":"text"}]},{"type":"heading","attrs":{"level":4},"content":[{"text":"3. Verify","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"curl -s -H \"x-goog-api-key: $JULES_API_KEY\" \\\n \"https://jules.googleapis.com/v1alpha/sessions?pageSize=1\" | head -20","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Common Setup (Both Paths)","type":"text"}]},{"type":"heading","attrs":{"level":4},"content":[{"text":"Auto-Detect Repo","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"git remote get-url origin 2>/dev/null | sed -E 's#.*(github\\.com)[/:]([^/]+/[^/.]+)(\\.git)?#\\2#'","type":"text"}]},{"type":"paragraph","content":[{"text":"If not GitHub or not in git repo → ask user for ","type":"text"},{"text":"--repo owner/repo","type":"text","marks":[{"type":"code_inline"}]}]},{"type":"heading","attrs":{"level":4},"content":[{"text":"Verify Repo Connected","type":"text"}]},{"type":"paragraph","content":[{"text":"Check repo is in ","type":"text"},{"text":"jules remote list --repo","type":"text","marks":[{"type":"code_inline"}]},{"text":". If not → direct to https://jules.google.com","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Commands (CLI)","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Create Tasks","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"jules new \"Fix auth bug\" # Auto-detected repo\njules new --repo owner/repo \"Add unit tests\" # Specific repo\njules new --repo owner/repo --parallel 3 \"Implement X\" # Parallel sessions\ncat task.md | jules new --repo owner/repo # From stdin","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Monitor","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"jules remote list --session # All sessions\njules remote list --repo # Connected repos","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Retrieve Results","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"jules remote pull --session \u003cid> # View diff\njules remote pull --session \u003cid> --apply # Apply locally\njules teleport \u003cid> # Clone + apply","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Latest Session Shortcut","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"LATEST=$(jules remote list --session 2>/dev/null | awk 'NR==2 {print $1}')\njules remote pull --session $LATEST","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Commands (API)","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Create a Task","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"curl -s -X POST \"https://jules.googleapis.com/v1alpha/sessions\" \\\n -H \"x-goog-api-key: $JULES_API_KEY\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"title\": \"Fix auth bug\",\n \"prompt\": \"Fix the authentication timeout issue in src/auth.ts\",\n \"sourceContext\": {\n \"repository\": \"owner/repo\",\n \"branchName\": \"main\"\n },\n \"automationMode\": \"AUTO_CREATE_PR\",\n \"requirePlanApproval\": false\n }'","type":"text"}]},{"type":"paragraph","content":[{"text":"Key fields:","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"prompt","type":"text","marks":[{"type":"code_inline"}]},{"text":" — The task description (required)","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"sourceContext.repository","type":"text","marks":[{"type":"code_inline"}]},{"text":" — GitHub ","type":"text"},{"text":"owner/repo","type":"text","marks":[{"type":"code_inline"}]},{"text":" (required)","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"sourceContext.branchName","type":"text","marks":[{"type":"code_inline"}]},{"text":" — Target branch (default: repo default)","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"automationMode","type":"text","marks":[{"type":"code_inline"}]},{"text":" — ","type":"text"},{"text":"\"AUTO_CREATE_PR\"","type":"text","marks":[{"type":"code_inline"}]},{"text":" to auto-create PRs, omit for manual","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"title","type":"text","marks":[{"type":"code_inline"}]},{"text":" — Display name for the session","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"requirePlanApproval","type":"text","marks":[{"type":"code_inline"}]},{"text":" — ","type":"text"},{"text":"true","type":"text","marks":[{"type":"code_inline"}]},{"text":" to pause for plan review before execution","type":"text"}]}]}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"List Sessions","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"curl -s -H \"x-goog-api-key: $JULES_API_KEY\" \\\n \"https://jules.googleapis.com/v1alpha/sessions?pageSize=10\"","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Get Session Status","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"curl -s -H \"x-goog-api-key: $JULES_API_KEY\" \\\n \"https://jules.googleapis.com/v1alpha/sessions/SESSION_ID\"","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Poll Until Complete (API)","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"SESSION_ID=\"\u003cid>\"\nwhile true; do\n STATE=$(curl -s -H \"x-goog-api-key: $JULES_API_KEY\" \\\n \"https://jules.googleapis.com/v1alpha/sessions/$SESSION_ID\" \\\n | python3 -c \"import sys,json; print(json.load(sys.stdin).get('state','UNKNOWN'))\")\n case \"$STATE\" in\n COMPLETED)\n echo \"Done!\"\n break ;;\n FAILED)\n echo \"Failed. Check: https://jules.google.com/session/$SESSION_ID\"\n break ;;\n *)\n echo \"State: $STATE - waiting 30s...\"\n sleep 30 ;;\n esac\ndone","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Smart Context Injection","type":"text"}]},{"type":"paragraph","content":[{"text":"Enrich prompts with current context for better results:","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"BRANCH=$(git branch --show-current)\nRECENT_FILES=$(git diff --name-only HEAD~3 2>/dev/null | head -10 | tr '\\n' ', ')\nRECENT_COMMITS=$(git log --oneline -5 | tr '\\n' '; ')\nSTAGED=$(git diff --cached --name-only | tr '\\n' ', ')","type":"text"}]},{"type":"paragraph","content":[{"text":"Use when creating tasks (CLI):","type":"text","marks":[{"type":"strong"}]}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"jules new --repo owner/repo \"Fix the bug in auth module. Context: branch=$BRANCH, recently modified: $RECENT_FILES\"","type":"text"}]},{"type":"paragraph","content":[{"text":"Use when creating tasks (API):","type":"text","marks":[{"type":"strong"}]}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"curl -s -X POST \"https://jules.googleapis.com/v1alpha/sessions\" \\\n -H \"x-goog-api-key: $JULES_API_KEY\" \\\n -H \"Content-Type: application/json\" \\\n -d \"{\n \\\"prompt\\\": \\\"Fix the bug in auth module. Context: branch=$BRANCH, recently modified: $RECENT_FILES\\\",\n \\\"sourceContext\\\": {\\\"repository\\\": \\\"owner/repo\\\", \\\"branchName\\\": \\\"$BRANCH\\\"},\n \\\"automationMode\\\": \\\"AUTO_CREATE_PR\\\"\n }\"","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Template Prompts","type":"text"}]},{"type":"paragraph","content":[{"text":"Quick commands for common tasks:","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Add Tests","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"FILES=$(git diff --name-only HEAD~3 2>/dev/null | grep -E '\\.(js|ts|py|go|java)

Jules Task Delegation Delegate coding tasks to Google's Jules AI agent on GitHub repositories. Environment Variables | Variable | Required | Description | |----------|----------|-------------| | | For API auth | API key from jules.google.com/settings | Setup (Run Before First Command) Two auth paths are available. Use Path 1 for interactive use, Path 2 for headless/agent use. Path 1: CLI (Interactive) 1. Install CLI 2. Check Auth If fails → tell user to run (or for headless) Path 2: API Key (Headless / Agent Use) 1. Get API Key Get key from jules.google.com/settings (3-key limit per account).…

| head -5 | tr '\\n' ', ')\njules new \"Add unit tests for recently modified files: $FILES. Include edge cases and mocks where needed.\"","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Add Documentation","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"FILES=$(git diff --name-only HEAD~3 2>/dev/null | grep -E '\\.(js|ts|py|go|java)

Jules Task Delegation Delegate coding tasks to Google's Jules AI agent on GitHub repositories. Environment Variables | Variable | Required | Description | |----------|----------|-------------| | | For API auth | API key from jules.google.com/settings | Setup (Run Before First Command) Two auth paths are available. Use Path 1 for interactive use, Path 2 for headless/agent use. Path 1: CLI (Interactive) 1. Install CLI 2. Check Auth If fails → tell user to run (or for headless) Path 2: API Key (Headless / Agent Use) 1. Get API Key Get key from jules.google.com/settings (3-key limit per account).…

| head -5 | tr '\\n' ', ')\njules new \"Add documentation comments to: $FILES. Include function descriptions, parameters, return values, and examples.\"","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Fix Lint Errors","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"jules new \"Fix all linting errors in the codebase. Run the linter, identify issues, and fix them while maintaining code functionality.\"","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Review PR","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"PR_NUM=123\nPR_INFO=$(gh pr view $PR_NUM --json title,body,files --jq '\"\\(.title)\\n\\(.body)\\nFiles: \\(.files[].path)\"')\njules new \"Review this PR for bugs, security issues, and improvements: $PR_INFO\"","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Git Integration (Apply + Commit)","type":"text"}]},{"type":"paragraph","content":[{"text":"After Jules completes, apply changes to a new branch:","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"SESSION_ID=\"\u003cid>\"\nTASK_DESC=\"\u003cbrief description>\"\n\n# Create branch, apply, commit\ngit checkout -b \"jules/$SESSION_ID\"\njules remote pull --session \"$SESSION_ID\" --apply\ngit add -A\ngit commit -m \"feat: $TASK_DESC\n\nJules session: $SESSION_ID\"\n\n# Optional: push and create PR\ngit push -u origin \"jules/$SESSION_ID\"\ngh pr create --title \"$TASK_DESC\" --body \"Automated changes from Jules session $SESSION_ID\"","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Poll Until Complete (CLI)","type":"text"}]},{"type":"paragraph","content":[{"text":"Wait for session to finish:","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"SESSION_ID=\"\u003cid>\"\nwhile true; do\n STATUS=$(jules remote list --session 2>/dev/null | grep \"$SESSION_ID\" | awk '{print $NF}')\n case \"$STATUS\" in\n Completed)\n echo \"Done!\"\n jules remote pull --session \"$SESSION_ID\"\n break ;;\n Failed)\n echo \"Failed. Check: https://jules.google.com/session/$SESSION_ID\"\n break ;;\n *User*)\n echo \"Needs input: https://jules.google.com/session/$SESSION_ID\"\n break ;;\n *)\n echo \"Status: $STATUS - waiting 30s...\"\n sleep 30 ;;\n esac\ndone","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"AGENTS.md Template","type":"text"}]},{"type":"paragraph","content":[{"text":"Create in repo root to improve Jules results:","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"markdown"},"content":[{"text":"# AGENTS.md\n\n## Project Overview\n[Brief description]\n\n## Tech Stack\n- Language: [TypeScript/Python/Go/etc.]\n- Framework: [React/FastAPI/Gin/etc.]\n- Testing: [Jest/pytest/go test/etc.]\n\n## Code Conventions\n- [Linter/formatter used]\n- [Naming conventions]\n- [File organization]\n\n## Testing Requirements\n- Unit tests for new features\n- Integration tests for APIs\n- Coverage target: [X]%\n\n## Build & Deploy\n- Build: `[command]`\n- Test: `[command]`","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Session States","type":"text"}]},{"type":"table","attrs":{"layout":null},"content":[{"type":"tr","content":[{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Status","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Action","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Planning / In Progress","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Wait","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Awaiting User F","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Respond at web UI","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Completed","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Pull results","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Failed","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Check web UI","type":"text"}]}]}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Notes","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"No CLI reply","type":"text","marks":[{"type":"strong"}]},{"text":" → Use web UI for Jules questions","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"No CLI cancel","type":"text","marks":[{"type":"strong"}]},{"text":" → Use web UI to cancel","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"GitHub only","type":"text","marks":[{"type":"strong"}]},{"text":" → GitLab/Bitbucket not supported","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"AGENTS.md","type":"text","marks":[{"type":"strong"}]},{"text":" → Jules reads from repo root for context","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"API vs CLI","type":"text","marks":[{"type":"strong"}]},{"text":" → Use API (","type":"text"},{"text":"JULES_API_KEY","type":"text","marks":[{"type":"code_inline"}]},{"text":") for headless/agent automation; use CLI for interactive sessions","type":"text"}]}]}]},{"type":"hr","attrs":{"markup":"---"}}]},"metadata":{"date":"2026-06-05","name":"jules","author":"@skillopedia","source":{"stars":305,"repo_name":"ai-skills","origin_url":"https://github.com/sanjay3290/ai-skills/blob/HEAD/skills/jules/SKILL.md","repo_owner":"sanjay3290","body_sha256":"b653e9eedcf156338b35aec3684c39431e6a4003366c192327d634cd29ab2666","cluster_key":"f5eecdfe15354f95072d03fd5396d3304a1e35c99c7ad37354e3f24aa63b062b","clean_bundle":{"format":"clean-skill-bundle-v1","source":"sanjay3290/ai-skills/skills/jules/SKILL.md","bundle_sha256":"f4f294a920203a216cd42446e66ffa60faca333e694aaf9eab1a04b0d29975e6","attachment_count":0,"text_attachments":0,"binary_attachments":0},"cluster_size":1,"skill_md_path":"skills/jules/SKILL.md","import_metadata":{"date":"2026-06-05","author":"@skillopedia","version":"v1","category":"testing-qa","category_label":"Testing"},"exact_dupes_collapsed_into_this":0},"license":"Apache-2.0","version":"v1","category":"testing-qa","metadata":{"author":"sanjay3290","version":"1.0"},"import_tag":"clean-skills-v1","description":"Delegate coding tasks to Google Jules AI agent for asynchronous execution. Use when user says: 'have Jules fix', 'delegate to Jules', 'send to Jules', 'ask Jules to', 'check Jules sessions', 'pull Jules results', 'jules add tests', 'jules add docs', 'jules review pr'. Handles: bug fixes, documentation, features, tests, refactoring, code reviews. Works with GitHub repos, creates PRs."}},"renderedAt":1782980039553}

Jules Task Delegation Delegate coding tasks to Google's Jules AI agent on GitHub repositories. Environment Variables | Variable | Required | Description | |----------|----------|-------------| | | For API auth | API key from jules.google.com/settings | Setup (Run Before First Command) Two auth paths are available. Use Path 1 for interactive use, Path 2 for headless/agent use. Path 1: CLI (Interactive) 1. Install CLI 2. Check Auth If fails → tell user to run (or for headless) Path 2: API Key (Headless / Agent Use) 1. Get API Key Get key from jules.google.com/settings (3-key limit per account).…