agentleFS
hoangNguyenAngelhackhoangNguyenAngelhack/ai-agent-setup/.claude/skills/incremental-implementation/SKILL.md

Incremental Implementation

Skill3 starsChanged 6 months agoMITView on GitHub

Build features in thin vertical slices with continuous verification

1 other project uses a version of this.

Adopted by

Most recently taken up by

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:

    If you've written 100+ lines without running tests, stop and verify.

    line 119
  2. Distinctive:

    Never leave the codebase broken between commits.

    line 131
  3. Distinctive:

    If an increment fails:

    line 192

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

Incremental Implementation Skill

Philosophy

"The simplest thing that could work."

Build in thin vertical slices. Each increment leaves the system working and testable.


When to Apply

Use this skill when:

  • Multi-file changes
  • New features
  • Refactoring work
  • Any change > 100 lines

Skip for:

  • Single-file, small changes
  • Simple bug fixes
  • Configuration updates

The Increment Cycle

┌─────────────────────────────────────────┐
│  1. Pick smallest complete piece        │
│                 ↓                       │
│  2. Write failing test (RED)            │
│                 ↓                       │
│  3. Implement minimal code (GREEN)      │
│                 ↓                       │
│  4. Refactor if needed                  │
│                 ↓                       │
│  5. Run all tests                       │
│                 ↓                       │
│  6. Commit with clear message           │
│                 ↓                       │
│  7. Repeat for next piece               │
└─────────────────────────────────────────┘

Vertical vs Horizontal Slicing

Vertical Slices (Correct)

Each slice delivers end-to-end functionality:

Task 1: User can create a task
        └── DB model + API route + UI component

Task 2: User can view task list
        └── DB query + API endpoint + List component

Task 3: User can complete a task
        └── DB update + API handler + Toggle UI

Horizontal Slices (Anti-pattern)

Layers completed separately:

Task 1: Create all DB models
Task 2: Create all API routes
Task 3: Create all UI components

❌ Problem: Nothing works until everything is done

Slicing Strategies

1. Happy Path First

Slice 1: Basic flow works
Slice 2: Add validation
Slice 3: Add error handling
Slice 4: Add edge cases

2. Risk-First

Slice 1: Uncertain/complex piece (reduce risk early)
Slice 2: Dependent pieces (build on verified foundation)
Slice 3: Polish (now safe to invest time)

3. Contract-First

Slice 1: Define API contract (types, endpoints)
Slice 2: Backend implements contract
Slice 3: Frontend implements against contract

Rules

The 100-Line Rule

Test before writing more than ~100 lines.

If you've written 100+ lines without running tests, stop and verify.

Touch Only What's Needed

Don't refactor adjacent code. Don't add unrequested features.

Stay focused on the current task.

Keep It Building

Project must compile and tests must pass after each increment.

Never leave the codebase broken between commits.

Feature Flags for Incomplete Work

// Use flags when merging incomplete features
if (featureFlags.newCheckout) {
  return <NewCheckoutFlow />;
}
return <LegacyCheckout />;

Safe Defaults

New code defaults to conservative, disabled behavior:

  • New features off by default
  • New permissions denied by default
  • New validations strict by default

Rollback-Friendly

Each increment should be independently revertable:

# If this commit breaks something, revert just this
git revert HEAD

Red Flags

Stop and reassess if you're:

  • Writing > 100 lines without testing
  • Mixing unrelated changes in one commit
  • Expanding scope mid-task
  • Breaking the build between increments
  • Creating abstractions "for later"
  • Touching files outside the task scope

Commit Strategy

Each increment = one commit:

# Good: Atomic, focused commits
git commit -m "feat(tasks): add Task model with title and status"
git commit -m "feat(tasks): add POST /api/tasks endpoint"
git commit -m "feat(tasks): add CreateTaskForm component"

# Bad: Large, unfocused commits
git commit -m "Add task feature"  # 500 lines across 10 files

When Stuck

If an increment fails:

  1. Stop — Don't push through
  2. Diagnose — What specifically failed?
  3. Reduce scope — Can you make a smaller increment?
  4. Ask for help — If truly blocked

Verification Checklist

After each increment:

  • Tests pass
  • Build succeeds
  • Code compiles
  • Feature works (manual check if UI)
  • Commit is atomic and focused
  • Message follows conventions

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.