skills/rad-issue-loop/SKILL.md
Autonomous issue worker loops - direct issue implementation and label-driven plan creation. Use when you want to run autonomous agents that process Radicle issues, create plans, and orchestrate execution.
npx skillsauth add deanh/rad-pi rad-issue-loopInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
This skill defines the two-loop architecture for autonomously processing Radicle issues:
/rad-issue-loop): Direct implementation for simple issues/rad-plan-loop): Plan creation for complex issues (label-driven)/rad-orchestrate-loop): Watches for approved plans and executes them ┌──────────────┐
│ Open Issue │
└──────┬───────┘
│
Has 'TODO' label?
/ \
No Yes
/ \
┌──────▼──────┐ ┌───────▼────────┐
│ rad-issue- │ │ rad-plan-loop │
│ loop │ │ (Loop 1b) │
│ (Loop 1a) │ │ │
│ Direct work │ │ Creates Plan COB│
└──────┬───────┘ └───────┬─────────┘
│ │
│ 'TODO' → 'ready'
│ Plan status: draft
│ │
│ Human reviews plan
│ (or --auto-approve)
│ │
│ rad-plan status <id> approved
│ │
│ ┌───────▼──────────┐
│ │ rad-orchestrate- │
│ │ loop (Loop 2) │
│ │ │
│ │ Worktrees, workers │
│ │ context COBs │
▼ └───────┬────────────┘
Patch pushed │
Patch pushed
rad) installed and authenticatedrad-context CLI installed for Context COBsrad-plan CLI installed (required for Loop 1b and Loop 2)rad node start)/rad-issue-loop)For simple issues that don't need structured planning.
/rad-issue-loop # Start interactively
/rad-issue-loop --auto # Run without prompts
/rad-issue-loop --oneshot # Process one issue then stop
/rad-issue-loop --labels bug # Only process issues with 'bug' label
/rad-issue-loop --exclude-label TODO # Exclude label (default: 'TODO')
/rad-issue-loop --status # Show loop status
/rad-issue-loop --stop # Stop a running loop
TODO-labeled issues by default)/rad-issue-work (context COB, patch, announce)After the agent finishes implementing:
/rad-issue-work <issue-id> # Or run from issue-* branch
This commits changes, creates a Context COB, pushes a Radicle patch, and returns to main.
/rad-plan-loop)Watches for issues labeled TODO and creates Plan COBs from them.
/rad-plan-loop # Start watching for 'TODO' issues
/rad-plan-loop --auto-approve # Create plans and set status to 'approved'
/rad-plan-loop --oneshot # Process current batch then stop
/rad-plan-loop --plan-label mytag # Use custom label (default: 'TODO')
/rad-plan-loop --planned-label done # Custom "processed" label (default: 'ready')
/rad-plan-loop --max-plans 3 # Stop after creating N plans
/rad-plan-loop --status # Show loop status
/rad-plan-loop --stop # Stop a running loop
/rad-plan-check # Show TODO/ready issues and approved plans
TODO labelTODO, add readydraft (default) or approved (with --auto-approve)Issue created with 'TODO' label
│
▼
rad-plan-loop picks it up
│
▼
Plan COB created, linked to issue
│
▼
Label swapped: 'TODO' → 'ready'
│
▼
Human re-adds 'TODO'? → New plan created (supports multiple plans per issue)
The planning LLM is instructed to:
affectedFiles (critical for orchestrator conflict detection)blocked_by references/rad-orchestrate-loop)Watches for approved plans and dispatches them to the orchestrator.
/rad-orchestrate-loop # Start watching for approved plans
/rad-orchestrate-loop --oneshot # Execute one plan then stop
/rad-orchestrate-loop --cooldown 60000 # Set poll interval (ms)
/rad-orchestrate-loop --status # Show loop status
/rad-orchestrate-loop --stop # Stop
approvedin-progress/rad-orchestrate <plan-id> for full worktree dispatchAfter rad-plan-loop creates a draft plan:
# Review the plan
rad-plan show <plan-id>
# Edit tasks if needed
rad-plan task edit <plan-id> <task-id> --description "Updated details"
# Approve when ready
rad-plan status <plan-id> approved
| Workflow | Commands |
|----------|----------|
| Fully manual | Human creates plans, /rad-orchestrate <id> |
| Planning only | /rad-plan-loop → human reviews → manual orchestrate |
| Full auto with human gate | /rad-plan-loop + /rad-orchestrate-loop (human approves between) |
| Full auto, no gate | /rad-plan-loop --auto-approve + /rad-orchestrate-loop |
| Simple issues only | /rad-issue-loop (no plans involved) |
| Mixed | /rad-issue-loop for simple + /rad-plan-loop for complex |
--plan-label <label> (default: TODO)--planned-label <label> (default: ready)--exclude-label <label> on issue loop (default: TODO)--max-plans <n> to throttle plan creationrad-plan is not installed: report and suggest installationTODO issues in the direct loop (they belong to plan-loop)--auto-approve is setTODO issue (re-adding label creates a new plan)development
This skill should be used when the user asks to "initialize a radicle repo", "rad init", "create a patch", "open a patch", "rad patch", "clone from radicle", "rad clone", "work with radicle issues", "rad issue", "start radicle node", "rad node", "seed a repository", "sync with radicle", "push to radicle", "collaborate on radicle", or mentions RIDs, DIDs, patches, seeding, or peer-to-peer code collaboration.
tools
Knowledge about Radicle Plan COBs (me.hdh.plan) - a custom Collaborative Object type for storing implementation plans in Radicle repositories. Use when working with rad-plan, plan COBs, or implementation planning in Radicle.
tools
Knowledge about rad-experiment CLI and cc.experiment COBs — publishing, reproducing, and curating optimization experiments in Radicle repos. Use when working with rad-experiment, experiment COBs, publish-tape, autoresearch publishing, or cc.experiment.
data-ai
Knowledge about Radicle Context COBs (me.hdh.context) - a custom Collaborative Object type for storing AI session observations in Radicle repositories. Use when working with rad-context, context COBs, or preserving session learnings.