GeezerVisonThe World Wide Web, restored to 800 pixels of glory. |
| Home|About|Gaming cabinet|Archives|How it works|Starter sites |
GeezerVison is showing github.com — python/course-registry.json at master · flypythoncom/python Expand file tree/ Copy pathcourse-registry.jsonMore file actions 1913 lines (1913 loc) · 97 KB / Copy pathcourse-registry.jsonFile metadata and controls1913 lines (1913 loc) · 97 KB 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 { "schema_version": 1, "courses": [ { "id": "hands-on-python-with-claude-code", "teachingRunPending": true, "tool": "Claude Code 2.x", "toolZh": "Claude Code 2.x", "title": "Hands-on Python with Claude Code", "titleZh": "用 Claude Code 实战 Python", "summary": "A challenge course that takes you from a broken script to a tested, verified Python report tool — one sentence starts it in your agent, which fetches the course itself. Task contract, bounded change, and objective pass/fail evidence; guided agent-taught mode included.", "summaryZh": "一门挑战课程:从一个跑不起来的脚本到交付一个经过测试与验证的 Python 报表工具——一句话即可在你的 Agent 里开课,课程文件由 Agent 自己获取。任务契约、最小变更与客观的通过/失败证据;内含可选的 Agent 引导模式。", "outcome": "A working scenario report tool (CSV + JSON inputs, error isolation, rounded aggregates, atomic report writes) that passes a nine-test suite — plus a contract-first workflow you can apply to your own script the same day.", "outcomeZh": "一个可运行的场景报表工具(CSV + JSON 输入、错误隔离、聚合舍入、原子写报告),通过九个测试——外加一套当天就能迁移到自己脚本的契约优先工作流。", "prerequisites": [ "Python 3.11 or newer available on your PATH", "Claude Code 2.x installed and signed in", "Comfort running shell commands; no Python packages are installed", "No prior testing experience required" ], "prerequisitesZh": [ "PATH 中有 Python 3.11 或更新版本", "已安装并登录 Claude Code 2.x", "能运行 shell 命令;无需安装任何 Python 包", "不要求有测试经验" ], "lessons": [ { "id": "l01", "title": "Set up Claude Code, install the FlyPython Skill, fetch the course", "titleZh": "装好 Claude Code、装上 FlyPython Skill、让 Agent 取回课程", "objective": "Start Claude Code, authorize the FlyPython Skill, fetch this course's files, and run the starter's objective check.", "objectiveZh": "启动 Claude Code、授权 FlyPython Skill、取回本课文件,并运行 starter 的客观检查。" }, { "id": "l02", "title": "Write the task contract before the change", "titleZh": "动手之前先写任务契约", "objective": "Turn “make it better” into testable contract statements, trace each to a test, and write one contract line for your own project.", "objectiveZh": "把「优化一下」变成可测试的契约陈述,逐条对应到测试,并为自己的项目写出一条契约。" }, { "id": "l03", "title": "Drive a bounded change, test by test", "titleZh": "按测试驱动一次有边界的变更", "objective": "Supervise the agent through seven small diffs — smallest change, no new dependencies, one failing test group at a time — until the starter passes.", "objectiveZh": "监督 Agent 完成七个小 diff——最小变更、不新增依赖、一次一组测试——直到 starter 通过。" }, { "id": "l04", "title": "Verify like an engineer, review like a skeptic", "titleZh": "像工程师一样验证,像怀疑者一样审查", "objective": "Complete the evidence loop: verify both directions, exercise all three scenario skins, review the diff for scope creep, and record what is not proven.", "objectiveZh": "完成证据闭环:双向验证、跑通三个场景皮肤、审查 diff 是否越界,并记录未证明的部分。" }, { "id": "l05", "title": "Apply this to your own project", "titleZh": "把这套方法带回你自己的项目", "objective": "Port the workflow — not the code — to one script you own, with a contract, one new failing test made to pass, and an honest verification record.", "objectiveZh": "把工作流(而不是代码)迁移到你自己的一个脚本上:一份契约、一个从红变绿的测试、一份诚实的验证记录。" } ], "scenarios": [ { "id": "excel-report", "title": "Excel / report automation", "titleZh": "Excel / 报表自动化", "dataFile": "orders.csv", "blurb": "Turn a messy weekly orders export into a per-region sales summary.", "blurbZh": "把混乱的每周订单导出变成按区域汇总的销售摘要。" }, { "id": "data-monitor", "title": "Data monitor script", "titleZh": "数据监控脚本", "dataFile": "metrics.csv", "blurb": "Aggregate service latency numbers and isolate malformed readings.", "blurbZh": "汇总服务延迟数据,并隔离格式错误的读数。" }, { "id": "api-tool", "title": "Small API tool", "titleZh": "小型 API 工具", "dataFile": "tickets.json", "blurb": "Summarize ticket data pulled from an internal API (JSON input).", "blurbZh": "汇总从内部 API 拉取的工单数据(JSON 输入)。" } ], "verification": { "method": "The course ships a nine-test contract suite. The starter must reproduce seven named failures; the reviewed solution passes 9/9. The same suite verifies your own bounded change in lesson 3.", "methodZh": "课程自带九个测试的契约套件。starter 必须复现七个具名失败;已审核的实现 9/9 通过。第 3 课中同一套件验证你自己的最小变更。", "starterCommand": "python verify.py starter --expect-failure", "starterExpectFailure": "python verify.py starter --expect-failure", "solutionCommand": "python verify.py solution" }, "badge": { "id": "course-claude-code", "nameEn": "Reproduce the failure", "nameZh": "复现故障" }, "difficulty": "beginner", "shippedAt": "2026-09-12", "duration": "2–4 hours", "level": "Beginner-friendly; code-curious", "levelZh": "对新手友好;需要读代码的耐心", "searchTerms": [ "claude code course", "claude code tutorial", "claude code python", "vibe coding python", "ai coding verification" ], "repoDir": "courses/hands-on-python-with-claude-code", "manifestId": "course-claude-code", "manifestVersion": 5, "reviewedAt": "2026-11-07" }, { "id": "hands-on-with-openai-codex", "sharedCoreOf": "hands-on-python-with-claude-code", "teachingRunPending": true, "tool": "OpenAI Codex desktop app", "toolZh": "OpenAI Codex 桌面应用", "title": "Hands-on with the OpenAI Codex App", "titleZh": "上手 OpenAI Codex 应用", "summary": "The same verified Python workflow as the Claude Code course — task contract, bounded change, objective verify.py evidence — taught hands-on in the Codex desktop app: threads, approvals, AGENTS.md, and diff review.", "summaryZh": "与 Claude Code 课程相同的已验证 Python 工作流——任务契约、有界改动、客观 verify.py 证据——在 Codex 桌面应用里实战:线程、审批、AGENTS.md 与 diff 审查。", "outcome": "The same tested report tool as the flagship course (identical contract and nine-test suite), driven through the Codex desktop app — plus a thread-and-approval workflow that transfers to any capable coding agent.", "outcomeZh": "与旗舰课程相同的报表工具(同一契约、同一九测套件),改由 Codex 桌面应用驱动——外加一套可迁移到任何编码 Agent 的线程与审批工作流。", "prerequisites": [ "Python 3.11 or newer available on your PATH", "The Codex desktop app (macOS or Windows) signed in with a ChatGPT account", "Comfort running shell commands; no Python packages are installed", "No prior testing experience required" ], "prerequisitesZh": [ "PATH 中有 Python 3.11 或更新版本", "装有 Codex 桌面应用(macOS 或 Windows)并已登录 ChatGPT 账号", "能运行 shell 命令;无需安装任何 Python 包", "不要求有测试经验" ], "lessons": [ { "id": "l01", "title": "Set up the Codex app, install the FlyPython Skill, fetch the course", "titleZh": "装好 Codex 桌面应用、装上 FlyPython Skill、让 Agent 取回课程", "objective": "Start the Codex app, authorize the FlyPython Skill, fetch this course's files, and run the starter's objective check.", "objectiveZh": "启动 Codex 桌面应用、授权 FlyPython Skill、取回本课文件,并运行 starter 的客观检查。" }, { "id": "l02", "title": "Write the task contract, let AGENTS.md carry the rules", "titleZh": "写任务契约,让 AGENTS.md 承载规则", "objective": "Turn “make it better” into bounded, testable statements — then persist the working rules in AGENTS.md so every thread inherits them.", "objectiveZh": "把「优化一下」变成有边界、可测试的陈述——再把工作规则写进 AGENTS.md,让每个线程自动继承。" }, { "id": "l03", "title": "The bounded change, reviewed hunk by hunk", "titleZh": "有界改动,逐块审 diff", "objective": "Supervise Codex through small diffs — smallest change, no new dependencies, one failing test group at a time — using the app's diff review and approvals.", "objectiveZh": "借助应用的 diff 审查与审批,监督 Codex 逐个小 diff 推进——最小变更、不新增依赖、一次一组失败测试。" }, { "id": "l04", "title": "Verify like a reviewer, not a spectator", "titleZh": "像评审者一样验证,别当观众", "objective": "Complete the evidence loop — both verification directions, all three skins, a scope-creep diff review, and a written record of what is not proven.", "objectiveZh": "完成证据闭环——双向验证、三个皮肤、范围蔓延 diff 审查,以及一份写明未证明内容的记录。" }, { "id": "l05", "title": "Take the workflow to your own project", "titleZh": "把工作流带回自己的项目", "objective": "Port the workflow — not the code — to one script you own, with tests, a verify command, and honest limits.", "objectiveZh": "迁移工作流——而不是代码——到你拥有的一个脚本上,附测试、验证命令与诚实的局限说明。" } ], "scenarios": [ { "id": "excel-report", "title": "Excel / report automation", "titleZh": "Excel / 报表自动化", "dataFile": "orders.csv", "blurb": "Turn a messy weekly orders export into a per-region sales summary.", "blurbZh": "把混乱的每周订单导出变成按区域汇总的销售摘要。" }, { "id": "data-monitor", "title": "Data monitor script", "titleZh": "数据监控脚本", "dataFile": "metrics.csv", "blurb": "Aggregate service latency numbers and isolate malformed readings.", "blurbZh": "汇总服务延迟数据,并隔离格式错误的读数。" }, { "id": "api-tool", "title": "Small API tool", "titleZh": "小型 API 工具", "dataFile": "tickets.json", "blurb": "Summarize ticket data pulled from an internal API (JSON input).", "blurbZh": "汇总从内部 API 拉取的工单数据(JSON 输入)。" } ], "verification": { "method": "Identical contract and nine-test suite to the flagship course: the starter must reproduce seven named failures; the reviewed solution passes 9/9; your bounded change passes the same suite in lesson 3.", "methodZh": "与旗舰课程相同的契约与九测套件:starter 必须复现七个具名失败;已审核实现 9/9 通过;第 3 课中你的最小变更通过同一套件。", "starterCommand": "python verify.py starter --expect-failure", "starterExpectFailure": "python verify.py starter --expect-failure", "solutionCommand": "python verify.py solution" }, "badge": { "id": "course-codex-cli", "nameEn": "Reproduce with Codex in the loop", "nameZh": "Codex 协同复现" }, "difficulty": "beginner", "shippedAt": "2026-09-12", "duration": "2–4 hours", "level": "Beginner-friendly; code-curious", "levelZh": "对新手友好;需要读代码的耐心", "searchTerms": [ "codex app tutorial", "openai codex course", "codex desktop python", "codex 教程" ], "repoDir": "courses/hands-on-with-openai-codex", "manifestId": "course-codex-cli", "manifestVersion": 6, "reviewedAt": "2026-11-07" }, { "id": "hands-on-with-cursor", "sharedCoreOf": "hands-on-python-with-claude-code", "teachingRunPending": true, "tool": "Cursor (Agent mode)", "toolZh": "Cursor(Agent 模式)", "title": "Hands-on with Cursor", "titleZh": "上手 Cursor", "summary": "The same verified Python workflow as the flagship course — task contract, bounded change, objective verify.py evidence — taught hands-on in Cursor: Agent/Ask/Plan modes, .cursor/rules project rules, and accept/reject diff review.", "summaryZh": "与旗舰课程相同的已验证 Python 工作流——任务契约、有界改动、客观 verify.py 证据——在 Cursor 里实战:Agent/Ask/Plan 模式、.cursor/rules 项目规则、接受/拒绝式 diff 审查。", "outcome": "The same tested report tool as the flagship course (identical contract and nine-test suite), driven through Cursor's Agent mode — plus a rules-and-diff-review workflow that transfers to any capable coding agent.", "outcomeZh": "与旗舰课程相同的报表工具(同一契约、同一九测套件),改由 Cursor 的 Agent 模式驱动——外加一套可迁移到任何编码 Agent 的规则与 diff 审查工作流。", "prerequisites": [ "Python 3.11 or newer available on your PATH", "The Cursor editor installed and signed in", "Comfort running shell commands; no Python packages are installed", "No prior testing experience required" ], "prerequisitesZh": [ "PATH 中有 Python 3.11 或更新版本", "已安装并登录 Cursor 编辑器", "能运行 shell 命令;无需安装任何 Python 包", "不要求有测试经验" ], "lessons": [ { "id": "l01", "title": "Set up Cursor, install the FlyPython Skill, fetch the course", "titleZh": "装好 Cursor、装上 FlyPython Skill、让 Agent 取回课程", "objective": "Start Cursor, authorize the FlyPython Skill, fetch this course's files, and run the starter's objective check.", "objectiveZh": "启动 Cursor、授权 FlyPython Skill、取回本课文件,并运行 starter 的客观检查。" }, { "id": "l02", "title": "Write the task contract, let .cursor/rules carry the rules", "titleZh": "写任务契约,让 .cursor/rules 承载规则", "objective": "Turn “make it better” into bounded, testable statements — then persist the working rules as a project rule so every chat inherits them.", "objectiveZh": "把「优化一下」变成有边界、可测试的陈述——再把工作规则写成项目规则,让每个对话自动继承。" }, { "id": "l03", "title": "The bounded change, reviewed hunk by hunk", "titleZh": "有界改动,逐块审 diff", "objective": "Supervise Agent mode through small diffs — smallest change, no new dependencies, one failing test group at a time — accepting or rejecting each hunk yourself.", "objectiveZh": "监督 Agent 模式逐个小 diff 推进——最小变更、不新增依赖、一次一组失败测试——每个 hunk 由你亲自接受或拒绝。" }, { "id": "l04", "title": "Verify like a reviewer, not a spectator", "titleZh": "像评审者一样验证,别当观众", "objective": "Complete the evidence loop — both verification directions, all three skins, a scope-creep diff review, and a written record of what is not proven.", "objectiveZh": "完成证据闭环——双向验证、三个皮肤、范围蔓延 diff 审查,以及一份写明未证明内容的记录。" }, { "id": "l05", "title": "Take the workflow to your own project", "titleZh": "把工作流带回自己的项目", "objective": "Port the workflow — not the code — to one script you own, with tests, a verify command, and honest limits.", "objectiveZh": "迁移工作流——而不是代码——到你拥有的一个脚本上,附测试、验证命令与诚实的局限说明。" } ], "scenarios": [ { "id": "excel-report", "title": "Excel / report automation", "titleZh": "Excel / 报表自动化", "dataFile": "orders.csv", "blurb": "Turn a messy weekly orders export into a per-region sales summary.", "blurbZh": "把混乱的每周订单导出变成按区域汇总的销售摘要。" }, { "id": "data-monitor", "title": "Data monitor script", "titleZh": "数据监控脚本", "dataFile": "metrics.csv", "blurb": "Aggregate service latency numbers and isolate malformed readings.", "blurbZh": "汇总服务延迟数据,并隔离格式错误的读数。" }, { "id": "api-tool", "title": "Small API tool", "titleZh": "小型 API 工具", "dataFile": "tickets.json", "blurb": "Summarize ticket data pulled from an internal API (JSON input).", "blurbZh": "汇总从内部 API 拉取的工单数据(JSON 输入)。" } ], "verification": { "method": "Identical contract and nine-test suite to the flagship course: the starter must reproduce seven named failures; the reviewed solution passes 9/9; your bounded change passes the same suite in lesson 3.", "methodZh": "与旗舰课程相同的契约与九测套件:starter 必须复现七个具名失败;已审核实现 9/9 通过;第 3 课中你的最小变更通过同一套件。", "starterCommand": "python verify.py starter --expect-failure", "starterExpectFailure": "python verify.py starter --expect-failure", "solutionCommand": "python verify.py solution" }, "badge": { "id": "course-cursor", "nameEn": "Reproduce with Cursor in the loop", "nameZh": "Cursor 协同复现" }, "difficulty": "beginner", "shippedAt": "2026-09-13", "duration": "2–4 hours", "level": "Beginner-friendly; code-curious", "levelZh": "对新手友好;需要读代码的耐心", "searchTerms": [ "cursor tutorial", "cursor agent mode", "cursor rules course", "cursor 教程" ], "repoDir": "courses/hands-on-with-cursor", "manifestId": "course-cursor", "manifestVersion": 4, "reviewedAt": "2026-11-07" }, { "id": "hands-on-with-deepseek-harness", "sharedCoreOf": "hands-on-python-with-claude-code", "teachingRunPending": true, "tool": "DeepSeek Harness", "toolZh": "DeepSeek Harness", "title": "Hands-on with DeepSeek Harness", "titleZh": "上手 DeepSeek Harness", "summary": "The same verified Python workflow as the flagship course — task contract, bounded change, objective verify.py evidence — taught hands-on in DeepSeek Harness: plugin-composed agents and an auditable append-only trajectory.", "summaryZh": "与旗舰课程相同的已验证 Python 工作流——任务契约、有界改动、客观 verify.py 证据——在 DeepSeek Harness 里实战:插件组装的 Agent 与可审计的只增轨迹。", "outcome": "The same tested report tool as the flagship course (identical contract and nine-test suite), driven through a harness-composed agent — plus a compose-and-audit workflow that transfers to any capable coding agent.", "outcomeZh": "与旗舰课程相同的报表工具(同一契约、同一九测套件),改由 Harness 组装的 Agent 驱动——外加一套可迁移到任何编码 Agent 的组装与审计工作流。", "prerequisites": [ "Python 3.11 or newer available on your PATH", "A working DeepSeek Harness setup with a configured model plugin (your own API key or local endpoint)", "Comfort running shell commands; no Python packages are installed for the exercise itself", "No prior testing experience required" ], "prerequisitesZh": [ "PATH 中有 Python 3.11 或更新版本", "一套可用的 DeepSeek Harness 环境,配好模型插件(自备 API key 或本地端点)", "能运行 shell 命令;练习本身无需安装任何 Python 包", "不要求有测试经验" ], "lessons": [ { "id": "l01", "title": "Set up DeepSeek Harness, install the FlyPython Skill, fetch the course", "titleZh": "装好 DeepSeek Harness、装上 FlyPython Skill、让 Agent 取回课程", "objective": "Start DeepSeek Harness, authorize the FlyPython Skill, fetch this course's files, and run the starter's objective check.", "objectiveZh": "启动 DeepSeek Harness、授权 FlyPython Skill、取回本课文件,并运行 starter 的客观检查。" }, { "id": "l02", "title": "Write the task contract, let cordis.yml carry the setup", "titleZh": "写任务契约,让 cordis.yml 承载配置", "objective": "Turn “make it better” into bounded, testable statements — then put the working rules into the agent's composition, not a forgotten prompt.", "objectiveZh": "把「优化一下」变成有边界、可测试的陈述——再把工作规则写进 Agent 的组装配置,而不是会被遗忘的提示词。" }, { "id": "l03", "title": "The bounded change, audited from the trajectory", "titleZh": "有界改动,用轨迹做审计", "objective": "Supervise the agent through small steps — one failing test group at a time — and prove it stayed in bounds by inspecting the trajectory.", "objectiveZh": "监督 Agent 逐个小步骤推进——一次一组失败测试——并检查轨迹证明它没有越界。" }, { "id": "l04", "title": "Verify like a reviewer, not a spectator", "titleZh": "像评审者一样验证,别当观众", "objective": "Complete the evidence loop — both verification directions, all three skins, an end-to-end trajectory review, and a written record of what is not proven.", "objectiveZh": "完成证据闭环——双向验证、三个皮肤、端到端轨迹评审,以及一份写明未证明内容的记录。" }, { "id": "l05", "title": "Take the workflow to your own project", "titleZh": "把工作流带回自己的项目", "objective": "Port the workflow — not the code — to one script you own, with tests, a verify command, and honest limits.", "objectiveZh": "迁移工作流——而不是代码——到你拥有的一个脚本上,附测试、验证命令与诚实的局限说明。" } ], "scenarios": [ { "id": "excel-report", "title": "Excel / report automation", "titleZh": "Excel / 报表自动化", "dataFile": "orders.csv", "blurb": "Turn a messy weekly orders export into a per-region sales summary.", "blurbZh": "把混乱的每周订单导出变成按区域汇总的销售摘要。" }, { "id": "data-monitor", "title": "Data monitor script", "titleZh": "数据监控脚本", "dataFile": "metrics.csv", "blurb": "Aggregate service latency numbers and isolate malformed readings.", "blurbZh": "汇总服务延迟数据,并隔离格式错误的读数。" }, { "id": "api-tool", "title": "Small API tool", "titleZh": "小型 API 工具", "dataFile": "tickets.json", "blurb": "Summarize ticket data pulled from an internal API (JSON input).", "blurbZh": "汇总从内部 API 拉取的工单数据(JSON 输入)。" } ], "verification": { "method": "Identical contract and nine-test suite to the flagship course: the starter must reproduce seven named failures; the reviewed solution passes 9/9; your bounded change passes the same suite in lesson 3.", "methodZh": "与旗舰课程相同的契约与九测套件:starter 必须复现七个具名失败;已审核实现 9/9 通过;第 3 课中你的最小变更通过同一套件。", "starterCommand": "python verify.py starter --expect-failure", "starterExpectFailure": "python verify.py starter --expect-failure", "solutionCommand": "python verify.py solution" }, "badge": { "id": "course-deepseek-harness", "nameEn": "Reproduce with DeepSeek Harness in the loop", "nameZh": "DeepSeek Harness 协同复现" }, "difficulty": "beginner", "shippedAt": "2026-09-13", "duration": "2–4 hours", "level": "Beginner-friendly; code-curious", "levelZh": "对新手友好;需要读代码的耐心", "searchTerms": [ "deepseek harness tutorial", "deepseek agent course", "cordis.yml", "deepseek 教程" ], "repoDir": "courses/hands-on-with-deepseek-harness", "manifestId": "course-deepseek-harness", "manifestVersion": 4, "reviewedAt": "2026-11-07" }, { "id": "hands-on-with-kimi-code", "sharedCoreOf": "hands-on-python-with-claude-code", "teachingRunPending": true, "tool": "Kimi Code CLI", "toolZh": "Kimi Code CLI", "title": "Hands-on with Kimi Code", "titleZh": "上手 Kimi Code", "summary": "The same verified Python workflow as the flagship course — task contract, bounded change, objective verify.py evidence — taught hands-on in Kimi Code: built-in explore/plan/coder subagents keep reading, planning, and editing in separate lanes.", "summaryZh": "与旗舰课程相同的已验证 Python 工作流——任务契约、有界改动、客观 verify.py 证据——在 Kimi Code 里实战:内置 explore/plan/coder 子代理把读、规划、改码分在三条道上。", "outcome": "The same tested report tool as the flagship course (identical contract and nine-test suite), driven through Kimi Code's subagent lanes — plus a survey-plan-edit workflow that transfers to any capable coding agent.", "outcomeZh": "与旗舰课程相同的报表工具(同一契约、同一九测套件),改由 Kimi Code 的子代理分道驱动——外加一套可迁移到任何编码 Agent 的勘察-规划-编辑工作流。", "prerequisites": [ "Python 3.11 or newer available on your PATH", "The kimi CLI installed and authenticated (a Moonshot/Kimi account or API key)", "Comfort running shell commands; no Python packages are installed", "No prior testing experience required" ], "prerequisitesZh": [ "PATH 中有 Python 3.11 或更新版本", "已安装并完成认证的 kimi CLI(Moonshot/Kimi 账号或 API key)", "能运行 shell 命令;无需安装任何 Python 包", "不要求有测试经验" ], "lessons": [ { "id": "l01", "title": "Set up Kimi Code, install the FlyPython Skill, fetch the course", "titleZh": "装好 Kimi Code、装上 FlyPython Skill、让 Agent 取回课程", "objective": "Start Kimi Code, authorize the FlyPython Skill, fetch this course's files, and run the starter's objective check.", "objectiveZh": "启动 Kimi Code、授权 FlyPython Skill、取回本课文件,并运行 starter 的客观检查。" }, { "id": "l02", "title": "Write the task contract, plan it in the planning lane", "titleZh": "写任务契约,在规划道里拆步", "objective": "Turn “make it better” into bounded, testable statements — then let the plan subagent decompose it before anything edits.", "objectiveZh": "把「优化一下」变成有边界、可测试的陈述——再让 plan 子代理先拆步,然后才许动文件。" }, { "id": "l03", "title": "The bounded change, one contract line at a time", "titleZh": "有界改动,一次一条契约行", "objective": "Supervise the coder lane through small edits — smallest change, no new dependencies, one failing test group at a time.", "objectiveZh": "监督 coder 道逐个小编辑推进——最小变更、不新增依赖、一次一组失败测试。" }, { "id": "l04", "title": "Verify like a reviewer, not a spectator", "titleZh": "像评审者一样验证,别当观众", "objective": "Complete the evidence loop — both verification directions, all three skins, a scope-creep diff review, and a written record of what is not proven.", "objectiveZh": "完成证据闭环——双向验证、三个皮肤、范围蔓延 diff 审查,以及一份写明未证明内容的记录。" }, { "id": "l05", "title": "Take the workflow to your own project", "titleZh": "把工作流带回自己的项目", "objective": "Port the workflow — not the code — to one script you own, with tests, a verify command, and honest limits.", "objectiveZh": "迁移工作流——而不是代码——到你拥有的一个脚本上,附测试、验证命令与诚实的局限说明。" } ], "scenarios": [ { "id": "excel-report", "title": "Excel / report automation", "titleZh": "Excel / 报表自动化", "dataFile": "orders.csv", "blurb": "Turn a messy weekly orders export into a per-region sales summary.", "blurbZh": "把混乱的每周订单导出变成按区域汇总的销售摘要。" }, { "id": "data-monitor", "title": "Data monitor script", "titleZh": "数据监控脚本", "dataFile": "metrics.csv", "blurb": "Aggregate service latency numbers and isolate malformed readings.", "blurbZh": "汇总服务延迟数据,并隔离格式错误的读数。" }, { "id": "api-tool", "title": "Small API tool", "titleZh": "小型 API 工具", "dataFile": "tickets.json", "blurb": "Summarize ticket data pulled from an internal API (JSON input).", "blurbZh": "汇总从内部 API 拉取的工单数据(JSON 输入)。" } ], "verification": { "method": "Identical contract and nine-test suite to the flagship course: the starter must reproduce seven named failures; the reviewed solution passes 9/9; your bounded change passes the same suite in lesson 3.", "methodZh": "与旗舰课程相同的契约与九测套件:starter 必须复现七个具名失败;已审核实现 9/9 通过;第 3 课中你的最小变更通过同一套件。", "starterCommand": "python verify.py starter --expect-failure", "starterExpectFailure": "python verify.py starter --expect-failure", "solutionCommand": "python verify.py solution" }, "badge": { "id": "course-kimi-code", "nameEn": "Reproduce with Kimi Code in the loop", "nameZh": "Kimi Code 协同复现" }, "difficulty": "beginner", "shippedAt": "2026-09-13", "duration": "2–4 hours", "level": "Beginner-friendly; code-curious", "levelZh": "对新手友好;需要读代码的耐心", "searchTerms": [ "kimi code tutorial", "kimi cli course", "kimi subagents", "kimi 教程" ], "repoDir": "courses/hands-on-with-kimi-code", "manifestId": "course-kimi-code", "manifestVersion": 4, "reviewedAt": "2026-11-07" }, { "id": "hands-on-with-zcode", "sharedCoreOf": "hands-on-python-with-claude-code", "teachingRunPending": true, "tool": "ZCode desktop app", "toolZh": "ZCode 桌面应用", "title": "Hands-on with ZCode", "titleZh": "上手 ZCode", "summary": "The same verified Python workflow as the flagship course — task contract, bounded change, objective verify.py evidence — taught hands-on in the ZCode desktop workspace: Goal Mode task decomposition and the Git state as your review surface.", "summaryZh": "与旗舰课程相同的已验证 Python 工作流——任务契约、有界改动、客观 verify.py 证据——在 ZCode 桌面工作区里实战:Goal 模式任务拆解,Git 状态作为你的审查面。", "outcome": "The same tested report tool as the flagship course (identical contract and nine-test suite), driven through ZCode's Goal Mode — plus a goal-and-task-list workflow that transfers to any capable coding agent.", "outcomeZh": "与旗舰课程相同的报表工具(同一契约、同一九测套件),改由 ZCode 的 Goal 模式驱动——外加一套可迁移到任何编码 Agent 的目标与任务列表工作流。", "prerequisites": [ "Python 3.11 or newer available on your PATH", "The ZCode desktop app installed and signed in", "Comfort running shell commands; no Python packages are installed", "No prior testing experience required" ], "prerequisitesZh": [ "PATH 中有 Python 3.11 或更新版本", "已安装并登录 ZCode 桌面应用", "能运行 shell 命令;无需安装任何 Python 包", "不要求有测试经验" ], "lessons": [ { "id": "l01", "title": "Set up ZCode, install the FlyPython Skill, fetch the course", "titleZh": "装好 ZCode、装上 FlyPython Skill、让 Agent 取回课程", "objective": "Start ZCode, authorize the FlyPython Skill, fetch this course's files, and run the starter's objective check.", "objectiveZh": "启动 ZCode、授权 FlyPython Skill、取回本课文件,并运行 starter 的客观检查。" }, { "id": "l02", "title": "Write the task contract, let Goal Mode hold the plan", "titleZh": "写任务契约,让 Goal 模式承载计划", "objective": "Turn “make it better” into bounded, testable statements — then watch Goal Mode decompose it into tasks before anything edits.", "objectiveZh": "把「优化一下」变成有边界、可测试的陈述——再看 Goal 模式把它拆成任务,然后才许动文件。" }, { "id": "l03", "title": "The bounded change, watched task by task", "titleZh": "有界改动,逐任务盯守", "objective": "Supervise the goal's task list through small changes — smallest change, no new dependencies, one failing test group at a time — checking the Git state after each task.", "objectiveZh": "沿目标的任务列表逐个守小改动——最小变更、不新增依赖、一次一组失败测试——每个任务后核对 Git 状态。" }, { "id": "l04", "title": "Verify like a reviewer, not a spectator", "titleZh": "像评审者一样验证,别当观众", "objective": "Complete the evidence loop — both verification directions, all three skins, an accumulated Git-diff review, and a written record of what is not proven.", "objectiveZh": "完成证据闭环——双向验证、三个皮肤、累积 Git diff 评审,以及一份写明未证明内容的记录。" }, { "id": "l05", "title": "Take the workflow to your own project", "titleZh": "把工作流带回自己的项目", "objective": "Port the workflow — not the code — to one script you own, with tests, a verify command, and honest limits.", "objectiveZh": "迁移工作流——而不是代码——到你拥有的一个脚本上,附测试、验证命令与诚实的局限说明。" } ], "scenarios": [ { "id": "excel-report", "title": "Excel / report automation", "titleZh": "Excel / 报表自动化", "dataFile": "orders.csv", "blurb": "Turn a messy weekly orders export into a per-region sales summary.", "blurbZh": "把混乱的每周订单导出变成按区域汇总的销售摘要。" }, { "id": "data-monitor", "title": "Data monitor script", "titleZh": "数据监控脚本", "dataFile": "metrics.csv", "blurb": "Aggregate service latency numbers and isolate malformed readings.", "blurbZh": "汇总服务延迟数据,并隔离格式错误的读数。" }, { "id": "api-tool", "title": "Small API tool", "titleZh": "小型 API 工具", "dataFile": "tickets.json", "blurb": "Summarize ticket data pulled from an internal API (JSON input).", "blurbZh": "汇总从内部 API 拉取的工单数据(JSON 输入)。" } ], "verification": { "method": "Identical contract and nine-test suite to the flagship course: the starter must reproduce seven named failures; the reviewed solution passes 9/9; your bounded change passes the same suite in lesson 3.", "methodZh": "与旗舰课程相同的契约与九测套件:starter 必须复现七个具名失败;已审核实现 9/9 通过;第 3 课中你的最小变更通过同一套件。", "starterCommand": "python verify.py starter --expect-failure", "starterExpectFailure": "python verify.py starter --expect-failure", "solutionCommand": "python verify.py solution" }, "badge": { "id": "course-zcode", "nameEn": "Reproduce with ZCode in the loop", "nameZh": "ZCode 协同复现" }, "difficulty": "beginner", "shippedAt": "2026-09-13", "duration": "2–4 hours", "level": "Beginner-friendly; code-curious", "levelZh": "对新手友好;需要读代码的耐心", "searchTerms": [ "zcode tutorial", "z.ai agent course", "zcode goal mode", "zcode 教程" ], "repoDir": "courses/hands-on-with-zcode", "manifestId": "course-zcode", "manifestVersion": 4, "reviewedAt": "2026-11-07" }, { "id": "hands-on-with-github-copilot", "sharedCoreOf": "hands-on-python-with-claude-code", "teachingRunPending": true, "tool": "GitHub Copilot in VS Code", "toolZh": "VS Code 中的 GitHub Copilot", "title": "Hands-on with GitHub Copilot", "titleZh": "上手 GitHub Copilot", "summary": "The verified Python workflow — task contract, bounded change, objective verify.py evidence — taught hands-on with GitHub Copilot in VS Code, where the Agent role runs the loop and you supervise permissions, instructions files, and diffs.", "summaryZh": "经过验证的 Python 工作流——任务契约、有界改动、客观 verify.py 证据——在 VS Code 的 GitHub Copilot 里手把手教:由 Agent 角色跑闭环,你监督权限、指令文件与 diff。", "outcome": "The same tested report tool as the flagship course (identical contract and nine-test suite), driven with Copilot's Agent role — plus the Copilot workflow: Agent/Plan/Ask roles, Manual permissions, .github/copilot-instructions.md and applyTo instructions files, checkpoints, and Source Control diff review.", "outcomeZh": "与旗舰课程相同的报表工具(同一契约、同一九测套件),改由 Copilot 的 Agent 角色驱动——外加 Copilot 工作流:Agent/Plan/Ask 角色、Manual permissions、.github/copilot-instructions.md 与 applyTo 指令文件、检查点,以及 Source Control 的 diff 评审。", "prerequisites": [ "Python 3.11 or newer available on your PATH", "VS Code with GitHub Copilot signed in", "Comfort running shell commands; no Python packages are installed", "No prior testing experience required" ], "prerequisitesZh": [ "PATH 中有 Python 3.11 或更新版本", "装有 VS Code 并已登录 GitHub Copilot", "能运行 shell 命令;无需安装任何 Python 包", "不要求有测试经验" ], "lessons": [ { "id": "l01", "title": "Set up Copilot in VS Code, install the FlyPython Skill, fetch the course", "titleZh": "在 VS Code 里装好 Copilot、装上 FlyPython Skill、让 Agent 取回课程", "objective": "Get Copilot running with the Agent role and Manual permissions, let the agent fetch this course's files, and make the starter's failure objective.", "objectiveZh": "让 Copilot 以 Agent 角色和 Manual permissions 跑起来,让 Agent 取回本课文件,并让 starter 的失败变得客观。" }, { "id": "l02", "title": "Write the task contract, let .github instructions carry the rules", "titleZh": "写任务契约,让 .github 指令文件承载规则", "objective": "Turn \"make it better\" into a bounded, testable contract — then make it durable with .github/copilot-instructions.md and an applyTo instructions file.", "objectiveZh": "把「改好一点」变成有边界、可测试的契约——再用 .github/copilot-instructions.md 和带 applyTo 的指令文件把它持久化。" }, { "id": "l03", "title": "The bounded change, reviewed turn by turn", "titleZh": "有界改动,一轮一审", "objective": "Drive the starter to green through bounded turns — review each turn's diff before the next, and use Restore Checkpoint and Git to keep every change yours.", "objectiveZh": "通过有界的轮次把 starter 推到全绿——每轮先审 diff 再发下一轮,用 Restore Checkpoint 和 Git 守住每一处改动。" }, { "id": "l04", "title": "Verify like a reviewer, not a spectator", "titleZh": "像评审者一样验证,别当观众", "objective": "Green tests are the floor: run both suites, walk a scenario skin, and review the accumulated diff in Source Control the way you would review a colleague's.", "objectiveZh": "测试全绿只是地板:两个套件都跑、走完一个场景皮肤,并按评审同事的标准在 Source Control 里审这份累积 diff。" }, { "id": "l05", "title": "Take the workflow to your own project", "titleZh": "把工作流带回自己的项目", "objective": "Run the same loop — contract, instructions files, bounded agent work, diff review — with Copilot on a repository you actually own.", "objectiveZh": "用 Copilot 在你真正拥有的仓库上跑同一套闭环:契约、指令文件、有界 Agent 工作、diff 评审。" } ], "scenarios": [ { "id": "excel-report", "title": "Excel / report automation", "titleZh": "Excel / 报表自动化", "dataFile": "orders.csv", "blurb": "Turn a messy weekly orders export into a per-region sales summary.", "blurbZh": "把混乱的每周订单导出变成按区域汇总的销售摘要。" }, { "id": "data-monitor", "title": "Data monitor script", "titleZh": "数据监控脚本", "dataFile": "metrics.csv", "blurb": "Aggregate service latency numbers and isolate malformed readings.", "blurbZh": "汇总服务延迟数据,并隔离格式错误的读数。" }, { "id": "api-tool", "title": "Small API tool", "titleZh": "小型 API 工具", "dataFile": "tickets.json", "blurb": "Summarize ticket data pulled from an internal API (JSON input).", "blurbZh": "汇总从内部 API 拉取的工单数据(JSON 输入)。" } ], "verification": { "method": "The course ships the shared nine-test contract suite. The starter must reproduce seven named failures; the reviewed solution passes 9/9. The same suite verifies your own bounded change in lesson 3.", "methodZh": "课程自带共享的九个测试契约套件。starter 必须复现七个具名失败;已审核的实现 9/9 通过。第 3 课中同一套件验证你自己的最小变更。", "starterCommand": "python verify.py starter --expect-failure", "starterExpectFailure": "python verify.py starter --expect-failure", "solutionCommand": "python verify.py solution" }, "badge": { "id": "course-github-copilot", "nameEn": "Reproduce with Copilot in the loop", "nameZh": "Copilot 协同复现" }, "difficulty": "beginner", "shippedAt": "2026-10-11", "duration": "2–4 hours", "level": "Beginner-friendly; code-curious", "levelZh": "对新手友好;需要读代码的耐心", "searchTerms": [ "github copilot course", "copilot agent mode", "copilot instructions file", "vscode agent course", "copilot python" ], "repoDir": "courses/hands-on-with-github-copilot", "manifestId": "course-github-copilot", "manifestVersion": 3, "reviewedAt": "2026-11-07" }, { "id": "agent-rules-single-source", "tool": "Any coding agent (Claude Code 2.x / Codex CLI 0.x / Cursor)", "toolZh": "任一编码 Agent(Claude Code 2.x / Codex CLI 0.x / Cursor)", "title": "One source of truth for agent rules", "titleZh": "Agent 规则的单一真源", "summary": "Stop maintaining diverging AGENTS.md, CLAUDE.md, and .cursorrules files — build a checker that proves your repository has exactly one rule source.", "summaryZh": "不再同时维护彼此打架的 AGENTS.md、CLAUDE.md 与 .cursorrules——亲手构建一个能证明仓库只有一处规则真源的检查器。", "outcome": "A working rule-consistency checker (rules_check.py) that fails CI the moment a rule file drifts from AGENTS.md — plus the single-source setup applied to your own repository.", "outcomeZh": "一个可运行的规则一致性检查器(rules_check.py)——任何规则文件偏离 AGENTS.md 的那一刻,CI 就会失败——外加应用到你自己仓库的单一真源配置。", "prerequisites": [ "Python 3.11 or newer available on your PATH", "Any coding agent that reads AGENTS.md, CLAUDE.md, or .cursorrules", "Comfort running shell commands; standard library only" ], "prerequisitesZh": [ "PATH 中有 Python 3.11 或更新版本", "任一会读 AGENTS.md、CLAUDE.md 或 .cursorrules 的编码 Agent", "能运行 shell 命令;仅用标准库" ], "lessons": [ { "id": "l01", "title": "Measure the drift you already have", "titleZh": "量化你已经存在的漂移", "objective": "Run the checker against three scenario repositories and read drift as a test failure, not a vibe.", "objectiveZh": "对三个场景仓库运行检查器,把漂移读成测试失败,而不是一种感觉。" }, { "id": "l02", "title": "Decide the source of truth", "titleZh": "确定唯一真源", "objective": "AGENTS.md becomes the one file agents read; everything else is a pointer or a copy.", "objectiveZh": "AGENTS.md 成为 Agent 唯一阅读的文件;其余都只能是指针或副本。" }, { "id": "l03", "title": "Drive a bounded change, test by test", "titleZh": "按测试驱动一次有边界的变更", "objective": "Make the starter detect source, pointer, copy, and drift — one failing test group at a time.", "objectiveZh": "让 starter 依次识别真源、指针、副本与漂移——一次一组失败测试。" }, { "id": "l04", "title": "Verify and wire it in", "titleZh": "验证并接入流程", "objective": "Prove both verifier directions, run all three skins, then add the checker to your review loop.", "objectiveZh": "证明验证器双向通过、跑完三个皮肤,然后把检查器接入你的审查环。" }, { "id": "l05", "title": "Apply this to your repository", "titleZh": "把这套方法带回你的仓库", "objective": "One AGENTS.md, thin pointers everywhere else, and a failing check when it breaks.", "objectiveZh": "一个 AGENTS.md,其余全是瘦指针,一旦破坏检查就失败。" } ], "scenarios": [ { "id": "thin-pointer", "title": "Healthy: thin pointers", "titleZh": "健康:瘦指针", "dataFile": "AGENTS.md + CLAUDE.md", "blurb": "AGENTS.md plus two thin pointer files that defer to it.", "blurbZh": "AGENTS.md 加两个指向它的瘦指针文件。" }, { "id": "single-copy", "title": "Healthy: exact copy", "titleZh": "健康:精确副本", "dataFile": "AGENTS.md + CLAUDE.md", "blurb": "AGENTS.md plus one byte-identical copy in CLAUDE.md.", "blurbZh": "AGENTS.md 加一份逐字节一致的 CLAUDE.md 副本。" }, { "id": "drifted", "title": "Broken: drifted .cursorrules", "titleZh": "故障:漂移的 .cursorrules", "dataFile": ".cursorrules", "blurb": "A stale full ruleset that contradicts AGENTS.md — the drift to catch.", "blurbZh": "一份与 AGENTS.md 矛盾的过期完整规则集——要捕获的漂移。" } ], "verification": { "method": "An 11-test suite pins pointer detection, the source requirement, copy and drift classification, and CLI exit codes; the starter reproduces six named failures, the solution passes 11/11.", "methodZh": "11 个测试的套件锚定指针识别、真源要求、副本与漂移分类及 CLI 退出码;starter 复现六个具名失败,solution 通过 11/11。", "starterCommand": "python verify.py starter --expect-failure", "starterExpectFailure": "python verify.py starter --expect-failure", "solutionCommand": "python verify.py solution" }, "badge": { "id": "course-agent-rules", "nameEn": "Measure the drift", "nameZh": "规则漂移检测" }, "difficulty": "intermediate", "shippedAt": "2026-09-12", "duration": "1–2 hours", "level": "Maintains rule files for multiple tools", "levelZh": "为多个工具维护规则文件", "searchTerms": [ "agents.md tutorial", "claude code rules", "cursorrules", "agents.md vs claude.md", "agent 规则" ], "repoDir": "courses/agent-rules-single-source", "manifestId": "course-agent-rules", "manifestVersion": 4, "reviewedAt": "2026-11-07" }, { "id": "verifying-ai-generated-code", "tool": "Any coding agent (Claude Code 2.x / Codex CLI 0.x / Cursor)", "toolZh": "任一编码 Agent(Claude Code 2.x / Codex CLI 0.x / Cursor)", "title": "From “it runs” to “it ships”: verifying AI-generated code", "titleZh": "从「能跑」到「能上线」:验证 AI 写的代码", "summary": "Build the release-evidence machine your AI-written project is missing — a ship check that parses what actually ran, refuses zero-test projects, and writes an honest delivery record.", "summaryZh": "为你的 AI 项目补上缺失的发布证据机器——一个 ship check:解析实际跑了什么、拒绝零测试项目,并写出诚实的交付记录。", "outcome": "ship_check.py: one command that turns “the demo worked” into a written delivery record — command, exit code, parsed test count, a verdict that refuses projects with no tests, and an explicit unverified list.", "outcomeZh": "ship_check.py:一条命令把「演示能跑」变成一份书面交付记录——命令、退出码、解析出的测试数、一个拒绝零测试项目的判定,以及一份显式的未验证清单。", "prerequisites": [ "Python 3.11 or newer available on your PATH", "A small Python project you want to ship more safely", "Comfort running shell commands; standard library only" ], "prerequisitesZh": [ "PATH 中有 Python 3.11 或更新版本", "一个想交付得更稳的小型 Python 项目", "能运行 shell 命令;仅用标准库" ], "lessons": [ { "id": "l01", "title": "“It runs” is not evidence", "titleZh": "“能跑”不是证据", "objective": "Watch the starter bless a project with no tests and one with a failing test — then want better.", "objectiveZh": "看着 starter 给零测试的项目和有失败测试的项目都盖章放行——然后想要更好的东西。" }, { "id": "l02", "title": "Define what a release record must prove", "titleZh": "定义发布记录必须证明什么", "objective": "Command, exit code, parsed count and outcome, an unverified list, and a verdict that refuses zero-test projects.", "objectiveZh": "命令、退出码、解析出的数量与结果、一份未验证清单,以及一个拒绝零测试项目的判定。" }, { "id": "l03", "title": "Build the ship check, test by test", "titleZh": "按测试逐组构建 ship check", "objective": "Parsing, verdicts, the unverified list, atomic writes, exit codes — one failing group at a time.", "objectiveZh": "解析、判定、未验证清单、原子写入、退出码——一次一组失败测试。" }, { "id": "l04", "title": "Read the record like a skeptic", "titleZh": "像怀疑者一样读记录", "objective": "Green, red, and no-tests mean different things — prove you can tell them apart.", "objectiveZh": "绿、红、零测试是三件不同的事——证明你能分辨。" }, { "id": "l05", "title": "Gate your next release", "titleZh": "给你的下一次发布装上门禁", "objective": "Take the ship check to a project you own and make the record part of shipping.", "objectiveZh": "把 ship check 带到你自己的项目,让记录成为交付的一部分。" } ], "scenarios": [ { "id": "green-project", "title": "Two passing tests", "titleZh": "两个通过的测试", "dataFile": "ship.json + tests/", "blurb": "A tiny project with two passing tests and a declared unverified list.", "blurbZh": "一个带两个通过测试和已声明未验证清单的小项目。" }, { "id": "red-project", "title": "One wrong expectation", "titleZh": "一个写错的断言", "dataFile": "ship.json + tests/", "blurb": "The regression under study: one deliberately wrong test expectation.", "blurbZh": "正在研究的回归:一个故意写错的测试断言。" }, { "id": "no-tests", "title": "Zero tests", "titleZh": "零个测试", "dataFile": "empty tests/", |
| You are visitor 01402503 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required. |