---
name: build-incremental-f902609a75a0
description: >-
  Implements code in progressive, verified increments — auto-detects the project's toolchain,
  builds each unit, runs checks (typecheck, lint, test), fixes errors, and commits with
  semantic messages. Use when building features, implementing milestones, or making multi-step changes.
argument-hint: <what to build>
disable-model-invocation: true
allowed-tools:
  - AskUserQuestion
  - Bash
  - Read
  - Write
  - Edit
  - Glob
  - Grep
metadata:
  trigger: "Building features, implementing milestones, or making multi-step changes."
  tags: "coding, automation, testing"
---

# Build

Implement code in progressive, verified increments. Each unit is built, checked, and committed before moving to the next.

## Preferences

_Read `~/.claude/skills/build-incremental/preferences.md` using the Read tool. If not found, no preferences are set._

## Project context

_On startup, use Bash to detect: project stack files (`ls package.json Cargo.toml pyproject.toml go.mod Makefile`), CLAUDE.md presence, current git branch, and git status. Skip any that fail._

## Command routing

Check `$ARGUMENTS`:

- **`help`** → display help then stop
- **`config`** → interactive setup then stop
- **`reset`** → delete `~/.claude/skills/build-incremental/preferences.md`, confirm, stop
- **`--dry-run <description>`** → show the plan without executing then stop
- **`--no-commit <description>`** → build and verify but don't commit
- **`--skip-lint <description>`** → skip linting, only run type checks
- **anything else** → proceed with build

### Help

```
Build — Implement code in verified increments

Usage:
  /build-incremental <what to build>             Build incrementally with checks + commits
  /build-incremental --dry-run <description>     Show plan without executing
  /build-incremental --no-commit <description>   Build and verify, don't commit
  /build-incremental --skip-lint <description>   Skip lint, only typecheck
  /build-incremental config                      Set toolchain and commit preferences
  /build-incremental reset                       Clear preferences
  /build-incremental help                        This help

Examples:
  /build-incremental add user settings page with form validation
  /build-incremental Milestone 2 from IMPLEMENTATION_PLAN.md
  /build-incremental --dry-run refactor auth middleware

How it works:
  1. Detects your toolchain (or reads from preferences)
  2. Breaks work into committable units
  3. For each unit: implement → check → fix → commit
  4. Reports summary with all commits

Current preferences:
  (shown above under Preferences)
```

### Config

Use **`AskUserQuestion`**:

**Q1** — "Type check command?" (auto-detect (default), custom command)
- Auto-detect looks for: `pnpm typecheck`, `npm run typecheck`, `tsc --noEmit`, `cargo check`, `go vet`, `mypy .`, `pyright`

**Q2** — "Lint command?" (auto-detect (default), custom command, skip)
- Auto-detect looks for: `pnpm lint`, `npm run lint`, `cargo clippy`, `golangci-lint run`, `ruff check`

**Q3** — "Lint fix command?" (auto-detect (default), custom command, skip)
- Auto-detect looks for: `pnpm lint:fix`, `npm run lint:fix`, `cargo clippy --fix`, `ruff check --fix`

**Q4** — "Commit style?" (conventional (default) — `feat:`, `fix:`, etc.; simple — plain messages; project-default — read from CLAUDE.md)

**Q5** — "Unit size?" (small — 1-2 files per commit; medium — 3-5 files (default); large — whole milestone)

Save to `~/.claude/skills/build-incremental/preferences.md`.

## First-time detection

If no preferences file exists:

1. Auto-detect the toolchain from project files:
   - `package.json` → check for `typecheck`, `lint`, `lint:fix` scripts, detect `pnpm`/`npm`/`yarn` from lockfile
   - `Cargo.toml` → `cargo check`, `cargo clippy`
   - `pyproject.toml` / `requirements.txt` → `mypy`, `ruff`, `pyright`
   - `go.mod` → `go vet`, `golangci-lint`
   - `Makefile` → check for `lint`, `check` targets

2. Show: "Detected: [toolchain]. Run `/build-incremental config` to customize, or continue with these defaults."

3. Proceed normally.

## Build process

### Step 1: Understand scope

1. Read context:
   - CLAUDE.md for project conventions
   - IMPLEMENTATION_PLAN.md if it exists and `$ARGUMENTS` references a milestone
   - Existing code in the target area
   - Related components for pattern consistency
2. Break work into committable units (size based on preference)
3. Order: types/interfaces first → logic/providers → components → pages/routes

If `--dry-run`, show the plan and stop.

### Step 2: Implement one unit

Write the code for one unit. Follow project conventions from CLAUDE.md. Read existing code before modifying.

### Step 3: Verify

Run checks in this order:

**Type check:**
```
{typecheck command from preferences or auto-detected}
```
If fails: read errors, fix, re-run until passing.

**Lint:**
```
{lint command}
```
If fails:
1. Run lint fix: `{lint fix command}`
2. Fix remaining issues manually
3. Re-run until passing (warnings OK, errors not)

Skip lint if `--skip-lint` flag.

### Step 4: Commit

Skip if `--no-commit` flag.

- Stage specific files (never `git add -A` or `git add .`)
- Commit with semantic message based on style preference:
  - **conventional**: `feat(scope): description`, `fix(scope): description`, `refactor: description`
  - **simple**: plain descriptive message
  - **project-default**: follow CLAUDE.md conventions
- Under 72 characters
- Describe what changed, not which files

### Step 5: Repeat or complete

Check if more units remain. If yes → Step 2. If no → summary.

## Completion summary

```
Build complete: {description}

Commits:
  1. {hash} {message}
  2. {hash} {message}

Verification:
  ✓ Type check: no errors
  ✓ Lint: no errors

{If milestone: Next milestone: {name} or "none remaining"}
```

## Rules

- **Never skip verification** — every commit must pass checks
- **Never commit unrelated changes together** — one unit per commit
- **Never use `git add .`** — always add specific files
- **Never amend previous commits** unless explicitly asked
- **Fix forward** — if checks fail, fix and re-verify, don't revert
- **Read before writing** — always read existing code first
- **Ask when uncertain** — if scope is ambiguous, ask before implementing


---
Source attribution: mostafa-drz
Original project: https://github.com/mostafa-drz/claude-skills/blob/e289cedeca6f9d9d2fdd26ab43abc7ab3141c2cb/code/build-incremental/SKILL.md
License: MIT
License information: https://opensource.org/license/mit
Original upstream instructions; downloaded from Mega AI Hub.

## Upstream license notice

MIT License

Copyright (c) 2026 Mostafa Darehzereshki

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.



# Mega AI Hub resource metadata

Creator / publisher: mostafa-drz
Original project: https://github.com/mostafa-drz/claude-skills/blob/e289cedeca6f9d9d2fdd26ab43abc7ab3141c2cb/code/build-incremental/SKILL.md
Attribution basis: Source repository record

Fields of work: Development & Engineering, Product Management
Roles: Frontend Developer, Backend Developer, Full-Stack Developer, DevOps / SRE, Product Manager
Specialties: Backend, Frontend
Tools: Bash, Git
Country applicability: Country not specified
Classification basis: Source category, role and specialization labels
Instruction SHA-256: 8ffdc4e14c1452af670144d5463baafce398292c1e322aa3ea21e3e43ddc4885
