Day 1: From chat to spec
You delete the entire system prompt, and then you bring it back line by line.
Boris Cherny, on how Claude Code's own instructions were cut, reported 2026-08-05. Today you do the small version of that to aCLAUDE.md.
Today you stop asking and start assigning. The first half is the mechanical
shift: what an agent has that a chat session does not, a prompt that is an assignment rather than
a question, and plan mode, which lets you reject a change before it exists — ending on a
seeded bug taken from red to green. The second half turns that prompt into a file: a spec with
numbered criteria a command can fail, then a cut of the lane's roughly 180-line
CLAUDE.md to under 40 lines.
Watch this first
Before you start
You never edit sandbox/ itself. Day 1 works in day1-work, a copy of
your lane that Exercise 1 makes at the course root; start Claude Code inside it, because every
command and every path on every Day 1 page is written from inside it. Lessons 1 and 2 need no
folder; Exercise 1 creates day1-work. Two kinds of block run from
the course root instead: the setup blocks of Exercises 1 to 3, which leave you in
day1-work, and the end-of-day cleanup at the foot of Exercises 1 and 4,
rm -rf day1-work. Starter files sit one level up, at
../day-1-from-chat-to-spec/starter/…, and your answers one level up too, in
../work/, which nothing on a Day 1 page deletes. Day 2 and Day 3 write there too, so
it stays until the Day 3 wrap-up removes it when you are done for good.
Below is the command that decides in your lane. Exercise 1 runs it inside
day1-work before anything changes, so that when Day 1 turns a test red on purpose you
know where the red came from.
swift test
A green run from this machine on 2026-09-22 carries this verdict for the whole suite and its count line:
Test Suite 'All tests' passed at ….
Executed 34 tests, with 1 test skipped and 0 failures (0 unexpected) in … seconds
The skipped test is the seeded bug; Exercise 2 turns it on.
./gradlew test
A green run from this machine on 2026-09-22 carries Gradle's verdict:
BUILD SUCCESSFUL in …
5 actionable tasks: 5 executed
Consider enabling configuration cache to speed up this build: …
This lane gates the seeded bug's test on an environment variable, so it does not run and the summary carries no test counts; Exercise 2 turns it on.
The reset is the same everywhere: delete day1-work, copy the lane again, step back
in. It uses no git, so a download works as well as a clone, and it reaches nothing outside the
copy: the shipped sandbox/ and your ../work/ answers survive. Quit
Claude Code first, run it from inside day1-work, then start Claude Code there
again.
cd .. && rm -rf day1-work && cp -R sandbox/swift day1-work && cd day1-work
cd .. && rm -rf day1-work && cp -R sandbox/kotlin day1-work && cd day1-work
- Claude Code, signed in;
claude --versionprints your version. - Your lane's toolchain from Setup: Swift 6.2 or later.
- Your lane's toolchain from Setup: a JDK 17 or later with the committed Gradle wrapper.
The day in order
Nine pages after the video, in this order. Lessons 1 and 2 share a page, as do Lessons 4 and 5, so the six lessons take four pages. Exercise 3 follows Lessons 4 and 5 and uses both halves. The day's first change is LEDGER-7, the seeded bug; Exercise 3's Change B, the pending-aware daily summary, is the second, and Day 3 has a Change C.
Ticks need JavaScript and stay in this browser.
Starter files
Today's starter folder is day-1-from-chat-to-spec/starter/ at the course root, one
level up from day1-work. Exercise 1 makes that copy; each exercise then copies the
starter file it needs when it needs it, so there is nothing to install now.
README.md— what each file below is for, and where it is copied.tickets/LEDGER-7.md— Exercise 2's bug ticket, with no acceptance criteria in it.plan-checklist.md— the six-item checklist Exercise 2 fills in at../work/plan.md.change-b-brief.md— Exercise 3's pending-aware daily summary brief, in a product manager's words.specs/TEMPLATE.md— the spec skeleton: goal, non-goals, numbered criteria, the criterion-to-command grid, bounds, verification, stop conditions, definition of done.spec-template.md— the template again, annotated section by section: what each one is for, what a filled version looks like, and the specific way each one gets filled badly. Read it before Exercise 3.prompts/— every prompt on these pages as a file, to paste from disk instead.rules/EXAMPLE-formatting.md— the path-scoped rules file Exercise 4 copies intoday1-work.answers/—e1-comparison.md,e2-plan-checklist.md,e3-spec-daily-summary.mdande4-claude-md-keepers.md, the comparisons the exercises reveal, each worth less the earlier you open it.
Videos and reading
Every video sits on the page that uses it; none is required to finish an exercise:
- Recommended videos — the opener and one clip per lesson, with the segment and why each was picked.
- Reading — the articles, docs and repositories behind the lessons, grouped by day.
Sources
context-eng-12— the quotation above, 2026-08-05: the ablation playbook. Lesson 6 uses the method.cc-core-31,cc-core-32—claude --version, and the version checked against here, Claude Code 2.1.280 on 2026-09-22, from the Claude Code changelog.