skills/claude-fable-review/SKILL.md
Use only when the user explicitly asks for Fable/Claude review. Runs claude -p in streaming review mode with the configured Fable model, constrains tools for read-only review plus currentness checks, handles resume, and defines review timeout semantics.
npx skillsauth add lilpacy/dotfiles claude-fable-reviewInstall 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.
codex-exec-review unless the user explicitly selects Fable.claude -p with Fable to review the plan if the user explicitly asked for Fable review.claude -p with Fable to review the committed change if the user explicitly asked for Fable review.env claude -p to avoid shell aliases such as claude --dangerously-skip-permissions.CLAUDE_REVIEW_MODEL=global.anthropic.claude-fable-5. Do not read the review model from the normal runtime model setting.--model "$CLAUDE_REVIEW_MODEL" explicitly. Do not rely on the root "model" setting.CLAUDE_REVIEW_EFFORT=${CLAUDE_REVIEW_EFFORT:-medium} and pass --effort "$CLAUDE_REVIEW_EFFORT"./Users/lilpacy/dotfiles/claude/settings.json as the runtime settings file. Its normal permissions are broader than review mode.--safe-mode and a minimal review settings JSON. Do not use --bare for default reviews because Claude Code 2.1.197 exposes only Read in that mode, even when WebFetch is requested.--permission-mode default. Do not use --permission-mode plan for default reviews because it suppresses WebFetch, Grep, Glob, and Bash in the measured review setup.--output-format stream-json --include-partial-messages --verbose so progress remains visible while the final result is still machine-checkable.Bash broadly and control risk with a denylist plus prompt constraints. Fable review quality depends on being able to run unknown local CLI introspection such as --help, --version, --default-config, status, and list commands without adding one-off allowlist entries.--help output; rely on the review prompt to forbid running tests/builds.WebFetch by default for currentness checks against public primary sources. Request WebSearch and Fetch too, but do not require them in environments where Claude Code does not expose those tools.claude -p, codex exec, or mcp__ais call.Set PLAN_OR_DIFF_REF to the full path, commit ref, or concise description being reviewed.
set -o pipefail
CLAUDE_MAIN_SETTINGS=/Users/lilpacy/dotfiles/claude/settings.json
CLAUDE_REVIEW_MODEL=global.anthropic.claude-fable-5
CLAUDE_REVIEW_EFFORT=${CLAUDE_REVIEW_EFFORT:-medium}
REVIEW_LOG=${REVIEW_LOG:-review-result.jsonl}
CLAUDE_REVIEW_SETTINGS_JSON=$(jq --arg review_model "$CLAUDE_REVIEW_MODEL" -c '{
env: {
CLAUDE_CODE_USE_BEDROCK: .env.CLAUDE_CODE_USE_BEDROCK,
AWS_REGION: .env.AWS_REGION,
ANTHROPIC_MODEL: $review_model,
CLAUDE_CODE_MAX_OUTPUT_TOKENS: .env.CLAUDE_CODE_MAX_OUTPUT_TOKENS,
MAX_THINKING_TOKENS: .env.MAX_THINKING_TOKENS
},
permissions: {
allow: [
"Read(~/**)", "Grep", "Glob", "WebSearch", "WebFetch", "Fetch",
"Bash"
],
deny: [
"Edit(*)", "Write(*)",
"Bash(codex exec:*)", "Bash(claude:*)",
"Bash(git reset:*)", "Bash(git checkout:*)",
"Bash(git clean:*)", "Bash(git push:*)",
"Bash(rm:*)", "Bash(rmdir:*)", "Bash(mv:*)",
"Bash(cp:*)", "Bash(mkdir:*)", "Bash(touch:*)",
"Bash(chmod:*)", "Bash(chown:*)", "Bash(sudo:*)",
"Bash(npx:*)", "Bash(pnpx:*)", "Bash(bunx:*)",
"Bash(brew install:*)", "Bash(brew upgrade:*)",
"Bash(brew uninstall:*)", "Bash(npm install:*)",
"Bash(npm i:*)", "Bash(npm ci:*)",
"Bash(pnpm install:*)", "Bash(yarn install:*)",
"Bash(bun install:*)",
"Bash(pip install:*)", "Bash(pip3 install:*)",
"Bash(python -c:*)", "Bash(python3 -c:*)", "Bash(ruby -e:*)",
"mcp__ais__*"
]
},
sandbox: {enabled: false}
}' "$CLAUDE_MAIN_SETTINGS")
env claude -p \
--safe-mode \
--settings "$CLAUDE_REVIEW_SETTINGS_JSON" \
--model "$CLAUDE_REVIEW_MODEL" \
--effort "$CLAUDE_REVIEW_EFFORT" \
--permission-mode default \
--tools "Read,Grep,Glob,WebSearch,WebFetch,Fetch,Bash" \
--allowedTools "Read,Grep,Glob,WebSearch,WebFetch,Fetch,Bash" \
--output-format stream-json \
--include-partial-messages \
--verbose \
"このプランまたは差分をレビューして。レビュー用の許可設定では編集系ツールと危険な Bash を禁止しているので、テスト・build・format・install・生成・編集・mutation・deploy コマンドは実行せず、差分・設定・既存ログの読取を主材料に判断して。現行仕様確認に限って WebFetch を使ってよい。WebSearch/Fetch が利用可能なら使ってもよいが、利用不能なら WebFetch 可能な public primary sources を直接読むこと。公式 docs・release notes・standards・package registry・source repository など public primary sources を優先し、private code・secret・env 値・customer data・大きな local diff を検索クエリや取得 URL に貼らないで。不足する実行結果があれば質問して。別の claude -p、codex exec、mcp__ais、外部レビューコマンドは絶対に起動しないで。瑣末な点へのクソリプはしないで。致命的な点だけ指摘して。回答内容が現時点で out of date / deprecated になっていないかにも気をつけて。Web を使った場合は参照 URL と判断への使い方を短く添えて: $PLAN_OR_DIFF_REF" \
| tee "$REVIEW_LOG"
Capture the session id from the final stream result:
jq -r 'select(.type == "result") | .session_id' "$REVIEW_LOG" | tail -n 1
Use the same session for updated plan reviews:
set -o pipefail
REVIEW_LOG=${REVIEW_LOG:-review-result.jsonl}
env claude -p \
--safe-mode \
--settings "$CLAUDE_REVIEW_SETTINGS_JSON" \
--model "$CLAUDE_REVIEW_MODEL" \
--effort "$CLAUDE_REVIEW_EFFORT" \
--permission-mode default \
--tools "Read,Grep,Glob,WebSearch,WebFetch,Fetch,Bash" \
--allowedTools "Read,Grep,Glob,WebSearch,WebFetch,Fetch,Bash" \
--output-format stream-json \
--include-partial-messages \
--verbose \
--resume "$SESSION_ID" \
"前回の指摘を反映してプランまたは差分を更新した。もう一度レビューして。前回と同じ制約で、テスト・build・format・install・生成・編集・mutation・deploy・外部レビューコマンドは実行しないで。現行仕様確認に限って public primary sources への WebFetch は使ってよい。WebSearch/Fetch が利用可能なら使ってもよい。致命的な点だけ指摘して。新しく追加された問題がなければ、その旨を明示して: $PLAN_OR_DIFF_REF" \
| tee "$REVIEW_LOG"
For non-interactive automation where progress visibility is irrelevant, --output-format json may be used instead of stream-json.
--permission-mode default with broad Bash and a denylist is not the same security boundary as codex exec --sandbox read-only.type == "result" stream event is returned and the command used the explicit minimal settings above.--safe-mode, or with the full normal claude/settings.json, treat it as review incomplete.init event does not list WebFetch, treat the review command as misconfigured and rerun with the default --safe-mode --permission-mode default template. If WebSearch or Fetch are absent but WebFetch is present, the review can proceed.permission_denials, treat that denial as evidence the permission gate worked, not as a review failure.type == "result" stream event before reporting success:
review started but final result not yet returned is not review complete.--resume "$SESSION_ID" or rerun.review incomplete and ask the user how to proceed.--safe-mode, --settings <json>, explicit Fable --model, default --effort medium, --output-format stream-json --include-partial-messages --verbose, and --resume were verified with Claude Code 2.1.197.type == "result" and includes .session_id and modelUsage."global.anthropic.claude-fable-5".--bare and --permission-mode plan exposed only Read; --safe-mode --permission-mode default exposed Bash, Glob, Grep, Read, and WebFetch.Bash(claude -p hi) returned a permission denial instead of executing.python3 /Users/lilpacy/dotfiles/codex/skills/.system/skill-creator/scripts/quick_validate.py /Users/lilpacy/dotfiles/skills/claude-fable-review
data-ai
ユーザー向けの回答、要件整理、説明、計画、レビュー、仕様、要約を作成するときに使う。自然言語だけでは条件、状態、多重度、期間、時刻、境界値、制約、推論、計算が曖昧になりうる場合、表、デシジョンテーブル、Mermaid 図、計算式、境界値表で一意化する。推測で補った図表要素は必ず明示する。
tools
Cross-agent messaging via SQLite. Send messages between Claude Code, Codex, Gemini CLI, and other agents. No daemon, no network, no dependencies beyond bash and sqlite3.
development
Anti-AI-slop design skill for greenfield pages, audits, redesigns, and design extraction from URLs or screenshots. Use when the user asks to build a new app or landing page, wants to redesign something, invokes Hallmark by name, or uses audit/redesign/study.
development
Reviews animation and motion code against a high craft bar derived from Emil Kowalski's design engineering philosophy. Default to flagging; approval is earned.