A trilingual (繁中 / English / 简中) learning roadmap for agentic AI: from LLM basics to multi-agent systems, with 240+ curated resources and hands-on examples. 中文 AI agent 學習地圖。
This report summarizes scanner evidence for WenyuChiou/awesome-agentic-ai-zh, a Python project with 7,516 GitHub stars. SynthScan examined 112,077 lines of code across 541 source files, recording 1622 pattern matches distributed across 17 syntactic categories. The legacy adjusted pattern signal is 21.0 (Elevated pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 1341 finding(s).
Are imports declared and package/API names verified? 195 finding(s).
Are wrappers, guards, and repeated structures necessary? 1002 finding(s).
Which changes need focused human review? 1622 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 1622 distinct pattern matches across 17 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | examples/stage-3/06-schema-design/test_anthropic.py | 35 | def test_bad_schema_can_select_wrong_tool(): | CODE |
| LOW | examples/stage-3/06-schema-design/test_anthropic.py | 47 | def test_good_schema_selects_temperature_tool(): | CODE |
| LOW | examples/stage-3/06-schema-design/test_anthropic.py | 59 | def test_good_schema_has_required_fields_and_enum(): | CODE |
| LOW | examples/stage-3/06-schema-design/test_anthropic.py | 68 | def test_application_rejects_untrusted_calls_for_both_schemas(): | CODE |
| LOW | examples/stage-3/06-schema-design/test_anthropic.py | 95 | def test_multiple_calls_are_not_partially_executed(): | CODE |
| LOW | examples/stage-3/06-schema-design/test.py | 41 | def test_bad_schema_can_select_wrong_tool(): | CODE |
| LOW | examples/stage-3/06-schema-design/test.py | 54 | def test_good_schema_selects_temperature_tool(): | CODE |
| LOW | examples/stage-3/06-schema-design/test.py | 66 | def test_good_schema_has_required_fields_and_enum(): | CODE |
| LOW | examples/stage-3/06-schema-design/test.py | 77 | def test_application_rejects_untrusted_calls_for_both_schemas(): | CODE |
| LOW | examples/stage-3/06-schema-design/test.py | 104 | def test_multiple_calls_are_not_partially_executed(): | CODE |
| LOW⚡ | …ples/stage-3/02-multi-tool-selection/test_anthropic.py | 44 | def test_tool_spec_contains_three_tools(): | CODE |
| LOW⚡ | …ples/stage-3/02-multi-tool-selection/test_anthropic.py | 49 | def test_calculator_rejects_unsafe_expressions(): | CODE |
| LOW⚡ | …ples/stage-3/02-multi-tool-selection/test_anthropic.py | 59 | def test_llm_selects_calculator(): | CODE |
| LOW⚡ | …ples/stage-3/02-multi-tool-selection/test_anthropic.py | 66 | def test_llm_selects_calendar(): | CODE |
| LOW⚡ | …ples/stage-3/02-multi-tool-selection/test_anthropic.py | 73 | def test_llm_uses_search_instead_of_calendar_for_news(): | CODE |
| LOW⚡ | …ples/stage-3/02-multi-tool-selection/test_anthropic.py | 80 | def test_untrusted_arguments_are_rejected(): | CODE |
| LOW | …ples/stage-3/02-multi-tool-selection/test_anthropic.py | 95 | def test_multiple_calls_are_not_silently_partially_executed(): | CODE |
| LOW⚡ | examples/stage-3/02-multi-tool-selection/test.py | 53 | def test_tool_spec_contains_three_tools(): | CODE |
| LOW⚡ | examples/stage-3/02-multi-tool-selection/test.py | 60 | def test_calculator_rejects_unsafe_expressions(): | CODE |
| LOW⚡ | examples/stage-3/02-multi-tool-selection/test.py | 70 | def test_llm_selects_calculator(): | CODE |
| LOW⚡ | examples/stage-3/02-multi-tool-selection/test.py | 78 | def test_llm_selects_calendar(): | CODE |
| LOW⚡ | examples/stage-3/02-multi-tool-selection/test.py | 86 | def test_llm_uses_search_instead_of_calendar_for_news(): | CODE |
| LOW⚡ | examples/stage-3/02-multi-tool-selection/test.py | 94 | def test_no_tool_call_returns_none(): | CODE |
| LOW | examples/stage-3/02-multi-tool-selection/test.py | 105 | def test_untrusted_arguments_are_rejected(): | CODE |
| LOW | examples/stage-3/02-multi-tool-selection/test.py | 120 | def test_multiple_calls_are_not_silently_partially_executed(): | CODE |
| LOW | …ples/stage-3/04-multi-step-reasoning/test_anthropic.py | 35 | def test_tools_handle_math_edges(): | CODE |
| LOW | …ples/stage-3/04-multi-step-reasoning/test_anthropic.py | 43 | def test_population_ratio_uses_four_tool_steps(): | CODE |
| LOW | …ples/stage-3/04-multi-step-reasoning/test_anthropic.py | 59 | def test_zero_population_path_returns_an_error(): | CODE |
| LOW | …ples/stage-3/04-multi-step-reasoning/test_anthropic.py | 74 | def test_non_finite_and_oversized_numbers_are_rejected(): | CODE |
| LOW | …ples/stage-3/04-multi-step-reasoning/test_anthropic.py | 86 | def test_invalid_call_is_marked_as_error(): | CODE |
| LOW | …ples/stage-3/04-multi-step-reasoning/test_anthropic.py | 106 | def test_max_tokens_is_not_a_final_answer(): | CODE |
| LOW | examples/stage-3/04-multi-step-reasoning/test.py | 40 | def test_tools_handle_math_edges(): | CODE |
| LOW | examples/stage-3/04-multi-step-reasoning/test.py | 49 | def test_population_ratio_uses_four_tool_steps(): | CODE |
| LOW | examples/stage-3/04-multi-step-reasoning/test.py | 66 | def test_zero_population_path_returns_an_error(): | CODE |
| LOW | examples/stage-3/04-multi-step-reasoning/test.py | 82 | def test_non_finite_and_oversized_numbers_are_rejected(): | CODE |
| LOW | examples/stage-3/04-multi-step-reasoning/test.py | 95 | def test_react_loop_respects_max_iter(): | CODE |
| LOW | examples/stage-3/04-multi-step-reasoning/test.py | 109 | def test_invalid_tool_calls_are_returned_as_data(): | CODE |
| LOW | examples/stage-3/04-multi-step-reasoning/test.py | 124 | def test_length_is_not_a_final_answer(): | CODE |
| LOW | examples/stage-3/01-function-calling/test_anthropic.py | 27 | def test_valid_call_completes_round_trip(): | CODE |
| LOW | examples/stage-3/01-function-calling/test_anthropic.py | 39 | def test_invalid_input_becomes_an_error_result(): | CODE |
| LOW | examples/stage-3/01-function-calling/test_anthropic.py | 50 | def test_unknown_tool_is_rejected(): | CODE |
| LOW⚡ | examples/stage-3/01-function-calling/test.py | 33 | def test_valid_call_completes_round_trip(): | CODE |
| LOW⚡ | examples/stage-3/01-function-calling/test.py | 43 | def test_invalid_json_never_runs_tool(): | CODE |
| LOW⚡ | examples/stage-3/01-function-calling/test.py | 48 | def test_extra_or_wrong_fields_are_rejected(): | CODE |
| LOW⚡ | examples/stage-3/01-function-calling/test.py | 55 | def test_unknown_tool_is_rejected(): | CODE |
| LOW | examples/stage-3/05-error-handling/test_anthropic.py | 34 | def test_fetch_weather_failure_plan(): | CODE |
| LOW | examples/stage-3/05-error-handling/test_anthropic.py | 58 | def test_repeated_errors_can_end_gracefully(): | CODE |
| LOW | examples/stage-3/05-error-handling/test_anthropic.py | 72 | def test_failed_result_is_marked_and_correlated(): | CODE |
| LOW | examples/stage-3/05-error-handling/test_anthropic.py | 85 | def test_invalid_input_and_terminal_reason_are_safe(): | CODE |
| LOW | examples/stage-3/05-error-handling/test.py | 41 | def test_fetch_weather_failure_plan(): | CODE |
| LOW | examples/stage-3/05-error-handling/test.py | 67 | def test_repeated_errors_can_end_gracefully(): | CODE |
| LOW | examples/stage-3/05-error-handling/test.py | 82 | def test_unknown_tool_returns_structured_error(): | CODE |
| LOW | examples/stage-3/05-error-handling/test.py | 95 | def test_malformed_arguments_return_structured_error(): | CODE |
| LOW | examples/stage-3/05-error-handling/test.py | 102 | def test_length_is_not_a_final_answer(): | CODE |
| LOW | …amples/stage-3/03-react-from-scratch/test_anthropic.py | 49 | def test_calculator_rejects_unsafe_expressions(): | CODE |
| LOW | …amples/stage-3/03-react-from-scratch/test_anthropic.py | 66 | def test_react_loop_single_tool_call(): | CODE |
| LOW | …amples/stage-3/03-react-from-scratch/test_anthropic.py | 90 | def test_react_loop_multi_step(): | CODE |
| LOW | …amples/stage-3/03-react-from-scratch/test_anthropic.py | 113 | def test_react_loop_respects_max_iter(): | CODE |
| LOW | …amples/stage-3/03-react-from-scratch/test_anthropic.py | 132 | def test_invalid_tool_call_is_marked_as_error(): | CODE |
| LOW | …amples/stage-3/03-react-from-scratch/test_anthropic.py | 152 | def test_non_end_turn_is_not_a_final_answer(): | CODE |
| 855 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | ROADMAP.en.md | 76 | Use [Discussions](https://github.com/WenyuChiou/awesome-agentic-ai-zh/discussions) for ideas; keep issues for defects, s | CODE |
| MEDIUM⚡ | README.en.md | 9 | # awesome-agentic-ai-zh | COMMENT |
| MEDIUM⚡ | README.en.md | 19 |  | CODE |
| MEDIUM⚡ | README.en.md | 20 | [](https://wenyuchiou.github.io/awesome-agentic-ai | CODE |
| MEDIUM⚡ | README.en.md | 24 | > 📱 On a phone, read the [docs site](https://wenyuchiou.github.io/awesome-agentic-ai-zh/). | CODE |
| MEDIUM | README.en.md | 56 | git clone https://github.com/WenyuChiou/awesome-agentic-ai-zh.git | CODE |
| MEDIUM | README.en.md | 170 | - Wrong content, broken links, or stale information: open an [Issue](https://github.com/WenyuChiou/awesome-agentic-ai-zh | CODE |
| MEDIUM | README.en.md | 193 | [](https://github.com/WenyuChiou/aweso | CODE |
| MEDIUM | README.en.md | 200 | url = {https://github.com/WenyuChiou/awesome-agentic-ai-zh} | CODE |
| MEDIUM | mkdocs.yml | 3 | site_url: https://wenyuchiou.github.io/awesome-agentic-ai-zh/ | CODE |
| MEDIUM | mkdocs.yml | 4 | repo_url: https://github.com/WenyuChiou/awesome-agentic-ai-zh | CODE |
| MEDIUM | mkdocs.yml | 163 | - 書本版: https://wenyuchiou.github.io/awesome-agentic-ai-zh/book/ | CODE |
| MEDIUM | CAPSTONE.zh-Hans.md | 12 | 4. 想要反馈?把成品 + 自评贴到 [Discussion](https://github.com/WenyuChiou/awesome-agentic-ai-zh/discussions) 找人 peer review(可选,不强制)。 | CODE |
| MEDIUM | CAPSTONE.zh-Hans.md | 97 | - 贴到 [Discussion](https://github.com/WenyuChiou/awesome-agentic-ai-zh/discussions) 的对应分类,附成品链接 + 你的 rubric 自评。 | CODE |
| MEDIUM | CAPSTONE.en.md | 12 | 4. Want feedback? Post the artifact + your self-assessment to [Discussion](https://github.com/WenyuChiou/awesome-agentic | CODE |
| MEDIUM | CAPSTONE.en.md | 97 | - Post to the matching [Discussion](https://github.com/WenyuChiou/awesome-agentic-ai-zh/discussions) category with a lin | CODE |
| MEDIUM⚡ | CHANGELOG.md | 307 | - **chore** · 依 ★1000 門檻婉拒 [#115](https://github.com/WenyuChiou/awesome-agentic-ai-zh/issues/115)、[#116](https://github. | CODE |
| MEDIUM⚡ | CHANGELOG.md | 307 | - **chore** · 依 ★1000 門檻婉拒 [#115](https://github.com/WenyuChiou/awesome-agentic-ai-zh/issues/115)、[#116](https://github. | CODE |
| MEDIUM⚡ | CHANGELOG.md | 316 | - **chore** · 婉拒 [#115](https://github.com/WenyuChiou/awesome-agentic-ai-zh/issues/115) 與 [#116](https://github.com/Weny | CODE |
| MEDIUM⚡ | CHANGELOG.md | 316 | - **chore** · 婉拒 [#115](https://github.com/WenyuChiou/awesome-agentic-ai-zh/issues/115) 與 [#116](https://github.com/Weny | CODE |
| MEDIUM⚡ | CHANGELOG.md | 380 | - **refactor** · **七支腳本各自寫了一套「哪幾行是程式碼」,現在全部共用一份([#97](https://github.com/WenyuChiou/awesome-agentic-ai-zh/issues/97))**。 | CODE |
| MEDIUM⚡ | CHANGELOG.md | 380 | - **refactor** · **七支腳本各自寫了一套「哪幾行是程式碼」,現在全部共用一份([#97](https://github.com/WenyuChiou/awesome-agentic-ai-zh/issues/97))**。 | CODE |
| MEDIUM⚡ | CHANGELOG.md | 387 | - **fix** · **有一頁的四個標題在網站上是以「程式碼」的樣子呈現的,三個語系都一樣([#95](https://github.com/WenyuChiou/awesome-agentic-ai-zh/issues/95))**。 | CODE |
| MEDIUM⚡ | CHANGELOG.md | 387 | - **fix** · **有一頁的四個標題在網站上是以「程式碼」的樣子呈現的,三個語系都一樣([#95](https://github.com/WenyuChiou/awesome-agentic-ai-zh/issues/95))**。 | CODE |
| MEDIUM⚡ | CHANGELOG.md | 389 | - **chore** · **但要講清楚:這只修了六個之中的一個,不是「根因修好了」**。`scripts/` 底下還有五支各自寫了同一套「看到 fence 就翻轉」的邏輯——`check-hans-chars`、`check-image | CODE |
| MEDIUM⚡ | CHANGELOG.md | 389 | - **chore** · **但要講清楚:這只修了六個之中的一個,不是「根因修好了」**。`scripts/` 底下還有五支各自寫了同一套「看到 fence 就翻轉」的邏輯——`check-hans-chars`、`check-image | CODE |
| MEDIUM⚡ | CHANGELOG.md | 393 | - **chore** · **上一批說的「4344 個真實標題」在這個 commit 仍然是 4344,但「沒有變」是巧合,不是穩定**。舊解析器把那 12 個被吞掉的標題**算進去了**(它以為那些行不在 code block 裡),r | CODE |
| MEDIUM⚡ | CHANGELOG.md | 393 | - **chore** · **上一批說的「4344 個真實標題」在這個 commit 仍然是 4344,但「沒有變」是巧合,不是穩定**。舊解析器把那 12 個被吞掉的標題**算進去了**(它以為那些行不在 code block 裡),r | CODE |
| MEDIUM⚡ | CHANGELOG.md | 398 | - **fix** · **網站上有 151 個錨點連結是死的,而 gate 一直是綠的([#93](https://github.com/WenyuChiou/awesome-agentic-ai-zh/issues/93))**。`sc | CODE |
| MEDIUM⚡ | CHANGELOG.md | 398 | - **fix** · **網站上有 151 個錨點連結是死的,而 gate 一直是綠的([#93](https://github.com/WenyuChiou/awesome-agentic-ai-zh/issues/93))**。`sc | CODE |
| MEDIUM⚡ | CHANGELOG.md | 789 | - **i18n** · `*.zh-CN.md` → `*.zh-Hans.md` migration per BCP 47 / W3C compliance (`21b653d`). 25 files renamed, ~270 mar | CODE |
| MEDIUM⚡ | CHANGELOG.md | 789 | - **i18n** · `*.zh-CN.md` → `*.zh-Hans.md` migration per BCP 47 / W3C compliance (`21b653d`). 25 files renamed, ~270 mar | CODE |
| MEDIUM⚡ | CHANGELOG.md | 794 | - **outreach** · Day 1 PR sent: `punkpeye/awesome-mcp-servers#6135`, adding awesome-agentic-ai-zh to `## Tutorials` (`a0 | CODE |
| MEDIUM | CHANGELOG.md | 341 | - **test** · **`check-links.py` 的 `main()` 從頭到尾沒有被測過,而判決就住在那裡([#102](https://github.com/WenyuChiou/awesome-agentic-ai-zh | CODE |
| MEDIUM | CHANGELOG.md | 341 | - **test** · **`check-links.py` 的 `main()` 從頭到尾沒有被測過,而判決就住在那裡([#102](https://github.com/WenyuChiou/awesome-agentic-ai-zh | CODE |
| MEDIUM | CHANGELOG.md | 358 | - **fix** · **`check-links.py` 報 14 個失敗,只有 5 個是真的([#94](https://github.com/WenyuChiou/awesome-agentic-ai-zh/issues/94))* | CODE |
| MEDIUM | CHANGELOG.md | 358 | - **fix** · **`check-links.py` 報 14 個失敗,只有 5 個是真的([#94](https://github.com/WenyuChiou/awesome-agentic-ai-zh/issues/94))* | CODE |
| MEDIUM | CHANGELOG.md | 639 | - **content** · Stage 2 Exercise 2 (Few-Shot) now makes a **fair** zero-shot vs few-shot comparison (resolves #62, repor | CODE |
| MEDIUM | CHANGELOG.md | 820 | - Each commit SHA is clickable: `https://github.com/WenyuChiou/awesome-agentic-ai-zh/commit/<sha>` | CODE |
| MEDIUM | PROGRESS.zh-Hans.md | 13 | > 不确定选哪条?看 [`README.zh-Hans.md`](README.zh-Hans.md) 的双轨说明,或 [`branches/DESIGN.md`](branches/DESIGN.md)。卡住开 [Discussion]( | CODE |
| MEDIUM⚡ | README.zh-Hans.md | 9 | # awesome-agentic-ai-zh | COMMENT |
| MEDIUM⚡ | README.zh-Hans.md | 19 |  | CODE |
| MEDIUM⚡ | README.zh-Hans.md | 20 | [](https://wenyuchiou.github.io/awesome-agentic-ai-zh/ | CODE |
| MEDIUM⚡ | README.zh-Hans.md | 24 | > 📱 手机阅读请使用[在线文档站](https://wenyuchiou.github.io/awesome-agentic-ai-zh/)。 | CODE |
| MEDIUM | README.zh-Hans.md | 56 | git clone https://github.com/WenyuChiou/awesome-agentic-ai-zh.git | CODE |
| MEDIUM | README.zh-Hans.md | 170 | - 内容错误、失效链接或过时信息:请开 [Issue](https://github.com/WenyuChiou/awesome-agentic-ai-zh/issues)。 | CODE |
| MEDIUM | README.zh-Hans.md | 193 | [](https://github.com/WenyuChiou/aweso | CODE |
| MEDIUM | README.zh-Hans.md | 200 | url = {https://github.com/WenyuChiou/awesome-agentic-ai-zh} | CODE |
| MEDIUM | PROGRESS.md | 13 | > 不確定選哪條?看 [`README.md`](README.md) 的雙軌說明,或 [`branches/DESIGN.md`](branches/DESIGN.md)。卡住開 [Discussion](https://github.c | CODE |
| MEDIUM⚡ | README.md | 9 | # awesome-agentic-ai-zh | COMMENT |
| MEDIUM⚡ | README.md | 19 |  | CODE |
| MEDIUM⚡ | README.md | 20 | [](https://wenyuchiou.github.io/awesome-agentic-ai-zh/ | CODE |
| MEDIUM⚡ | README.md | 24 | > 📱 手機閱讀請使用[線上文件站](https://wenyuchiou.github.io/awesome-agentic-ai-zh/)。 | CODE |
| MEDIUM | README.md | 56 | git clone https://github.com/WenyuChiou/awesome-agentic-ai-zh.git | CODE |
| MEDIUM | README.md | 170 | - 內容錯誤、失效連結或過時資訊:請開 [Issue](https://github.com/WenyuChiou/awesome-agentic-ai-zh/issues)。 | CODE |
| MEDIUM | README.md | 193 | [](https://github.com/WenyuChiou/aweso | CODE |
| MEDIUM | README.md | 200 | url = {https://github.com/WenyuChiou/awesome-agentic-ai-zh} | CODE |
| MEDIUM | ROADMAP.md | 78 | 要提想法請開 [Discussion](https://github.com/WenyuChiou/awesome-agentic-ai-zh/discussions);issue 留給缺陷、過時資訊或明確的新資源。 | CODE |
| MEDIUM⚡ | CONTRIBUTORS.md | 59 | | [@scott0127](https://github.com/scott0127) | **Stage 6 RAG 教材** — chunking strategies guide ([#2](https://github.com/W | CODE |
| MEDIUM⚡ | CONTRIBUTORS.md | 59 | | [@scott0127](https://github.com/scott0127) | **Stage 6 RAG 教材** — chunking strategies guide ([#2](https://github.com/W | CODE |
| 272 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | examples/stage-3/06-schema-design/test_anthropic.py | 10 | CODE | |
| LOW | …ples/stage-3/06-schema-design/starter_bad_anthropic.py | 15 | CODE | |
| LOW | examples/stage-3/06-schema-design/starter_good.py | 13 | CODE | |
| LOW | examples/stage-3/06-schema-design/test.py | 14 | CODE | |
| LOW | …les/stage-3/06-schema-design/starter_good_anthropic.py | 15 | CODE | |
| LOW | examples/stage-3/06-schema-design/starter_bad.py | 13 | CODE | |
| LOW | …ples/stage-3/02-multi-tool-selection/test_anthropic.py | 10 | CODE | |
| LOW | …s/stage-3/02-multi-tool-selection/starter_anthropic.py | 15 | CODE | |
| LOW | examples/stage-3/02-multi-tool-selection/test.py | 14 | CODE | |
| LOW | examples/stage-3/02-multi-tool-selection/starter.py | 19 | CODE | |
| LOW | …ples/stage-3/04-multi-step-reasoning/test_anthropic.py | 10 | CODE | |
| LOW | …s/stage-3/04-multi-step-reasoning/starter_anthropic.py | 15 | CODE | |
| LOW | examples/stage-3/04-multi-step-reasoning/test.py | 14 | CODE | |
| LOW | examples/stage-3/04-multi-step-reasoning/starter.py | 21 | CODE | |
| LOW | examples/stage-3/01-function-calling/test_anthropic.py | 3 | CODE | |
| LOW | …mples/stage-3/01-function-calling/starter_anthropic.py | 11 | CODE | |
| LOW | examples/stage-3/01-function-calling/test.py | 3 | CODE | |
| LOW | examples/stage-3/01-function-calling/starter.py | 11 | CODE | |
| LOW | examples/stage-3/05-error-handling/test_anthropic.py | 10 | CODE | |
| LOW | examples/stage-3/05-error-handling/starter_anthropic.py | 16 | CODE | |
| LOW | examples/stage-3/05-error-handling/test.py | 15 | CODE | |
| LOW | examples/stage-3/05-error-handling/starter.py | 22 | CODE | |
| LOW | …amples/stage-3/03-react-from-scratch/test_anthropic.py | 13 | CODE | |
| LOW | …les/stage-3/03-react-from-scratch/starter_anthropic.py | 16 | CODE | |
| LOW | …les/stage-3/03-react-from-scratch/starter_anthropic.py | 19 | CODE | |
| LOW | examples/stage-3/03-react-from-scratch/test.py | 16 | CODE | |
| LOW | examples/stage-3/03-react-from-scratch/starter.py | 20 | CODE | |
| LOW | examples/stage-4/05-typed-agent/test_anthropic.py | 3 | CODE | |
| LOW | examples/stage-4/05-typed-agent/starter_anthropic.py | 3 | CODE | |
| LOW | examples/stage-4/05-typed-agent/test.py | 3 | CODE | |
| LOW | examples/stage-4/05-typed-agent/starter.py | 7 | CODE | |
| LOW | examples/stage-4/03-graph-workflow/test_anthropic.py | 3 | CODE | |
| LOW | examples/stage-4/03-graph-workflow/starter_anthropic.py | 6 | CODE | |
| LOW | examples/stage-4/03-graph-workflow/test.py | 3 | CODE | |
| LOW | examples/stage-4/03-graph-workflow/starter.py | 8 | CODE | |
| LOW | examples/stage-4/02-multi-agent-roles/test_anthropic.py | 3 | CODE | |
| LOW | …ples/stage-4/02-multi-agent-roles/starter_anthropic.py | 13 | CODE | |
| LOW | examples/stage-4/02-multi-agent-roles/test.py | 3 | CODE | |
| LOW | examples/stage-4/02-multi-agent-roles/starter.py | 24 | CODE | |
| LOW | examples/stage-4/02-multi-agent-roles/starter.py | 28 | CODE | |
| LOW | …stage-4/01-same-agent-two-frameworks/test_anthropic.py | 3 | CODE | |
| LOW | …ge-4/01-same-agent-two-frameworks/starter_anthropic.py | 14 | CODE | |
| LOW | examples/stage-4/01-same-agent-two-frameworks/test.py | 9 | CODE | |
| LOW | examples/stage-4/01-same-agent-two-frameworks/test.py | 12 | CODE | |
| LOW | examples/stage-4/01-same-agent-two-frameworks/test.py | 20 | CODE | |
| LOW | …es/stage-4/01-same-agent-two-frameworks/test_crewai.py | 3 | CODE | |
| LOW | …amples/stage-4/01-same-agent-two-frameworks/starter.py | 18 | CODE | |
| LOW | …stage-4/01-same-agent-two-frameworks/starter_crewai.py | 17 | CODE | |
| LOW | …ples/stage-4/04-codeact-vs-json-tool/test_anthropic.py | 3 | CODE | |
| LOW | …s/stage-4/04-codeact-vs-json-tool/starter_anthropic.py | 6 | CODE | |
| LOW | examples/stage-4/04-codeact-vs-json-tool/test.py | 3 | CODE | |
| LOW | …s/stage-4/04-codeact-vs-json-tool/test_docker_smoke.py | 8 | CODE | |
| LOW | examples/stage-4/04-codeact-vs-json-tool/starter.py | 9 | CODE | |
| LOW | …amples/stage-5/tool-calling-tutor/evals/check_evals.py | 3 | CODE | |
| LOW | …mples/stage-2/01-prompt-eval-loop/starter_anthropic.py | 3 | CODE | |
| LOW | examples/stage-2/01-prompt-eval-loop/starter.py | 3 | CODE | |
| LOW | examples/stage-7/06-safe-execution/test.py | 3 | CODE | |
| LOW | examples/stage-7/06-safe-execution/starter.py | 6 | CODE | |
| LOW | examples/stage-7/04-sdk-advanced/test_anthropic.py | 3 | CODE | |
| LOW | examples/stage-7/04-sdk-advanced/starter_anthropic.py | 13 | CODE | |
| 130 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | examples/stage-4/05-typed-agent/test.py | 32 | except ValidationError: | CODE |
| HIGH | …ples/stage-4/04-codeact-vs-json-tool/test_anthropic.py | 24 | except ValueError: | CODE |
| HIGH | examples/stage-4/04-codeact-vs-json-tool/test.py | 22 | except (SyntaxError, ValueError): | CODE |
| HIGH | examples/stage-7/03-observability/test.py | 45 | except ValueError: | CODE |
| HIGH | …amples/stage-7/01-multi-agent-debate/test_anthropic.py | 42 | except ValueError: | CODE |
| HIGH | examples/stage-7/01-multi-agent-debate/test.py | 47 | except ValueError: | CODE |
| HIGH | scripts/check-anchors.py | 245 | except Exception: | CODE |
| HIGH | scripts/check-mirror-sync.py | 148 | except Exception: | CODE |
| HIGH | scripts/test_duplicate_repos.py | 149 | except Exception: | CODE |
| HIGH | scripts/test_check_links.py | 559 | except Exception: | CODE |
| HIGH | scripts/test_check_anchors.py | 428 | except Exception: | CODE |
| HIGH | scripts/refresh-stars.py | 177 | except (subprocess.SubprocessError, ValueError): | CODE |
| HIGH | scripts/check-reader-ux.py | 1154 | except (AttributeError, ValueError): | CODE |
| HIGH | scripts/test_reader_ux.py | 934 | except (AttributeError, ValueError): | CODE |
| HIGH | scripts/mutate_check_links.py | 182 | except (AttributeError, ValueError): | CODE |
| HIGH | scripts/check-stage-template.py | 121 | except Exception: | CODE |
| HIGH | scripts/check-catalog-counts.py | 158 | except (AttributeError, ValueError): | CODE |
| HIGH | scripts/check-2026-freshness.py | 320 | except Exception: | CODE |
| HIGH | scripts/test_mirror_parity.py | 265 | except (AttributeError, ValueError): | CODE |
| HIGH | scripts/zh-hans-localize.py | 267 | except Exception: | CODE |
| HIGH | scripts/test_anchor_slug_parity.py | 280 | except Exception: | CODE |
| HIGH | scripts/check-mirror-parity.py | 165 | except (AttributeError, ValueError): | CODE |
| HIGH | scripts/check-image-locale.py | 145 | except (AttributeError, ValueError): | CODE |
| HIGH | scripts/check-locale-links.py | 135 | except (AttributeError, ValueError): | CODE |
| HIGH | scripts/pr-link-audit.py | 276 | except (AttributeError, ValueError): | CODE |
| HIGH | scripts/sync-language-switchers.py | 32 | except Exception: | CODE |
| HIGH | scripts/check-hans-chars.py | 116 | except (AttributeError, ValueError): | CODE |
| HIGH | scripts/test_zh_hans_localize.py | 302 | except Exception: | CODE |
| HIGH | scripts/check-links.py | 371 | except (AttributeError, ValueError): | CODE |
| HIGH | scripts/check-duplicate-repos.py | 179 | except (AttributeError, ValueError): | CODE |
| HIGH | scripts/test_refresh_stars.py | 231 | except SystemExit: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …ples/stage-3/02-multi-tool-selection/test_anthropic.py | 0 | stage 3 練習 5 自我驗證 — path b(anthropic starter_anthropic.py)。 跑法: python test_anthropic.py 用 mock 取代 anthropic client、不打真 | STRING |
| HIGH | …ples/stage-3/04-multi-step-reasoning/test_anthropic.py | 0 | stage 3 練習 5 自我驗證 — path b(anthropic starter_anthropic.py)。 跑法: python test_anthropic.py 用 mock 取代 anthropic client、不打真 | STRING |
| HIGH | examples/stage-3/05-error-handling/test_anthropic.py | 0 | stage 3 練習 5 自我驗證 — path b(anthropic starter_anthropic.py)。 跑法: python test_anthropic.py 用 mock 取代 anthropic client、不打真 | STRING |
| HIGH | examples/stage-7/04-sdk-advanced/starter_anthropic.py | 0 | reject a provider response that contains no usable text. | STRING |
| HIGH | examples/stage-7/04-sdk-advanced/starter.py | 0 | reject a provider response that contains no usable text. | STRING |
| HIGH | examples/stage-7/03-observability/starter.py | 0 | reject a provider response that contains no usable text. | STRING |
| HIGH | …les/stage-7/01-multi-agent-debate/starter_anthropic.py | 0 | reject a provider response that contains no usable text. | STRING |
| HIGH | examples/stage-7/01-multi-agent-debate/starter.py | 0 | reject a provider response that contains no usable text. | STRING |
| HIGH | walkthroughs/build-first-agent-in-7-steps.zh-Hans.md | 0 | ## motivation smoke-test the writable memory boundary. ## method use a fake response and the real chroma collection. ## | STRING |
| HIGH | walkthroughs/build-first-agent-in-7-steps.en.md | 0 | ## motivation smoke-test the writable memory boundary. ## method use a fake response and the real chroma collection. ## | STRING |
| HIGH | walkthroughs/build-first-agent-in-7-steps.md | 0 | ## motivation smoke-test the writable memory boundary. ## method use a fake response and the real chroma collection. ## | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …s/stage-3/02-multi-tool-selection/starter_anthropic.py | 47 | CODE | |
| LOW | …s/stage-3/02-multi-tool-selection/starter_anthropic.py | 58 | CODE | |
| LOW | examples/stage-3/02-multi-tool-selection/starter.py | 54 | CODE | |
| LOW | examples/stage-3/02-multi-tool-selection/starter.py | 65 | CODE | |
| LOW | …s/stage-3/04-multi-step-reasoning/starter_anthropic.py | 105 | CODE | |
| LOW | examples/stage-3/04-multi-step-reasoning/starter.py | 162 | CODE | |
| LOW | …les/stage-3/03-react-from-scratch/starter_anthropic.py | 47 | CODE | |
| LOW | …les/stage-3/03-react-from-scratch/starter_anthropic.py | 58 | CODE | |
| LOW | examples/stage-3/03-react-from-scratch/starter.py | 51 | CODE | |
| LOW | examples/stage-3/03-react-from-scratch/starter.py | 62 | CODE | |
| LOW | examples/stage-7/04-sdk-advanced/starter_anthropic.py | 44 | CODE | |
| LOW | scripts/repository_freshness.py | 206 | CODE | |
| LOW | scripts/repository_freshness.py | 243 | CODE | |
| LOW | scripts/repository_freshness.py | 271 | CODE | |
| LOW | scripts/repository_freshness.py | 557 | CODE | |
| LOW | scripts/check-workflow-security.py | 43 | CODE | |
| LOW | scripts/refresh-stars.py | 242 | CODE | |
| LOW | scripts/refresh-stars.py | 314 | CODE | |
| LOW | scripts/check-image-delivery.py | 191 | CODE | |
| LOW | scripts/check-reader-ux.py | 134 | CODE | |
| LOW | scripts/check-reader-ux.py | 250 | CODE | |
| LOW | scripts/check-reader-ux.py | 448 | CODE | |
| LOW | scripts/check-reader-ux.py | 665 | CODE | |
| LOW | scripts/check-reader-ux.py | 942 | CODE | |
| LOW | scripts/mutate_check_links.py | 178 | CODE | |
| LOW | scripts/mkdocs_hooks.py | 284 | CODE | |
| LOW | scripts/mkdocs_hooks.py | 308 | CODE | |
| LOW | scripts/test_stage01_models.py | 226 | CODE | |
| LOW | scripts/md_fences.py | 110 | CODE | |
| LOW | scripts/release_manifest.py | 161 | CODE | |
| LOW | scripts/release_manifest.py | 401 | CODE | |
| LOW | scripts/release_manifest.py | 482 | CODE | |
| LOW | scripts/release_manifest.py | 622 | CODE | |
| LOW | scripts/release_manifest.py | 413 | CODE | |
| LOW | scripts/release_manifest.py | 434 | CODE | |
| LOW | scripts/build-docs-tree.py | 79 | CODE | |
| LOW | scripts/check-2026-freshness.py | 92 | CODE | |
| LOW | scripts/check-2026-freshness.py | 211 | CODE | |
| LOW | scripts/test_anchor_slug_parity.py | 159 | CODE | |
| LOW | scripts/check-mirror-parity.py | 157 | CODE | |
| LOW | scripts/check-image-locale.py | 137 | CODE | |
| LOW | scripts/check-locale-links.py | 98 | CODE | |
| LOW | scripts/pr-link-audit.py | 85 | CODE | |
| LOW | scripts/sync-language-switchers.py | 128 | CODE | |
| LOW | scripts/sync-language-switchers.py | 219 | CODE | |
| LOW | scripts/sync-language-switchers.py | 326 | CODE | |
| LOW | scripts/check-links.py | 299 | CODE | |
| LOW | scripts/check-duplicate-repos.py | 79 | CODE | |
| LOW | scripts/test_refresh_stars.py | 471 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | mkdocs.yml | 121 | - tables | COMMENT |
| LOW | requirements-docs.txt | 1 | # Docs site (GitHub Pages) build dependencies — used by .github/workflows/docs.yml | COMMENT |
| LOW | scripts/refresh-stars.py | 21 | import subprocess | COMMENT |
| LOW | scripts/refresh-stars.py | 41 | COMMENT | |
| LOW | scripts/refresh-stars.py | 61 | # 抓 markdown 內標註的 stars:`| Stars | ★ 12k+ |` 或 inline `★ 12k+` | COMMENT |
| LOW | scripts/refresh-stars.py | 381 | # Second pass: prose counts on lines with NO GitHub URL at all. | COMMENT |
| LOW | scripts/check-stage-template.py | 61 | # template check at file level doesn't make sense. | COMMENT |
| LOW | scripts/mkdocs_hooks.py | 21 | """ | COMMENT |
| LOW | scripts/build-mdbook.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | scripts/zh-hans-localize.py | 61 | # EXCLUDED on purpose (grep-verified unsafe — do NOT add): | COMMENT |
| LOW | scripts/zh-hans-localize.py | 81 | # Terms that are UNSAFE as blanket substrings but safe with a context guard. | COMMENT |
| LOW | scripts/zh-hans-localize.py | 101 | # lookbehind, so the separator is matched explicitly instead. | COMMENT |
| LOW | scripts/zh-hans-localize.py | 121 | r"|[*_~`\[\]()]" # markdown emphasis / link syntax | COMMENT |
| LOW | scripts/zh-hans-localize.py | 141 | # reader can see it; a wrong substitution silently corrupts a word in a gate | COMMENT |
| LOW | scripts/check-links.py | 101 | "(KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36" | COMMENT |
| LOW | scripts/check-links.py | 121 | # | COMMENT |
| LOW | scripts/check-links.py | 421 | baseline = load_unverifiable_baseline() | COMMENT |
| LOW | scripts/test_repo_scan_excludes.py | 41 | # | COMMENT |
| LOW | .github/FUNDING.yml | 1 | # Shows a "Sponsor" button at the top of this repository. | COMMENT |
| LOW | .github/workflows/anchor-validator.yml | 1 | name: Anchor Validator | COMMENT |
| LOW | .github/workflows/lint.yml | 1 | name: Lint (content, freshness, and schema) | COMMENT |
| LOW | .github/workflows/lint.yml | 61 | echo "Found $FOUND banned-word violations. See resources/style-guide.md §3." | COMMENT |
| LOW | .github/workflows/lint.yml | 101 | echo "✓ No zh-TW residue." | COMMENT |
| LOW | .github/workflows/lint.yml | 181 | python3 scripts/zh-hans-localize.py --check | COMMENT |
| LOW | .github/workflows/lint.yml | 201 | COMMENT | |
| LOW | .github/workflows/lint.yml | 221 | # legitimate deltas are baselined, and it fails only when a deficit grows | COMMENT |
| LOW | .github/workflows/lint.yml | 261 | COMMENT | |
| LOW | .github/workflows/lint.yml | 281 | # Pins the conservative exemptions (missing sibling / switcher row / | COMMENT |
| LOW | .github/workflows/lint.yml | 321 | # Network-free — every request is faked. | COMMENT |
| LOW | .github/workflows/lint.yml | 341 | # entries are not reported. stdlib-only, network-free. | COMMENT |
| LOW | .github/workflows/lint.yml | 401 | # Its own job because it needs the real mkdocs config loader — it asks | COMMENT |
| LOW | .github/workflows/docs.yml | 1 | name: Site (mkdocs + mdBook) → GitHub Pages | COMMENT |
| LOW | .github/workflows/stage-template-check.yml | 1 | name: Stage Template Check | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | examples/stage-7/06-safe-execution/starter.py | 51 | except Exception: | CODE |
| LOW | examples/stage-7/05-deploy/starter_anthropic.py | 106 | except Exception as e: # noqa: BLE001 | CODE |
| LOW | examples/stage-7/05-deploy/starter.py | 111 | except Exception as e: # noqa: BLE001 | CODE |
| LOW | examples/stage-7/02-eval/eval_core.py | 350 | except Exception: | CODE |
| LOW | examples/stage-7/03-observability/starter.py | 93 | except Exception as exc: | CODE |
| LOW | examples/stage-1/04-cross-provider/README.en.md | 103 | except Exception: | CODE |
| LOW | examples/stage-1/04-cross-provider/README.zh-Hans.md | 103 | except Exception: | CODE |
| LOW | examples/stage-1/04-cross-provider/README.md | 104 | except Exception: | CODE |
| LOW | scripts/check-anchors.py | 245 | except Exception: | CODE |
| LOW | scripts/check-anchors.py | 260 | except Exception as e: | CODE |
| LOW | scripts/check-mirror-sync.py | 53 | except Exception: | CODE |
| LOW | scripts/check-mirror-sync.py | 148 | except Exception: | CODE |
| LOW | scripts/test_duplicate_repos.py | 149 | except Exception: | CODE |
| LOW | scripts/repository_freshness.py | 433 | except Exception as exc: # fail visibly; never call an exception healthy | CODE |
| LOW | scripts/test_check_links.py | 559 | except Exception: | CODE |
| LOW | scripts/test_pr_link_audit.py | 264 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW | scripts/test_check_anchors.py | 428 | except Exception: | CODE |
| LOW | scripts/test_image_locale.py | 198 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW | scripts/test_reader_ux.py | 942 | except Exception as exc: # noqa: BLE001 - standalone test runner | STRING |
| LOW | scripts/test_catalog_counts.py | 164 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW | scripts/check-stage-template.py | 121 | except Exception: | CODE |
| LOW | scripts/check-2026-freshness.py | 320 | except Exception: | CODE |
| LOW | scripts/check-2026-freshness.py | 344 | except Exception as e: | CODE |
| LOW | scripts/test_mirror_parity.py | 277 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW | scripts/zh-hans-localize.py | 267 | except Exception: | CODE |
| LOW | scripts/test_anchor_slug_parity.py | 280 | except Exception: | CODE |
| LOW | scripts/test_repository_freshness.py | 497 | except Exception as exc: | CODE |
| LOW | scripts/test_hans_chars.py | 189 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW | scripts/pr-link-audit.py | 308 | except Exception as exc: # noqa: BLE001 — advisory tool must never fail CI | CODE |
| LOW | scripts/sync-language-switchers.py | 32 | except Exception: | CODE |
| LOW | scripts/test_zh_hans_localize.py | 302 | except Exception: | CODE |
| LOW | scripts/test_locale_links.py | 159 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW | walkthroughs/build-first-agent-in-7-steps.zh-Hans.md | 626 | except Exception as exc: | CODE |
| LOW | walkthroughs/build-first-agent-in-7-steps.en.md | 626 | except Exception as exc: | CODE |
| LOW | walkthroughs/build-first-agent-in-7-steps.md | 624 | except Exception as exc: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | scripts/test_freshness.py | 90 | # ── Hole #2: mirror locales are scanned ─────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | scripts/test_freshness.py | 117 | # ── canonical_rel + per-file override inheritance ───────────────────────────── | COMMENT |
| MEDIUM | scripts/test_freshness.py | 62 | # ── Hole #1: DeepSeek regex space-form ──────────────────────────────────────── | COMMENT |
| MEDIUM | scripts/test_freshness.py | 160 | # ── Ties to the REAL config (breaks if someone reverts the fixes) ───────────── | COMMENT |
| MEDIUM | scripts/test_freshness.py | 204 | # ── Machine-readable page freshness markers ────────────────────────────────── | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | scripts/test_check_links.py | 520 | mixed.write_text('{"unverifiable": ["https://a", 42, null]}', | CODE |
| HIGH | scripts/test_check_links.py | 495 | list, a bare null) reached `data.get` and raised AttributeError, which took | STRING |
| HIGH | scripts/test_walkthrough_coherence.py | 248 | "promptfoo eval && promptfoo view", | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | examples/stage-2/01-prompt-eval-loop/README.en.md | 15 | ## Step 1: Run the no-model version first | COMMENT |
| LOW | examples/stage-2/01-prompt-eval-loop/README.en.md | 25 | ## Step 2: Confirm that the program calculates correctly | COMMENT |
| LOW⚡ | scripts/refresh-stars.py | 299 | if m_stars: # Step 1: same-line | CODE |
| LOW⚡ | scripts/refresh-stars.py | 301 | if not line.lstrip().startswith("|"): # Step 2: entry-block only, never table rows | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …ples/stage-3/06-schema-design/starter_bad_anthropic.py | 29 | def process_data(data: str = "") -> str: | CODE |
| LOW | examples/stage-3/06-schema-design/starter_good.py | 28 | def process_data(data: list[dict], operation: str) -> dict: | CODE |
| LOW | …les/stage-3/06-schema-design/starter_good_anthropic.py | 28 | def process_data(data: list[dict], operation: str) -> dict: | CODE |
| LOW | examples/stage-3/06-schema-design/starter_bad.py | 28 | def process_data(data: str = "") -> str: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | examples/stage-3/05-error-handling/starter_anthropic.py | 32 | def set_weather_failures(plan: list[bool]) -> None: | CODE |
| LOW | examples/stage-3/05-error-handling/starter.py | 38 | def set_weather_failures(plan: list[bool]) -> None: | CODE |
| LOW | scripts/check-mirror-sync.py | 133 | def set_gh_output(name: str, value: str) -> None: | CODE |
| LOW | scripts/md_fences.py | 65 | __all__ = [ | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | scripts/refresh-stars.py | 299 | if m_stars: # Step 1: same-line | CODE |
| LOW⚡ | scripts/refresh-stars.py | 301 | if not line.lstrip().startswith("|"): # Step 2: entry-block only, never table rows | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | scripts/check-links.py | 126 | # and 33 links on that host plus 4 on deepseek-harness.github.io would have gone | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | stages/05-claude-code-ecosystem.en.md | 236 | - Success condition: both the fake-data test and one real `Write` add a line, and the log contains neither a prompt nor | CODE |
| LOW | resources/agent-paradigms.en.md | 85 | A local model can reduce the need to send Prompts to an external Provider. But an Agent with network, tool, or broad fol | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/test_reader_ux.py | 32 | CODE |