You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 78e8bf7
Browse filesBrowse the repository at this point in the historyBrowse files
Copy file name to clipboardExpand all lines: courses/hands-on-python-with-claude-code/COURSE.md
+16-8Lines changed: 16 additions & 8 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,9 +4,9 @@ type: course
4
4
title: Hands-on Python with Claude Code
5
5
summary: An agent-taught course that takes you from a cloned folder to a tested, verified Python report tool using Claude Code — including the task contract, the bounded change, and the objective pass/fail evidence.
6
6
lang: en-US
7
-
content_version: 3
7
+
content_version: 4
8
8
status: reviewed
9
-
reviewed_on: 2026-09-12
9
+
reviewed_on: 2026-11-04
10
10
badge:
11
11
id: course-claude-code
12
12
name_en: Reproduce the failure
@@ -64,12 +64,20 @@ If you are the coding agent teaching this course, follow these rules:
64
64
- **When to stop:** a lesson is done when its checkpoint command runs and the
65
65
learner can say, in their own words, what failed and why. If the learner
66
66
cannot, re-teach from the failing test, not from the solution.
67
-
- **How to use `verify.py`:** the learner's command is plain
68
-
`python verify.py` — it runs the suites, prints per-checkpoint status
69
-
and earned claim codes, and exits non-zero while the gated checkpoints
70
-
(l03, l04) are still open. `starter --expect-failure` and `solution`
71
-
remain maintainer checks. "Done" means the default command shows every
72
-
gate `[passed]` after the learner's bounded change.- **Honesty rules:** say what you did not verify. Do not claim the code is
67
+
- **How to use `verify.py`:** `python verify.py` runs the suites and prints
68
+
per-checkpoint status and earned claim codes. L03/L04 become `[passed]`
69
+
and emit codes when their tests pass; the default command does not emit
70
+
self-report codes for L01/L02/L05. After the learner answers a reflection's
71
+
questions, explicitly add `--attest l01`, `--attest l02`, or `--attest l05`
72
+
for that completed reflection; never attest automatically. Attestations
73
+
are not persisted between runs, so repeat the flags for every completed
74
+
reflection on later runs. The command exits 1 while any objective
75
+
checkpoint is open or any self-report checkpoint is pending. "Done" means
76
+
L03/L04 are `[passed]` and L01/L02/L05 are `[attested]`, for example with
77
+
`python verify.py --attest l01 --attest l02 --attest l05` after all three
78
+
reflections and the bounded change are complete. `starter --expect-failure`
79
+
and `solution` remain maintainer checks.
80
+
- **Honesty rules:** say what you did not verify. Do not claim the code is
73
81
production-ready. Do not promise learning or career outcomes.
Copy file name to clipboardExpand all lines: courses/hands-on-python-with-claude-code/lessons/L01.md
+14-4Lines changed: 14 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,9 +4,9 @@ type: course
4
4
title: "Lesson 1: Set up Claude Code, install the FlyPython Skill, fetch the course"
5
5
summary: "Get Claude Code running, install the FlyPython Skill with network access approved, and let the agent fetch this course's files — you download nothing. Then make the starter's failure objective."
6
6
lang: en-US
7
-
content_version: 2
7
+
content_version: 3
8
8
status: reviewed
9
-
reviewed_on: 2026-09-12
9
+
reviewed_on: 2026-11-04
10
10
hints:
11
11
- title: "What this checkpoint tests"
12
12
body: "That you can reproduce the failure before fixing it: `python verify.py` must show l03 and l04 as `[open]` (`starter --expect-failure` prints the named tests). The checkpoint is seeing the failure objectively, not repairing it."
@@ -143,8 +143,18 @@ can answer, without looking:
143
143
3. What does the row you found in the exercise do to the starter — crash,
144
144
isolate, or silently pass?
145
145
146
-
This checkpoint's claim code is already in the default command's output —
147
-
submit it only once you can answer the questions.
146
+
The default command shows `l01` as `[pending]` and prints no claim code for
147
+
it. Only after doing the exercise and answering the questions yourself, run:
148
+
149
+
```bash
150
+
python verify.py --attest l01
151
+
```
152
+
153
+
The `l01` row now shows `[attested]` and its claim code; submit that code.
154
+
The command still exits with status 1 while other checkpoints remain open or
155
+
pending — this does not invalidate the `l01` code. Attestations apply only to
156
+
this run: repeat `--attest l01` on later checks, alongside flags for any other
157
+
reflection checkpoints you have actually completed. Keep both command outputs.
Copy file name to clipboardExpand all lines: courses/hands-on-python-with-claude-code/lessons/L02.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,9 +4,9 @@ type: course
4
4
title: "Lesson 2: Write the task contract before the change"
5
5
summary: 'Turn "make it better" into a bounded, testable contract — the single highest-leverage skill for working with coding agents.'
6
6
lang: en-US
7
-
content_version: 1
7
+
content_version: 2
8
8
status: reviewed
9
-
reviewed_on: 2026-09-12
9
+
reviewed_on: 2026-11-04
10
10
hints:
11
11
- title: "What this checkpoint tests"
12
12
body: "That you can read `TASK.md` as testable statements, not prose. Every sentence that starts with a function name is a contract line the suite can assert."
@@ -75,7 +75,7 @@ ambiguities, not add features.
75
75
Show your four lines to the agent and ask: "Which of these could you satisfy
76
76
by cheating — passing the test without the behavior?" If neither of you can
77
77
find a cheat path, your contract is concrete enough. Fix any line that fails
78
-
this test.
78
+
this test, then claim this checkpoint with `python verify.py --attest l02`.
Copy file name to clipboardExpand all lines: courses/hands-on-with-cursor/COURSE.md
+16-8Lines changed: 16 additions & 8 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,9 +4,9 @@ type: course
4
4
title: Hands-on with Cursor
5
5
summary: The verified Python workflow — task contract, bounded change, objective verify.py evidence — taught hands-on in Cursor, where Agent mode runs the loop and you supervise diffs and project rules.
6
6
lang: en-US
7
-
content_version: 2
7
+
content_version: 3
8
8
status: reviewed
9
-
reviewed_on: 2026-09-13
9
+
reviewed_on: 2026-11-04
10
10
badge:
11
11
id: course-cursor
12
12
name_en: Reproduce with Cursor in the loop
@@ -69,12 +69,20 @@ If you are the Cursor agent teaching this course, follow these rules:
69
69
- **When to stop:** a lesson is done when its checkpoint command runs and
70
70
the learner can say, in their own words, what failed and why. If the
71
71
learner cannot, re-teach from the failing test, not from the solution.
72
-
- **How to use `verify.py`:** the learner's command is plain
73
-
`python verify.py` — it runs the suites, prints per-checkpoint status
74
-
and earned claim codes, and exits non-zero while the gated checkpoints
75
-
(l03, l04) are still open. `starter --expect-failure` and `solution`
76
-
remain maintainer checks. "Done" means the default command shows every
77
-
gate `[passed]` after the learner's bounded change.- **Honesty rules:** say what you did not verify. Do not claim the code is
72
+
- **How to use `verify.py`:** `python verify.py` runs the suites and prints
73
+
per-checkpoint status and earned claim codes. L03/L04 become `[passed]`
74
+
and emit codes when their tests pass; the default command does not emit
75
+
self-report codes for L01/L02/L05. After the learner answers a reflection's
76
+
questions, explicitly add `--attest l01`, `--attest l02`, or `--attest l05`
77
+
for that completed reflection; never attest automatically. Attestations
78
+
are not persisted between runs, so repeat the flags for every completed
79
+
reflection on later runs. The command exits 1 while any objective
80
+
checkpoint is open or any self-report checkpoint is pending. "Done" means
81
+
L03/L04 are `[passed]` and L01/L02/L05 are `[attested]`, for example with
82
+
`python verify.py --attest l01 --attest l02 --attest l05` after all three
83
+
reflections and the bounded change are complete. `starter --expect-failure`
84
+
and `solution` remain maintainer checks.
85
+
- **Honesty rules:** say what you did not verify. Do not claim the code is
78
86
production-ready. Do not promise learning or career outcomes.
0 commit comments