|
185 | 185 | } |
186 | 186 | ] |
187 | 187 | }, |
| 188 | + { |
| 189 | + "id": "course-codex-cli", |
| 190 | + "type": "course", |
| 191 | + "content_version": 1, |
| 192 | + "status": "reviewed", |
| 193 | + "reviewed_on": "2026-09-12", |
| 194 | + "locales": [ |
| 195 | + { |
| 196 | + "lang": "en-US", |
| 197 | + "path": "courses/hands-on-with-openai-codex-cli/COURSE.md", |
| 198 | + "title": "Hands-on with OpenAI Codex CLI", |
| 199 | + "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.", |
| 200 | + "sha256": "aa223ff4356ab25c32f55344362a5133fcba0f25851e05c6bd3c6bde9189a8aa" |
| 201 | + }, |
| 202 | + { |
| 203 | + "lang": "zh-CN", |
| 204 | + "path": "courses/hands-on-with-openai-codex-cli/COURSE_cn.md", |
| 205 | + "title": "OpenAI Codex CLI 实战", |
| 206 | + "summary": "与 Claude Code 课程相同的已验证 Python 工作流——任务契约、最小变更、客观 verify.py 证据——改用 OpenAI Codex CLI 完成实战。", |
| 207 | + "sha256": "4a31ae97c205ee1e28008f1149aadf1488d4d305176678da1c475475174944d5" |
| 208 | + } |
| 209 | + ] |
| 210 | + }, |
| 211 | + { |
| 212 | + "id": "course-codex-cli-l01", |
| 213 | + "type": "course", |
| 214 | + "content_version": 1, |
| 215 | + "status": "reviewed", |
| 216 | + "reviewed_on": "2026-09-12", |
| 217 | + "locales": [ |
| 218 | + { |
| 219 | + "lang": "en-US", |
| 220 | + "path": "courses/hands-on-with-openai-codex-cli/lessons/L01.md", |
| 221 | + "title": "Lesson 1: Reproduce the failure with Codex in the loop", |
| 222 | + "summary": "Run the verifier both ways, map each failing test to a real-world failure class, and learn how to hand the folder to Codex.", |
| 223 | + "sha256": "794fc25625913718bdca8bf4ad71d5528d8a05b818e677002988b155087a9332" |
| 224 | + }, |
| 225 | + { |
| 226 | + "lang": "zh-CN", |
| 227 | + "path": "courses/hands-on-with-openai-codex-cli/lessons/L01_cn.md", |
| 228 | + "title": "第 1 课:让 Codex 进环,先复现故障", |
| 229 | + "summary": "双向运行验证器,把每个失败测试对应到真实故障,并学会如何把文件夹交给 Codex。", |
| 230 | + "sha256": "03b91470fcf864bbf80dc4846f7b8cb1673a47623158af776698df1cf980e76f" |
| 231 | + } |
| 232 | + ] |
| 233 | + }, |
| 234 | + { |
| 235 | + "id": "course-codex-cli-l02", |
| 236 | + "type": "course", |
| 237 | + "content_version": 1, |
| 238 | + "status": "reviewed", |
| 239 | + "reviewed_on": "2026-09-12", |
| 240 | + "locales": [ |
| 241 | + { |
| 242 | + "lang": "en-US", |
| 243 | + "path": "courses/hands-on-with-openai-codex-cli/lessons/L02.md", |
| 244 | + "title": "Lesson 2: Write the task contract before the change", |
| 245 | + "summary": "Turn \"make it better\" into bounded, testable statements — the single highest-leverage skill for driving Codex.", |
| 246 | + "sha256": "61411a5da9baa192923d38c2db052380663179b0c2246196ae2d0cea0a70e10f" |
| 247 | + }, |
| 248 | + { |
| 249 | + "lang": "zh-CN", |
| 250 | + "path": "courses/hands-on-with-openai-codex-cli/lessons/L02_cn.md", |
| 251 | + "title": "第 2 课:动手之前先写任务契约", |
| 252 | + "summary": "把“优化一下”变成有边界、可测试的陈述——驱动 Codex 杠杆最大的一项技能。", |
| 253 | + "sha256": "92f68d255ed3a6f68a1c3357772467e1e26dfbc75664eb88b35d7d8ca13752a6" |
| 254 | + } |
| 255 | + ] |
| 256 | + }, |
| 257 | + { |
| 258 | + "id": "course-codex-cli-l03", |
| 259 | + "type": "course", |
| 260 | + "content_version": 1, |
| 261 | + "status": "reviewed", |
| 262 | + "reviewed_on": "2026-09-12", |
| 263 | + "locales": [ |
| 264 | + { |
| 265 | + "lang": "en-US", |
| 266 | + "path": "courses/hands-on-with-openai-codex-cli/lessons/L03.md", |
| 267 | + "title": "Lesson 3: Drive a bounded change, test by test", |
| 268 | + "summary": "Supervise Codex through seven small diffs — smallest change, no new dependencies, one failing test group at a time.", |
| 269 | + "sha256": "50bf8c5bab11827612da38a6ff2aa56011a6db119504d8a1fe2a1ee5fc2e82b1" |
| 270 | + }, |
| 271 | + { |
| 272 | + "lang": "zh-CN", |
| 273 | + "path": "courses/hands-on-with-openai-codex-cli/lessons/L03_cn.md", |
| 274 | + "title": "第 3 课:按测试驱动一次有边界的变更", |
| 275 | + "summary": "监督 Codex 完成七个小 diff——最小变更、不新增依赖、一次一组失败测试。", |
| 276 | + "sha256": "e71a0c9f87a5f8e7f04afcbeddc89fb135f4bfb3887dcd3eb0fb1f5d4132c831" |
| 277 | + } |
| 278 | + ] |
| 279 | + }, |
| 280 | + { |
| 281 | + "id": "course-codex-cli-l04", |
| 282 | + "type": "course", |
| 283 | + "content_version": 1, |
| 284 | + "status": "reviewed", |
| 285 | + "reviewed_on": "2026-09-12", |
| 286 | + "locales": [ |
| 287 | + { |
| 288 | + "lang": "en-US", |
| 289 | + "path": "courses/hands-on-with-openai-codex-cli/lessons/L04.md", |
| 290 | + "title": "Lesson 4: Verify like an engineer, review like a skeptic", |
| 291 | + "summary": "Complete the evidence loop — both verification directions, all three skins, a scope-creep diff review, and a written record of what is not proven.", |
| 292 | + "sha256": "a300024f50ac832903ea4336268f53973cfec1b3192f5739e9d140f68a8bbd51" |
| 293 | + }, |
| 294 | + { |
| 295 | + "lang": "zh-CN", |
| 296 | + "path": "courses/hands-on-with-openai-codex-cli/lessons/L04_cn.md", |
| 297 | + "title": "第 4 课:像工程师一样验证,像怀疑者一样审查", |
| 298 | + "summary": "完成证据闭环——双向验证、三个皮肤、范围蔓延 diff 审查,以及一份写明未证明内容的记录。", |
| 299 | + "sha256": "43aef97d44143ac7f95ecaa63c7027fd1b63096c6def6d19bc62f59a6642d223" |
| 300 | + } |
| 301 | + ] |
| 302 | + }, |
| 303 | + { |
| 304 | + "id": "course-codex-cli-l05", |
| 305 | + "type": "course", |
| 306 | + "content_version": 1, |
| 307 | + "status": "reviewed", |
| 308 | + "reviewed_on": "2026-09-12", |
| 309 | + "locales": [ |
| 310 | + { |
| 311 | + "lang": "en-US", |
| 312 | + "path": "courses/hands-on-with-openai-codex-cli/lessons/L05.md", |
| 313 | + "title": "Lesson 5: Apply this to your own project", |
| 314 | + "summary": "Port the workflow — not the code — to one script you own, with tests, a verify command, and honest limits.", |
| 315 | + "sha256": "f70eae4fb1e1c367fe95001a89d77aa32e2c58470c26c2571777773e3189611e" |
| 316 | + }, |
| 317 | + { |
| 318 | + "lang": "zh-CN", |
| 319 | + "path": "courses/hands-on-with-openai-codex-cli/lessons/L05_cn.md", |
| 320 | + "title": "第 5 课:把这套方法带回你自己的项目", |
| 321 | + "summary": "迁移工作流——而不是代码——到你拥有的一个脚本上,附测试、验证命令与诚实的局限说明。", |
| 322 | + "sha256": "2357b697ae279590bfb4ab268fb241918ce2075ffe7c704bcf6975a39b6b9725" |
| 323 | + } |
| 324 | + ] |
| 325 | + }, |
188 | 326 | { |
189 | 327 | "id": "example-async-fetcher", |
190 | 328 | "type": "example", |
|
0 commit comments