wizard について
作業領域の選択、優先または禁止の分類、競合の解決を対話形式で進める RU 設定スキルです。決定したガイダンスをプロジェクト構成に保存します。
主な機能
- 01作業領域の選択
- 02項目を優先または禁止に分類
- 03カスタム作業領域の追加
- 04ガイダンスの競合解決
- 05既存ガイダンスの消去
活用シーン
- 01RU の作業ループの優先事項を設定
- 02指定した作業領域を除外
- 03カスタムガイダンスの追加と重複の解決
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ terrylica/ cc-skills --skill wizardインストール後、Claude Code で/wizardを入力して読み込まれたか確認します。
同梱ファイルreferences/evolution-log.md
詳細
RU: ウィザード
AskUserQuestion を使った対話型設定ウィザードです。作業カテゴリを中立的に提示し、ユーザーが各項目を「推奨」または「禁止」に分類した後、競合を解決します。
自己進化型スキル:このスキルは使用を通じて改善されます。指示に誤りがある場合、パラメーターがずれている場合、または回避策が必要だった場合は、先延ばしにせず、すぐにこのファイルを修正してください。実際に再現可能な問題がある場合のみ更新してください。
引数
--clear:開始前に既存のガイダンスを消去します(新規設定)
ステップ 1:作業領域の選択
すべての作業カテゴリを中立的に提示します。設定したい項目をユーザーに選択してもらいます。
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"
ステップ 2:各項目の分類
ステップ 1 で選択された各項目について、「推奨」または「禁止」のどちらにするか尋ねます。
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"
選択された項目ごとに繰り返します。各項目が次のどれに分類されたかを記録します。
- 推奨:
guidance.encouraged[]に追加します - 禁止:
guidance.forbidden[]に追加します - スキップ:どちらのリストにも追加しません
ステップ 3:カスタム項目
定義済みのリストにないカスタム項目を追加するか、ユーザーに尋ねます。
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"
ユーザーが「はい」を選択した場合は、テキスト入力を促し、各カスタム項目について次のように尋ねます。
- 「「[custom item]」を推奨しますか、禁止しますか?」
ステップ 4:競合の検出
すべての分類が完了したら、競合がないか確認します(同じ項目が推奨リストと禁止リストの両方に含まれている状態)。
競合が発生するケース:
- ユーザーが誤って同じ項目を両方のカテゴリで選択した
- カスタム項目が定義済みのカテゴリと重複している
競合が検出された場合:
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"
すべての競合が解決するまで、競合ごとに繰り返します。
ステップ 5:設定の保存
すべての選択項目を収集して検証した後、このスクリプトを実行して保存します。
/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
フローの概要
┌─────────────────────────────────────────────────────────────┐
│ 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 │
└─────────────────────────────────────────────────────────────┘
項目追加ヘルパー
AskUserQuestion の選択項目から項目を追加するには、この bash スニペットを使います。
/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 引数と併用します。
/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
トラブルシューティング
| 問題 | 原因 | 解決策 |
|---|---|---|
| jq エラー | 設定ファイルの形式が不正 | /ru:settings reset を実行して再作成します |
| 選択肢が表示されない | AskUserQuestion の問題 | multiSelect が設定されているか確認します |
| 設定が保存されない | .claude ディレクトリがない | mkdir -p .claude で作成します |
| 競合が表示されない | 同じ項目の大文字・小文字が異なる | 項目に完全に同じテキストを使います |
| カスタム入力が空 | テキスト入力をスキップした | ウィザードを再実行して項目を入力します |
実行後の振り返り
このスキルの完了後、タスクを終了する前に振り返ります。
- 現在地を確認します。 — 編集する前に、この SKILL.md の正式なパスを確認します。
- 何が失敗しましたか? — 原因となった指示を修正します。
- 予想以上にうまくいったことは何ですか? — 推奨される実践方法として取り入れます。
- 何が実態とずれていましたか? — 現状と一致しなくなったスクリプト、参照情報、依存関係を修正します。
- 記録します。 — きっかけ、修正内容、根拠を含む進化ログのエントリを追加します。
先延ばしにしないでください。次回の実行では、ここに残した状態が引き継がれます。