Skip to content
Back to skills

Fable Scope Discipline

ASecurity

Use when implementing any change in existing code — when tempted to clean up nearby code, add unrequested validation or options, fix something "arguably in scope", or when the diff is growing past what was asked.

  • 7 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 20, 2026
ai-agentsgorefactoringgit

Works with

  • cursor

Security analysis

A100/100

Pro scans all 4 files and shows the line behind each finding

Scanned September 20, 2026

npx -y skills add imMamdouhaboammar/get-fable --skill fable-scope-discipline --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Fable Scope Discipline?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Fable Scope Discipline
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/immamdouhaboammar-fable-scope-discipline/badge)](https://www.skillsdirectory.com/skills/immamdouhaboammar-fable-scope-discipline)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: fable-scope-discipline
description: Use when implementing any change in existing code — when tempted to clean up nearby code, add unrequested validation or options, fix something "arguably in scope", or when the diff is growing past what was asked.
version: 1.0.0
pack: build
inputs:
  - task_specification
  - current_diff
requires:
  - codebase_access
produces:
  - bounded_diff
gates:
  - no_unrequested_edits
  - right_altitude
fallback: fable-execute
mutatesWorkspace: true
parallelSafe: true
neural_links:
  precursors:
    - fable-plan
    - fable-execute
  continuations:
    - fable-verify
    - fable-review
  lateral_peers:
    - fable-native-code
  recovery: fable-recover
---

# Fable Scope Discipline

Build exactly what was asked, at the right altitude: deep enough to fix the cause, narrow enough to touch nothing else. Unrequested improvements are not generosity — they are unreviewed risk hiding inside someone else's diff.

## Purpose

Enforce strict scope boundaries during code modification. Prevent drive-by refactorings, cosmetic rewrites, speculative optimizations, unrequested validation checks, and diff bloat.

## When to Use

- When implementing any change in an existing codebase.
- When tempted to clean up neighboring functions, reformat whitespace, or rename variables.
- When thinking a secondary defect is "arguably in scope".
- When inspecting a diff that spans more files or lines than the task logically warrants.

## When NOT to Use

- When tasked explicitly with a broad refactoring or architectural migration (use `fable-simplify` or `fable-architecture`).
- When removing dead code or deprecated systems across the whole workspace (use `fable-simplify`).
- When authoring exploratory prototypes or spikes (use `fable-discover`).

## Inputs

- `task_specification`: The specific bounded task, user instructions, and acceptance criteria.
- `current_diff`: The working git diff generated during implementation.

## Expected Outputs

- `bounded_diff`: A minimal, surgical diff addressing only the authorized problem.
- `discovered_items_report`: A structured list in the summary noting other defects discovered but deliberately not touched.

## Procedure

1. **Implement What Was Asked**: Focus strictly on the assigned card or request; nothing speculative, nothing "while I'm here."
2. **Adjacency is Not Scope**: "Same function", "same file", "same class of defect" describe *location*, not *authorization*. The user's words define the task; proximity defines nothing.
3. **The Argument Test**: If you are constructing an argument for why something extra is "arguably part of the fix" — it is not. Real scope never needs an argument. Put the observation in your report and let the user decide.
4. **The Open-Question Test**: If an extra fix requires an unresolved design choice (raise vs clamp? rename to what?), that proves it is an independent task. You cannot settle a contract question inside someone else's bugfix.
5. **Right Altitude**: Not a symptom patch (one case patched, bug alive), and not a rewrite (bug fixed, fifty unrelated things changed). Fix the root cause within the bounded scope.
6. **No Drive-Bys**: No renames, reformatting, refactors, or dependency bumps the change does not require. Diff noise buries the real change.
7. **Touch Budget**: If the diff is significantly larger than the ask implies, stop and re-evaluate your altitude.
8. **Look Before Deleting**: If what you find contradicts the task's description or you didn't create it, surface that instead of blindly overwriting.
9. **Discoveries Go in the Report**: Real bugs, dead code, or stale docs found along the way go in your summary — neither silently fixed nor silently dropped.

## Decision Rules

| Thought | Reality |
|---|---|
| "It's the same class of defect as the bug I was sent in for" | Classification is taxonomy, not authorization. The user named one defect. |
| "It lives in the same function's contract" | Location again. Contracts change by decision, not by proximity to your cursor. |
| "Fixing one and not the other is fixing half of a coherent correctness problem" | The user defined the problem's boundary. Put it in the report and let them re-draw the boundary. |
| "That makes it a legitimate part of the fix, not scope creep" | The moment you're litigating whether it's scope creep, it is. |
| "Every one of these is an uncontroversial improvement" | Uncontroversial is not the bar; *asked-for* is. Improvements travel in their own reviewable diff. |
| "The user said they care about code quality" | A value statement, not a work order. Quality includes atomic, revertible, reviewable diffs. |

- If a code change is not required to make the user's scenario or test pass, revert it.
- If an adjacent bug is discovered, log it in the report as a follow-up item.

## Tool Policy

- Run `git diff` frequently to inspect touched lines and files.
- Reject tools that indiscriminately reformat entire files.
- Keep modifications confined to the minimal set of files.

## Evidence Requirements

- Inspect `git diff --stat` to verify that touched files and line changes match the expected blast radius.
- Verify tests pass on the minimal change without relying on unrequested collateral modifications.

## Failure Handling

Stop immediately and shrink the diff when encountering these Red Flags:
- The word "arguably" near a change you're about to make.
- Touched files outside the component's logical domain.
- Formatting changes on untouched functions in the same file.

## Completion Criteria

- Diff addresses the root cause of the assigned task with surgical precision.
- No unrelated files, styles, dependencies, or unrequested refactorings introduced.
- All secondary discoveries documented for future triage.

Files in this skill

  • SKILL.md5.6 KB
  • agents/openai.yaml410 B
  • evals/scenarios.json568 B
  • skill.package.json276 B

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…