
Jules
- 316 installs
- 364 repo stars
- Updated July 9, 2026
- sanjay3290/ai-skills
jules is a version 1.0 Apache-2.0 skill that delegates coding tasks to Google's Jules AI agent on GitHub repositories for developers who want asynchronous bug fixes, tests, docs, and auto-created pull requests.
About
jules is a sanjay3290 ai-skills package (version 1.0, Apache-2.0) that delegates coding work to Google's Jules AI agent on GitHub repositories. The skill supports CLI commands via `@google/jules` and headless REST calls to `jules.googleapis.com/v1alpha/sessions` authenticated with `JULES_API_KEY`. It handles bug fixes, documentation, features, tests, refactoring, and code reviews, with `AUTO_CREATE_PR` mode opening pull requests automatically. Developers poll session state until Completed, then pull diffs with `jules remote pull` or apply changes locally. A developer reaches for jules when offloading parallel GitHub work from Claude Code without manually context-switching to the Jules web UI.
- Extends Claude Code agent capabilities
- Activates on relevant task triggers
- Integrates with Claude Code workflow
Jules by the numbers
- 316 all-time installs (skills.sh)
- +6 installs in the week ending Aug 5, 2026 (Skillselion tracking)
- Ranked #2,244 of 16,546 AI & Agent Building skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/sanjay3290/ai-skills --skill julesAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 316 |
|---|---|
| repo stars | ★ 364 |
| Last updated | July 9, 2026 |
| Repository | sanjay3290/ai-skills ↗ |
How do you delegate coding tasks to Google Jules?
jules: agent skill for task automation in Claude Code workflows.
Who is it for?
Developers with a connected GitHub repo, Jules API key or CLI login, and tasks suited to asynchronous remote execution.
Skip if: Repositories on GitLab or Bitbucket, real-time pair programming, or work requiring immediate in-session code edits without polling.
When should I use this skill?
The user says have Jules fix, delegate to Jules, jules add tests, jules review PR, or check Jules sessions.
What you get
Jules session diffs, applied local branches, and GitHub pull requests from completed async agent runs
- Jules session diffs
- GitHub pull requests
By the numbers
- Skill version 1.0 under Apache-2.0 license
- Jules API allows 3 API keys per account
- Includes 4 template prompts: tests, docs, lint fixes, and PR review
Files
Jules Task Delegation
Delegate coding tasks to Google's Jules AI agent on GitHub repositories.
Environment Variables
| Variable | Required | Description |
|---|---|---|
JULES_API_KEY | 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
which jules || npm install -g @google/jules2. Check Auth
jules remote list --repoIf fails → tell user to run jules login (or --no-launch-browser 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).
2. Set Environment Variable
export JULES_API_KEY="your-api-key"3. Verify
curl -s -H "x-goog-api-key: $JULES_API_KEY" \
"https://jules.googleapis.com/v1alpha/sessions?pageSize=1" | head -20Common Setup (Both Paths)
Auto-Detect Repo
git remote get-url origin 2>/dev/null | sed -E 's#.*(github\.com)[/:]([^/]+/[^/.]+)(\.git)?#\2#'If not GitHub or not in git repo → ask user for --repo owner/repo
Verify Repo Connected
Check repo is in jules remote list --repo. If not → direct to https://jules.google.com
Commands (CLI)
Create Tasks
jules new "Fix auth bug" # Auto-detected repo
jules new --repo owner/repo "Add unit tests" # Specific repo
jules new --repo owner/repo --parallel 3 "Implement X" # Parallel sessions
cat task.md | jules new --repo owner/repo # From stdinMonitor
jules remote list --session # All sessions
jules remote list --repo # Connected reposRetrieve Results
jules remote pull --session <id> # View diff
jules remote pull --session <id> --apply # Apply locally
jules teleport <id> # Clone + applyLatest Session Shortcut
LATEST=$(jules remote list --session 2>/dev/null | awk 'NR==2 {print $1}')
jules remote pull --session $LATESTCommands (API)
Create a Task
curl -s -X POST "https://jules.googleapis.com/v1alpha/sessions" \
-H "x-goog-api-key: $JULES_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"title": "Fix auth bug",
"prompt": "Fix the authentication timeout issue in src/auth.ts",
"sourceContext": {
"repository": "owner/repo",
"branchName": "main"
},
"automationMode": "AUTO_CREATE_PR",
"requirePlanApproval": false
}'Key fields:
prompt— The task description (required)sourceContext.repository— GitHubowner/repo(required)sourceContext.branchName— Target branch (default: repo default)automationMode—"AUTO_CREATE_PR"to auto-create PRs, omit for manualtitle— Display name for the sessionrequirePlanApproval—trueto pause for plan review before execution
List Sessions
curl -s -H "x-goog-api-key: $JULES_API_KEY" \
"https://jules.googleapis.com/v1alpha/sessions?pageSize=10"Get Session Status
curl -s -H "x-goog-api-key: $JULES_API_KEY" \
"https://jules.googleapis.com/v1alpha/sessions/SESSION_ID"Poll Until Complete (API)
SESSION_ID="<id>"
while true; do
STATE=$(curl -s -H "x-goog-api-key: $JULES_API_KEY" \
"https://jules.googleapis.com/v1alpha/sessions/$SESSION_ID" \
| python3 -c "import sys,json; print(json.load(sys.stdin).get('state','UNKNOWN'))")
case "$STATE" in
COMPLETED)
echo "Done!"
break ;;
FAILED)
echo "Failed. Check: https://jules.google.com/session/$SESSION_ID"
break ;;
*)
echo "State: $STATE - waiting 30s..."
sleep 30 ;;
esac
doneSmart Context Injection
Enrich prompts with current context for better results:
BRANCH=$(git branch --show-current)
RECENT_FILES=$(git diff --name-only HEAD~3 2>/dev/null | head -10 | tr '\n' ', ')
RECENT_COMMITS=$(git log --oneline -5 | tr '\n' '; ')
STAGED=$(git diff --cached --name-only | tr '\n' ', ')Use when creating tasks (CLI):
jules new --repo owner/repo "Fix the bug in auth module. Context: branch=$BRANCH, recently modified: $RECENT_FILES"Use when creating tasks (API):
curl -s -X POST "https://jules.googleapis.com/v1alpha/sessions" \
-H "x-goog-api-key: $JULES_API_KEY" \
-H "Content-Type: application/json" \
-d "{
\"prompt\": \"Fix the bug in auth module. Context: branch=$BRANCH, recently modified: $RECENT_FILES\",
\"sourceContext\": {\"repository\": \"owner/repo\", \"branchName\": \"$BRANCH\"},
\"automationMode\": \"AUTO_CREATE_PR\"
}"Template Prompts
Quick commands for common tasks:
Add Tests
FILES=$(git diff --name-only HEAD~3 2>/dev/null | grep -E '\.(js|ts|py|go|java)$' | head -5 | tr '\n' ', ')
jules new "Add unit tests for recently modified files: $FILES. Include edge cases and mocks where needed."Add Documentation
FILES=$(git diff --name-only HEAD~3 2>/dev/null | grep -E '\.(js|ts|py|go|java)$' | head -5 | tr '\n' ', ')
jules new "Add documentation comments to: $FILES. Include function descriptions, parameters, return values, and examples."Fix Lint Errors
jules new "Fix all linting errors in the codebase. Run the linter, identify issues, and fix them while maintaining code functionality."Review PR
PR_NUM=123
PR_INFO=$(gh pr view $PR_NUM --json title,body,files --jq '"\(.title)\n\(.body)\nFiles: \(.files[].path)"')
jules new "Review this PR for bugs, security issues, and improvements: $PR_INFO"Git Integration (Apply + Commit)
After Jules completes, apply changes to a new branch:
SESSION_ID="<id>"
TASK_DESC="<brief description>"
# Create branch, apply, commit
git checkout -b "jules/$SESSION_ID"
jules remote pull --session "$SESSION_ID" --apply
git add -A
git commit -m "feat: $TASK_DESC
Jules session: $SESSION_ID"
# Optional: push and create PR
git push -u origin "jules/$SESSION_ID"
gh pr create --title "$TASK_DESC" --body "Automated changes from Jules session $SESSION_ID"Poll Until Complete (CLI)
Wait for session to finish:
SESSION_ID="<id>"
while true; do
STATUS=$(jules remote list --session 2>/dev/null | grep "$SESSION_ID" | awk '{print $NF}')
case "$STATUS" in
Completed)
echo "Done!"
jules remote pull --session "$SESSION_ID"
break ;;
Failed)
echo "Failed. Check: https://jules.google.com/session/$SESSION_ID"
break ;;
*User*)
echo "Needs input: https://jules.google.com/session/$SESSION_ID"
break ;;
*)
echo "Status: $STATUS - waiting 30s..."
sleep 30 ;;
esac
doneAGENTS.md Template
Create in repo root to improve Jules results:
# AGENTS.md
## Project Overview
[Brief description]
## Tech Stack
- Language: [TypeScript/Python/Go/etc.]
- Framework: [React/FastAPI/Gin/etc.]
- Testing: [Jest/pytest/go test/etc.]
## Code Conventions
- [Linter/formatter used]
- [Naming conventions]
- [File organization]
## Testing Requirements
- Unit tests for new features
- Integration tests for APIs
- Coverage target: [X]%
## Build & Deploy
- Build: `[command]`
- Test: `[command]`Session States
| Status | Action |
|---|---|
| Planning / In Progress | Wait |
| Awaiting User F | Respond at web UI |
| Completed | Pull results |
| Failed | Check web UI |
Notes
- No CLI reply → Use web UI for Jules questions
- No CLI cancel → Use web UI to cancel
- GitHub only → GitLab/Bitbucket not supported
- AGENTS.md → Jules reads from repo root for context
- API vs CLI → Use API (
JULES_API_KEY) for headless/agent automation; use CLI for interactive sessions
Related skills
How it compares
Choose jules over in-session coding when the task can run asynchronously on GitHub and return as a PR without blocking the local agent.
FAQ
How does jules authenticate to Google Jules?
jules supports two paths: interactive `jules login` via the @google/jules CLI, or headless REST calls with JULES_API_KEY from jules.google.com/settings. The API enforces a 3-key limit per account.
What repositories does jules support?
jules works only with GitHub repositories in owner/repo format. GitLab and Bitbucket are not supported. The skill auto-detects the repo from git remote origin or accepts an explicit --repo flag.
Can jules open pull requests automatically?
jules can set automationMode to AUTO_CREATE_PR in the v1alpha sessions API or use git push plus gh pr create after pulling completed diffs from a Jules session.