ResearchOpen SourceFreeActiveMachine-verified· beginner · ~5 min setup

Fabric + Fable 5: Get Through Your Reading Pile

Pipe any article, video transcript, or document into a prebuilt Fabric pattern and have Fable 5 summarize, extract, or analyze it in one line.

by Shilpa Mitra· verified today· v1.0.0

Run this workflow

CI-verified, 4/4 fixtures passing.

Build this with your agent

One copy-paste hands Claude Code, Codex, or Cursor the full recipe, steps included, nothing to fetch.

Intended Use

Anyone drowning in a daily reading firehose: Fabric ships a library of prompt patterns (summarize, extract_wisdom, analyze_claims...) you pipe text into. CI verifies the deterministic spine: the chosen pattern exists and the setup names claude-fable-5 as the default model, no key. Fable actually reading and summarizing is fenced.

Not for

  • Anyone allergic to the terminal (Fabric is a CLI, though the commands are short)
  • Expecting CI to verify the summary quality; that's the fenced model step

The Stack

Tested Against

fabric-ai@latestclaude-fable-5

Side effects & data flow

Network
none, local only
Writes
./patterns/, ./fabric.env, ./checkfabric.mjs
Credentials
none required

Prerequisites

  • Homebrew (brew install fabric-ai), then fabric --setup
  • An Anthropic API key (Claude API) for claude-fable-5

Steps

  1. 1

    Install Fabric and choose Fable as the default model

    brew install fabric-ai, then fabric --setup (choose Anthropic, paste your key). Since Fable is new you may re-run fabric --setup so it picks up claude-fable-5. Then: cat article.txt | fabric --pattern summarize --model claude-fable-5.

  2. 2

    What CI checks: the pattern exists and the setup names Fable

    CI confirms the chosen pattern (summarize) exists as a pattern directory and the Fabric config names claude-fable-5 as the default model. That's the deterministic precondition, no key. The reading and summarizing are fenced.

    mkdir -p patterns/summarize
    cat > patterns/summarize/system.md <<'EOF'
    # IDENTITY and PURPOSE
    You summarize the input content into a clear, structured set of bullet points.
    EOF
    cat > fabric.env <<'EOF'
    DEFAULT_VENDOR=Anthropic
    DEFAULT_MODEL=claude-fable-5
    EOF
    cat > checkfabric.mjs <<'EOF'
    import { existsSync, readFileSync } from 'node:fs';
    let ok = true;
    function check(label, cond){ console.log(label + ': ' + (cond ? 'yes' : 'NO')); if(!cond) ok=false; }
    check('summarize pattern exists', existsSync('patterns/summarize/system.md'));
    const env = existsSync('fabric.env') ? readFileSync('fabric.env', 'utf8') : '';
    check('default model is claude-fable-5', env.includes('DEFAULT_MODEL=claude-fable-5'));
    if(!ok){ console.log('fabric config check FAILED'); process.exit(1); }
    console.log('fabric config check OK: summarize pattern + claude-fable-5');
    EOF
    node checkfabric.mjs
  3. 3

    Pipe in your reading (the model step, not checked by CI)

    Pipe any text into a pattern and Fable does the analysis. That runs the model, so CI never claims it. The badge covers the pattern and the model name, not the output.

Eval, 4 fixtures

Last passed: verified today
  • pattern-existscontainstimeout 30s · max $0

    Expected: summarize pattern exists: yes

  • names-fablecontainstimeout 30s · max $0

    Expected: default model is claude-fable-5: yes

  • check-okcontainstimeout 30s · max $0

    Expected: fabric config check OK: summarize pattern + claude-fable-5

  • clean-exitexit_codetimeout 30s · max $0

    Expected: 0

Results

~41,400 stars; turns 'I'll read this later' into a five-second command.

Did this work for you?

Our CI checks the setup runs. You tell us if the whole thing worked. Tell us straight.

Liked this workflow?

Get new verified workflows in WebAfterAI, three issues a week (Tue, Thu, Sat).