{"id":"e9b0cffd-8d1c-46fd-8869-565d937d0750","shortId":"ZapZ2N","kind":"skill","title":"jules","tagline":"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: bu","description":"# Jules Task Delegation\n\nDelegate coding tasks to Google's Jules AI agent on GitHub repositories.\n\n## Environment Variables\n\n| Variable | Required | Description |\n|----------|----------|-------------|\n| `JULES_API_KEY` | For API auth | API key from [jules.google.com/settings](https://jules.google.com/settings) |\n\n## Setup (Run Before First Command)\n\nTwo auth paths are available. Use **Path 1** for interactive use, **Path 2** for headless/agent use.\n\n### Path 1: CLI (Interactive)\n\n#### 1. Install CLI\n```bash\nwhich jules || npm install -g @google/jules\n```\n\n#### 2. Check Auth\n```bash\njules remote list --repo\n```\nIf fails → tell user to run `jules login` (or `--no-launch-browser` for headless)\n\n### Path 2: API Key (Headless / Agent Use)\n\n#### 1. Get API Key\nGet key from [jules.google.com/settings](https://jules.google.com/settings) (3-key limit per account).\n\n#### 2. Set Environment Variable\n```bash\nexport JULES_API_KEY=\"your-api-key\"\n```\n\n#### 3. Verify\n```bash\ncurl -s -H \"x-goog-api-key: $JULES_API_KEY\" \\\n  \"https://jules.googleapis.com/v1alpha/sessions?pageSize=1\" | head -20\n```\n\n### Common Setup (Both Paths)\n\n#### Auto-Detect Repo\n```bash\ngit remote get-url origin 2>/dev/null | sed -E 's#.*(github\\.com)[/:]([^/]+/[^/.]+)(\\.git)?#\\2#'\n```\nIf not GitHub or not in git repo → ask user for `--repo owner/repo`\n\n#### Verify Repo Connected\nCheck repo is in `jules remote list --repo`. If not → direct to https://jules.google.com\n\n## Commands (CLI)\n\n### Create Tasks\n```bash\njules 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\n```\n\n### Monitor\n```bash\njules remote list --session    # All sessions\njules remote list --repo       # Connected repos\n```\n\n### Retrieve Results\n```bash\njules remote pull --session <id>         # View diff\njules remote pull --session <id> --apply # Apply locally\njules teleport <id>                      # Clone + apply\n```\n\n### Latest Session Shortcut\n```bash\nLATEST=$(jules remote list --session 2>/dev/null | awk 'NR==2 {print $1}')\njules remote pull --session $LATEST\n```\n\n## Commands (API)\n\n### Create a Task\n```bash\ncurl -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  }'\n```\n\nKey fields:\n- `prompt` — The task description (required)\n- `sourceContext.repository` — GitHub `owner/repo` (required)\n- `sourceContext.branchName` — Target branch (default: repo default)\n- `automationMode` — `\"AUTO_CREATE_PR\"` to auto-create PRs, omit for manual\n- `title` — Display name for the session\n- `requirePlanApproval` — `true` to pause for plan review before execution\n\n### List Sessions\n```bash\ncurl -s -H \"x-goog-api-key: $JULES_API_KEY\" \\\n  \"https://jules.googleapis.com/v1alpha/sessions?pageSize=10\"\n```\n\n### Get Session Status\n```bash\ncurl -s -H \"x-goog-api-key: $JULES_API_KEY\" \\\n  \"https://jules.googleapis.com/v1alpha/sessions/SESSION_ID\"\n```\n\n### Poll Until Complete (API)\n```bash\nSESSION_ID=\"<id>\"\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\n```\n\n## Smart Context Injection\n\nEnrich prompts with current context for better results:\n\n```bash\nBRANCH=$(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' ', ')\n```\n\n**Use when creating tasks (CLI):**\n```bash\njules new --repo owner/repo \"Fix the bug in auth module. Context: branch=$BRANCH, recently modified: $RECENT_FILES\"\n```\n\n**Use when creating tasks (API):**\n```bash\ncurl -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  }\"\n```\n\n## Template Prompts\n\nQuick commands for common tasks:\n\n### Add Tests\n```bash\nFILES=$(git diff --name-only HEAD~3 2>/dev/null | grep -E '\\.(js|ts|py|go|java)$' | 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)$' | 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=\"<id>\"\nTASK_DESC=\"<brief 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=\"<id>\"\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","tags":["jules","skills","sanjay3290","agent-skills","ai-skills","atlassian","azure-devops","claude-code","claude-skills","confluence","deep-research","elevenlabs"],"capabilities":["skill","source-sanjay3290","skill-jules","topic-agent-skills","topic-ai-skills","topic-atlassian","topic-azure-devops","topic-claude-code","topic-claude-skills","topic-confluence","topic-deep-research","topic-elevenlabs","topic-gmail","topic-google-calendar","topic-google-drive"],"categories":["ai-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/sanjay3290/ai-skills/jules","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add sanjay3290/ai-skills","source_repo":"https://github.com/sanjay3290/ai-skills","install_from":"skills.sh"}},"qualityScore":"0.574","qualityRationale":"deterministic score 0.57 from registry signals: · indexed on github topic:agent-skills · 248 github stars · SKILL.md body (7,978 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-02T18:54:11.108Z","embedding":null,"createdAt":"2026-04-18T22:05:19.443Z","updatedAt":"2026-05-02T18:54:11.108Z","lastSeenAt":"2026-05-02T18:54:11.108Z","tsv":"'-10':559 '-20':189 '-5':567,681,722 '/dev/null':206,328,557,672,713,897 '/session/$session_id':518,923,931 '/settings](https://jules.google.com/settings)':77,152 '/v1alpha/sessions':351,614 '/v1alpha/sessions/$session_id':493 '/v1alpha/sessions/session_id':468 '/v1alpha/sessions?pagesize=1':187 '/v1alpha/sessions?pagesize=10':450 '1':90,100,103,143,333 '123':770 '2':95,113,137,158,205,213,327,331,556,671,712,896 '3':153,171,271 '30':526,939 '30s':524,937 'account':157 'action':998 'add':36,39,261,660,686,701,727,838 'agent':9,57,141 'agents.md':942,953,1040 'ai':8,56 'api':67,70,72,138,145,165,169,180,183,340,356,359,443,446,461,464,472,486,489,606,619,622,985,1048,1052,1054 'appli':311,312,317,804,809,822,836 'application/json':365,628 'ask':26,222 'asynchron':11 'auth':71,84,115,251,369,593,635 'authent':374 'auto':195,254,385,408,413,650 'auto-cr':412 'auto-detect':194,253 'autom':869,1058 'automationmod':384,407,649 'avail':87 'await':1003 'awk':329,901 'b':826 'bash':106,116,162,173,198,247,285,300,321,344,436,454,473,540,584,607,662,703,743,767,815,885 'better':538 'bodi':780,785,868 'branch':403,541,543,596,597,638,639,648,814,821 'branchnam':382,647 'break':511,519,916,924,932 'brief':956 'browser':133 'bu':45 'bug':252,370,591,633,795 'build':989,991 'c':495 'cach':573 'cancel':1029,1034 'case':505,696,904 'cat':276 'chang':810,870 'check':29,114,230,515,920,1014 'checkout':825 'cli':101,105,244,583,879,1019,1028,1050,1060 'clone':316 'code':3,50,763,967 'codebas':752 'com':211 'command':82,243,339,656,992,994 'comment':729 'commit':563,805,823,841 'common':190,658 'complet':471,508,808,878,907,1010 'connect':229,296 'content':363,626 'content-typ':362,625 'context':530,536,595,637,1047 'convent':968,972 'coverag':986 'creat':245,341,386,409,414,581,604,651,820,853,864,944 'curl':174,345,437,455,480,608 'current':535,546 'd':366,629 'default':404,406 'deleg':2,20,48,49 'deploy':990 'desc':819,845,867 'descript':65,395,734,957 'detect':196,255 'diff':306,550,572,665,706 'direct':240 'display':420 'doc':40 'document':702,728 'done':510,528,909,941 'e':208,674,715 'echo':509,513,520,908,918,926,933 'edg':695 'enrich':532 'environ':61,160 'error':742,749 'esac':527,940 'exampl':739 'execut':12,433 'export':163 'f':1005 'fail':122,512,514,917,919,1013 'fals':389 'feat':843 'featur':981 'field':391 'file':548,601,643,663,692,693,704,731,781,787,973 'finish':884 'first':81 'fix':19,250,368,372,589,631,740,746,759 'framework':962 'function':733,764 'g':111 'get':144,147,202,451,502 'get-url':201 'gh':773,862 'git':199,212,220,542,549,564,571,664,705,802,824,837,840,855 'github':59,210,216,398,1035 'gitlab/bitbucket':1037 'go':678,719 'goog':179,355,442,460,485,618 'googl':6,53 'google/jules':112 'grep':673,714,898 'h':176,352,361,439,457,482,615,624 'handl':44 'head':188,554,558,669,680,710,721 'headless':135,140 'headless/agent':97,1057 'id':475,817,829,835,849,861,875,887,900,915 'identifi':756 'implement':272 'import':496 'improv':799,949 'includ':694,732 'info':772,801 'inject':531 'input':928 'instal':104,110 'integr':803,982 'interact':92,102,1062 'issu':376,757,797 'java':679,720 'jest/pytest/go':965 'jq':782 'js':675,716 'json':498,778 'json.load':500 'jule':1,7,18,22,25,27,30,33,35,38,41,46,55,66,108,117,127,164,182,234,248,257,266,278,286,292,301,307,314,323,334,358,445,463,488,585,621,684,725,744,789,807,827,830,846,859,872,892,910,950,1025,1041,1053 'jules.google.com':76,151,242,517,922,930 'jules.google.com/session/$session_id':516,921,929 'jules.google.com/settings](https://jules.google.com/settings)':75,150 'jules.googleapis.com':186,350,449,467,492,613 'jules.googleapis.com/v1alpha/sessions':349,612 'jules.googleapis.com/v1alpha/sessions/$session_id':491 'jules.googleapis.com/v1alpha/sessions/session_id':466 'jules.googleapis.com/v1alpha/sessions?pagesize=1':185 'jules.googleapis.com/v1alpha/sessions?pagesize=10':448 'key':68,73,139,146,148,154,166,170,181,184,357,360,390,444,447,462,465,487,490,620,623,1055 'languag':960 'latest':318,322,338 'launch':132 'limit':155 'lint':741,748 'linter':755 'linter/formatter':969 'list':119,236,288,294,325,434,894 'local':313 'log':565 'login':128 'm':842 'main':383 'maintain':762 'manual':418 'markdown':952 'mock':698 'modifi':599,641,691 'modul':594,636 'monitor':284 'n':561,569,578,683,724,784 'name':421,552,575,667,708,971 'name-on':551,574,666,707 'need':700,927 'new':249,258,267,279,586,685,726,745,790,813,980 'nf':903 'nfile':786 'no-launch-brows':130 'note':1017 'npm':109 'nr':330 'num':769,777 'omit':416 'onelin':566 'option':850 'organ':974 'origin':204,858 'overview':955 'owner/repo':226,260,269,281,381,399,588,646 'parallel':270,274 'paramet':735 'path':85,89,94,99,136,193,788 'paus':428 'per':156 'plan':430,999 'poll':469,876 'post':348,611 'pr':43,387,410,652,766,768,771,774,776,793,800,854,863 'print':332,499,902 'progress':1001 'project':954 'prompt':371,392,533,630,654 'prs':415 'pull':32,303,309,336,832,912,1011 'push':851,856 'py':677,718 'python3':494 'question':1026 'quick':655 'react/fastapi/gin/etc':963 'read':1042 'recent':547,562,598,600,640,642,690 'remot':118,200,235,287,293,302,308,324,335,831,893,911 'repli':1020 'repo':120,197,221,225,228,231,237,256,259,265,268,280,295,297,405,587,946,1044 'repositori':60,380,645 'requir':64,396,400,976 'requireplanapprov':388,425 'respond':1006 'result':34,299,539,951,1012 'retriev':298 'return':736 'review':42,431,765,791 'root':947,1045 'run':79,126,753 'say':16 'secur':796 'sed':207 'send':23 'session':31,275,289,291,304,310,319,326,337,424,435,452,474,816,828,833,834,847,848,860,873,874,882,886,895,899,913,914,995,1063 'set':159 'setup':78,191 'shortcut':320 'show':545 'show-curr':544 'skill' 'skill-jules' 'sleep':525,938 'smart':529 'source-sanjay3290' 'sourcecontext':379,644 'sourcecontext.branchname':401 'sourcecontext.repository':397 'specif':264 'src/auth.ts':378 'stack':959 'stage':570 'state':479,503,506,521,522,996 'status':453,891,905,934,935,997 'stdin':283 'support':1039 'sys':497 'sys.stdin':501 'target':402,987 'task':4,47,51,246,343,394,582,605,659,818,844,866 'task.md':277 'tech':958 'teleport':315 'tell':123 'templat':653,943 'test':37,263,661,688,964,975,978,983,993 'test/etc':966 'timeout':375 'titl':367,419,779,783,865 'topic-agent-skills' 'topic-ai-skills' 'topic-atlassian' 'topic-azure-devops' 'topic-claude-code' 'topic-claude-skills' 'topic-confluence' 'topic-deep-research' 'topic-elevenlabs' 'topic-gmail' 'topic-google-calendar' 'topic-google-drive' 'tr':560,568,577,682,723 'true':426,477,889 'ts':676,717 'two':83 'type':364,627 'typescript/python/go/etc':961 'u':857 'ui':1009,1016,1023,1032 'unit':262,687,977 'unknown':504 'url':203 'use':13,88,93,98,142,579,602,970,1021,1030,1051,1059 'user':15,124,223,925,1004 'valu':737 'variabl':62,63,161 'verifi':172,227 'view':305,775 'vs':1049 'wait':523,880,936,1002 'web':1008,1015,1022,1031 'x':178,273,347,354,441,459,484,610,617,988 'x-goog-api-key':177,353,440,458,483,616 'your-api-key':167 '~3':555,670,711","prices":[{"id":"d1fd25db-a3f0-446e-a250-11426f4ba6a8","listingId":"e9b0cffd-8d1c-46fd-8869-565d937d0750","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"sanjay3290","category":"ai-skills","install_from":"skills.sh"},"createdAt":"2026-04-18T22:05:19.443Z"}],"sources":[{"listingId":"e9b0cffd-8d1c-46fd-8869-565d937d0750","source":"github","sourceId":"sanjay3290/ai-skills/jules","sourceUrl":"https://github.com/sanjay3290/ai-skills/tree/main/skills/jules","isPrimary":false,"firstSeenAt":"2026-04-18T22:05:19.443Z","lastSeenAt":"2026-05-02T18:54:11.108Z"}],"details":{"listingId":"e9b0cffd-8d1c-46fd-8869-565d937d0750","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"sanjay3290","slug":"jules","github":{"repo":"sanjay3290/ai-skills","stars":248,"topics":["agent-skills","ai-skills","atlassian","azure-devops","claude-code","claude-skills","confluence","deep-research","elevenlabs","gmail","google-calendar","google-drive","google-workspace","imagen","jira","mcp","mysql","notebooklm","postgresql","text-to-speech"],"license":"apache-2.0","html_url":"https://github.com/sanjay3290/ai-skills","pushed_at":"2026-04-13T14:16:19Z","description":"Collection of agent skills for AI coding assistants","skill_md_sha":"b8ef27b84072e253f5791dd9fa74832b73431c75","skill_md_path":"skills/jules/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/sanjay3290/ai-skills/tree/main/skills/jules"},"layout":"multi","source":"github","category":"ai-skills","frontmatter":{"name":"jules","license":"Apache-2.0","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."},"skills_sh_url":"https://skills.sh/sanjay3290/ai-skills/jules"},"updatedAt":"2026-05-02T18:54:11.108Z"}}