agentleFS
ibrahimshareef96-sysibrahimshareef96-sys/claude-skills/skills/fable-architecture/SKILL.md

fable-architecture

Skill0 starsChanged 3 months agoMITView on GitHub

An architecture decision framework for agent-assisted development. Use when designing any new system, feature, integration, or migration, before writing code. Encodes the 2-4-options-with-trade-offs method, YAGNI enforcement, boring-tech defaults, and the boundary rules that keep a small system from turning into a distributed one by accident.

1 other project uses a version of this.

Adopted by

Most recently taken up by

  • Other versions1 project uses a version of this.

    Word for word · 0

    None found.

    Edited · 0

    None found.

    Wrote their own version · 1

    1. imMamdouhaboammar/get-fable★ 6same name

    How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.

  • In this repository4 other files it gives its agents.

The file

We split this skill into the rules it gives an agent

6 rules. About 0 are common, 6 are distinctive, and 0 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈6

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 0

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Pick against a stated priority order: Write yours down before you start.

    line 14
  2. Distinctive:

    Keep that list in your own repo, not here.

    line 21
  3. Distinctive:

    One writer per datum: If two services write the same table, the design is wrong.

    line 39
  4. Distinctive:

    Every migration needs a rollback line: "if X breaks, we flip Y back", written down before cutover.

    line 56
  5. Distinctive:

    Never migrate data and change schema in the same step.

    line 58
  6. Distinctive:

    If the doc exceeds about two pages, the design is probably too big for the requirement.

    line 64

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Architecture Judgment

Architecture is where cheap models fail quietly: they produce a plausible design instead of the right-sized one. The failure is almost never "too simple". It is over-engineering, wrong boundaries, or ignoring the operational reality of a small team running everything on one box.

The decision procedure (always)

  1. State the actual requirement in one sentence, including scale honestly. "Handles our lead magnets" means hundreds a day, not millions. Design for 10x current need, not 1000x.
  2. Generate 2-4 genuinely different options, not one option with three coats of paint. For each: build time, operational burden, failure modes, escape hatch (how hard to migrate off).
  3. Pick against a stated priority order. Write yours down before you start. A common one for small teams is build fast, then ship fast, then monetize, where the tiebreaker is "which reaches a working state quickest without cutting quality."
  4. Present trade-offs summarized, then implement the chosen one. Do not present a menu and stop. Recommend and proceed.

Pin your own stack first

Before an agent designs anything, give it your locked infrastructure as non-negotiable context: what you run on, what you will never introduce, and which system is the record of truth for each kind of data. Agents default to whatever is fashionable, which is how a one-box project acquires a managed queue nobody asked for.

Keep that list in your own repo, not here. The point is that it exists and that every design references it.

Default choices (boring wins)

NeedDefaultReach for the alternative only when
New serviceAnother container on the box you already runTruly bursty compute, then discuss
DatabasePostgresEmbedded or local-only tool, then SQLite
Queue/asyncPostgres table plus a poller, or cronMore than 1 job/sec sustained, then a real broker
File deliveryObject storage plus presigned URLsTiny private files, then serve from the app behind auth
Auth (internal tools)Whatever your platform already providesMulti-user, then a real auth service
EmailOne provider, chosen onceNever add a second one
Scheduled workcron on the boxNeeds visibility, then a job table plus a dashboard

A Postgres table used as a queue is not a hack. At small scale it is the correct design: transactional, observable with SQL, and zero new infrastructure.

Boundary-drawing rules

  • One writer per datum. If two services write the same table, the design is wrong. Pick an owner, the other calls its API.
  • Push at the edges, sync truth in the middle. External surfaces (forms, webhooks, chat integrations) push into one ingestion endpoint. That endpoint owns validation and fan-out. Never let three surfaces each talk to your email provider directly.
  • Webhooks: verify, ack fast, process async. Auth-check the caller, write the raw payload to a table, return 200, process from the table. Never do slow work inside the webhook response.
  • Idempotency everywhere external systems retry. Dedupe key on a natural pair or the event ID. Design assuming every webhook is delivered twice.
  • Fail open on side-effects, fail closed on auth. An email-provider outage must not block a content save (log it, retry later). A missing token must always block a write.

YAGNI tripwires, stop if you catch yourself designing these

  • Microservices for a solo or two-person product. It is a monolith until proven otherwise.
  • A generic plugin system or rules engine for the second use case. Wait for the third.
  • Kafka, Redis, or Kubernetes at small scale. See the defaults table.
  • Multi-region, multi-tenant, or white-label "while we're at it." Ship single-tenant, refactor at customer three.
  • Config options for behavior nobody asked to vary.

Migration and cutover judgment

  • Strangler over big-bang. The new system takes new traffic first, the old system stays read-only until parity is proven.
  • Every migration needs a rollback line: "if X breaks, we flip Y back", written down before cutover.
  • DNS: drop the TTL a day before cutover, not during.
  • Never migrate data and change schema in the same step.

Design doc format (what to produce)

One markdown file. Requirement in one sentence, then options considered (2-4, with a trade-offs table), then the chosen design (diagram-in-text, data model, API surface), then failure modes and mitigations, then what you are explicitly not building, then the cutover and rollback plan if you are replacing something.

If the doc exceeds about two pages, the design is probably too big for the requirement.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.