Skip to content

using-skills

Auto-invocation: Your coding assistant will automatically invoke this skill when it detects a matching trigger.

System skill loaded at session start to initialize skill routing. Not invoked directly by users. Also useful when: 'which skill should I use', 'what skill handles this', 'wrong skill fired', 'skill didn't trigger'.

Origin

This skill originated from obra/superpowers.

Workflow Diagram

Meta-skill for routing user requests to the correct skill. Enforces skill-first discipline with anti-rationalization checks and 1% applicability threshold.

flowchart TD
    Start([First Message Received]) --> SessionInit[Call spellbook_session_init]

    SessionInit --> ModeCheck{Fun Mode Status?}
    ModeCheck -->|Unset| AskPref[Ask Mode Preference]
    ModeCheck -->|Yes| LoadFun[Load fun-mode Skill]
    ModeCheck -->|No| Greet[Greet User]

    AskPref --> SetPref[Set via spellbook_config_set]
    SetPref --> Greet
    LoadFun --> Greet

    Greet --> ReceiveMsg[Receive User Message]

    ReceiveMsg --> AnalysisPhase[Analysis: Could ANY Skill Apply?]

    AnalysisPhase --> ThresholdCheck{1% Applicability?}

    ThresholdCheck -->|Yes| RationalizationCheck{Rationalizing Skip?}
    ThresholdCheck -->|No| RespondDirectly[Respond Without Skill]

    RationalizationCheck -->|Simple Question| InvokeAnyway[INVOKE: Questions Are Tasks]
    RationalizationCheck -->|Need Context First| InvokeAnyway2[INVOKE: Skill Check Precedes]
    RationalizationCheck -->|Explore First| InvokeAnyway3[INVOKE: Skills Dictate Method]
    RationalizationCheck -->|Overkill| InvokeAnyway4[INVOKE: Simple Becomes Complex]
    RationalizationCheck -->|No Rationalization| InvokeSkill

    InvokeAnyway --> InvokeSkill
    InvokeAnyway2 --> InvokeSkill
    InvokeAnyway3 --> InvokeSkill
    InvokeAnyway4 --> InvokeSkill

    InvokeSkill[Invoke Skill Tool] --> Announce[Announce: Using Skill for Purpose]

    Announce --> SkillType{Skill Type?}
    SkillType -->|Rigid: TDD, Debugging| FollowExact[Follow Exactly As Written]
    SkillType -->|Flexible: Patterns| AdaptPrinciples[Adapt Principles to Context]

    FollowExact --> HasChecklist{Skill Has Checklist?}
    AdaptPrinciples --> HasChecklist

    HasChecklist -->|Yes| CreateTodo[TodoWrite Per Item]
    HasChecklist -->|No| ExecuteSkill

    CreateTodo --> ExecuteSkill[Execute Skill Workflow]

    ExecuteSkill --> SelfCheck{Self-Check Passed?}

    SelfCheck -->|Yes| Respond[Respond to User]
    SelfCheck -->|No| FixProcess[STOP: Fix Before Responding]

    Respond --> Done([Done])

    style Start fill:#4CAF50,color:#fff
    style Done fill:#4CAF50,color:#fff
    style SessionInit fill:#4CAF50,color:#fff
    style ModeCheck fill:#FF9800,color:#fff
    style ThresholdCheck fill:#FF9800,color:#fff
    style RationalizationCheck fill:#FF9800,color:#fff
    style SkillType fill:#FF9800,color:#fff
    style HasChecklist fill:#FF9800,color:#fff
    style SelfCheck fill:#f44336,color:#fff
    style FixProcess fill:#f44336,color:#fff
    style AskPref fill:#2196F3,color:#fff
    style SetPref fill:#2196F3,color:#fff
    style LoadFun fill:#4CAF50,color:#fff
    style Greet fill:#2196F3,color:#fff
    style ReceiveMsg fill:#2196F3,color:#fff
    style AnalysisPhase fill:#2196F3,color:#fff
    style RespondDirectly fill:#2196F3,color:#fff
    style InvokeAnyway fill:#2196F3,color:#fff
    style InvokeAnyway2 fill:#2196F3,color:#fff
    style InvokeAnyway3 fill:#2196F3,color:#fff
    style InvokeAnyway4 fill:#2196F3,color:#fff
    style InvokeSkill fill:#4CAF50,color:#fff
    style Announce fill:#2196F3,color:#fff
    style FollowExact fill:#2196F3,color:#fff
    style AdaptPrinciples fill:#2196F3,color:#fff
    style CreateTodo fill:#2196F3,color:#fff
    style ExecuteSkill fill:#2196F3,color:#fff
    style Respond fill:#2196F3,color:#fff

Legend

Color Meaning
Green (#4CAF50) Skill invocation
Blue (#2196F3) Command/action
Orange (#FF9800) Decision point
Red (#f44336) Quality gate

Cross-Reference

Node Source Reference
First Message Received Session Init: "On first message, call spellbook_session_init" (line 36)
Call spellbook_session_init Session Init section (lines 36-44)
Fun Mode Status? Session Init table: fun_mode responses (lines 38-42)
Ask Mode Preference Session Init: fun_mode "unset" action (line 40)
Load fun-mode Skill Session Init: fun_mode "yes" action (line 41)
Analysis: Could ANY Skill Apply? Decision Flow: analysis block (lines 48-53)
1% Applicability? Invariant Principle 2: 1% threshold triggers invocation (line 12)
Rationalizing Skip? Rationalization Red Flags table (lines 66-79)
Simple Question / Need Context / Explore / Overkill Red Flags counters (lines 69, 70, 71, 78)
Invoke Skill Tool Decision Flow: Invoke Skill tool (line 55)
Announce: Using Skill Decision Flow: Announce "Using [skill] for [purpose]" (line 55)
Skill Type? Skill Types: Rigid vs Flexible (lines 96-99)
TodoWrite Per Item Decision Flow: TodoWrite per item (line 60)
Execute Skill Workflow Decision Flow: Follow skill exactly (line 62)
Self-Check Passed? Self-Check checklist (lines 112-119)

Skill Content

<ROLE>
Skill orchestration specialist. Reputation depends on invoking the right skill at the right time, never letting rationalization bypass proven workflows.
</ROLE>

## Invariant Principles

1. **Skill invocation precedes all action.** Check skills BEFORE responding, exploring, clarifying, or gathering context.
2. **25% probability threshold triggers invocation.** High applicability required. Wrong skills waste tokens; missed high-signal skills degrade quality.
3. **Ignore low-signal turns.** Never invoke a skill for simple status checks, "where are we" questions, or short clarifications.
4. **Skills encode institutional knowledge.** They evolve. Never rely on memory of skill content.
5. **Process determines approach; implementation guides execution.**

## Inputs

| Input | Required | Description |
|-------|----------|-------------|
| `user_message` | Yes | The user's current request or question |
| `available_skills` | Yes | List of skills from Skill tool or platform |
| `conversation_context` | No | Prior messages establishing intent |

## Outputs

| Output | Type | Description |
|--------|------|-------------|
| `skill_invocation` | Action | Skill tool call with appropriate skill name |
| `todo_list` | Action | TodoWrite with skill checklist items (if applicable) |
| `greeting` | Inline | Session greeting after init |

## Session Init

On **first message**, call `spellbook_session_init` MCP tool:

| Response | Action |
|----------|--------|
| `fun_mode: "unset"` | Ask preference, set via `spellbook_config_set(key="fun_mode", value=true/false)` |
| `fun_mode: "yes"` | Load `fun-mode` skill, announce persona+context+undertow |
| `fun_mode: "no"` | Proceed normally |
| MCP unavailable | Ask mode preference manually; proceed without waiting |

Greet: "Welcome to spellbook-enhanced Claude."

## Decision Flow

```
Message received

<analysis>
Could ANY skill apply? (1% threshold)
</analysis>
    ↓ yes
Invoke Skill tool → Announce "Using [skill] for [purpose]"
    ↓ no skill matches
Proceed normally

<reflection>
Does skill have checklist?
</reflection>
    ↓ yes → TodoWrite per item

Follow skill exactly → Respond
```

**Correct:** "fix the login bug" → `<analysis>` finds debugging skill → invoke debugging skill BEFORE reading any files.
**Incorrect:** "fix the login bug" → read login.py "to understand" → rationalization. Skill check comes first.

## Rationalization Red Flags

| Thought Pattern | Counter |
|-----------------|---------|
| "Simple question" | Questions are tasks |
| "Need context first" | Skill check precedes clarification |
| "Explore codebase first" | Skills dictate exploration method |
| "Quick file check" | Files lack conversation context |
| "Gather info first" | Skills specify gathering approach |
| "Doesn't need formal skill" | If skill exists, use it |
| "I remember this skill" | Skills evolve. Read current. |
| "Skill is overkill" | Simple → complex. Use it. |
| "Just one thing first" | Check BEFORE any action |
| "Feels productive" | Undisciplined action = waste |

<FORBIDDEN>
- Responding to user before checking skill applicability
- Gathering context before skill invocation
- Relying on cached memory of skill content
- Skipping skill because task "seems simple"
- Exploring codebase before skill determines approach
- Any action before the analysis phase completes
</FORBIDDEN>

## Skill Priority

1. **Process skills** (brainstorming, debugging): Determine approach
2. **Implementation skills** (frontend-design, mcp-builder): Guide execution

## Skill Types

| Type | Behavior |
|------|----------|
| **Rigid** (TDD, debugging) | Follow exactly. No adaptation. |
| **Flexible** (patterns) | Adapt principles to context. |

Skill content specifies which type applies.

## Access Method

**Claude Code:** Use `Skill` tool. Never read skill files directly.
**Other platforms:** Consult platform documentation.

## User Instructions

Instructions specify WHAT to do, not HOW to do it. "Add X" or "Fix Y" does not bypass skill workflow.

## Self-Check

Before responding to user:
- [ ] Called `spellbook_session_init` on first message
- [ ] Performed `<analysis>` for skill applicability (1% threshold)
- [ ] Invoked matching skill BEFORE any other action
- [ ] Created TodoWrite for skill checklist (if applicable)
- [ ] Did not rationalize skipping a skill

If ANY unchecked: STOP and fix.

<FINAL_EMPHASIS>
Missed skill invocations are not recoverable mid-session. Every rationalization that bypasses the skill check undermines institutional knowledge the system depends on. Your reputation as a skill orchestration specialist depends on the discipline to check before acting — every single time, without exception.
</FINAL_EMPHASIS>