plan-parts
Plan work as parts that are each one pull request, and write each part's spec so that the builder-critic loop can build it and judge it: the parts table, the…
Skill by michakraus
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/michakraus-plan-parts
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: writing, productivity, agent-building
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/plan-parts
What's inside
- Skill name
plan-parts- Description
- Plan work as parts that are each one pull request, and write each part's spec so that the builder-critic loop can build it and judge it: the parts table, the collision map, a tier per part, and each part's Done when, edge-case decisions, named mutants and files, plus the plan's own §V and §L rules. Use when the user wants a task planned or broken into pull requests, wants to know what can run in parallel, asks which parts need a decision first, or wants a part's done-condition sharpened for a critic. Two entry paths — before a plan exists, to shape it; and on a finished plan, to add the table and the specs. Use the build-part skill to run the loop, julia-branch-verifier to check a part's branch, and the julia-pr-shepherd agent to take its pull request to green.
- License
- MIT
- Instructions
- 308 lines in SKILL.md · view on GitHub
Files (4)
- SKILL.md
- plan-sections.md
- premise-check.md
- spec-format.md
SKILL.md (first lines)
# Planning parts for the builder-critic loop A **part** is one pull request. One branch, one worktree, one *Done when*. The parts table is the plan's machine-readable half: a later session reads one row and builds it without reading the rest of the file. Each part's own section is its **spec**: what the builder builds to and what the critic judges against, blind. Two entry paths, same output. | path | you have | do | |:--|:--|:--| | **forward** | a discussion, no file yet | write the table and the specs as the plan forms, not after | | **backward** | a finished task file | read it, add the table, the specs, §V and §L, change nothing else | **Contents** - [1 · A part is one pull request](#1--a-part-is-one-pull-request) - [2 · The parts table, first section after the done-condition](#2--the-parts-table-first-section-after-the-done-condition) - [3 · The collision map, before the split is fixed](#3--the-collision-map-before-the-split-is-fixed) - [4 · A tier cell per part, from a stated reason](#4--a-tier-cell-per-part-from-a-stated-reason) - [5 · What must not be split](#5--what-must-not-be-split) - [6 · Each part's section is its spec](#6--each-parts-section-is-its-spec) - [7 · The plan's §V and §L hold only what the plan adds](#7--the-plans-v-and-l-hold-only-what-the-plan-adds) - [What this skill does not do](#what-this-skill-does-not-do) - [Run this on the capable model](#run-this-on-the-capable-model) - [Grading a table you produced](#grading-a-table-you-produced) ## 1 · A part is one pull request One sentence describes it. A part that needs two sentences is two parts. The test is the reviewer: **a part is right-sized when one person can review its diff in one sitting and say yes or no.** Not "how long will this take" — a mechanical rename across forty files is one part; two design decisions in one file are two. **One part per finding is not a decomposition.** Group by theme — what a reviewer judges together — not by numbered item. Findings that share a cause, a file set or a kind of fix belong in one part. > **The check: if your part count is within two of your finding count, start again.** Twenty > findings become about seven parts, not eighteen. Over-fragmentation is the common failure and it > is worse than a part that is slightly too large: every extra part is another branch, another pull > request, another review, and another row in the collision map. **A part that changes ten or more source files (`src/`, `ext/`), or four or more kinds of work, is two parts.** The kinds are source, tests, docs, scripts, CI and the project files; `CHANGELOG.md` and `KNOWN_ISSUES.md` do not count. In the production loops such a part takes a median of three critic rounds and a builder context near 480 k tokens, against one round and about 100 k for a part of three source files or fewer. Split it where a reviewer judges apart: the interface, the algorithm behind it, the migration of its callers. A mechanical change is exempt, as above. **Do not split one part into steps with a critic loop each.** Each step pays a full loop, and no critic judges the part as a whole. **The exception is a change too wide to land green at once.** A rename or a signature change whose blast radius reaches thousands of call sites breaks the suite the moment it starts, so no single part can both make the change and pass CI. Sequence it as **expand → migrate → contract**: | step | the part | state | |:--|:--|:--| | **expand** | add the new form beside the old one. Nothing breaks | open | | **migrate** | move the call sites over in batches sized by repository or directory, one part each | `blocked by` the expand | | **contract** | delete the old form once no caller remains | `blocked by` every migrate part | Each migrate part stays green on its own, because the old form still exists. Where even a batch cannot stay green alone, keep the sequence and give the batches a shared integration branch that a final verify part is `blocked by`; green is promised there and nowhere earlier. ## 2 · The parts table, first section after the done-condition ```markdown ## Parts A session given a part reads its spec bundle: the part's rows, its sections, §V, §L, and the sections that §L names. It does not read the whole file. | part | repository | sections | what it is | tier | state | |:--|:--|:--|:--|:--|:--| | **A** | `Example` | §1–§4, §V, §L | Wrong answers and unreachable API. No design decision. | build | open | | **B** | `Example` | §5–§7, §V, §L | What `periodicity` returns. Changes the public answer. | decision | open | | **C** | `ExampleTools` | §11, §V, §L | The accessor loops. Mechanical. | build | blocked by B | | **D** | `Example` | spec, §V, §L | The new solver option. A spec in the spec-delta format. | build | open | ``` `state` is one of `open · in progress · waiting for the user · PR #NN in review · merged · declined`. **Every `sections` cell ends in `§V, §L`.** The builder and the critic of a part read only the spec bundle that `spec-bundle.py` writes from the task file: the sections a cell names, §V, §L, and the sections that §L's lines **The builder also reads:** and **The critic also reads:** name. A rule in any other section does not reach them. So a decision block of a parent part, a *Traps* section and the plan's working rules reach a part only through its cell or through those two lines. Name each one in a form the script resolves: a key (`§6`, `§5V.P38`), a heading in italics (`*Traps*`), or `the preamble of §<key>`. A phrase that starts with "the part's" or "its" points back to the cell and adds nothing. Give the builder and the critic the same sections, unless a section is only a judging aid. The key `spec` names the part's spec in the spec-delta format (§6). **Write the bundle of each part before the plan is done**, and read its header: ```bash cd ~/Research && python3 Harness/scripts/spec-bundle.py "Tasks/<file>.md" <part> --out ~/Research/.scratch/spec-bundles/<file>/<part>.md ``` Every `unresolved:` line is a defect of the plan: fix the cell or the §L line. The header's list of sections is what the builder will read; a section the part needs and the list lacks is the same defect. **The table does not replace the checkboxes.** Checkboxes record findings; the table records units of work. A file carries both. ## 3 · The collision map, before the split is fixed List which files each part touches. Two parts that share a file **cannot be built in parallel**, whatever they cost to run. ```markdown ### File collisions | file | parts |
From michakraus/ResearchHarness, MIT.
More from michakraus/ResearchHarness
- 0.598score
math-verify
michakraus
Check one mathematical statement in Julia, analytically, symbolically or numerically, together with a case that should make the check fail, and keep the check…
SkillAFreshness: A★ 2Claude Code +9 - 0.598score
build-reviewed
michakraus
Build one part of a decomposed task file whose tier cell is reviewed: one part-builder, one blind part-critic, at most one fix round by a new part-builder…
SkillAFreshness: A★ 2Claude Code +9 - 0.598score
julia-package-audit
michakraus
Audit the correctness and code quality of a whole Julia package, and return one findings report in a fixed format: type piracy, type instabilities, avoidable…
SkillAFreshness: A★ 2Claude Code +9 - 0.598score
julia-performance
michakraus
Measure Julia performance so that the number means something: allocations, type stability, timings and before/after comparisons, each in a cold process with…
SkillAFreshness: A★ 2Claude Code +9 - 0.598score
julia-release
michakraus
Release and register a Julia package in the General registry.
SkillAFreshness: A★ 2Claude Code +9 - 0.598score
build-part
michakraus
Run the next part of a decomposed task file through the builder-critic loop.
SkillAFreshness: A★ 2Claude Code +9 - 0.598score
julia-surgical-fix
michakraus
Fix a reported problem in a Julia repository so that the diff holds that fix and nothing else, then check it again: the scope rule, the fix and re-verify…
SkillAFreshness: A★ 2Claude Code +9 - 0.598score
latex-revision
michakraus
Run a revision pass over a LaTeX manuscript with colour-marked changes.
SkillAFreshness: A★ 2Claude Code +9 - 0.594score
julia-structure
michakraus
Answer a structural question about Julia code with tools that read it as Julia, not with grep: julia-methods.jl, Kaimon's live session and julia-callers.jl…
SkillAFreshness: A★ 2Claude Code +9 - 0.565score
which-model
michakraus
Probe: report which model runs a typed slash command whose frontmatter names the tier small.
SkillAFreshness: A★ 2Claude Code +9
Signals
- Stars
- 2
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Oct 23, 2026 (5 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/michakraus/ResearchHarness
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from michakraus
- 0.598score
math-verify
michakraus
Check one mathematical statement in Julia, analytically, symbolically or numerically, together with a case that should make the check fail, and keep the check…
SkillAFreshness: A★ 2Claude Code +9 - 0.598score
build-reviewed
michakraus
Build one part of a decomposed task file whose tier cell is reviewed: one part-builder, one blind part-critic, at most one fix round by a new part-builder…
SkillAFreshness: A★ 2Claude Code +9 - 0.598score
julia-package-audit
michakraus
Audit the correctness and code quality of a whole Julia package, and return one findings report in a fixed format: type piracy, type instabilities, avoidable…
SkillAFreshness: A★ 2Claude Code +9 - 0.598score
julia-performance
michakraus
Measure Julia performance so that the number means something: allocations, type stability, timings and before/after comparisons, each in a cold process with…
SkillAFreshness: A★ 2Claude Code +9 - 0.598score
julia-release
michakraus
Release and register a Julia package in the General registry.
SkillAFreshness: A★ 2Claude Code +9 - 0.598score
build-part
michakraus
Run the next part of a decomposed task file through the builder-critic loop.
SkillAFreshness: A★ 2Claude Code +9
Cite this page
plan-parts skill. Agent Mart. https://agentmart.dev/skills/michakraus-plan-parts (last updated 2026-10-24)