start
SKILL.md
RU: Start
Enable autonomous loop mode for any project type.
Arguments
--poc: Use proof-of-concept settings (5 min / 10 min limits, 10/20 iterations)--production: Use production settings (4h / 9h limits, 50/99 iterations)--quick: Skip guidance setup, use existing config
Step 1: Mode Selection
Use AskUserQuestion:
questions:
- question: "Select loop configuration:"
header: "Mode"
multiSelect: false
options:
- label: "POC Mode (Recommended)"
description: "5-10 min, 10-20 iterations - ideal for testing"
- label: "Production Mode"
description: "4-9 hours, 50-99 iterations - standard work"
Step 2: Work Selection (unless --quick)
Present ALL work categories neutrally. Let user select which ones they want to configure:
questions:
- question: "Which work areas do you want to configure? (Select all relevant)"
header: "Work Areas"
multiSelect: true
options:
- label: "Bug fixes"
description: "Fix errors, exceptions, crashes"
- label: "Feature completion"
description: "Finish incomplete features"
- label: "Performance"
description: "Speed, memory, efficiency"
- label: "Error handling"
description: "Edge cases, validation"
- label: "Documentation"
description: "README, docstrings, comments"
- label: "Dependency upgrades"
description: "Version bumps, lock files"
- label: "Code formatting"
description: "Linting, style changes"
- label: "Test expansion"
description: "Adding tests for existing code"
- label: "Refactoring"
description: "Code restructuring, DRY improvements"
- label: "Security"
description: "Vulnerability fixes, auth improvements"
Step 3: Classify Each Selection
For EACH item selected in Step 2, ask whether to Encourage or Forbid:
questions:
- question: "For '[ITEM]': Should RU prioritize or avoid this?"
header: "Classify"
multiSelect: false
options:
- label: "Encourage (Prioritize)"
description: "RU should actively seek this type of work"
- label: "Forbid (Avoid)"
description: "RU should not work on this unless necessary"
- label: "Skip (No preference)"
description: "Leave neutral, neither prioritize nor avoid"
Repeat for each selected item.
Step 4: Conflict Detection
After classification, check for conflicts (same item in both encouraged AND forbidden).
If conflicts detected:
questions:
- question: "[ITEM] is marked both Encouraged AND Forbidden. Which takes priority?"
header: "Conflict"
multiSelect: false
options:
- label: "Encourage wins"
description: "Prioritize this work, remove from forbidden"
- label: "Forbid wins"
description: "Avoid this work, remove from encouraged"
- label: "Remove both"
description: "Leave neutral, no guidance for this item"
Only proceed when all conflicts are resolved.
Step 5: Execution
After collecting and validating guidance selections, save them and start the loop:
/usr/bin/env bash << 'RU_START_SCRIPT'
PROJECT_DIR="${CLAUDE_PROJECT_DIR:-$(pwd)}"
echo "========================================"
echo " RU - Autonomous Loop Mode"
echo "========================================"
echo ""
# Parse arguments
ARGS="${ARGUMENTS:-}"
POC_MODE=false
PRODUCTION_MODE=false
if [[ "$ARGS" == *"--poc"* ]]; then
POC_MODE=true
fi
if [[ "$ARGS" == *"--production"* ]]; then
PRODUCTION_MODE=true
fi
# Set limits based on mode
if $POC_MODE; then
MIN_HOURS=0.083
MAX_HOURS=0.167
MIN_ITERS=10
MAX_ITERS=20
MODE_NAME="POC"
else
MIN_HOURS=4
MAX_HOURS=9
MIN_ITERS=50
MAX_ITERS=99
MODE_NAME="PRODUCTION"
fi
# Check for uv
UV_CMD=""
for loc in "$HOME/.local/share/mise/shims/uv" "$HOME/.local/bin/uv" "/opt/homebrew/bin/uv" "uv"; do
if command -v "$loc" &>/dev/null || [[ -x "$loc" ]]; then
UV_CMD="$loc"
break
fi
done
if [[ -z "$UV_CMD" ]]; then
echo "ERROR: uv is required. Install with: curl -LsSf https://astral.sh/uv/install.sh | sh"
exit 1
fi
# Create state directory
mkdir -p "$PROJECT_DIR/.claude"
# Check current state
STATE_FILE="$PROJECT_DIR/.claude/ru-state.json"
if [[ -f "$STATE_FILE" ]]; then
CURRENT_STATE=$(jq -r '.state // "stopped"' "$STATE_FILE" 2>/dev/null || echo "stopped")
if [[ "$CURRENT_STATE" != "stopped" ]]; then
echo "ERROR: Loop already in state '$CURRENT_STATE'"
echo " Run /ru:stop first"
exit 1
fi
fi
# Transition to RUNNING state
echo '{"state": "running"}' > "$STATE_FILE"
date +%s > "$PROJECT_DIR/.claude/ru-start-timestamp"
# Create/update config (preserve guidance if exists)
CONFIG_FILE="$PROJECT_DIR/.claude/ru-config.json"
if [[ -f "$CONFIG_FILE" ]]; then
# Update existing config, preserve guidance
jq --arg state "running" \
--argjson min_hours "$MIN_HOURS" \
--argjson max_hours "$MAX_HOURS" \
--argjson min_iterations "$MIN_ITERS" \
--argjson max_iterations "$MAX_ITERS" \
'.state = $state | .loop_limits = {
min_hours: $min_hours,
max_hours: $max_hours,
min_iterations: $min_iterations,
max_iterations: $max_iterations
}' "$CONFIG_FILE" > "$CONFIG_FILE.tmp" && mv "$CONFIG_FILE.tmp" "$CONFIG_FILE"
else
# Create new config
jq -n \
--arg state "running" \
--argjson min_hours "$MIN_HOURS" \
--argjson max_hours "$MAX_HOURS" \
--argjson min_iterations "$MIN_ITERS" \
--argjson max_iterations "$MAX_ITERS" \
'{
version: "1.0.0",
state: $state,
loop_limits: {
min_hours: $min_hours,
max_hours: $max_hours,
min_iterations: $min_iterations,
max_iterations: $max_iterations
},
guidance: {
forbidden: [],
encouraged: []
}
}' > "$CONFIG_FILE"
fi
echo "Mode: $MODE_NAME"
echo "Time: ${MIN_HOURS}h min / ${MAX_HOURS}h max"
echo "Iterations: ${MIN_ITERS} min / ${MAX_ITERS} max"
echo ""
# Show guidance summary
FORBIDDEN_COUNT=$(jq -r '.guidance.forbidden // [] | length' "$CONFIG_FILE" 2>/dev/null || echo "0")
ENCOURAGED_COUNT=$(jq -r '.guidance.encouraged // [] | length' "$CONFIG_FILE" 2>/dev/null || echo "0")
echo "Guidance:"
echo " Forbidden: $FORBIDDEN_COUNT items"
echo " Encouraged: $ENCOURAGED_COUNT items"
echo ""
echo "Project: $PROJECT_DIR"
echo "State: RUNNING"
echo ""
echo "Commands:"
echo " /ru:stop - Stop the loop"
echo " /ru:status - Check status"
echo " /ru:forbid - Add forbidden item"
echo " /ru:encourage - Add encouraged item"
RU_START_SCRIPT
Guidance Helper
After AskUserQuestion selections, use this to add items:
/usr/bin/env bash << 'ADD_ITEMS'
PROJECT_DIR="${CLAUDE_PROJECT_DIR:-$(pwd)}"
CONFIG_FILE="$PROJECT_DIR/.claude/ru-config.json"
TYPE="${1}" # "forbidden" or "encouraged"
ITEM="${2}" # Item to add
if [[ -z "$TYPE" || -z "$ITEM" ]]; then
exit 0
fi
# Ensure file exists
mkdir -p "$PROJECT_DIR/.claude"
if [[ ! -f "$CONFIG_FILE" ]]; then
echo '{"guidance": {"forbidden": [], "encouraged": []}}' > "$CONFIG_FILE"
fi
# Ensure guidance structure exists
if ! jq -e '.guidance' "$CONFIG_FILE" >/dev/null 2>&1; then
jq '. + {guidance: {forbidden: [], encouraged: []}}' "$CONFIG_FILE" > "$CONFIG_FILE.tmp" && mv "$CONFIG_FILE.tmp" "$CONFIG_FILE"
fi
# Add item
TIMESTAMP=$(date -u +%Y-%m-%dT%H:%M:%SZ)
jq --arg item "$ITEM" --arg ts "$TIMESTAMP" \
".guidance.${TYPE} = ((.guidance.${TYPE} // []) + [\$item] | unique) | .guidance.timestamp = \$ts" \
"$CONFIG_FILE" > "$CONFIG_FILE.tmp" && mv "$CONFIG_FILE.tmp" "$CONFIG_FILE"
ADD_ITEMS
After Starting
The loop continues until:
- Maximum time/iterations reached
- You run
/ru:stop - Kill switch:
touch .claude/STOP_LOOP
Use /ru:wizard for detailed guidance setup anytime.
Flow Summary
┌─────────────────────────────────────────────────────────────┐
│ Step 1: Mode Selection │
│ [POC Mode] / [Production Mode] │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ Step 2: Work Selection (neutral, multiSelect) │
│ [ ] Bug fixes [ ] Features [ ] Performance │
│ [ ] Docs [ ] Deps [ ] Formatting │
│ [ ] Tests [ ] Refactoring [ ] Security │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ Step 3: Classify Each (for each selected item) │
│ "For 'Bug fixes': Encourage / Forbid / Skip?" │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ Step 4: Conflict Resolution (if any) │
│ "'X' is both Encouraged AND Forbidden. Which wins?" │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ Step 5: Save config + Start loop │
└─────────────────────────────────────────────────────────────┘
Examples
# Start POC mode (quick test)
/ru:start --poc
# Start production mode (longer session)
/ru:start --production
# Start with existing config, skip setup
/ru:start --quick
Troubleshooting
| Issue | Cause | Solution |
|---|---|---|
| uv not found | uv not installed | curl -LsSf https://astral.sh/uv/install.sh | sh |
| Loop already in X | Previous loop not stopped | Run /ru:stop first |
| jq error | jq not installed | brew install jq |
| Config preserved | Used --quick | Delete .claude/ru-config.json to reset |
Weekly Installs
23
Repository
terrylica/cc-skillsGitHub Stars
19
First Seen
Feb 27, 2026
Security Audits
Installed on
cline23
github-copilot23
codex23
kimi-cli23
gemini-cli23
cursor23