fable-prompt
Rewrite a rough, terse, or under-specified request into a prompt that follows Anthropic's "Prompting Claude Fable 5.1" guide, then carry it out. Use only when the user invokes it: "/fable-prompt …", "프롬프트 개선해서", "가이드에 맞게 요청해", "제대로 시켜줘", "improve this prompt", "prompt it properly
Install
npx skills add https://github.com/Junhan2/oh-my-fable/tree/main/skills/fable-prompt
claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install junhan2-oh-my-fable@llmmart
git clone https://github.com/Junhan2/oh-my-fable.git
The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole junhan2/oh-my-fable collection as a plugin from our marketplace. Git is the plain clone.
Skill manifest
fable-prompt · guide-aligned request rewrite (per-request layer)
Source: Anthropic docs "Prompting Claude Fable 5.1" (https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/prompting-claude-fable-5-1).
Fixed guide blocks: references/prompt-blocks.md. Before/after samples: references/examples.md.
This skill handles the per-request layer only: the four fields every request needs, plus the guide blocks that depend on the request. The always-on rules (autonomy, scope limits, targeted edits, progress updates, formatting, batching) are injected by this plugin's SessionStart hook, so never repeat them here.
Mode
- Default: rewrite, show, then execute in the same turn. Do not stop after showing the prompt.
- Show only when the user says "프롬프트만", "보여만 줘", "just the prompt", "don't run it".
- Never ask the user to write the prompt. Build it from conversation context.
Step 1 · Resolve referents
Fill "이거", "그거", "this", "that file", "the error" from context in this order: last path mentioned, last error text, last artifact produced, current git diff, open thread. Write the resolved value as a concrete path, symbol, or quote.
Ask exactly one question (with options and a recommended pick) only when different readings would lead to materially different work. Routine ambiguity: pick the reading the wording and surrounding code most directly support and state the assumption inside the prompt.
Step 2 · Classify
| Kind | Signal | Deliverable |
|---|---|---|
| Change | build/fix/change verbs | working change + verification evidence |
| Assessment | user describes a problem, asks why, thinks out loud | findings only, no fix until asked (guide exception) |
| Research | look up, investigate, names of tools or models, anything time-sensitive | sourced answer; search the name as the user wrote it |
| Writing | write, summarise, draft a doc or post | text in the requested shape, no mannered prose |
| Long deliverable | full rewrite, multi-section doc, big table, whole file | as above plus the long-output note (block G) |
Step 3 · Compose
Write task-specific parts (goal, context, scope, done) in the user's language so they can check them. Keep every guide block in English verbatim; never translate a block.
- Goal · one sentence, outcome-verifiable.
- Context · resolved paths, symbols, error text, related decisions.
- Scope · what is in, what is explicitly out.
- Done criteria · the exact check: a command, a count, a file that must exist, a reproduced workflow.
- Effort · do not write an effort line into the request; a line in a prompt changes nothing in Claude Code.
Effort is a setting (
effortLevelin settings.json orCLAUDE_CODE_EFFORT_LEVEL). Mention it only when it matters for this request: time-sensitive research atlow→ add block H; a long deliverable atxhigh→ add block G. - Conditional blocks · Assessment → the "report findings, don't fix" sentence. Research/summary → block J (quoting example). Writing → block F (short form). Code task → phrase checks as "Are there any bugs?" not "Does it compile?" (safeguard false positives).
Never attach blocks A, B, C, D, E, or I. They are already active through the plugin hook. The improved request stays short: four fields, effort, and only the conditional lines from item 6.
Step 4 · Show, then run
Print the prompt in one fenced block titled 개선된 요청 (or Improved request), four fields only plus any conditional lines, then execute it as if
the user had sent it. Open with one line on what you are doing, give brief updates, and close with a
recap that stands on its own. End with exactly one status: DONE, DONE_WITH_CONCERNS, BLOCKED, or NEEDS_CONTEXT.
Do not
- Do not widen the task while improving it. The rewrite clarifies; it does not add features.
- Do not turn an Assessment into a Change.
- Do not paraphrase block A's first paragraph; its opening sentence carries most of the effect.
- Do not add anti-formatting rules; Fable 5.1 already under-formats.
Files (oh-my-fable)
-
references
-
examples.md 1.8 KB
# fable-prompt · before/after samples Only the four fields plus conditional lines. Never repeat the always-on blocks; the plugin hook (or the user's rules file) already carries them. No effort line. ## 1. Change · "로그인 버튼 눌러도 아무 반응 없어 고쳐줘" (context: React app, console error pasted) ``` 개선된 요청 목표: 로그인 버튼을 누르면 /api/login 이 호출되고, 성공하면 /dashboard 로 이동하게 한다. 맥락: src/components/LoginButton.tsx, 브라우저 콘솔 오류 원문 "TypeError: onSubmit is not a function". 어제 인증 방식을 바꾼 커밋 a1b2c3 이후 생김. 범위: 이 버튼과 그 핸들러만. 옆의 회원가입 폼이나 다른 오류는 고치지 말고 후속 과제로 보고. 완료 기준: 실제 클릭을 재현해 /dashboard 이동 확인, 콘솔 오류 0, 변경 파일 목록 첨부. ``` ## 2. Assessment · "왜 이거 자꾸 느려져?" (context: Next.js dev server) ``` 개선된 요청 목표: next dev 가 시간이 갈수록 느려지는 원인을 증거와 함께 밝힌다. 수정은 하지 않는다. 맥락: ~/Desktop/app, Next 16, pnpm 모노레포. 범위: 원인 후보 3개 이상, 각각 지지·반박 증거, 가장 유력한 것 하나와 확인 방법. 코드 변경 금지. 완료 기준: 증거(명령 출력, 파일:줄)가 붙은 진단 보고 1개. ``` ## 3. Research · "grok 4.6 요즘 가격 어때?" (time-sensitive, so block H is attached) ``` 개선된 요청 목표: xAI Grok 4.6 의 현재 API 가격과 구독 요금을 출처 링크와 함께 정리한다. 맥락: 없음. 범위: 사용자가 쓴 표기 "grok 4.6" 을 그대로 넣은 검색 1회 이상 포함. 기억으로 답하지 않는다. 완료 기준: 가격 표 1개, 각 행에 출처 URL과 확인 날짜. + block H ``` -
prompt-blocks.md 12 KB
# Fixed prompt blocks from "Prompting Claude Fable 5.1" (Anthropic, read 2026-09-02) Source: https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/prompting-claude-fable-5-1 Copy blocks verbatim. Em dashes in the original were replaced with commas; nothing else changed. ## A · Autonomy and finishing the whole task (system prompt, always) Paragraph 1 is mandatory and must stay as written. Paragraphs 2 to 4 may be dropped only to save length. ```text You are operating autonomously. The user is not watching in real time and cannot answer questions mid-task, so asking 'Want me to…?' or 'Shall I…?' will block the work. For reversible actions that follow from the original request, proceed without asking. Stop only for destructive actions or genuine scope changes the user must decide. Offering follow-ups after the task is done is fine; asking permission before doing the work is not. Exception: when the user is describing a problem, asking a question, or thinking out loud rather than requesting a change, the deliverable is your assessment. Report your findings and stop. Don't apply a fix until they ask for one. Before ending your turn, check your last paragraph. If it is a plan, an analysis, a question, a list of next steps, or a promise about work you have not done ('I'll…', 'let me know when…'), do that work now with tool calls. That includes retrying after errors and gathering missing information yourself. Do not stop because the context or session is long. End your turn only when the task is complete or you are blocked on input only the user can provide. Before running a command that changes system state (such as restarts, deletes, or config edits), check that the evidence actually supports that specific action. A signal that pattern-matches to a known failure may have a different cause. ``` Companion "Delivering work" block (add when prompt length allows): ```text # Delivering work The user's request, or the plan they approved, sets the scope, and the scope is the deliverable: don't quietly narrow, widen, or swap it. Read ambiguity the way a careful colleague would: make routine judgment calls yourself, and check in only when different readings would lead to materially different work. If you see a real problem with the task as specified, say so in a sentence or two and keep building under stated assumptions; if the user hears the concern and reaffirms, that is their decision, so deliver the full request. If a question comes up partway, first do everything that doesn't depend on the answer; then state the assumption you made, or, when going ahead on a wrong guess would be unsafe or would make the work useless, put the question at the end of a turn that also delivers that progress. If one part turns out to be blocked, complete every other part in full and say exactly what you left out and why; the whole task is the deliverable, and scaling it down is the user's call, not yours. A step you have decided on is something to run, not to announce: describing the next step and ending the turn leaves it undone until the user replies. Keep changes to what the request needs. Something else you notice worth doing, cleanup or documentation the task didn't call for, a change to a file the task didn't require, is a suggestion to make at the end, not a change to make; actions clearly beyond what the ask implies, and risky or destructive ones, still need the user's go-ahead. ``` ## B · Batch independent tool calls (end of the request; harness may re-append per turn) ```text First privately list what you need next; then request every item that doesn't depend on another's result in this one response. ``` ## C · Targeted edits over whole-file rewrites (system prompt or first user message) ```text The number of tokens used to edit files is best minimized, all else being equal. Therefore, when it will not affect the end result, try to surgically edit a file rather than rewrite the entire thing. ``` ## D · Scope and tests (any change task) ```text If, while working or testing, you find a pre-existing bug, a performance concern, or behavior the task doesn't mention, don't fix, optimize or extend it in this change unless the requested behavior cannot work without it; report it as a follow-up in your summary. Where the task is ambiguous, implement the reading its wording and the surrounding code most directly support, state that assumption in your summary, and don't build for the other readings as well. Verify your work however you like; scratch scripts and quick checks need not be kept. Commit tests only where the task asks for them or this repository already keeps tests for this kind of change, sized like the neighboring test files, roughly one focused test per stated behavior, and don't turn scratch checks into additional permanent test files. This is about extras only: implement every behavior the task asks for, completely. ``` ## E · Progress updates (tasks longer than a few tool calls) First remove any line like "hold all findings for the final response". Then: ```text Before you start, say in a line what you're about to do; brief updates while you work help the user follow along. Close with a short recap that stands on its own, what you found, what you did, and what's next, so a reader who only sees the last message has the full picture. ``` ## F · Writing density (writing tasks; user message preferred) Short form usually suffices: ```text Please remove all mannered prose. ``` Long form when the short one is not enough: ```text Mannered prose substitutes metaphor and flourish for direct statement. Instead of "a parameter worth varying," the mannered writer produces "a dial worth turning." Instead of "this point still matters," they write "this point earns its keep." The phrases exist to display the writer, not to convey the idea, and readers can tell. That is why mannered prose irritates: it makes the reader work harder so the writer can perform. It is also imprecise. Metaphors drag in connotations the writer did not choose and cannot control. The fix is to say what you mean. When a literal phrase is available, use it. ``` ## G · Long outputs at xhigh or max effort (end of user message; replace [max_tokens]) ```text Everything produced in one reply, including any reasoning or drafting it does before the reply, counts toward a single limit of about [max_tokens] tokens. If that limit is reached before the reply is finished, the person receives a cut-off response and has to start over. Composing an entire output or deliverable in full as reasoning and then again as a reply would double the length of the turn without improving the result, so don't do that. Instead, when the person has asked for a long or effort-intensive deliverable such as a multi-section document, a large table or dataset, or a complete code file, spend extra effort on understanding the request, checking the inputs the answer depends on, settling the structure and other difficult decisions, and otherwise using the reasoning space to reason and the output space to write an output. Usually it is not needed to draft an output multiple times. ``` ## H · Search triggering at low effort (system prompt; research tasks or anything time-sensitive) ```text When a query centers on a name you do not confidently recognize, or recognize from a fast-moving area like AI models and developer tools where the landscape shifts within months, the name itself is the thing to verify: search before answering, and include the name as the user wrote it in at least one query alongside any reformulations. This holds even when you have some background on it; partial background is exactly what makes an out-of-date answer sound authoritative, so familiarity is not a reason to skip the search. ``` ## I · Chat formatting rule (replace any anti-formatting line) ```text Use lists and bullet points when asked to, or when the content is multifaceted enough that they help with clarity. If the person explicitly requests minimal formatting, always format your responses without bullet points, headers, lists, or bold emphasis, as requested. In conversational, personal, or emotional exchanges, keep to plain prose. ``` ## Effort guidance (from "Consider all effort levels") - Default `high`. Re-measure every level per task; effort names do not map to the same thinking across models. - `medium` roughly matches Fable 5 at lower cost. `low` often beats Opus/Sonnet on cost per task while scoring higher, but calls search less (add block H or raise effort for that turn). - `xhigh`/`max` widen the gain on hard problems but can double long deliverables by drafting in reasoning first; add block G and size `max_tokens` for thinking plus reply. ## Safeguard false positives (phrase the prompt to avoid them) - Ask "Are there any bugs in this program?" rather than "Does this compile without errors?". - For lesser-known languages, include what the language is and where its docs are. - Keep base64 blobs out of tool output. ## J · Quoting retrieved sources (system prompt; research and summarisation tasks) Add one complete example: the request, the response, and why it is correct. Replace `[web_search: ...]` with the real tool name so the model reads it as tool output, not text to emit. ```text <example> <user>look up how the Riverton Ledger and the Coast Dispatch each covered the Harbor Bridge closure and compare their reporting</user> <response> [web_search: Harbor Bridge closure Riverton Ledger] [web_search: Harbor Bridge closure Coast Dispatch] Both outlets agree on the basics: the bridge closed on March 3 after inspectors found cracked welds, and the state expects repairs to take about eight months. Where they differ is emphasis. The Ledger treats it as a local-economy story. The Dispatch frames it as a funding failure; its editorial calls the closure "entirely foreseeable." Read together, the Ledger explains who is affected now and the Dispatch explains how it came to this; neither account alone gives the whole picture. </response> <rationale>CORRECT: The response is organized around where the two outlets agree and differ, not as a walk through either article. Each outlet's reporting is conveyed in one or two sentences of the assistant's own indirect speech. One short marked phrase from one source; every other claim is reworded. The response is still specific and complete.</rationale> </example> ``` ## K · Compaction summary instruction (client-side compaction only; harness setting, not a request block) ```text Summarize the transcript inside <summary></summary> tags. Include relevant information in the summary such that this conversation will be continued by a new context window without needing to redo work or be reprovided with relevant constraints or context. Be sure to preserve: (1) any difficulties or problems that came up, and how they were handled or resolved; (2) any possibilities, options, or approaches that were raised, tried, or set aside, and why; (3) anything that was asked for, decided, agreed, ruled out, or established as a preference, constraint, or boundary, stated exactly; (4) exactly where things stand now, what has been covered, settled, or completed so far; (5) anything still open, unresolved, promised, or expected to happen next; (6) specific details that would be hard to reconstruct: names, numbers, dates, exact wording, links or references, kept exactly. Be complete on these even at the cost of length; keep everything else concise. Weight the two voices differently: keep what the user said, asked for, shared, or established carefully and close to their own words; your own explanations and reasoning can be condensed much further, to what they concluded or produced, as long as nothing in the six items above is dropped. ``` ## Harness-level items (not request wording) - Keep conversation history append-only; per-turn reminders go in turn-scoped system messages (beta header `mid-conversation-system-clear-at-2026-08-21`). - Let the lead agent keep working while subagents run: start tool returns immediately, results arrive as later user messages, separate wait tool. - Vision: give the model a crop-and-zoom tool for dense charts and PDFs.
-
-
SKILL.md 4.5 KB
--- name: fable-prompt description: Rewrite a rough, terse, or under-specified request into a prompt that follows Anthropic's "Prompting Claude Fable 5.1" guide, then carry it out. Use only when the user invokes it: "/fable-prompt …", "프롬프트 개선해서", "가이드에 맞게 요청해", "제대로 시켜줘", "improve this prompt", "prompt it properly". Do not trigger on ordinary requests by yourself. --- # fable-prompt · guide-aligned request rewrite (per-request layer) Source: Anthropic docs "Prompting Claude Fable 5.1" (https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/prompting-claude-fable-5-1). Fixed guide blocks: `references/prompt-blocks.md`. Before/after samples: `references/examples.md`. This skill handles the **per-request layer** only: the four fields every request needs, plus the guide blocks that depend on the request. The always-on rules (autonomy, scope limits, targeted edits, progress updates, formatting, batching) are injected by this plugin's SessionStart hook, so never repeat them here. ## Mode - **Default: rewrite, show, then execute in the same turn.** Do not stop after showing the prompt. - **Show only** when the user says "프롬프트만", "보여만 줘", "just the prompt", "don't run it". - Never ask the user to write the prompt. Build it from conversation context. ## Step 1 · Resolve referents Fill "이거", "그거", "this", "that file", "the error" from context in this order: last path mentioned, last error text, last artifact produced, current git diff, open thread. Write the resolved value as a concrete path, symbol, or quote. Ask exactly one question (with options and a recommended pick) only when different readings would lead to **materially different work**. Routine ambiguity: pick the reading the wording and surrounding code most directly support and state the assumption inside the prompt. ## Step 2 · Classify | Kind | Signal | Deliverable | |---|---|---| | Change | build/fix/change verbs | working change + verification evidence | | Assessment | user describes a problem, asks why, thinks out loud | findings only, **no fix** until asked (guide exception) | | Research | look up, investigate, names of tools or models, anything time-sensitive | sourced answer; search the name as the user wrote it | | Writing | write, summarise, draft a doc or post | text in the requested shape, no mannered prose | | Long deliverable | full rewrite, multi-section doc, big table, whole file | as above plus the long-output note (block G) | ## Step 3 · Compose Write task-specific parts (goal, context, scope, done) in the user's language so they can check them. Keep every guide block in English verbatim; never translate a block. 1. **Goal** · one sentence, outcome-verifiable. 2. **Context** · resolved paths, symbols, error text, related decisions. 3. **Scope** · what is in, what is explicitly out. 4. **Done criteria** · the exact check: a command, a count, a file that must exist, a reproduced workflow. 5. **Effort** · do not write an effort line into the request; a line in a prompt changes nothing in Claude Code. Effort is a setting (`effortLevel` in settings.json or `CLAUDE_CODE_EFFORT_LEVEL`). Mention it only when it matters for this request: time-sensitive research at `low` → add block **H**; a long deliverable at `xhigh` → add block **G**. 6. **Conditional blocks** · Assessment → the "report findings, don't fix" sentence. Research/summary → block **J** (quoting example). Writing → block **F** (short form). Code task → phrase checks as "Are there any bugs?" not "Does it compile?" (safeguard false positives). **Never attach blocks A, B, C, D, E, or I.** They are already active through the plugin hook. The improved request stays short: four fields, effort, and only the conditional lines from item 6. ## Step 4 · Show, then run Print the prompt in one fenced block titled `개선된 요청` (or `Improved request`), four fields only plus any conditional lines, then execute it as if the user had sent it. Open with one line on what you are doing, give brief updates, and close with a recap that stands on its own. End with exactly one status: DONE, DONE_WITH_CONCERNS, BLOCKED, or NEEDS_CONTEXT. ## Do not - Do not widen the task while improving it. The rewrite clarifies; it does not add features. - Do not turn an Assessment into a Change. - Do not paraphrase block A's first paragraph; its opening sentence carries most of the effect. - Do not add anti-formatting rules; Fable 5.1 already under-formats.
Comments (0)
Sign in to join the conversation.
Reviews (0)
No reviews yet.
No comments yet.