Claude-skill-registry jules-dispatch
git clone https://github.com/majiayu000/claude-skill-registry
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/jules-dispatch" ~/.claude/skills/majiayu000-claude-skill-registry-jules-dispatch && rm -rf "$T"
skills/data/jules-dispatch/SKILL.mdJules 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
(for database access if needed)RAILWAY_TOKEN
Integration with Beads
Before dispatch:
- Issue must exist in Beads
- Recommended: Add
field and/or TECH_PLAN docdesign - Apply
labeljules-ready
After dispatch:
- Jules creates feature branch:
feature-{issue_id}-jules-{session_id} - Jules commits with
trailerFeature-Key: {issue_id} - 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 |
|---|---|
| Print commands without executing |
| Dispatch specific issue only |
| Ignore label check |
| 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