agentleFS
adamentwistleadamentwistle/fable-skills/estimation-and-scoping/SKILL.md

estimation-and-scoping

Skill98 starsChanged 2 months agoMITView on GitHub

Honest sizing and scope — probe before promising, surface 10x discoveries immediately (never silently absorb or shrink), vertical slices, finish quality calibrated to the ask. Use when asked "how big is this" or "can you just quickly", when sizing or planning work, when scope balloons mid-task, when a "quick fix" turns into a migration or architectural change, and before reporting done on anything larger than one file.

The file

We split this skill into the rules it gives an agent

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

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈3

    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:

    Before sizing anything non-trivial, measure the actual surface:

    line 12
  2. Distinctive:

    Not allowed: silently absorbing the blowup (user waits 5x longer than told) or silently shrinking the deliverable to fit the estimate (user …

    line 23
  3. Distinctive:

    When work is big, cut it so each slice is independently verifiable and leaves the system working:

    line 27

≈ “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

Estimation and Scoping

Scope failures are trust failures: promising small and delivering huge, silently shrinking the task to fit, or gold-plating past what was asked. Weak scoping estimates from the request text. Strong scoping measures the surface first and renegotiates out loud the moment the measurement changes.

Size by probing, not by vibes

Before sizing anything non-trivial, measure the actual surface:

  • Count the touch points: grep the symbols and patterns involved. 3 call sites and 40 call sites are different projects.
  • Find the precedent: git log the last similar change and read its diff stat.
  • Probe the riskiest assumption first: the API you hope exists, the layer you hope is decoupled. Ten minutes of probing regularly converts "small tweak" into "restructuring" BEFORE you have promised anything.

Report size in units the user can check, never in hours: files, call sites, steps, and unknowns. Separate certain from contingent: "mechanical across 12 files; contingent on whether X handles Y, checking that first."

The 10x-discovery rule

Triggers: touch points exceed twice what you probed; a migration, second layer, or load-bearing hack appears where you expected a clean seam; a step you called mechanical needs judgment at every site. On any trigger, STOP editing and report: what you found, the honest new shape, the state of the tree right now (green? partially changed?), 2–3 options with costs (full fix / narrow workaround / defer), and your recommendation. Then let the user choose.

Not allowed: silently absorbing the blowup (user waits 5x longer than told) or silently shrinking the deliverable to fit the estimate (user gets less than agreed and finds out later). Both are worse than the awkward message.

Slice for shippable increments

When work is big, cut it so each slice is independently verifiable and leaves the system working:

  • Vertical slices (one thin end-to-end path) over horizontal layers (all models, then all handlers). Vertical proves the architecture early, where the risk lives.
  • Sequence: riskiest-assumption slice first, then value order.
  • Each slice ends at a real checkpoint: gates green, behavior demonstrable. "80% done" on an unshippable heap is 0% shipped.

Calibrate finish quality to the request

Match effort to intent, and when they diverge, say so rather than silently choosing:

  • "Quick check / prototype / does this work?" → answer the question; no neighborhood refactor, no test suite.
  • "Fix the bug" → fix + regression test + gates. Not a module rewrite; list rewrite-worthy findings in the report.
  • "Production-ready" → error paths, edge cases, tests, docs.

Gold-plating (unrequested abstractions, config for imagined futures, extra features) is scope creep in a flattering costume. Build what was asked; list what you would consider next.

The definition-of-done handshake

For any multi-step task, restate scope as a checklist before diving deep: in-scope items, explicitly-out items ("not touching the mobile layout"), and the verification bar. If the task came with no spec, your checklist IS the spec; put it where the user will see it. At the end, report against that same checklist, with a "Not done" line for anything cut, deferred, or discovered, so the user never learns about a gap from production.

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.