Fable Deslop logo

Fable Deslop

Community
dsebban
fable-deslop

Deletion-first patch minimization. Build grounded review context with the RepoPrompt CE context builder, review it with two independent Oracle lanes, then adjudicate every finding against repository and upstream evidence. Use for /skill:fable-deslop, shrinking an oversized PR, or a deletion-first review before implementation.

Overview

Publisherdsebban
Repositoryskills
Skill namefable-deslop
Stars
72
Forks
6
Bundled files
1
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 1 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by dsebban on GitHub. Read the source before you install it.

Installation

Install the Fable Deslop AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/dsebban/skills/tree/main/skills/fable-deslop
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/dsebban/skills.git /tmp/skills
mkdir -p .claude/skills
cp -r /tmp/skills/skills/fable-deslop .claude/skills/fable-deslop
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Fable Deslop in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Fable Deslop on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Fable Deslop is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Fable deslop

Turn a large patch into the smallest coherent root-cause change. One oracle_send runs every configured Oracle lane on the same published context, so the two reviews are independent by construction. You adjudicate; the lanes advise.

Brown-field rule

Correctness is necessary but does not excuse over-editing. Compare the patch with the pre-change code, not an imagined ideal implementation. Preserve existing logic, control flow, names, validation, comments, and formatting unless the requested behavior requires changing them. Deletion and simplification are not wins by themselves. Unnecessary simplification is structural divergence too.

Source: Coding Models Are Doing Too Much

Transport

Every rpce-cli invocation is its own connection and starts unbound, so chain the bind into each one:

bash
rpce-cli -e 'bind_context op=bind working_dirs="<repo>" create_if_missing=true && <command>'

An unbound call fails with "Multiple RepoPrompt windows detected" whenever more than one window is open. Use the JSON form call <tool> {"op":"…"} for any argument holding arrays, quotes, or newlines; the key=value shorthand silently drops array arguments in chained commands.

Process

1. Pin the review

Read repository instructions, git status, the exact diff, and the originating issue, PR, or investigation. Record:

  • Repository and worktree
  • Base and head refs, or the exact uncommitted comparison scope
  • Observable user impact
  • Invariant the patch must preserve, stated as observable behavior
  • Smallest plausible causal edit, naming the smallest code region expected to change
  • Changed files and added/deleted line counts

Every changed file must belong to the pinned diff. Ask before reviewing when the comparison scope is not determinable from the request and repository state.

2. Retrieve authority

Trace the changed execution path, owners, callers, existing helpers, tests, and the validation command. Use current upstream documentation and source when the patch integrates an external CLI, API, or protocol. Exercise an installed CLI when the user authorizes it and the result can distinguish competing designs.

Separate confirmed behavior, plausible mechanism, unproven compatibility, and unknowns. Every compatibility or security claim used to keep code needs a repository, upstream-source, documentation, or live-test basis.

3. Write the patch bundle

Write one file the lanes can read the diff from, because a diff is not in the file tree:

bash
git diff <base>...<head> > <repo>/tmp/fable-deslop-patch.diff

Add the originating issue or PR body, pre-change versions of changed files when the patch lacks ownership context, and live probe results as further files under <repo>/tmp/. Keep each changed line once. Exclude credentials, tokens, private user data, generated output, and unrelated files.

Sending the selection to an Oracle forwards it to that lane's provider. Explicit invocation of this skill authorizes that transmission. Otherwise ask first.

4. Publish the context

context_builder is what publishes a selection to the tab. A manage_selection call against a tab with no published selection mutates a cache the Oracle never sees: the lanes then answer confidently about nothing. Build first, name the bundle in the instructions:

bash
rpce-cli -e 'bind_context op=bind working_dirs="<repo>" && context_builder instructions="Reviewing <patch scope>. Select tmp/fable-deslop-patch.diff, every file it changes, their callers and tests."'

Then add anything it missed and confirm what is published:

bash
rpce-cli -e 'bind_context op=bind working_dirs="<repo>" && call manage_selection {"op":"add","paths":["tmp/fable-deslop-patch.diff"],"strict":true,"view":"files"}'

The selection must list the bundle and every file needed to judge a changed line before you send. An empty selection, or one missing the patch, means the publish did not land: re-run context_builder naming the missing paths. Freeze the selection here; both lanes must review the same bytes.

git diff --artifacts publishes a snapshot and normally auto-selects it, but it can report "the exact Git-data root could not be loaded" and select nothing. The written patch file is the reliable path; treat artifacts as a bonus and verify.

5. Review with every lane

Send the shared prompt from skill://fable-deslop/references/review-prompt.md once:

bash
rpce-cli -e 'bind_context op=bind working_dirs="<repo>" && call oracle_send {"message":"<shared review prompt>","new_chat":true,"mode":"review","export_response":true}'

One send fans out to the primary lane plus every additional configured Oracle, each answering independently on the identical selection. Do not feed one lane's review to another; a follow-up through any lane's chat ID re-runs all of them.

  • oracle_utils op=models lists the lane the current chat model serves. app_settings op=get key=models.additional_oracle_models tells you whether a second lane exists at all. One lane means one review: say so in the report rather than presenting a single opinion as agreement.
  • model overrides the primary lane only, only with new_chat: true, and only with a RepoPrompt model-preset ID. Preset IDs are provider-qualified and differ per installation, so read them from the installation's configured models instead of assuming one. A bare model name or an agent ID from agent_manage op=list_agents is rejected with "Model preset … was not found", and a provider without credentials fails the whole send with "Oracle lane N uses unavailable model". Override only when the user names a reviewer; the configured lanes are the default.
  • export_response: true writes every lane to one file under <repo>/prompt-exports/oracle-review-<timestamp>-<id>.md. Read it through the End of Oracle group marker; a missing marker or lane means a truncated review, not a clean one.

A provider, context, or empty-response failure is not a review. Retry once when safe, then continue with the lanes that completed and report the missing comparison.

6. Adjudicate

Build a finding ledger with one column per lane and one adjudicated column. Check every finding and disagreement against the exact source, predecessor behavior, repository conventions, the current upstream contract, and live evidence. Reinspect any changed transformation or failure boundary that only one lane noticed: agreement is not proof, and omission is not disproof. A shorter final file is not necessarily a smaller edit. Prefer the patch with the least structural divergence from the base that still fixes the root cause.

Reject a recommendation that would:

  • Remove the root-cause mechanism
  • Rewrite established code when reverting an unrelated hunk is enough
  • Weaken trusted launch, state safety, cancellation, cleanup, or fail-closed behavior
  • Replace local code with an unverified upstream shortcut
  • Introduce a broader abstraction to save local lines
  • Delete regression coverage without another test exercising the same boundary

Look for reductions every lane missed, especially data represented twice, a list joined immediately into one argument, copied error normalization, and tests for invented compatibility.

7. Report and clean up

Return:

  1. Verdict: trim then ship, keep as-is, or redesign
  2. Evidence, including upstream URLs and live probes
  3. Lane comparison and adjudicated disagreements, naming each lane's model
  4. File-by-file KEEP / DELETE/REVERT / SHRINK assessment
  5. Ranked implementation steps
  6. Tests to keep, remove, or combine
  7. Current and target patch footprint
  8. Risks and follow-ups
  9. Exact validation commands

Apply edits only when the user asks for implementation, and give the implementer the adjudicated plan, not raw lane output. Save the plan under the repository's planning convention only when the user asks. Then delete the bundle under tmp/ and the Oracle exports this run created.

Another agent must be able to execute the plan without rediscovering scope, authority, deletions, or verification.

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Fable Deslop AI skill do?

Deletion-first patch minimization. Build grounded review context with the RepoPrompt CE context builder, review it with two independent Oracle lanes, then adjudicate every finding against repository and upstream evidence. Use for /skill:fable-deslop, shrinking an oversized PR, or a deletion-first review before implementation.

Why use Fable Deslop on TypingMind?

Because you install it once and use it with any model. Fable Deslop is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Fable Deslop in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/dsebban/skills/tree/main/skills/fable-deslop. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Fable Deslop?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Fable Deslop?

As many as you like. As long as a model supports skills, you can use Fable Deslop with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Fable Deslop AI skill free?

Yes. It is published on GitHub by dsebban under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇