Agent skill
jules-dispatch
Dispatches work to Jules agents via the CLI. Automatically generates context-rich prompts from Beads issues and spawns async sessions. Use when user says "send to jules", "assign to jules", "dispatch task", or "run in cloud".
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/data/jules-dispatch
SKILL.md
Jules Dispatch Skill
Purpose: Automate the handoff of Beads issues to Jules agents using the jules CLI.
Activation
Triggers:
- "assign this to jules"
- "dispatch bd-123 to jules"
- "start jules session for X"
- "run these in the cloud"
User provides: Issue IDs (bd-xyz) OR prompt text.
Core Workflow
1. Context Generation (The "Rich Prompt")
Jules needs the same context guidance as Claude Code Web. We will reuse/adapt the parallelize-cloud-work prompt logic.
Prompt Structure:
TASK: {issue_title} ({issue_id})
CONTEXT:
- Repo: {repo_name}
- Branch: feature-{issue_id}-jules
🚨 INSTRUCTIONS:
1. INVOKE SKILLS: {context_skills}
2. EXPLORE: Check {files_of_interest}
3. PLAN: Don't reimplement existing logic.
4. EXECUTE:
- Checkout branch feature-{issue_id}-jules
- Commit with Feature-Key: {issue_id}
- Push and create PR
2. Dispatch Logic
The skill will wrap the jules remote new command.
Command Template:
jules remote new \
--repo . \
--session "{RICH_PROMPT}"
3. Loop & Parallelize
If multiple issues are provided:
# pseudocode
for issue_id in provided_issues:
prompt = generate_rich_prompt(issue_id)
jules remote new --repo . --session "$prompt"
Workflow
1. Execute Dispatch Script
# Auto-discover from current repo
python ~/.agent/skills/jules-dispatch/dispatch.py
# Dry-run (print commands without executing)
python ~/.agent/skills/jules-dispatch/dispatch.py --dry-run
# Force dispatch specific issue (ignores label check)
python ~/.agent/skills/jules-dispatch/dispatch.py --action dispatch --issue bd-xyz --force
3. Monitor
Check status of active sessions:
python ~/.agent/skills/jules-dispatch/dispatch.py --action list
4. Pull & Apply (The Pull Pattern)
When a session is complete, retrieve the code into a local feature branch:
python ~/.agent/skills/jules-dispatch/dispatch.py --action pull --session <SESSION_ID>
2. Mega-Prompt Construction
For each candidate, the skill constructs a rich prompt:
TASK: {title} (ID: {issue_id})
DESCRIPTION:
{description}
DESIGN SPEC:
{design field from Beads issue}
----------
TECH PLAN / DOCS:
{Contents of docs/{issue_id}/TECH_PLAN.md if exists}
----------
CRITICAL INSTRUCTIONS:
1. Implement exactly per the DESIGN SPEC above.
2. If the Spec is ambiguous, PAUSE and ask key questions (do not guess).
DEFINITION OF DONE (REQUIRED):
1. Create a reproduction test case (or new unit test).
2. Run `make ci-lite` (or standard test suite) and fix ALL failures.
3. If this is a UI feature, verify no console errors.
4. Your PR description must include a "Verification" section with test logs.
3. Dispatch to Jules
The skill calls the Jules CLI:
jules remote new \
--repo <owner>/<repo> \
--session "<mega-prompt>"
Usage Examples
Example 1: Dispatch All Ready Tasks
# From any repo with Beads
python ~/.agent/skills/jules-dispatch/dispatch.py
Output:
Found 2 candidates.
🔍 Analyzing bd-4mot: Add Jules Health Check Endpoint...
🚀 Dispatching to Jules...
✅ Dispatched bd-4mot successfully.
🔍 Analyzing bd-ijk: Implement Rate Limiting...
🚀 Dispatching to Jules...
✅ Dispatched bd-ijk successfully.
Example 2: Dry Run
python ~/.agent/skills/jules-dispatch/dispatch.py --dry-run
Output:
Found 1 candidates.
🔍 Analyzing bd-4mot: Add Jules Health Check Endpoint...
[DRY RUN] Would execute:
jules remote new --repo stars-end/prime-radiant-ai --session "..."
[Prompt Length]: 842 chars
Example 3: Force Dispatch Specific Issue
python ~/.agent/skills/jules-dispatch/dispatch.py --action dispatch --issue bd-xyz --force
Example 4: Monitor Progress
# List active Jules sessions
python ~/.agent/skills/jules-dispatch/dispatch.py --action list
# Pull code from completed session
python ~/.agent/skills/jules-dispatch/dispatch.py --action pull --session 123456
Preparing Issues for Jules
1. Add Design Spec
Use Beads to add a design spec:
mcp__plugin_beads_beads__update(
issue_id="bd-xyz",
design="### Endpoint\nGET /health/jules\n### Response\nJSON: {'status': 'ok'}"
)
2. Add TECH_PLAN (Optional)
Create detailed context in docs/{issue_id}/TECH_PLAN.md:
# Tech Plan: bd-xyz
## Overview
...
## Implementation Details
...
## Testing Strategy
...
3. Apply Label
mcp__plugin_beads_beads__update(
issue_id="bd-xyz",
labels=["jules-ready"]
)
Environment Setup (Per-Repo)
Each repo needs a scripts/jules_setup.sh that Jules runs first:
#!/bin/bash
# scripts/jules_setup.sh - Bootstraps repo toolchain for Jules
# Install toolchain via mise
curl https://mise.run | sh
export PATH="$HOME/.local/bin:$PATH"
eval "$(mise activate bash)"
mise trust
mise install --yes
# Install dependencies
cd backend && poetry install --no-interaction
cd ../frontend && pnpm install
# Generate mock .env
cat <<EOF > .env
DB_HOST=localhost
USE_MOCK_DATA=true
EOF
echo "✅ Environment ready"
Jules configuration in the Jules UI:
- Setup Script:
bash scripts/jules_setup.sh - Environment Variables: Add
RAILWAY_TOKEN(for database access if needed)
Integration with Beads
Before dispatch:
- Issue must exist in Beads
- Recommended: Add
designfield and/or TECH_PLAN doc - Apply
jules-readylabel
After dispatch:
- Jules creates feature branch:
feature-{issue_id}-jules-{session_id} - Jules commits with
Feature-Key: {issue_id}trailer - Jules creates PR on completion
Post-merge cleanup:
mcp__plugin_beads_beads__close(
issue_id="bd-xyz",
reason="Completed via Jules: PR#123 merged"
)
CLI Options
| Option | Description |
|---|---|
--dry-run |
Print commands without executing |
--issue ID |
Dispatch specific issue only |
--force |
Ignore jules-ready label check |
--repo OWNER/NAME |
Override auto-detected repo |
Troubleshooting
"No 'jules-ready' tasks found"
Either no issues have the label, or you're not in a Beads-enabled repo.
# Check Beads is initialized
ls .beads/issues.jsonl
# Check for labeled issues
grep "jules-ready" .beads/issues.jsonl
"'jules' CLI not found"
Install the Jules CLI:
# Via npm (if packaged)
npm install -g @google/jules-cli
# Or via mise
mise use -g npm:@google/jules-cli
"Failed to dispatch"
Check Jules authentication:
jules auth status
jules auth login
"Session started but no PR created"
Check Jules session status:
python ~/.agent/skills/jules-dispatch/dispatch.py --action list
Version History
-
v2.0.0 (2025-12-15): Major upgrade
- Cross-repo support (works from any Beads-enabled repo)
- JSONL auto-discovery for jules-ready tasks
- Rich mega-prompt with TECH_PLAN support
- Per-repo setup script pattern
- Centralized in agent-skills
-
v1.0.0 (2025-12-10): Initial implementation
- Basic dispatch via bd CLI
- Manual issue ID arguments
Didn't find tool you were looking for?