agentleFS
GuillemRocaGuillemRoca/agent-skills-android/skills/incremental-implementation/SKILL.md

incremental-implementation

Skill2 starsChanged 40 days agoMITView on GitHub

Use when building features incrementally. Each increment leaves the system in a working, testable state. Covers vertical slicing, feature flags, and rollback-friendly development for Android.

77 other projects use a version of this.

Adopted by

Most recently taken up by

Used with

Projects with it also use review-diff, minimalist-ui and 3 more.

Other files people use alongside this one.

Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
  • thunderkdsSkill

    review-diff

    Generate a Markdown review file with C4 architecture diagrams and code walkthrough for the current git changes

    Also in 3 projects that use this

  • AnasX7Skill

    minimalist-ui

    Clean editorial-style interfaces. Warm monochrome palette, typographic contrast, flat bento grids, muted pastels. No gradients, no heavy shadows.

    Also in 3 projects that use this

  • delphi-aiSkill

    animate

    Animation patterns and best practices for Next.js/React applications. Use this skill when implementing animations, transitions, hover effects, page transitions, modals, or any motion in React components. Based on Emil Kowalski's "Animations on the Web" course.

    Also in 3 projects that use this

  • VercelSkill

    web-design-guidelines

    Review UI code for Web Interface Guidelines compliance. Use when asked to "review my UI", "check accessibility", "audit design", "review UX", or "check my site against best practices".

    Also in 6 projects that use this

  • OpenAISkill

    verification-before-completion

    Use when about to claim work is complete, fixed, or passing, before committing or creating PRs - requires running verification commands and confirming output before making any success claims; evidence before assertions always

    Also in 5 projects that use this

The file

We split this skill into the rules it gives an agent

7 rules. 0 are common, 6 are distinctive, and 1 is very specific to this project.

  • 0

    Common

    Most of the 72 edited versions we read keep these.

  • 6

    Distinctive

    This author's own choices. Worth a look.

  • 1

    Very specific

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

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    If the risk materializes, you've spent minimal effort

    line 64
  2. Distinctive:

    Test both paths (flag on and flag off)

    line 95
  3. Distinctive:

    No commented-out code as "TODO" placeholders

    line 100
  4. Very specific:

    No unimplemented interfaces throwing NotImplementedError (unless behind a feature flag)

    line 101
  5. Distinctive:

    No broken imports or missing dependencies

    line 102
  6. Distinctive:

    No feature flag for partially-complete user-facing features

    line 146
  7. Distinctive:

    No verification step between increments

    line 148

“Common” is measured: kept by at least 6 in 10 of the 72 edited versions of this file we could read. “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

Overview

"Each increment should leave the system in a working, testable state." Build features in small, verifiable steps — each one compiles, passes tests, and can be committed. Never leave the codebase in a broken state between increments.

When to Use

  • Implementing any feature from a task breakdown (follows planning-and-task-breakdown)
  • Building any change that spans more than one file
  • Any time you're tempted to "get it all working, then commit"

Skip when: A true single-file, single-function change.

Core Process

Step 1: Review the Task

  1. Read the task's acceptance criteria from tasks/todo.md
  2. Identify the vertical slice — what observable behavior does this increment deliver?
  3. Gather existing examples — find similar patterns already in the codebase

Step 2: Implement with TDD

  1. For each increment, follow this cycle:
┌─────────────────────────────────────────────┐
│  1. Review acceptance criteria              │
│  2. Read existing patterns in codebase      │
│  3. Write failing test (RED)                │
│  4. Write minimal code to pass (GREEN)      │
│  5. Run ./gradlew test                      │
│  6. Run ./gradlew assembleDebug             │
│  7. Commit                                  │
│  8. Repeat for next acceptance criterion    │
└─────────────────────────────────────────────┘
  1. Never skip the build check — ./gradlew assembleDebug must succeed after every increment

Step 3: Primary Slicing Strategies

  1. Vertical slice (preferred):
    • End-to-end: Entity → DAO → Repository → UseCase → ViewModel → Screen
    • Each slice delivers user-visible functionality
    • Example: "User can view task list" before "User can add task"
  2. Contract-first:
    • Define the interface first (Repository interface, API contract)
    • Implement against the contract
    • Useful for parallel development (one dev does UI, another does data layer)
  3. Risk-first:
    • Build the most uncertain piece first
    • If the risk materializes, you've spent minimal effort
    • Example: "Can we integrate with the payment SDK?" before building the checkout UI

Step 4: Feature Flags

  1. Use feature flags for incomplete features:
// BuildConfig flag (compile-time)
// In build.gradle.kts:
// buildConfigField("Boolean", "FEATURE_TASK_SHARING", "false")
if (BuildConfig.FEATURE_TASK_SHARING) {
    ShareButton(onShare = { viewModel.shareTask(task) })
}

// Firebase Remote Config (runtime)
@Composable
fun TaskListScreen(viewModel: TaskListViewModel = hiltViewModel()) {
    val showSharing by viewModel.isFeatureEnabled("task_sharing")
        .collectAsStateWithLifecycle(initialValue = false)

    TaskListContent(
        showShareButton = showSharing,
        // ...
    )
}
  1. Feature flag rules:
    • Flags have an owner and a removal date
    • Dead flags are tech debt — remove after rollout
    • Test both paths (flag on and flag off)

Step 5: Keep It Compilable

  1. The codebase must compile after every commit:
    • No commented-out code as "TODO" placeholders
    • No unimplemented interfaces throwing NotImplementedError (unless behind a feature flag)
    • No broken imports or missing dependencies
  2. If you're stuck, revert to last green state:
    # Stash current work
    git stash
    
    # Verify last commit is green
    ./gradlew test && ./gradlew assembleDebug
    
    # Try a different approach
    git stash pop

Step 6: APK Analysis Checkpoints

  1. Periodically check APK size:
    # Build release APK
    ./gradlew assembleRelease
    
    # Analyze with APK Analyzer (Android Studio)
    # Or from command line:
    bundletool build-apks --bundle=app.aab --output=app.apks
  2. Watch for size regressions — new dependencies, unoptimized resources, missing ProGuard rules.

Common Rationalizations

ShortcutWhy It Fails
"I'll commit when it all works"Large commits are unreviable, unrevertable, and hide bugs.
"The build is temporarily broken, I'll fix it"Temporary broken builds block the team and compound errors.
"Feature flags are overhead"Shipping incomplete features to production is worse overhead.
"I need to refactor first"Refactoring is a separate increment. Don't mix it with feature work.
"100 lines is too small for a commit"100-line commits are reviewable in minutes. 1000-line commits take hours.

Red Flags

  • 100+ lines of code without running tests
  • Mixing unrelated changes in one increment
  • Expanding scope mid-increment ("while I'm here...")
  • Build broken between commits
  • No feature flag for partially-complete user-facing features
  • Premature abstractions before the second use case
  • No verification step between increments

Verification

  • Each increment has passing tests (./gradlew test)
  • Each increment compiles (./gradlew assembleDebug)
  • Each increment is committed separately
  • Commits are small and focused (~100 lines)
  • Incomplete features behind feature flags
  • No mixed refactoring + feature changes in one increment
  • Acceptance criteria from task checked off after each increment

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.