skills/yolo/SKILL.md
Toggle per-session YOLO mode (auto-approve permissions with configurable deny list). Use when --dangerously-skip-permissions is broken. /yolo on, /yolo off, /yolo install, /yolo uninstall, /yolo configure, /yolo status
npx skillsauth add mikefullerton/catherding yoloInstall 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.
Per-session auto-approve for all tool calls — a workaround for broken --dangerously-skip-permissions in Claude Code v2.1.x.
Each session independently opts in. Other sessions are unaffected.
Step 0 — Ensure permissions: Run bash ${CLAUDE_SKILL_DIR}/references/ensure-permissions.sh ${CLAUDE_SKILL_DIR}/SKILL.md to whitelist this skill's tools in ~/.claude/settings.json. This is silent and idempotent.
CRITICAL: The very first thing you output MUST be the version line:
YOLO v5.0.0
If $ARGUMENTS is --version, respond with exactly:
yolo v5.0.0
Then stop.
| $ARGUMENTS | Action |
|---|---|
| on | Go to Enable |
| off | Go to Disable |
| install | Go to Install |
| uninstall | Go to Uninstall |
| configure | Go to Configure |
| status or empty | Go to Status |
| --version | Print version (handled in Startup) |
| anything else | Print: "Usage: /yolo [on|off|install|uninstall|configure|status|--version]" and stop |
Enables YOLO for the current session. If hooks aren't installed yet, auto-installs them first (with warning + confirmation).
jq -e '.hooks.PermissionRequest[]?.hooks[]? | select(.command | contains("yolo-approve-all"))' ~/.claude/settings.json >/dev/null 2>&1
If this succeeds, hooks are installed — skip to Step 3.
If this fails, hooks need to be installed. Go to Step 2.
This path runs only on first use. Show the warning and confirm before installing.
Read ${CLAUDE_SKILL_DIR}/references/warning.txt FIRST (using the Read tool). Then output a single text block that starts with the version line followed by the file contents:
YOLO v5.0.0
<contents of warning.txt, verbatim, preserving all indentation>
Every line in the file is indented with 4+ spaces. Preserve this indentation exactly — it prevents markdown interpretation. Do NOT add code fences, do NOT strip indentation.
Use AskUserQuestion:
If the user selects "No, cancel", print "YOLO mode not enabled." and stop.
bash ${CLAUDE_SKILL_DIR}/references/yolo-enable.sh "${CLAUDE_SESSION_ID}" "${CLAUDE_SKILL_DIR}"
This script auto-installs if needed and creates the session marker. It outputs JSON.
Parse the JSON output:
{"status":"already_enabled"} → Print: "YOLO mode is already enabled for this session."
fresh_install is true and needs_restart is true → Print:
YOLO mode enabled. Restart this session for it to take effect.
Hooks are loaded at session start — they can't activate mid-session.
needs_restart is false → Print:
YOLO mode ON.
Also print: "Deny list: N rules. Use /yolo configure to edit." using deny_count from the output.
bash ${CLAUDE_SKILL_DIR}/references/yolo-disable.sh "${CLAUDE_SESSION_ID}"
{"status":"already_disabled"} → Print: "YOLO mode is already off."{"status":"disabled"} → Print: "YOLO mode OFF. Permission prompts restored."Installs YOLO hooks, statusline indicator, and deny defaults without enabling a session. Useful for pre-installing so CLAUDE_YOLO=1 works on first launch.
Read ${CLAUDE_SKILL_DIR}/references/warning.txt FIRST (using the Read tool). Then output a single text block that starts with the version line followed by the file contents:
YOLO v5.0.0
<contents of warning.txt, verbatim, preserving all indentation>
Every line in the file is indented with 4+ spaces. Preserve this indentation exactly — it prevents markdown interpretation. Do NOT add code fences, do NOT strip indentation.
Use AskUserQuestion:
If the user selects "No, cancel", print "YOLO hooks not installed." and stop.
bash ${CLAUDE_SKILL_DIR}/install.sh
Parse the JSON output:
{"status":"already_installed",...} → Print: "YOLO hooks are already installed. Deny list: N rules."{"status":"installed",...} → Print:
YOLO hooks installed. Restart any active sessions for hooks to take effect.
Deny list: ~/.claude-yolo-sessions/yolo-deny.json (N rules). Use /yolo configure to edit.
Use
/yolo onto enable for a session, or launch withCLAUDE_YOLO=1 claude.
Removes YOLO hooks from settings.json, deletes hook scripts, and removes the statusline indicator.
bash ${CLAUDE_SKILL_DIR}/uninstall.sh
If {"status":"not_installed"}, print "YOLO hooks are not installed. Nothing to remove." and stop.
Print: "YOLO hooks uninstalled. Removed from settings.json, hook scripts, and statusline."
Use AskUserQuestion:
If "Yes", run:
bash ${CLAUDE_SKILL_DIR}/uninstall.sh --all
Print: "Session data removed."
If "No", print: "Deny list and session data kept at ~/.claude-yolo-sessions/."
bash ${CLAUDE_SKILL_DIR}/references/yolo-status.sh "${CLAUDE_SESSION_ID}"
Parse the JSON output and print:
If active is true:
YOLO mode is ON for this session.
If auto_enabled is true, add: "(auto-enabled via CLAUDE_YOLO=1)"
Deny list (N rules): <deny_summary>
If other_sessions > 0: "N other session(s) also have YOLO active."
If active is false:
YOLO mode is OFF for this session. Use
/yolo onto enable.
If other_sessions > 0: "N other session(s) have YOLO active."
If hooks_installed: "Hooks: installed"
Else: "Hooks: not installed. Run /yolo install to set up."
Show and edit the YOLO deny list.
Read ~/.claude-yolo-sessions/yolo-deny.json. If it doesn't exist, print "No deny list found. Run /yolo install to create one." and stop.
Print the current deny rules as a numbered list:
YOLO Deny List (~/.claude-yolo-sessions/yolo-deny.json)
1. ExitPlanMode — User should review the plan before execution
2. Bash: git push --force — Force push is destructive
...
Use AskUserQuestion:
${CLAUDE_SKILL_DIR}/references/yolo-deny-defaults.jsonAfter each add/remove, write the updated config to ~/.claude-yolo-sessions/yolo-deny.json and loop back to Step 2.
After running /yolo install (or /yolo on which auto-installs), YOLO can be auto-enabled for new sessions by setting CLAUDE_YOLO=1:
CLAUDE_YOLO=1 claude
Suggested shell alias:
alias claude-yolo='CLAUDE_YOLO=1 claude'
development
Use whenever writing, modifying, refactoring, or reviewing code, or when making any design decision — including small ones. Loads the 21 cookbook principles (simplicity, yagni, fail-fast, explicit-over-implicit, separation-of-concerns, design-for-deletion, etc.) as heuristics for judgment calls about code shape, module boundaries, and what to build. Applies across all languages and project types.
development
Use when authoring or modifying install/uninstall scripts, or when creating a /setup directory for a repo that requires developer setup steps. Enforces the /setup layout, install/uninstall naming, and supporting-files location.
testing
Use when creating a new repo (git init, gh repo create, scaffolding a new project) or when a repo is missing README/LICENSE/.gitignore/.claude/CLAUDE.md. Enforces the "every repo must have" checklist and documentation layout.
development
Use when a file imports an LLM SDK (anthropic, openai, langchain, etc.), when scaffolding LLM features, or when placing Claude-specific files in a repo. Enforces the "do not assume Claude" rule, the /claude directory convention, Graphify opt-in, and the rules-vs-behavioral-instructions split.