▶ Demo: the same request at three levels

Module 07 demo · ~3 minutes · one meeting note, summarized as an ask, a specification, and a contract

Repo & the three levels

client-project/
30 Meetings/ (the meeting notes)
.claude/skills/
The three levels
the ask · describe what you want
the specification · add checkable criteria
the contract · a shape software checks
What each level bought
same prompt, two runs, two shapes
criteria hit, checked in seconds ✓
criteria and example saved as a skill ✓
bad record caught by name, retried ✓
run one · fresh session
> summarize the pbm renewal meeting note

The meeting opened with a long discussion
of rate table discrepancies. The vendor
acknowledged the data feed delay...

DECISIONS
- reconcile rate tables (consulting team)
- legal review of clause 7

Readable. Organized the way this run
happened to organize it.
run two · fresh session, same prompt
> summarize the pbm renewal meeting note

KEY DECISIONS
1. Rate tables: reconcile by Friday
2. Clause 7 goes to legal

DISCUSSION
The data feed delay came up again...

Also fine. Also different: new headings,
new order, numbers instead of bullets.
Nothing is broken. Nothing is dependable.
the specification · same note
> summarize the pbm renewal meeting note.
  criteria: five bullets or fewer. every
  bullet names who committed to what, with
  the date if one was said. anything
  unresolved goes under one "Open" heading.

- consulting team: reconcile rate tables
  by 2026-08-15
- vendor counsel: legal review of clause 7,
  no date stated
- vendor IT: restore the data feed,
  by 2026-08-13

Open
- rebate true-up method still undecided

Count the bullets. Scan for owners.
One extra heading. Checked in ten seconds.
.claude/skills/meeting-summary/SKILL.md
---
name: meeting-summary
description: Summarize a meeting note into
  owner-and-date bullets plus an Open list.
---

Criteria:
- five bullets or fewer
- every bullet: who committed to what,
  date if one was said, else "no date
  stated"
- unresolved items under one "Open"
  heading. no other headings.

Worked example:
- consulting team: reconcile rate tables
  by 2026-08-15
“please return JSON” · two runs
Run one:
{"owner": "vendor counsel",
 "commitment": "legal review of clause 7"}

Run two:
Here is the summary as JSON:
{"owner": "vendor counsel",
 "commitment": "legal review of clause 7"}

A person reads both fine. The tracker
reading run two chokes on the polite
sentence in front of the data. Asking
almost always works. Almost is the bug.
the contract · four fields, checked by software
The schema, in plain words:

commitment   text, never empty
owner        text, never empty
due          YYYY-MM-DD or "none stated"
source_note  must name a real file

No other fields allowed.

Software checks every record against
this and says exactly what fails,
by field name. Not "looks wrong":
"due is missing".
enforcement in action
Record 3 came back:
{"commitment": "restore the data feed",
 "due": "2026-08-13"}

Check: FAIL. owner: missing.
       source_note: missing.

Retry, with the failure attached:
"record 3 is missing owner and
source_note. both are required."

{"commitment": "restore the data feed",
 "owner": "vendor IT",
 "due": "2026-08-13",
 "source_note": "2026-08-11 pbm-renewal.md"}

Check: PASS. The bad record never
reached the tracker.
Module 07 · Demo
The same request at three levels
One meeting note, summarized three ways: an ask, a specification, a contract. Watch what each level buys. Three parts:
1 · The ask 2 · The specification 3 · The contract
Pick the level the work deserves
One-off work you will read yourself: ask. Repeated work a person reviews: write the criteria, and save them as a skill. Output another tool consumes: give it a contract, and let software do the checking. The chapter teaches each level in depth.

Read the chapter →

Part 1 · The ask Part 2 · The specification Part 3 · The contract