|
59 | 59 | "path": "courses/agent-rules-single-source/COURSE.md", |
60 | 60 | "title": "One source of truth for agent rules", |
61 | 61 | "summary": "Stop maintaining diverging AGENTS.md, CLAUDE.md, and .cursorrules files — build a checker that proves your repository has exactly one rule source, taught hands-on with your coding agent.", |
62 | | - "sha256": "b09497cd76bea0191c3944dec61cc9bb89f245a21750fcf5013f4c4d4db7d51c" |
| 62 | + "sha256": "d7dd7ed26db699c576046c2e103d6d94a2299805dca0d6b6153a4d6ccafcba6e" |
63 | 63 | }, |
64 | 64 | { |
65 | 65 | "lang": "zh-CN", |
66 | 66 | "path": "courses/agent-rules-single-source/COURSE_cn.md", |
67 | 67 | "title": "Agent 规则的单一真源", |
68 | 68 | "summary": "不再同时维护彼此打架的 AGENTS.md、CLAUDE.md 与 .cursorrules——亲手构建一个能证明仓库只有一处规则真源的检查器,由你的编码 Agent 授课。", |
69 | | - "sha256": "245fc0cc40f3103ed5fed99f6f656e9b04ff7093bd0d0782203a0dbafa647864" |
| 69 | + "sha256": "bf81ca5856328e1ef4f204707ad002f49704486ab2589d3b52cf366285e8222f" |
70 | 70 | } |
71 | 71 | ] |
72 | 72 | }, |
|
197 | 197 | "path": "courses/hands-on-python-with-claude-code/COURSE.md", |
198 | 198 | "title": "Hands-on Python with Claude Code", |
199 | 199 | "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.", |
200 | | - "sha256": "aec892c18cd7446b9d08c69b116d8c00a0bffc6b6ea6d715dfc969298708d5a3" |
| 200 | + "sha256": "50165b3b9aa9979d565ab34057977b7b7264cec739be1900ec3988876731c132" |
201 | 201 | }, |
202 | 202 | { |
203 | 203 | "lang": "zh-CN", |
204 | 204 | "path": "courses/hands-on-python-with-claude-code/COURSE_cn.md", |
205 | 205 | "title": "用 Claude Code 实战 Python", |
206 | 206 | "summary": "一门由 Agent 授课的课程:从下载课程文件夹到交付一个经过测试与验证的 Python 报表工具——包括任务契约、最小变更和客观的通过/失败证据。", |
207 | | - "sha256": "185e21a796cac870969f2fff73b3f103eb4a43e215c11be9f0044dc3ec0e7e22" |
| 207 | + "sha256": "8c73c31d5901ff9bbe9e79e97342688b6737657ab05f1b71a767125ca398e2d3" |
208 | 208 | } |
209 | 209 | ] |
210 | 210 | }, |
|
335 | 335 | "path": "courses/hands-on-with-openai-codex-cli/COURSE.md", |
336 | 336 | "title": "Hands-on with OpenAI Codex CLI", |
337 | 337 | "summary": "The same verified Python workflow as the Claude Code course — task contract, bounded change, objective verify.py evidence — taught hands-on with the OpenAI Codex CLI instead.", |
338 | | - "sha256": "a0dfd154f544fee2eedfc5a34546286af344afd7e6901abef6dec9ba0967fb76" |
| 338 | + "sha256": "48e81f530f58ef69fe92e6312b08f01b4661f311cf07371809ce206e2eecd474" |
339 | 339 | }, |
340 | 340 | { |
341 | 341 | "lang": "zh-CN", |
342 | 342 | "path": "courses/hands-on-with-openai-codex-cli/COURSE_cn.md", |
343 | 343 | "title": "OpenAI Codex CLI 实战", |
344 | 344 | "summary": "与 Claude Code 课程相同的已验证 Python 工作流——任务契约、最小变更、客观 verify.py 证据——改用 OpenAI Codex CLI 完成实战。", |
345 | | - "sha256": "058985bd5e3f274df28de5ab12ba400eb3ea1367be7daee25a3b98424d4656b3" |
| 345 | + "sha256": "bbdf5d8a71d8243f1cb7a3c30d2aa4ddb656cb932d36aaae3d543e3b5f7ea3c2" |
346 | 346 | } |
347 | 347 | ] |
348 | 348 | }, |
|
461 | 461 | } |
462 | 462 | ] |
463 | 463 | }, |
| 464 | + { |
| 465 | + "id": "course-da-eda", |
| 466 | + "type": "course", |
| 467 | + "content_version": 1, |
| 468 | + "status": "reviewed", |
| 469 | + "reviewed_on": "2026-09-12", |
| 470 | + "locales": [ |
| 471 | + { |
| 472 | + "lang": "en-US", |
| 473 | + "path": "courses/da-eda/COURSE.md", |
| 474 | + "title": "Exploratory Data Analysis with an Agent", |
| 475 | + "summary": "A challenge course — point your agent at a messy shop export and produce a verified EDA summary (results.json) whose numbers are checked against ground truth. First non-stdlib course in the catalog; pandas is managed with uv.", |
| 476 | + "sha256": "3d5a7d05b6b48a667eeca51f7c6232e95c231d7cb4f78d3826de02c6a0a55b85" |
| 477 | + }, |
| 478 | + { |
| 479 | + "lang": "zh-CN", |
| 480 | + "path": "courses/da-eda/COURSE_cn.md", |
| 481 | + "title": "用 Agent 做探索性数据分析", |
| 482 | + "summary": "挑战式课程——让你的 Agent 处理一份脏的商店导出数据,产出一份经过真值校验的 EDA 摘要(results.json)。目录中第一门非标准库课程;pandas 由 uv 管理。", |
| 483 | + "sha256": "ef5272a728fc540f4bedb3c650a1789d50a32cc90883aacd3202ba10360b4f00" |
| 484 | + } |
| 485 | + ] |
| 486 | + }, |
| 487 | + { |
| 488 | + "id": "course-da-report", |
| 489 | + "type": "course", |
| 490 | + "content_version": 1, |
| 491 | + "status": "reviewed", |
| 492 | + "reviewed_on": "2026-09-12", |
| 493 | + "locales": [ |
| 494 | + { |
| 495 | + "lang": "en-US", |
| 496 | + "path": "courses/da-report/COURSE.md", |
| 497 | + "title": "From Analysis to Report with an Agent", |
| 498 | + "summary": "Challenge course — turn a verified EDA summary into a structured report (report.json + report.md) where every number traces back to its input. Verification checks structure and number consistency, not writing quality.", |
| 499 | + "sha256": "d2b978ad0e561b90734d747c4551cda91dddf8619e4d388799b67a4b59344496" |
| 500 | + }, |
| 501 | + { |
| 502 | + "lang": "zh-CN", |
| 503 | + "path": "courses/da-report/COURSE_cn.md", |
| 504 | + "title": "用 Agent 从分析到报告", |
| 505 | + "summary": "挑战课程——把经过验证的 EDA 摘要变成结构化报告(report.json + report.md),其中每个数字都可回溯到输入。验证检查结构与数字一致性,不评价文笔。", |
| 506 | + "sha256": "c825ca0039fd828e4133a1a14956907a7cf8a74ff0c2e736f387c16fd26723e7" |
| 507 | + } |
| 508 | + ] |
| 509 | + }, |
| 510 | + { |
| 511 | + "id": "course-da-visualization", |
| 512 | + "type": "course", |
| 513 | + "content_version": 1, |
| 514 | + "status": "reviewed", |
| 515 | + "reviewed_on": "2026-09-12", |
| 516 | + "locales": [ |
| 517 | + { |
| 518 | + "lang": "en-US", |
| 519 | + "path": "courses/da-visualization/COURSE.md", |
| 520 | + "title": "Data Visualization with an Agent", |
| 521 | + "summary": "Challenge course — turn a clean sales dataset into three spec'd charts plus a summary.json whose numbers are verified against the data. Charts must be generated from data, never hardcoded.", |
| 522 | + "sha256": "950c213e5093c415a6a78988fa7bb1c0056fd23b2d27225a762b977a70af3a5f" |
| 523 | + }, |
| 524 | + { |
| 525 | + "lang": "zh-CN", |
| 526 | + "path": "courses/da-visualization/COURSE_cn.md", |
| 527 | + "title": "用 Agent 做数据可视化", |
| 528 | + "summary": "挑战课程——把干净的销售数据变成三张有规格的图和一份 summary.json,其中数字会与数据集校验。图必须由数据生成,不许硬编码。", |
| 529 | + "sha256": "6c614cb91314a2b75b51e677d50a6d214355047eeb48def66fa0fc3105c3a690" |
| 530 | + } |
| 531 | + ] |
| 532 | + }, |
464 | 533 | { |
465 | 534 | "id": "course-mcp-tools", |
466 | 535 | "type": "course", |
|
473 | 542 | "path": "courses/mcp-server-in-python/COURSE.md", |
474 | 543 | "title": "Give your agent tools with MCP (Python)", |
475 | 544 | "summary": "Build a stateless Model Context Protocol tool server in pure Python — JSON-RPC 2.0 dispatch, schema validation, error isolation, and the 2026-07-28 input_required round-trip — and learn where a real tool belongs.", |
476 | | - "sha256": "7cf318f04fd92925789d11cff48afc249fbe4f96b02e68bfa30fe054f0b6da22" |
| 545 | + "sha256": "de677071dab7c06244ad0634a7266372619af38a8de60b8257af0570de1b9cb4" |
477 | 546 | }, |
478 | 547 | { |
479 | 548 | "lang": "zh-CN", |
480 | 549 | "path": "courses/mcp-server-in-python/COURSE_cn.md", |
481 | 550 | "title": "用 MCP 给你的 Agent 装上工具(Python)", |
482 | 551 | "summary": "用纯 Python 构建一个无状态的 Model Context Protocol 工具服务——JSON-RPC 2.0 分发、schema 校验、错误隔离与 2026-07-28 的 input_required 多轮交互——并理解真正的工具该放在哪里。", |
483 | | - "sha256": "74af520640128e8df445f5e7af6f8391eb525af26698871b560fd98a6816961e" |
| 552 | + "sha256": "d125779e096e3b76b97caf51db25577869ee9fadd23447e02f9aea1d5d5066ee" |
484 | 553 | } |
485 | 554 | ] |
486 | 555 | }, |
|
611 | 680 | "path": "courses/verifying-ai-generated-code/COURSE.md", |
612 | 681 | "title": "From \"it runs\" to \"it ships\": verifying AI-generated code", |
613 | 682 | "summary": "Build the release-evidence machine your AI-written project is missing — a ship check that runs the tests, parses what actually ran, refuses zero-test projects, and writes an honest delivery record.", |
614 | | - "sha256": "d4f2b0448f3c637acfdff97e76ab72e622833f4904376d0fad4e54dbe189ef23" |
| 683 | + "sha256": "88b1a775241a69b11b868bfae72e2954ad93b608789a9230a46431549444e9ed" |
615 | 684 | }, |
616 | 685 | { |
617 | 686 | "lang": "zh-CN", |
618 | 687 | "path": "courses/verifying-ai-generated-code/COURSE_cn.md", |
619 | 688 | "title": "从「能跑」到「能上线」:验证 AI 写的代码", |
620 | 689 | "summary": "为你的 AI 项目补上缺失的发布证据机器——一个 ship check:运行测试、解析实际跑了什么、拒绝零测试项目,并写出诚实的交付记录。", |
621 | | - "sha256": "50b2624cdae9a7597b841ec8f70339d928b431ceff4638e9c3e1e67d90a06188" |
| 690 | + "sha256": "fe2cc54cd9e37ddebb2c80c2cba52f40f5ce272566fd818c448b97e80c03c8ba" |
622 | 691 | } |
623 | 692 | ] |
624 | 693 | }, |
|
898 | 967 | } |
899 | 968 | ] |
900 | 969 | }, |
| 970 | + { |
| 971 | + "id": "path-da-capstone", |
| 972 | + "type": "path", |
| 973 | + "content_version": 1, |
| 974 | + "status": "reviewed", |
| 975 | + "reviewed_on": "2026-09-12", |
| 976 | + "locales": [ |
| 977 | + { |
| 978 | + "lang": "en-US", |
| 979 | + "path": "paths/data-analysis/modules/capstone.md", |
| 980 | + "title": "Capstone: verified analysis of a real dataset", |
| 981 | + "summary": "Data Analysis path capstone — end-to-end clean, explore, and report on orders.csv with verify.py checking the numbers.", |
| 982 | + "sha256": "814507300283d9c7c27409138e35ebc57ab85dcc04a1f468e11b486783b580f1" |
| 983 | + }, |
| 984 | + { |
| 985 | + "lang": "zh-CN", |
| 986 | + "path": "paths/data-analysis/modules/capstone_cn.md", |
| 987 | + "title": "综合项目:真实数据集的验证分析", |
| 988 | + "summary": "数据分析路线综合项目——在 orders.csv 上端到端完成清洗、探索与报告,verify.py 校验数字。", |
| 989 | + "sha256": "5f2af0b8b6c384e5fd430e603df573bee3c8cdfb564c500ad7d733d813b4778e" |
| 990 | + } |
| 991 | + ] |
| 992 | + }, |
| 993 | + { |
| 994 | + "id": "path-foundation-challenge", |
| 995 | + "type": "path", |
| 996 | + "content_version": 1, |
| 997 | + "status": "reviewed", |
| 998 | + "reviewed_on": "2026-09-12", |
| 999 | + "locales": [ |
| 1000 | + { |
| 1001 | + "lang": "en-US", |
| 1002 | + "path": "paths/foundation/modules/route-challenge.md", |
| 1003 | + "title": "Route challenge: dual-agent, double-verified", |
| 1004 | + "summary": "Foundation path capstone — run the same task through Claude Code and Codex CLI and verify both outputs yourself.", |
| 1005 | + "sha256": "12390205b366d179afd34fc60fc557ed3aca53d10f6474a73d922b2cbbf3045a" |
| 1006 | + }, |
| 1007 | + { |
| 1008 | + "lang": "zh-CN", |
| 1009 | + "path": "paths/foundation/modules/route-challenge_cn.md", |
| 1010 | + "title": "路线挑战:双 Agent、双重验证", |
| 1011 | + "summary": "基础路线收官挑战——同一任务分别用 Claude Code 与 Codex CLI 完成并亲手双重验证。", |
| 1012 | + "sha256": "86add318cc3094155f0a3f05eb05947d351af312c7f78f777f290be953cf27ab" |
| 1013 | + } |
| 1014 | + ] |
| 1015 | + }, |
| 1016 | + { |
| 1017 | + "id": "path-foundation-m0", |
| 1018 | + "type": "path", |
| 1019 | + "content_version": 1, |
| 1020 | + "status": "reviewed", |
| 1021 | + "reviewed_on": "2026-09-12", |
| 1022 | + "locales": [ |
| 1023 | + { |
| 1024 | + "lang": "en-US", |
| 1025 | + "path": "paths/foundation/modules/m0-orientation.md", |
| 1026 | + "title": "The agent tool landscape", |
| 1027 | + "summary": "Foundation path module 0 — orientation on Claude Code, Codex CLI, and Cursor; install one agent and observe its evidence habits.", |
| 1028 | + "sha256": "2c40a01bff3ab9cf40c6f453201a381d4a4d02ebc7246af46984b2548496f40f" |
| 1029 | + }, |
| 1030 | + { |
| 1031 | + "lang": "zh-CN", |
| 1032 | + "path": "paths/foundation/modules/m0-orientation_cn.md", |
| 1033 | + "title": "Agent 工具生态总览", |
| 1034 | + "summary": "基础路线模块 0——Claude Code、Codex CLI、Cursor 生态导览;装一个 Agent 并观察它的证据习惯。", |
| 1035 | + "sha256": "4d6b4ecbc2eb0d0ef5c2e9522466f0c9ace056bd4ad8db4a9e116aa5916e64bb" |
| 1036 | + } |
| 1037 | + ] |
| 1038 | + }, |
901 | 1039 | { |
902 | 1040 | "id": "product-slug-example", |
903 | 1041 | "type": "example", |
|
0 commit comments