h0ffmann/skills
Star
Cite

APA

h0ffmann. (2026). skills [Computer software]. https://github.com/h0ffmann/skills

BibTeX

@software{h0ffmann_skills_2026,
  author = {h0ffmann},
  title = {skills},
  year = {2026},
  url = {https://github.com/h0ffmann/skills},
  license = {MPL-2.0},
  note = {ORCID 0009-0009-1056-7661}
}

Source: CITATION.cff

mip-tasks ⏸

Turn an accepted MIP into an ordered task list and deliver it as small stacked PRs, one task for each branch and PR. Use for `/mip-tasks NNNN` or a restack.

dev-flowplanningprgithubmanual

← Back to all skills · SKILL.md on GitHub

# mip-tasks

A MIP says what and why. This skill gives the how, in order. Each task is a branch on top of the
previous task, with its own small PR. Review occurs in small parts. `main` gets only tested steps.

## Argument

One MIP number: `/mip-tasks 0009`. Accept `9`, `009`, `MIP-009` and `mip-0009`. Normalize to
`MIP-0009` and say it. Make sure that the MIP file exists. If it does not, stop.

- No number: stop and ask.
- More than one number: stop and ask for one.

## Step 1: the task list

Read the MIP, `AGENTS.md` and the code. Write `docs/MIPs/MIP-NNNN.tasks.md`:

```markdown
| # | slug | delivers | tests (exist before the PR) | depends on |
|---|---|---|---|---|
| 1 | board-json | the serializer and its schema | spec from golden fixtures | - |
| 2 | site-build | the build flag and its recipe | golden: dist/ has latest.json | 1 |
```

Rules for the list:

- One task is one PR: about 400 changed lines or fewer, one concern, its own tests, green alone.
- Order by dependency, then by risk. The task that can change the design comes first.
- Name the tests now. The MIP's verification plan is the source.
- Docs go with the task that changes the behaviour.
- Reorder to prevent a later task from changing a file of an earlier task.

Commit the list on the first task branch. Add `Tasks: docs/MIPs/MIP-NNNN.tasks.md` to the MIP.

If the repository has a recipe that makes one issue for each row, run it with `--dry-run`
first. Filing issues needs the owner's approval.

## Step 2: one task, one branch, one PR

Start a new session for each task. Then:

1. Make the branch `mip-nnnn/<k>-<slug>` from the branch of the previous task.
2. Write the test first. Then write the code.
3. Run the full gate of the repository (`just build && just test && just quality`).
4. Commit with the `Tested:` trailer.
5. Push and open the PR with its base on the previous task branch. The body starts with
   "Stacked on `<base>`, part of MIP-NNNN".

Merge in order, from the bottom of the stack.

## Step 3: restack

A squash merge gives new hashes. The next PR then shows conflicts. Rebase it:

```bash
git rebase --onto origin/main <last commit of the merged base> <next branch>
git push --force-with-lease
```

Find the fork point from the merged PR (`gh pr view <n> --json headRefOid`). If you cannot
find it, stop. Do not rebase onto `main` without it.

## Step 4: finish

When the last task merges, set the MIP to `Implemented` with the PR numbers. Delete the task
branches.

## Rules

- A follow-up to a merged PR is a new branch from `main`, not a child of the old branch.
- Review occurs only when the owner asks for it, one PR at a time, from the bottom.