sprint-contract
Negotiate a pre-code contract between generator and evaluator personas that defines what "done" means before any code is written.
Skill by Archive228
Chalk Labs
Need help deploying sprint-contract?
Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.
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/archive228-sprint-contract
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: documents
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/sprint-contract
What's inside
- Skill name
sprint-contract- Description
- Negotiate a pre-code contract between generator and evaluator personas that defines what "done" means before any code is written. Turns fuzzy specs into a testable target the evaluator can hold the generator to.
- License
- MIT
- Instructions
- 68 lines in SKILL.md · view on GitHub
Files (1)
- SKILL.md
SKILL.md (first lines)
# Sprint Contract
The evaluator's leverage collapses when "done" is defined *after* the code exists. The generator ships something, the evaluator finds it plausible, the fuzzy spec silently reshapes to match what got built. Premature victory, dressed up.
Fix the timing: write the contract *before* the generator writes a line of code. The evaluator's job for the sprint is then mechanical — hold the artifact against the contract, no re-negotiation mid-flight.
Inspired by the planner/generator/evaluator split in Prithvi's March 2026 post on multi-agent harnesses.
## When to apply
- You're about to start a chunk of work (one feature, one refactor, one bug fix) with an evaluator or reviewer persona in the loop.
- The planner output or upstream spec is ambiguous — you can imagine two reasonable implementations that both "satisfy" it.
- A session just rehydrated from `shift-notes` / a progress file and needs a concrete acceptance target before it picks up the keyboard.
## Procedure
1. **Name the one deliverable.** One feature, one sentence, user-observable. If you can't say it in a sentence, the sprint is too big — split it, contract the first slice.
2. **Write the acceptance predicates.** 3-7 bullets, each one a check that either passes or fails. No "clean code", no "good UX" — write predicates a script or a browser click can decide.
3. **Name the runtime path.** How is this exercised end-to-end? Which URL, which CLI invocation, which button click? The evaluator will drive this exact path — no substitutes.
4. **List the out-of-scope items.** Two or three things the generator will be tempted to also fix. Written down = evaluator will reject them as scope creep, generator has an anchor when tempted.
5. **Sign it in the shift notes.** Paste the contract into `claude-progress.txt` (or equivalent) under a `## Sprint contract` header, with the sprint start timestamp. Both personas reference this exact text for the rest of the sprint.
6. **Then, and only then, write code.**
## Contract shape
```
## Sprint contract — <ISO timestamp>
Deliverable: <one sentence, user-observable>
Acceptance predicates:
- [ ] <predicate 1 — script-decidable>
- [ ] <predicate 2>
- [ ] <predicate 3>
Runtime path: <exact URL / CLI / click sequence the evaluator will drive>
Out of scope this sprint:
- <tempting adjacent fix>
- <tempting refactor>
```
## Anti-patterns
- **Predicates that are prose, not checks.** "Handles errors gracefully" is not a predicate. "Returns 400 with `{error: "missing_field"}` when `name` is absent" is.
- **Renegotiating mid-sprint.** If the generator hits a wall, it does not edit the contract to route around it. It surfaces the wall, the *planner* revises scope, a new contract gets signed. Evaluator leniency comes from mid-flight edits — block them structurally.
- **Contract written by the generator alone.** The generator will write predicates its planned code happens to satisfy. Have the evaluator draft or at least sign off before code starts.
- **No runtime path.** Without it, the evaluator falls back to reading unit tests — see [[broken-window-check]] for how that fails.
- **Skipping the out-of-scope list.** This is the cheapest anti-drift device you have. Skip it and you'll ship a "small refactor" that broke two other features.
## Rehydration case
Fresh session, no memory of the previous one. Read `shift-notes`, find the last signed contract with unchecked predicates. That is your target — no re-planning, no reinterpretation. Drive the runtime path, tick the predicates, ship. If the contract looks wrong on inspection, do not edit it; revert to the planner, get a new one signed.
## Cost
Two to five minutes of prose before code. In return: the evaluator has something to be strict about, the generator has an anchor against scope drift, and the next session inherits a testable target instead of a vibe.
## Related
- [[shift-notes]] — where the contract lives across sessions.
- [[broken-window-check]] — what the evaluator runs *against* the contract at session start.
- [[adversarial-verify]] — the end-of-sprint pass that decides whether every predicate actually holds.
## When NOT to apply
Trivial edits (typo fix, one-line config change, dependency bump) — the contract overhead exceeds the work. Solo runs with no evaluator persona in the loop — write yourself a one-line acceptance note instead and move on.From Archive228/loopkit, MIT.
More from Archive228/loopkit
- 0.701score
structured-output
Archive228
Get JSON out of the model reliably.
SkillCFreshness: C★ 755Claude Code +9 - 0.701score
prompt-caching
Archive228
Cache the parts of the prompt that don't change so a long-running loop stops paying full price on every turn.
SkillCFreshness: C★ 755Claude Code +9 - 0.701score
using-loopkit
Archive228
Use when starting any conversation in a loopkit-enabled project - establishes how to find and use loopkit's 49 skills, requiring skill invocation before ANY…
SkillCFreshness: C★ 755Claude Code +9 - 0.701score
hitl-escalate
Archive228
Escalate blocked runs to a human via configured channel or fallback to BLOCKED.md and exit the loop.
SkillCFreshness: C★ 755Claude Code +9 - 0.698score
active-memory-reminder
Archive228
Before compaction Loopkit extracts decisions into claude-decisions.json (machine-readable).
SkillCFreshness: C★ 755Claude Code +9 - 0.698score
broken-window-check
Archive228
Before picking new work, smoke-test the last "completed" feature.
SkillCFreshness: C★ 755Claude Code +9 - 0.698score
model-routing
Archive228
Split the Plan/Act/Verify loop across three model tiers — frontier planner, cheap executor, frontier judge — via env vars read by run.sh.
SkillCFreshness: C★ 755Claude Code +9 - 0.698score
adversarial-verify
Archive228
Review a diff against the goal spec assuming the code is BROKEN.
SkillCFreshness: C★ 755Claude Code +9 - 0.698score
feature-list-json
Archive228
Enumerate every end-to-end feature as strict JSON entries with passes:false, editable-passes-only discipline, and priority order.
SkillCFreshness: C★ 755Claude Code +9 - 0.698score
evaluator-calibration
Archive228
Calibrate a reviewer persona with few-shot rubric examples so skepticism stays consistent and doesn't drift lenient over long runs.
SkillCFreshness: C★ 755Claude Code +9 - 0.698score
harness-stripping
Archive228
Systematically remove one harness component at a time and measure impact, killing scaffolding that no longer earns its complexity.
SkillCFreshness: C★ 755Claude Code +9 - 0.698score
eval-harness
Archive228
Build a repeatable eval loop that grades agent output with an LLM judge, so prompt/skill changes get scored against a baseline instead of eyeballed.
SkillCFreshness: C★ 755Claude Code +9
Signals
- Stars
- 755
- Forks
- 124
- Open issues
- 0
- Last commit (this folder)
- Jul 10, 2026 (3 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/Archive228/loopkit
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from Archive228
- 0.701score
structured-output
Archive228
Get JSON out of the model reliably.
SkillCFreshness: C★ 755Claude Code +9 - 0.701score
using-loopkit
Archive228
Use when starting any conversation in a loopkit-enabled project - establishes how to find and use loopkit's 49 skills, requiring skill invocation before ANY…
SkillCFreshness: C★ 755Claude Code +9 - 0.701score
hitl-escalate
Archive228
Escalate blocked runs to a human via configured channel or fallback to BLOCKED.md and exit the loop.
SkillCFreshness: C★ 755Claude Code +9 - 0.701score
prompt-caching
Archive228
Cache the parts of the prompt that don't change so a long-running loop stops paying full price on every turn.
SkillCFreshness: C★ 755Claude Code +9 - 0.698score
harness-stripping
Archive228
Systematically remove one harness component at a time and measure impact, killing scaffolding that no longer earns its complexity.
SkillCFreshness: C★ 755Claude Code +9 - 0.698score
broken-window-check
Archive228
Before picking new work, smoke-test the last "completed" feature.
SkillCFreshness: C★ 755Claude Code +9
Done for you
Rather not set it up yourself?
Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.
See how we build AI agents →Read the case studies
Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.
- launches shipped
- 50+
- launches shipped
- media placements
- 500+
- media placements
- founders on every account
- 2
- founders on every account
Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block
Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.
Get sprint-contract running in your business
Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.
Cite this page
sprint-contract skill. Agent Mart. https://agentmart.dev/skills/archive228-sprint-contract (last updated 2026-10-24)