About wizard
An interactive RU configuration skill that guides users through selecting work areas, marking them as encouraged or forbidden, and resolving conflicts. It saves the resulting guidance in project configuration.
Key features
- 01Select work areas
- 02Classify items as encouraged or forbidden
- 03Add custom work areas
- 04Resolve conflicting guidance
- 05Clear existing guidance
Use cases
- 01Set priorities for an RU work loop
- 02Exclude selected work areas
- 03Add custom guidance and resolve overlaps
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ terrylica/ cc-skills --skill wizardAfter installing, type/wizardin Claude Code to confirm it loaded.
Bundled filesreferences/evolution-log.md
Details
From the project READMERU: Wizard
Interactive configuration wizard using AskUserQuestion. Presents work categories neutrally, lets user classify each as Encourage/Forbid, then resolves conflicts.
Self-Evolving Skill: This skill improves through use. If instructions are wrong, parameters drifted, or a workaround was needed — fix this file immediately, don't defer. Only update for real, reproducible issues.
Arguments
--clear: Clear existing guidance before starting (fresh config)
Step 1: Work Area Selection
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: "Security"
description: "Vulnerability fixes, auth improvements"
- 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: "API changes"
description: "Endpoints, contracts, interfaces"
- label: "Database changes"
description: "Schema, migrations, queries"
Step 2: Classify Each Selection
For EACH item selected in Step 1, 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. Track which items are classified as:
- Encouraged: Add to
guidance.encouraged[] - Forbidden: Add to
guidance.forbidden[] - Skipped: Do not add to either list
Step 3: Custom Items
Ask if user wants to add custom items not in the predefined list:
questions:
- question: "Do you want to add custom work areas?"
header: "Custom"
multiSelect: false
options:
- label: "No, use selected items only"
description: "Proceed with the items already configured"
- label: "Yes, add custom items"
description: "I'll type specific topics to configure"
If user selects "Yes", prompt for text input, then ask for each custom item:
- "Encourage or Forbid '[custom item]'?"
Step 4: Conflict Detection
After all classification, check for conflicts (same item in both encouraged AND forbidden lists).
Conflicts can occur if:
- User accidentally selected same item in both categories
- Custom item duplicates a predefined category
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"
Repeat for each conflict until all are resolved.
Step 5: Save Configuration
After collecting and validating all selections, run this script to save:
/usr/bin/env bash << 'RU_CONFIGURE_SAVE'
PROJECT_DIR="${CLAUDE_PROJECT_DIR:-$(pwd)}"
CONFIG_FILE="$PROJECT_DIR/.claude/ru-config.json"
# Ensure config file exists with guidance structure
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
echo "Configuration saved to: $CONFIG_FILE"
echo ""
echo "Current guidance:"
echo " Forbidden: $(jq -r '.guidance.forbidden | length' "$CONFIG_FILE") items"
echo " Encouraged: $(jq -r '.guidance.encouraged | length' "$CONFIG_FILE") items"
echo ""
jq -r '.guidance.forbidden[]' "$CONFIG_FILE" 2>/dev/null | while read item; do
echo " ✗ FORBID: $item"
done
jq -r '.guidance.encouraged[]' "$CONFIG_FILE" 2>/dev/null | while read item; do
echo " ✓ ENCOURAGE: $item"
done
echo ""
echo "To view: /ru:settings show"
echo "To modify: /ru:forbid or /ru:encourage"
RU_CONFIGURE_SAVE
Flow Summary
┌─────────────────────────────────────────────────────────────┐
│ Step 1: Work Area Selection (neutral, multiSelect) │
│ [ ] Bug fixes [ ] Features [ ] Performance │
│ [ ] Docs [ ] Deps [ ] Formatting │
│ [ ] Tests [ ] Security [ ] Refactoring │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ Step 2: Classify Each (for each selected item) │
│ "For 'Bug fixes': Encourage / Forbid / Skip?" │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ Step 3: Custom Items (optional) │
│ "Add custom work areas?" → If yes, classify each │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ Step 4: Conflict Resolution (if any) │
│ "'X' is both Encouraged AND Forbidden. Which wins?" │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ Step 5: Save config + Display summary │
└─────────────────────────────────────────────────────────────┘
Adding Items Helper
Use this bash snippet to add items from AskUserQuestion selections:
/usr/bin/env bash << 'ADD_GUIDANCE_ITEM'
PROJECT_DIR="${CLAUDE_PROJECT_DIR:-$(pwd)}"
CONFIG_FILE="$PROJECT_DIR/.claude/ru-config.json"
TYPE="${1:-forbidden}" # "forbidden" or "encouraged"
ITEM="${2:-}" # Item to add
if [[ -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
# Add item with timestamp
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_GUIDANCE_ITEM
Clear Guidance Helper
Use with --clear argument to reset before wizard:
/usr/bin/env bash << 'CLEAR_GUIDANCE'
PROJECT_DIR="${CLAUDE_PROJECT_DIR:-$(pwd)}"
CONFIG_FILE="$PROJECT_DIR/.claude/ru-config.json"
if [[ -f "$CONFIG_FILE" ]]; then
TIMESTAMP=$(date -u +%Y-%m-%dT%H:%M:%SZ)
jq --arg ts "$TIMESTAMP" \
'.guidance = {forbidden: [], encouraged: [], timestamp: $ts}' \
"$CONFIG_FILE" > "$CONFIG_FILE.tmp" && mv "$CONFIG_FILE.tmp" "$CONFIG_FILE"
echo "Guidance cleared."
fi
CLEAR_GUIDANCE
Troubleshooting
| Issue | Cause | Solution |
|---|---|---|
| jq error | Config file malformed | Run /ru:settings reset to recreate |
| No options appearing | AskUserQuestion issue | Check that multiSelect is set |
| Config not saved | .claude dir missing | Create with mkdir -p .claude |
| Conflicts not shown | Same item different case | Use exact same text for items |
| Custom input empty | Skipped text prompt | Re-run wizard and enter items |
Post-Execution Reflection
After this skill completes, reflect before closing the task:
- Locate yourself. — Find this SKILL.md's canonical path before editing.
- What failed? — Fix the instruction that caused it.
- What worked better than expected? — Promote to recommended practice.
- What drifted? — Fix any script, reference, or dependency that no longer matches reality.
- Log it. — Evolution-log entry with trigger, fix, and evidence.
Do NOT defer. The next invocation inherits whatever you leave behind.