agentleFS
subhash-arabhisubhash-arabhi/saas-playbook/skills/incremental-implementation/SKILL.md

incremental-implementation

Skill1 starsChanged 30 days agoMITView on GitHub

Delivers changes in thin, tested, committed steps. Use when building a plan step, implementing any change that touches more than one file, or when about to write a lot of code at once.

77 other projects use a version of this.

Adopted by

Most recently taken up by

Used with

Projects with it also use constraint-driven-development, deprecation-and-migration and 7 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.
  • MrCipherSmithSkill

    constraint-driven-development

    Use when a project needs a persistent, measurable quality bar — starting a project without documented standards, 'set up constraints', or when coverage/perf/a11y thresholds get re-debated per-PR. Produces CONSTRAINTS.md with enforceable numbers, ratchets, and a guard against silent weakening. NOT for throwaway prototypes or a one-off CI setup.

    Also in 14 projects that use this

  • HK-hubSkill

    deprecation-and-migration

    Manages deprecation and migration. Use when removing old systems, APIs, or features. Use when migrating users from one implementation to another. Use when deciding whether to maintain or sunset existing code.

    Also in 36 projects that use this

  • HK-hubSkill

    source-driven-development

    Grounds every implementation decision in official documentation. Use when you want authoritative, source-cited code free from outdated patterns. Use when building with any framework or library where correctness matters.

    Also in 37 projects that use this

  • seikaikyoSkill

    doubt-driven-development

    對非平凡決策啟動新鮮 context 對抗審查(找碴不背書),在修正還便宜的時候抓出錯誤方向。適用:高風險改動(production、資安敏感邏輯、不可逆操作)、不熟的程式碼、要宣稱「這樣是安全的 / 可行的」之前。機械性操作與一行修改不適用。

    Also in 33 projects that use this

  • seikaikyoSkill

    interview-me

    需求不明時的意圖萃取訪談:一次一題、每題附上自己的猜測、聽出「真正想要 vs 覺得應該要」,直到能預測使用者反應(約 95% 信心)才動工。適用:需求缺少對象 / 動機 / 成功標準 / 約束,或使用者點名「訪談我」「先確認一下」「我們確定嗎」。明確自足的指示、純資訊查詢、機械性操作不適用。

    Also in 30 projects that use this

  • 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

The file

We split this skill into the rules it gives an agent

12 rules. 0 are common, 11 are distinctive, and 1 is very specific to this project.

  • 0

    Common

    Most of the 72 edited versions we read keep these.

  • 11

    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. Very specific:

    Project rules first: If the project has .agents/rules/ (installed with the SaaS playbook), read .agents/rules/planning.md, …

    line 8
  2. Distinctive:

    Test: add tests for the behaviour this step adds, in the same step.

    line 21
  3. Distinctive:

    Run a check again only after code it covers has changed.

    line 26
  4. Distinctive:

    Contract-first,: when frontend and API are built separately: define schemas and spec → API with tests → frontend against the contract → …

    line 31
  5. Distinctive:

    Risk-first: do the most uncertain piece first (e.g.

    line 32
  6. Distinctive:

    Simplest thing that works: Ask before coding; check after:

    line 36
  7. Distinctive:

    Write the naive, obviously correct version first.

    line 41
  8. Distinctive:

    One thing per step: Don't mix a new component, a refactor of another and a build config change.

    line 51
  9. Distinctive:

    Keep it working: After every step the project builds and all tests pass.

    line 53
  10. Distinctive:

    Prefer additive changes (new files, new functions).

    line 58
  11. Distinctive:

    Keep edits to existing code minimal and focused.

    line 59
  12. Distinctive:

    Don't delete something and add its replacement in the same step.

    line 61

“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
<!-- Adapted from addyosmani/agent-skills@1401c8b (MIT, see licenses/). Changes: slices = plan steps, tests in every step, language-agnostic, trimmed; layered: general guidance here, playbook decisions in .agents/rules/. -->

Project rules first. If the project has .agents/rules/ (installed with the SaaS playbook), read .agents/rules/planning.md, .agents/rules/testing.md and .agents/rules/git.md and follow them: they override this skill where they differ. Without them, follow this skill as written.

Incremental Implementation

Build in thin steps: implement one piece, test it, verify it, commit it, move on. Never build a whole feature in one pass. Each step leaves the system working and tested.

  • With a plan, the plan and its build process decide which step is next, when to stop and how to commit. This skill is how to do each step well.
  • Without a plan, apply the same discipline in small steps.
  • Skip it for single-file, single-function changes that are already minimal.

The step cycle

  1. Implement the smallest complete piece (in a plan, the step's Do). Never write more than ~100 lines before running tests.
  2. Test: add tests for the behaviour this step adds, in the same step. Test-first is optional.
  3. Verify with the repository's own commands: tests (new and existing), build, type check and lint where the stack has them. Repeat until the acceptance criteria are met (in a plan, its Check, until every Done when item is true).
  4. Commit: one commit per step, short imperative message saying what changed (e.g. Add project creation endpoint), in the project's commit format if it has one.
  5. Next step: carry forward, don't restart.

Run a check again only after code it covers has changed. Re-running on unchanged code adds nothing.

Slicing

  • Vertical (preferred): each step is one complete path through the stack (e.g. "create a task: DB + API + UI", then "list tasks", then "edit", then "delete"), working end to end.
  • Contract-first, when frontend and API are built separately: define schemas and spec → API with tests → frontend against the contract → connect and verify end to end.
  • Risk-first: do the most uncertain piece first (e.g. prove the real-time connection) so failure shows up before you invest in the rest.

Rules

Simplest thing that works. Ask before coding; check after:

  • Could it be fewer lines? Does each abstraction earn its complexity?
  • Are you building for the current step or a hypothetical future?
  • One function call beats an event bus for one notification; two components beat an abstract factory; three forms beat a form builder.
  • Three similar lines beat a premature abstraction. Don't abstract before the third use. Don't create utility files for one-time operations.
  • Write the naive, obviously correct version first. Optimize only after tests prove it correct.

Scope discipline. Touch only what the step needs: every changed line traces to the step or the request. In a plan, change the files in the step's Files, plus any other file the step clearly needs, noted in the step's Build log line as "Also changed: <file> (why)" (.agents/workflows/build-plan.md → Scope). Without a plan, if a change elsewhere is clearly needed, make it and say so. Don't clean up adjacent code, reorder imports in files you aren't changing, remove comments you don't understand, add features not in the step, or modernize syntax in files you only read. Note anything else worth fixing without stopping: in a plan build, as "Decided: not built: <what>" in the Build log, which the final summary lists; otherwise, in your report:

NOTICED BUT NOT TOUCHING:
- utils/format has an unused import (unrelated to this step)
→ Candidate for a follow-up plan.

One thing per step. Don't mix a new component, a refactor of another and a build config change; make them three steps and three commits. Keep refactors separate from features.

Keep it working. After every step the project builds and all tests pass. Don't let large uncommitted changes pile up.

Safe defaults. New optional side effects are off unless asked for (e.g. notify = false); new permissions are denied unless granted.

Rollback-friendly. Each step can be reverted on its own:

  • Prefer additive changes (new files, new functions).
  • Keep edits to existing code minimal and focused.
  • Give database migrations a matching rollback migration.
  • Don't delete something and add its replacement in the same step.

When all steps are done

The full suite passes, the build is clean, the feature works end to end as the plan or task describes, and nothing is left uncommitted. Nothing is pushed unless the user asked.

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.