Open-source, desktop-grade AI agent that gets real work done — data analysis, slides, docs, video & web research. Built on OpenClaw; runs tools on your real desktop and takes commands from your phone via WeChat, Feishu, DingTalk & Telegram.
This report presents the forensic synthetic code analysis of netease-youdao/LobsterAI, a TypeScript project with 5,546 GitHub stars. SynthScan v2.0 examined 365,120 lines of code across 1261 source files, recording 1187 pattern matches distributed across 18 syntactic categories. The overall adjusted score of 5.0 places this repository in the Low AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 1187 distinct pattern matches across 18 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. 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 diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …ts/2026-06-17-markdown-mermaid-share-preview-design.md | 573 | function getHtmlShareSourceTypeForArtifact(artifact: Artifact): HtmlShareSourceType | null { | CODE |
| LOW | …ts/2026-06-17-markdown-mermaid-share-preview-design.md | 617 | function collectMarkdownLocalAssets(markdown: string, baseDir: string, allowedRoot: string): MarkdownAsset[] | CODE |
| LOW | …ifacts/2026-07-01-auto-open-artifact-preview-design.md | 179 | export function selectAutoPreviewArtifact( | CODE |
| LOW | …ures/kit/2026-05-29-kit-capability-reference-design.md | 253 | function normalizeMarketplaceKitForInstall( | CODE |
| LOW | …ures/kit/2026-05-29-kit-capability-reference-design.md | 362 | function resolveSelectedKitCapabilities( | CODE |
| LOW | …terprise-config/2026-03-23-enterprise-config-design.md | 250 | export function resolveEnterpriseConfigPath(): string | null | CODE |
| LOW | …terprise-config/2026-03-23-enterprise-config-design.md | 403 | export function resolveEnterpriseConfigPath(): string | null { | CODE |
| LOW | …ocal-callback/2026-06-05-auth-local-callback-design.md | 318 | function resolveElectronCallbackUrl(authCode: string): string { | CODE |
| LOW | …eatures/cowork-steer/2026-07-06-cowork-steer-design.md | 524 | function resolveCoworkSubmitIntent(state: PromptState): SubmitIntent { | CODE |
| LOW | …viders/2026-03-31-refactor-build-provider-selection.md | 201 | function getEffectiveProviderApiFormat(providerName: string, apiFormat: unknown): AnthropicApiFormat { | CODE |
| LOW | …viders/2026-03-31-refactor-build-provider-selection.md | 1002 | function getEffectiveProviderApiFormat(providerName: string, apiFormat: unknown): AnthropicApiFormat { | CODE |
| LOW | …viders/2026-03-31-refactor-build-provider-selection.md | 1017 | function getEffectiveProviderApiFormat(providerName: string, apiFormat: unknown): AnthropicApiFormat { | CODE |
| LOW | …del-invalid/2026-04-03-agent-model-selection-design.md | 349 | export function resolveAgentModelSelection({ | CODE |
| LOW | …5-26-windows-update-vbscript-deprecation-fix-design.md | 181 | async function spawnDetachedWindowsUpdateLauncher(scriptPath: string): Promise<number | undefined> | CODE |
| LOW | …/2026-05-22-qwen-coding-plan-qwen36-plus-fix-design.md | 176 | export function buildQwenModelCatalogForBaseUrl( | CODE |
| LOW | …/2026-05-22-qwen-coding-plan-qwen36-plus-fix-design.md | 192 | export function buildQwenModelCatalogForBaseUrl( | CODE |
| LOW | …026-07-05-agent-identity-agents-md-migration-design.md | 268 | export function removeLegacyAgentsMdIdentityBlock(content: string): { | CODE |
| LOW | scripts/setup-mingit.js | 183 | function ensurePortableGitRuntimeDirs(required) { | CODE |
| LOW | scripts/setup-python-runtime.js | 497 | async function bootstrapRuntimeOnWindows() { | CODE |
| LOW | scripts/setup-python-runtime.js | 577 | function findPortablePythonExecutable(baseDir = OUTPUT_DIR) { | CODE |
| LOW | scripts/setup-python-runtime.js | 590 | async function ensurePortablePythonRuntime(options = {}) { | CODE |
| LOW | SKILLs/pdf/scripts/fill_fillable_fields.py | 59 | def validation_error_for_field_value(field_info, field_value): | CODE |
| LOW | SKILLs/pdf/scripts/extract_form_field_info.py | 12 | def get_full_annotation_field_id(annotation): | CODE |
| LOW | SKILLs/pdf/scripts/check_bounding_boxes.py | 18 | def get_bounding_box_messages(fields_json_stream) -> list[str]: | CODE |
| LOW | SKILLs/pdf/scripts/check_bounding_boxes_test.py | 38 | def test_label_entry_intersection_same_field(self): | CODE |
| LOW | SKILLs/pdf/scripts/check_bounding_boxes_test.py | 56 | def test_intersection_between_different_fields(self): | CODE |
| LOW | SKILLs/pdf/scripts/check_bounding_boxes_test.py | 80 | def test_different_pages_no_intersection(self): | CODE |
| LOW | SKILLs/pdf/scripts/check_bounding_boxes_test.py | 104 | def test_entry_height_too_small(self): | CODE |
| LOW | SKILLs/pdf/scripts/check_bounding_boxes_test.py | 125 | def test_entry_height_adequate(self): | CODE |
| LOW | SKILLs/pdf/scripts/check_bounding_boxes_test.py | 183 | def test_multiple_errors_limit(self): | CODE |
| LOW | SKILLs/pptx/ooxml/scripts/validation/docx.py | 72 | def validate_whitespace_preservation(self): | CODE |
| LOW | SKILLs/pptx/ooxml/scripts/validation/docx.py | 173 | def count_paragraphs_in_unpacked(self): | CODE |
| LOW⚡ | SKILLs/pptx/ooxml/scripts/validation/docx.py | 192 | def count_paragraphs_in_original(self): | CODE |
| LOW | SKILLs/pptx/ooxml/scripts/validation/redlining.py | 217 | def _remove_claude_tracked_changes(self, root): | CODE |
| LOW | SKILLs/pptx/ooxml/scripts/validation/pptx.py | 128 | def validate_slide_layout_ids(self): | CODE |
| LOW | SKILLs/pptx/ooxml/scripts/validation/pptx.py | 203 | def validate_no_duplicate_slide_layouts(self): | CODE |
| LOW | SKILLs/pptx/ooxml/scripts/validation/pptx.py | 243 | def validate_notes_slide_references(self): | CODE |
| LOW⚡ | SKILLs/pptx/ooxml/scripts/validation/base.py | 765 | def _clean_ignorable_namespaces(self, xml_doc): | CODE |
| LOW | SKILLs/pptx/ooxml/scripts/validation/base.py | 388 | def validate_all_relationship_ids(self): | CODE |
| LOW | SKILLs/pptx/ooxml/scripts/validation/base.py | 486 | def _get_expected_relationship_type(self, element_name): | CODE |
| LOW | SKILLs/pptx/ooxml/scripts/validation/base.py | 641 | def validate_file_against_xsd(self, xml_file, verbose=False): | CODE |
| LOW | SKILLs/pptx/ooxml/scripts/validation/base.py | 791 | def _remove_ignorable_elements(self, root): | CODE |
| LOW | SKILLs/pptx/ooxml/scripts/validation/base.py | 815 | def _preprocess_for_mc_ignorable(self, xml_doc): | CODE |
| LOW | SKILLs/pptx/ooxml/scripts/validation/base.py | 826 | def _validate_single_file_xsd(self, xml_file, base_path): | CODE |
| LOW | SKILLs/pptx/ooxml/scripts/validation/base.py | 869 | def _get_original_file_errors(self, xml_file): | CODE |
| LOW | SKILLs/pptx/ooxml/scripts/validation/base.py | 906 | def _remove_template_tags_from_text_nodes(self, xml_doc): | CODE |
| LOW⚡ | SKILLs/pptx/scripts/thumbnail.py | 149 | def create_hidden_slide_placeholder(size): | CODE |
| LOW | SKILLs/pptx/scripts/inventory.py | 639 | def _calculate_slide_overflow(self) -> None: | CODE |
| LOW | SKILLs/pptx/scripts/inventory.py | 766 | def collect_shapes_with_absolute_positions( | CODE |
| LOW | SKILLs/pptx/scripts/replace.py | 43 | def apply_paragraph_properties(paragraph, para_data: Dict[str, Any]): | CODE |
| LOW | SKILLs/web-search/server/playwright/browser.ts | 82 | function resolveRuntimeChromeFlags(configFlags: string[] = []): string[] { | CODE |
| LOW | SKILLs/docx/ooxml/scripts/validation/docx.py | 72 | def validate_whitespace_preservation(self): | CODE |
| LOW | SKILLs/docx/ooxml/scripts/validation/docx.py | 173 | def count_paragraphs_in_unpacked(self): | CODE |
| LOW⚡ | SKILLs/docx/ooxml/scripts/validation/docx.py | 192 | def count_paragraphs_in_original(self): | CODE |
| LOW | SKILLs/docx/ooxml/scripts/validation/redlining.py | 217 | def _remove_claude_tracked_changes(self, root): | CODE |
| LOW | SKILLs/docx/ooxml/scripts/validation/pptx.py | 128 | def validate_slide_layout_ids(self): | CODE |
| LOW | SKILLs/docx/ooxml/scripts/validation/pptx.py | 203 | def validate_no_duplicate_slide_layouts(self): | CODE |
| LOW | SKILLs/docx/ooxml/scripts/validation/pptx.py | 243 | def validate_notes_slide_references(self): | CODE |
| LOW⚡ | SKILLs/docx/ooxml/scripts/validation/base.py | 765 | def _clean_ignorable_namespaces(self, xml_doc): | CODE |
| LOW | SKILLs/docx/ooxml/scripts/validation/base.py | 388 | def validate_all_relationship_ids(self): | CODE |
| 567 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …viders/2026-03-31-refactor-build-provider-selection.md | 74 | // ─── Provider Name ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …viders/2026-03-31-refactor-build-provider-selection.md | 96 | // ─── OpenClaw Provider ID ─────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | …viders/2026-03-31-refactor-build-provider-selection.md | 119 | // ─── OpenClaw API Protocol ────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | …viders/2026-03-31-refactor-build-provider-selection.md | 128 | // ─── API Format (provider 默认协议格式) ───────────────────────────────── | COMMENT |
| MEDIUM⚡ | …viders/2026-03-31-refactor-build-provider-selection.md | 136 | // ─── Auth Type ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | scripts/build-openclaw-runtime.sh | 89 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | scripts/build-openclaw-runtime.sh | 94 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | SKILLs/stock-explorer/scripts/quote.py | 28 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | SKILLs/stock-explorer/scripts/quote.py | 30 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | SKILLs/stock-explorer/scripts/quote.py | 66 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | SKILLs/stock-explorer/scripts/quote.py | 68 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | SKILLs/stock-explorer/scripts/quote.py | 82 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | SKILLs/stock-explorer/scripts/quote.py | 84 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | SKILLs/stock-explorer/scripts/quote.py | 209 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | SKILLs/stock-explorer/scripts/quote.py | 211 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | SKILLs/technology-news-search/scripts/search_news.js | 105 | // ── web-search skill integration ────────────────────────────────── | COMMENT |
| MEDIUM | SKILLs/technology-news-search/scripts/search_news.js | 214 | // ── end web-search integration ──────────────────────────────────── | COMMENT |
| MEDIUM | SKILLs/skill-creator/eval-viewer/generate_review.py | 284 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | SKILLs/skill-creator/eval-viewer/generate_review.py | 286 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | SKILLs/stock-announcements/scripts/announcements.py | 31 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | SKILLs/stock-announcements/scripts/announcements.py | 33 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | SKILLs/stock-announcements/scripts/announcements.py | 89 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | SKILLs/stock-announcements/scripts/announcements.py | 91 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | SKILLs/stock-announcements/scripts/announcements.py | 130 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | SKILLs/stock-announcements/scripts/announcements.py | 132 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | SKILLs/stock-announcements/scripts/announcements.py | 157 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | SKILLs/stock-announcements/scripts/announcements.py | 159 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | SKILLs/stock-analyzer/scripts/analyze.py | 20 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | SKILLs/stock-analyzer/scripts/analyze.py | 22 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | SKILLs/stock-analyzer/scripts/analyze.py | 51 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | SKILLs/stock-analyzer/scripts/analyze.py | 53 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | SKILLs/stock-analyzer/scripts/analyze.py | 139 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | SKILLs/stock-analyzer/scripts/analyze.py | 141 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | SKILLs/stock-analyzer/scripts/analyze.py | 170 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | SKILLs/stock-analyzer/scripts/analyze.py | 172 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | SKILLs/stock-analyzer/scripts/analyze.py | 307 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | SKILLs/stock-analyzer/scripts/analyze.py | 309 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/renderer/types/cowork.ts | 401 | // ── Dreaming content display types ────────────────────────────────── | COMMENT |
| MEDIUM | src/renderer/utils/userMessageDisplay.test.ts | 5 | // ─── Helpers ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/renderer/utils/userMessageDisplay.test.ts | 18 | // ─── Passthrough ──────────────────────────────────────────── | COMMENT |
| MEDIUM | src/renderer/utils/userMessageDisplay.test.ts | 47 | // ─── LobsterAI goal mode ──────────────────────────────────── | COMMENT |
| MEDIUM | src/renderer/utils/userMessageDisplay.test.ts | 73 | // ─── Pattern A: NIM/DingTalk ──────────────────────────────── | COMMENT |
| MEDIUM | src/renderer/utils/userMessageDisplay.test.ts | 158 | // ─── Pattern B: OpenClaw gateway ──────────────────────────── | COMMENT |
| MEDIUM | src/renderer/utils/userMessageDisplay.test.ts | 263 | // ─── System: timestamp lines ──────────────────────────────── | COMMENT |
| MEDIUM | src/renderer/utils/userMessageDisplay.test.ts | 300 | // ─── Mac compatibility ────────────────────────────────────── | COMMENT |
| MEDIUM | src/renderer/utils/userMessageDisplay.test.ts | 321 | // ─── False positive safety ────────────────────────────────── | COMMENT |
| MEDIUM | src/renderer/utils/userMessageDisplay.test.ts | 346 | // ─── \\r\\n handling ───────────────────────────────────────── | COMMENT |
| MEDIUM | src/renderer/utils/userMessageDisplay.test.ts | 375 | // ─── Non-image media ──────────────────────────────────────── | COMMENT |
| MEDIUM | src/renderer/components/CodeBlock.tsx | 256 | // ── First pass: probe whether this really looks like a diff ────────── | COMMENT |
| MEDIUM | src/renderer/components/CodeBlock.tsx | 298 | // ── Second pass: split into original / modified ────────────────────── | COMMENT |
| MEDIUM | src/renderer/components/CodeBlock.tsx | 446 | // ── DOM structure ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/renderer/components/CodeBlock.tsx | 513 | // ── Helpers ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/renderer/components/CodeBlock.tsx | 553 | // ── Event listeners ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/renderer/components/CodeBlock.tsx | 572 | // ── Panel interface ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/renderer/components/CodeBlock.tsx | 1202 | // ── Static extensions (never reconfigured) ────────────────────── | COMMENT |
| MEDIUM | src/renderer/components/CodeBlock.tsx | 1241 | // ── Dynamic compartments (reconfigured on prop changes) ───────── | COMMENT |
| MEDIUM | …/renderer/components/artifacts/ArtifactPreviewCard.tsx | 52 | // ── Dropdown Menu for Document Artifacts ────────────────────────── | COMMENT |
| MEDIUM | …/renderer/components/artifacts/ArtifactPreviewCard.tsx | 342 | // ── Main Card Component ────────────────────────────────────────── | COMMENT |
| MEDIUM | src/renderer/components/cowork/ToolCallGroup.tsx | 40 | // ── TodoWriteInputView ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/renderer/components/cowork/ToolCallGroup.tsx | 81 | // ── ToolCallGroup ──────────────────────────────────────────────────────────── | COMMENT |
| 120 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …viders/2026-03-31-refactor-build-provider-selection.md | 616 | ### Step 1: 定义类型和 Registry(不改变行为) | COMMENT |
| LOW | …viders/2026-03-31-refactor-build-provider-selection.md | 631 | ### Step 2: 重写 `buildProviderSelection` | COMMENT |
| LOW | …viders/2026-03-31-refactor-build-provider-selection.md | 642 | ### Step 3: 保留 `lobsterai-server` 的日志 | COMMENT |
| LOW | …viders/2026-03-31-refactor-build-provider-selection.md | 650 | ### Step 4: 补充测试 | COMMENT |
| LOW | …ve-migration/2026-05-14-mcp-native-migration-design.md | 144 | ### Step 1: 提取 resolveStdioCommand 为独立模块 | COMMENT |
| LOW | …ve-migration/2026-05-14-mcp-native-migration-design.md | 155 | ### Step 2: 修改 openclawConfigSync.ts | COMMENT |
| LOW | …ve-migration/2026-05-14-mcp-native-migration-design.md | 180 | ### Step 3: 简化 McpBridgeServer | COMMENT |
| LOW | …ve-migration/2026-05-14-mcp-native-migration-design.md | 193 | ### Step 4: 重写 main.ts MCP 逻辑 | COMMENT |
| LOW | …ve-migration/2026-05-14-mcp-native-migration-design.md | 214 | ### Step 5: 简化 Renderer 层 | COMMENT |
| LOW | …ve-migration/2026-05-14-mcp-native-migration-design.md | 221 | ### Step 6: 删除废弃文件 | COMMENT |
| LOW⚡ | …l-invalid/2026-04-28-fix-agent-model-invalid-design.md | 141 | ### Step 1: 核心模型选择逻辑重构 (`7153cd2`) | COMMENT |
| LOW⚡ | …l-invalid/2026-04-28-fix-agent-model-invalid-design.md | 149 | ### Step 2: 合并冲突解决 (`6144ff1`) | COMMENT |
| LOW⚡ | …l-invalid/2026-04-28-fix-agent-model-invalid-design.md | 153 | ### Step 3: 新建 session 时持久化 modelOverride (`18a33b5`) | COMMENT |
| LOW⚡ | …l-invalid/2026-04-28-fix-agent-model-invalid-design.md | 157 | ### Step 4: 阻止 session.modelOverride 被 normalization 改写 (`2500d89`) | COMMENT |
| LOW⚡ | …l-invalid/2026-04-28-fix-agent-model-invalid-design.md | 161 | ### Step 5: Home 页模型选择解耦 (`0cb02d6`) | COMMENT |
| LOW⚡ | …l-invalid/2026-04-28-fix-agent-model-invalid-design.md | 165 | ### Step 6: 清理 (`0d96884`) | COMMENT |
| LOW | scripts/generate-app-icon.js | 26 | // Step 1: Use PowerShell + System.Drawing to resize the source PNG | COMMENT |
| LOW | scripts/generate-app-icon.js | 57 | // Step 2: Read resized PNGs and pack into ICO | COMMENT |
| LOW | SKILLs/pdf/forms.md | 85 | ## Step 1: Visual Analysis (REQUIRED) | COMMENT |
| LOW | SKILLs/pdf/forms.md | 130 | ### Step 2: Create fields.json and validation images (REQUIRED) | COMMENT |
| LOW | SKILLs/pdf/forms.md | 184 | ### Step 3: Validate Bounding Boxes (REQUIRED) | COMMENT |
| LOW | SKILLs/pdf/forms.md | 203 | ### Step 4: Add annotations to the PDF | COMMENT |
| LOW | SKILLs/content-planner/SKILL.md | 56 | ### Step 1: Clarify Planning Scope | COMMENT |
| LOW | SKILLs/content-planner/SKILL.md | 68 | ### Step 2: Trending Scan | COMMENT |
| LOW | SKILLs/content-planner/SKILL.md | 87 | ### Step 3: Competitor Analysis | COMMENT |
| LOW | SKILLs/content-planner/SKILL.md | 98 | ### Step 4: Generate Topic Recommendations | COMMENT |
| LOW | SKILLs/content-planner/SKILL.md | 114 | ### Step 5: User Approval | COMMENT |
| LOW | SKILLs/content-planner/SKILL.md | 120 | ### Step 6: Generate Content Calendar | COMMENT |
| LOW | SKILLs/content-planner/SKILL.md | 145 | ### Step 7: Output Confirmation | COMMENT |
| LOW | SKILLs/article-writer/SKILL.md | 30 | ### Step 1: Read the Brief | COMMENT |
| LOW | SKILLs/article-writer/SKILL.md | 42 | ### Step 2: Determine Writing Style | COMMENT |
| LOW | SKILLs/article-writer/SKILL.md | 56 | ### Step 3: Material Collection | COMMENT |
| LOW | SKILLs/article-writer/SKILL.md | 71 | ### Step 4: Generate Outline | COMMENT |
| LOW | SKILLs/article-writer/SKILL.md | 130 | ### Step 5: User Approval of Outline | COMMENT |
| LOW | SKILLs/article-writer/SKILL.md | 136 | ### Step 6: Write the Content | COMMENT |
| LOW | SKILLs/article-writer/SKILL.md | 165 | ### Step 7: Formatting Optimization | COMMENT |
| LOW | SKILLs/article-writer/SKILL.md | 181 | ### Step 8: Output Draft | COMMENT |
| LOW | SKILLs/article-writer/SKILL.md | 200 | ### Step 9: Quality Checklist | COMMENT |
| LOW | SKILLs/article-writer/SKILL.md | 214 | ### Step 1: Generate 10 Candidate Titles | COMMENT |
| LOW | SKILLs/article-writer/SKILL.md | 227 | ### Step 2: Score and Filter | COMMENT |
| LOW⚡ | SKILLs/technology-news-search/scripts/search_news.js | 277 | // Step 1: Filter by network accessibility (silent, automatic) | COMMENT |
| LOW⚡ | SKILLs/technology-news-search/scripts/search_news.js | 280 | // Step 2: Smart routing - filter sources by detected domains | COMMENT |
| LOW | SKILLs/skill-creator/SKILL.md | 171 | ### Step 1: Spawn all runs (with-skill AND baseline) in the same turn | COMMENT |
| LOW | SKILLs/skill-creator/SKILL.md | 201 | ### Step 2: While runs are in progress, draft assertions | COMMENT |
| LOW | SKILLs/skill-creator/SKILL.md | 209 | ### Step 3: As runs complete, capture timing data | COMMENT |
| LOW | SKILLs/skill-creator/SKILL.md | 223 | ### Step 4: Grade, aggregate, and launch the viewer | COMMENT |
| LOW | SKILLs/skill-creator/SKILL.md | 269 | ### Step 5: Read the feedback | COMMENT |
| LOW | SKILLs/skill-creator/SKILL.md | 339 | ### Step 1: Generate trigger eval queries | COMMENT |
| LOW | SKILLs/skill-creator/SKILL.md | 362 | ### Step 2: Review with user | COMMENT |
| LOW | SKILLs/skill-creator/SKILL.md | 377 | ### Step 3: Run the optimization loop | COMMENT |
| LOW | SKILLs/skill-creator/SKILL.md | 404 | ### Step 4: Apply the result | COMMENT |
| LOW⚡ | SKILLs/skill-creator/agents/grader.md | 21 | ### Step 1: Read the Transcript | COMMENT |
| LOW⚡ | SKILLs/skill-creator/agents/grader.md | 27 | ### Step 2: Examine Output Files | COMMENT |
| LOW⚡ | SKILLs/skill-creator/agents/grader.md | 33 | ### Step 3: Evaluate Each Assertion | COMMENT |
| LOW⚡ | SKILLs/skill-creator/agents/grader.md | 43 | ### Step 4: Extract and Verify Claims | COMMENT |
| LOW | SKILLs/skill-creator/agents/grader.md | 61 | ### Step 5: Read User Notes | COMMENT |
| LOW | SKILLs/skill-creator/agents/grader.md | 68 | ### Step 6: Critique the Evals | COMMENT |
| LOW | SKILLs/skill-creator/agents/grader.md | 81 | ### Step 7: Write Grading Results | COMMENT |
| LOW | SKILLs/skill-creator/agents/grader.md | 101 | ### Step 8: Read Executor Metrics and Timing | COMMENT |
| LOW⚡ | SKILLs/skill-creator/agents/comparator.md | 22 | ### Step 1: Read Both Outputs | COMMENT |
| 48 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | SKILLs/stock-explorer/scripts/quote.py | 78 | except Exception: | CODE |
| LOW | SKILLs/xlsx/recalc.py | 49 | except Exception: | CODE |
| LOW | SKILLs/xlsx/recalc.py | 154 | except Exception as e: | CODE |
| LOW | SKILLs/pdf/reference.md | 484 | except Exception as e: | CODE |
| LOW | SKILLs/pdf/reference.md | 504 | except Exception as e: | CODE |
| LOW | SKILLs/pdf/reference.md | 578 | except Exception as e: | CODE |
| MEDIUM | SKILLs/skill-creator/eval-viewer/generate_review.py | 408 | print(f"Error: {workspace} is not a directory", file=sys.stderr) | CODE |
| LOW | SKILLs/skill-creator/scripts/run_eval.py | 223 | except Exception as e: | CODE |
| MEDIUM | SKILLs/skill-creator/scripts/run_eval.py | 276 | print(f"Error: No SKILL.md found at {skill_path}", file=sys.stderr) | CODE |
| LOW | SKILLs/skill-creator/scripts/package_skill.py | 106 | except Exception as e: | CODE |
| MEDIUM | SKILLs/skill-creator/scripts/improve_description.py | 204 | print(f"Error: No SKILL.md found at {skill_path}", file=sys.stderr) | CODE |
| MEDIUM | SKILLs/skill-creator/scripts/run_loop.py | 269 | print(f"Error: No SKILL.md found at {skill_path}", file=sys.stderr) | CODE |
| LOW | SKILLs/pptx/ooxml/scripts/pack.py | 128 | except Exception as e: | CODE |
| MEDIUM | SKILLs/pptx/ooxml/scripts/validate.py | 52 | print(f"Error: Validation not supported for file type {file_extension}") | CODE |
| LOW⚡ | SKILLs/pptx/ooxml/scripts/validation/docx.py | 187 | except Exception as e: | CODE |
| MEDIUM⚡ | SKILLs/pptx/ooxml/scripts/validation/docx.py | 188 | print(f"Error counting paragraphs in unpacked document: {e}") | CODE |
| LOW | SKILLs/pptx/ooxml/scripts/validation/docx.py | 211 | except Exception as e: | CODE |
| MEDIUM | SKILLs/pptx/ooxml/scripts/validation/docx.py | 212 | print(f"Error counting paragraphs in original document: {e}") | CODE |
| LOW | SKILLs/pptx/ooxml/scripts/validation/redlining.py | 59 | except Exception: | CODE |
| LOW | SKILLs/pptx/ooxml/scripts/validation/redlining.py | 71 | except Exception as e: | CODE |
| LOW | SKILLs/pptx/ooxml/scripts/validation/pptx.py | 228 | except Exception as e: | CODE |
| LOW⚡ | SKILLs/pptx/ooxml/scripts/validation/base.py | 471 | except Exception as e: | CODE |
| LOW | SKILLs/pptx/ooxml/scripts/validation/base.py | 140 | except Exception as e: | CODE |
| LOW | SKILLs/pptx/ooxml/scripts/validation/base.py | 359 | except Exception as e: | CODE |
| LOW | SKILLs/pptx/ooxml/scripts/validation/base.py | 604 | except Exception: | CODE |
| LOW | SKILLs/pptx/ooxml/scripts/validation/base.py | 626 | except Exception as e: | CODE |
| LOW | SKILLs/pptx/ooxml/scripts/validation/base.py | 866 | except Exception as e: | CODE |
| MEDIUM | SKILLs/pptx/scripts/thumbnail.py | 100 | print(f"Error: Invalid PowerPoint file: {args.input}") | CODE |
| MEDIUM | SKILLs/pptx/scripts/thumbnail.py | 124 | print("Error: No slides found") | CODE |
| LOW⚡ | SKILLs/pptx/scripts/thumbnail.py | 144 | except Exception as e: | CODE |
| MEDIUM⚡ | SKILLs/pptx/scripts/thumbnail.py | 145 | print(f"Error: {e}") | CODE |
| LOW | SKILLs/pptx/scripts/thumbnail.py | 351 | except Exception: | CODE |
| MEDIUM⚡ | SKILLs/pptx/scripts/rearrange.py | 58 | print(f"Error: Template file not found: {args.template}") | STRING |
| MEDIUM⚡ | SKILLs/pptx/scripts/rearrange.py | 68 | print(f"Error: {e}") | STRING |
| LOW⚡ | SKILLs/pptx/scripts/rearrange.py | 70 | except Exception as e: | STRING |
| MEDIUM⚡ | SKILLs/pptx/scripts/rearrange.py | 71 | print(f"Error processing presentation: {e}") | STRING |
| LOW | SKILLs/pptx/scripts/rearrange.py | 124 | except Exception: | CODE |
| MEDIUM | SKILLs/pptx/scripts/inventory.py | 84 | print(f"Error: Input file not found: {args.input}") | STRING |
| MEDIUM | SKILLs/pptx/scripts/inventory.py | 88 | print("Error: Input must be a PowerPoint file (.pptx)") | STRING |
| LOW | SKILLs/pptx/scripts/inventory.py | 120 | except Exception as e: | STRING |
| MEDIUM | SKILLs/pptx/scripts/inventory.py | 121 | print(f"Error processing presentation: {e}") | STRING |
| LOW | SKILLs/pptx/scripts/inventory.py | 384 | except Exception: | CODE |
| LOW | SKILLs/pptx/scripts/inventory.py | 504 | except Exception: | CODE |
| LOW | SKILLs/pptx/scripts/inventory.py | 601 | except Exception: | CODE |
| MEDIUM⚡ | SKILLs/pptx/scripts/replace.py | 367 | print(f"Error: Input file '{input_pptx}' not found") | CODE |
| MEDIUM⚡ | SKILLs/pptx/scripts/replace.py | 371 | print(f"Error: Replacements JSON file '{replacements_json}' not found") | CODE |
| LOW⚡ | SKILLs/pptx/scripts/replace.py | 376 | except Exception as e: | CODE |
| MEDIUM⚡ | SKILLs/pptx/scripts/replace.py | 377 | print(f"Error applying replacements: {e}") | CODE |
| LOW | SKILLs/stock-announcements/scripts/announcements.py | 52 | except Exception as exc: | CODE |
| LOW⚡ | SKILLs/stock-announcements/scripts/announcements.py | 125 | except Exception as exc: | CODE |
| LOW | SKILLs/docx/ooxml/scripts/pack.py | 128 | except Exception as e: | CODE |
| MEDIUM | SKILLs/docx/ooxml/scripts/validate.py | 52 | print(f"Error: Validation not supported for file type {file_extension}") | CODE |
| LOW⚡ | SKILLs/docx/ooxml/scripts/validation/docx.py | 187 | except Exception as e: | CODE |
| MEDIUM⚡ | SKILLs/docx/ooxml/scripts/validation/docx.py | 188 | print(f"Error counting paragraphs in unpacked document: {e}") | CODE |
| LOW | SKILLs/docx/ooxml/scripts/validation/docx.py | 211 | except Exception as e: | CODE |
| MEDIUM | SKILLs/docx/ooxml/scripts/validation/docx.py | 212 | print(f"Error counting paragraphs in original document: {e}") | CODE |
| LOW | SKILLs/docx/ooxml/scripts/validation/redlining.py | 59 | except Exception: | CODE |
| LOW | SKILLs/docx/ooxml/scripts/validation/redlining.py | 71 | except Exception as e: | CODE |
| LOW | SKILLs/docx/ooxml/scripts/validation/pptx.py | 228 | except Exception as e: | CODE |
| LOW⚡ | SKILLs/docx/ooxml/scripts/validation/base.py | 471 | except Exception as e: | CODE |
| 5 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/fix-mac-icon-display.sh | 31 | # Check if CFBundleIconName is already set | COMMENT |
| LOW | scripts/regenerate-mac-icon.sh | 16 | # Check if source PNG exists | COMMENT |
| LOW | SKILLs/xlsx/recalc.py | 82 | # Check if gtimeout is available on macOS | COMMENT |
| LOW | SKILLs/pptx/ooxml/scripts/validation/docx.py | 90 | # Check if text starts or ends with whitespace | COMMENT |
| LOW | SKILLs/pptx/ooxml/scripts/validation/docx.py | 92 | # Check if xml:space="preserve" attribute exists | COMMENT |
| LOW | SKILLs/pptx/ooxml/scripts/validation/pptx.py | 94 | # Check if this is an ID attribute | COMMENT |
| LOW | SKILLs/pptx/ooxml/scripts/validation/pptx.py | 97 | # Check if value looks like a UUID (has the right length and pattern structure) | COMMENT |
| LOW | SKILLs/pptx/ooxml/scripts/validation/pptx.py | 125 | # Check if it's 32 hex-like characters (could include invalid hex chars) | COMMENT |
| LOW⚡ | SKILLs/pptx/ooxml/scripts/validation/base.py | 449 | # Check if the ID exists | COMMENT |
| LOW⚡ | SKILLs/pptx/ooxml/scripts/validation/base.py | 456 | # Check if we have type expectations for this element | COMMENT |
| LOW⚡ | SKILLs/pptx/ooxml/scripts/validation/base.py | 463 | # Check if the actual type matches or contains the expected type | COMMENT |
| LOW⚡ | SKILLs/pptx/ooxml/scripts/validation/base.py | 759 | # Check if file is in a main content folder and use appropriate schema | COMMENT |
| LOW⚡ | SKILLs/pptx/ooxml/scripts/validation/base.py | 776 | # Check if attribute is from a namespace other than allowed ones | COMMENT |
| LOW | SKILLs/pptx/ooxml/scripts/validation/base.py | 212 | # Check if this element type has ID uniqueness requirements | COMMENT |
| LOW | SKILLs/pptx/ooxml/scripts/validation/base.py | 503 | # Check if this might be a compound like "sldMasterId" | COMMENT |
| LOW | SKILLs/pptx/ooxml/scripts/validation/base.py | 619 | # Check if it's a known media extension that should be declared | COMMENT |
| LOW | SKILLs/pptx/scripts/inventory.py | 873 | # Check if there's meaningful overlap (more than tolerance) | COMMENT |
| LOW | SKILLs/pptx/scripts/replace.py | 173 | # Check if slide exists | COMMENT |
| LOW | SKILLs/pptx/scripts/replace.py | 306 | # Check if any text overflow got worse | COMMENT |
| LOW | SKILLs/web-search/scripts/stop-server.sh | 8 | # Check if PID file exists | COMMENT |
| LOW | SKILLs/web-search/scripts/stop-server.sh | 17 | # Check if process is running | COMMENT |
| LOW | SKILLs/web-search/scripts/search.sh | 227 | # Check if server is running | COMMENT |
| LOW | SKILLs/web-search/scripts/start-server.sh | 186 | # Check if server is already running | COMMENT |
| LOW | SKILLs/local-tools/scripts/calendar.sh | 512 | # Check if error is permission-related | COMMENT |
| LOW | SKILLs/local-tools/scripts/calendar.sh | 569 | # Check if result indicates permission error | COMMENT |
| LOW | SKILLs/docx/ooxml/scripts/validation/docx.py | 90 | # Check if text starts or ends with whitespace | COMMENT |
| LOW | SKILLs/docx/ooxml/scripts/validation/docx.py | 92 | # Check if xml:space="preserve" attribute exists | COMMENT |
| LOW | SKILLs/docx/ooxml/scripts/validation/pptx.py | 94 | # Check if this is an ID attribute | COMMENT |
| LOW | SKILLs/docx/ooxml/scripts/validation/pptx.py | 97 | # Check if value looks like a UUID (has the right length and pattern structure) | COMMENT |
| LOW | SKILLs/docx/ooxml/scripts/validation/pptx.py | 125 | # Check if it's 32 hex-like characters (could include invalid hex chars) | COMMENT |
| LOW⚡ | SKILLs/docx/ooxml/scripts/validation/base.py | 449 | # Check if the ID exists | COMMENT |
| LOW⚡ | SKILLs/docx/ooxml/scripts/validation/base.py | 456 | # Check if we have type expectations for this element | COMMENT |
| LOW⚡ | SKILLs/docx/ooxml/scripts/validation/base.py | 463 | # Check if the actual type matches or contains the expected type | COMMENT |
| LOW⚡ | SKILLs/docx/ooxml/scripts/validation/base.py | 759 | # Check if file is in a main content folder and use appropriate schema | COMMENT |
| LOW⚡ | SKILLs/docx/ooxml/scripts/validation/base.py | 776 | # Check if attribute is from a namespace other than allowed ones | COMMENT |
| LOW | SKILLs/docx/ooxml/scripts/validation/base.py | 212 | # Check if this element type has ID uniqueness requirements | COMMENT |
| LOW | SKILLs/docx/ooxml/scripts/validation/base.py | 503 | # Check if this might be a compound like "sldMasterId" | COMMENT |
| LOW | SKILLs/docx/ooxml/scripts/validation/base.py | 619 | # Check if it's a known media extension that should be declared | COMMENT |
| LOW | SKILLs/docx/scripts/document.py | 539 | # Check if it's a numbered list item | COMMENT |
| LOW | SKILLs/docx/scripts/document.py | 1055 | # Check if this rsid already exists | COMMENT |
| LOW | SKILLs/docx/scripts/document.py | 1192 | # Check if author already exists | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | SKILLs/stock-explorer/scripts/quote.py | 213 | CODE | |
| LOW | SKILLs/xlsx/recalc.py | 53 | CODE | |
| LOW | SKILLs/pdf/scripts/fill_fillable_fields.py | 12 | CODE | |
| LOW | SKILLs/pdf/scripts/fill_fillable_fields.py | 59 | CODE | |
| LOW | SKILLs/pdf/scripts/extract_form_field_info.py | 22 | CODE | |
| LOW | SKILLs/pdf/scripts/extract_form_field_info.py | 62 | CODE | |
| LOW | SKILLs/pdf/scripts/check_bounding_boxes.py | 18 | CODE | |
| LOW | SKILLs/skill-creator/eval-viewer/generate_review.py | 85 | CODE | |
| LOW | SKILLs/skill-creator/eval-viewer/generate_review.py | 149 | CODE | |
| LOW | SKILLs/skill-creator/eval-viewer/generate_review.py | 288 | CODE | |
| LOW | SKILLs/skill-creator/scripts/run_eval.py | 35 | CODE | |
| LOW | SKILLs/skill-creator/scripts/package_skill.py | 42 | CODE | |
| LOW | SKILLs/skill-creator/scripts/improve_description.py | 19 | CODE | |
| LOW | SKILLs/skill-creator/scripts/aggregate_benchmark.py | 67 | CODE | |
| LOW | SKILLs/skill-creator/scripts/generate_report.py | 16 | CODE | |
| LOW | SKILLs/skill-creator/scripts/utils.py | 7 | CODE | |
| LOW | SKILLs/pptx/ooxml/scripts/pack.py | 45 | CODE | |
| LOW | SKILLs/pptx/ooxml/scripts/validation/docx.py | 72 | CODE | |
| LOW | SKILLs/pptx/ooxml/scripts/validation/docx.py | 124 | CODE | |
| LOW | SKILLs/pptx/ooxml/scripts/validation/redlining.py | 139 | CODE | |
| LOW | SKILLs/pptx/ooxml/scripts/validation/redlining.py | 217 | CODE | |
| LOW | SKILLs/pptx/ooxml/scripts/validation/pptx.py | 77 | CODE | |
| LOW | SKILLs/pptx/ooxml/scripts/validation/pptx.py | 128 | CODE | |
| LOW | SKILLs/pptx/ooxml/scripts/validation/pptx.py | 243 | CODE | |
| LOW | SKILLs/pptx/ooxml/scripts/validation/base.py | 186 | CODE | |
| LOW | SKILLs/pptx/ooxml/scripts/validation/base.py | 277 | CODE | |
| LOW | SKILLs/pptx/ooxml/scripts/validation/base.py | 388 | CODE | |
| LOW | SKILLs/pptx/ooxml/scripts/validation/base.py | 486 | CODE | |
| LOW | SKILLs/pptx/ooxml/scripts/validation/base.py | 522 | CODE | |
| LOW | SKILLs/pptx/ooxml/scripts/validation/base.py | 688 | CODE | |
| LOW | SKILLs/pptx/ooxml/scripts/validation/base.py | 765 | CODE | |
| LOW | SKILLs/pptx/scripts/thumbnail.py | 67 | CODE | |
| LOW | SKILLs/pptx/scripts/thumbnail.py | 321 | CODE | |
| LOW | SKILLs/pptx/scripts/rearrange.py | 149 | CODE | |
| LOW | SKILLs/pptx/scripts/inventory.py | 140 | CODE | |
| LOW | SKILLs/pptx/scripts/inventory.py | 280 | CODE | |
| LOW | SKILLs/pptx/scripts/inventory.py | 362 | CODE | |
| LOW | SKILLs/pptx/scripts/inventory.py | 480 | CODE | |
| LOW | SKILLs/pptx/scripts/replace.py | 143 | CODE | |
| LOW | SKILLs/pptx/scripts/replace.py | 162 | CODE | |
| LOW | SKILLs/pptx/scripts/replace.py | 214 | CODE | |
| LOW | SKILLs/docx/ooxml/scripts/pack.py | 45 | CODE | |
| LOW | SKILLs/docx/ooxml/scripts/validation/docx.py | 72 | CODE | |
| LOW | SKILLs/docx/ooxml/scripts/validation/docx.py | 124 | CODE | |
| LOW | SKILLs/docx/ooxml/scripts/validation/redlining.py | 139 | CODE | |
| LOW | SKILLs/docx/ooxml/scripts/validation/redlining.py | 217 | CODE | |
| LOW | SKILLs/docx/ooxml/scripts/validation/pptx.py | 77 | CODE | |
| LOW | SKILLs/docx/ooxml/scripts/validation/pptx.py | 128 | CODE | |
| LOW | SKILLs/docx/ooxml/scripts/validation/pptx.py | 243 | CODE | |
| LOW | SKILLs/docx/ooxml/scripts/validation/base.py | 186 | CODE | |
| LOW | SKILLs/docx/ooxml/scripts/validation/base.py | 277 | CODE | |
| LOW | SKILLs/docx/ooxml/scripts/validation/base.py | 388 | CODE | |
| LOW | SKILLs/docx/ooxml/scripts/validation/base.py | 486 | CODE | |
| LOW | SKILLs/docx/ooxml/scripts/validation/base.py | 522 | CODE | |
| LOW | SKILLs/docx/ooxml/scripts/validation/base.py | 688 | CODE | |
| LOW | SKILLs/docx/ooxml/scripts/validation/base.py | 765 | CODE | |
| LOW | SKILLs/docx/scripts/document.py | 75 | CODE | |
| LOW | SKILLs/docx/scripts/document.py | 116 | CODE | |
| LOW | SKILLs/docx/scripts/document.py | 264 | CODE | |
| LOW | SKILLs/docx/scripts/document.py | 342 | CODE | |
| 3 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/generate-app-icon.js | 26 | // Step 1: Use PowerShell + System.Drawing to resize the source PNG | COMMENT |
| LOW | scripts/generate-app-icon.js | 57 | // Step 2: Read resized PNGs and pack into ICO | COMMENT |
| LOW⚡ | SKILLs/technology-news-search/scripts/search_news.js | 277 | // Step 1: Filter by network accessibility (silent, automatic) | COMMENT |
| LOW⚡ | SKILLs/technology-news-search/scripts/search_news.js | 280 | // Step 2: Smart routing - filter sources by detected domains | COMMENT |
| LOW | SKILLs/pptx/scripts/rearrange.py | 176 | # Step 1: DUPLICATE repeated slides | COMMENT |
| LOW⚡ | SKILLs/pptx/scripts/rearrange.py | 200 | # Step 2: DELETE unwanted slides (work backwards) | COMMENT |
| LOW⚡ | SKILLs/pptx/scripts/rearrange.py | 209 | # Step 3: REORDER to final sequence | COMMENT |
| LOW⚡ | SKILLs/web-search/scripts/test-basic.js | 18 | // Step 1: Launch browser | COMMENT |
| LOW⚡ | SKILLs/web-search/scripts/test-basic.js | 23 | // Step 2: Connect via Playwright | COMMENT |
| LOW⚡ | SKILLs/web-search/scripts/test-basic.js | 28 | // Step 3: Get page | COMMENT |
| LOW⚡ | SKILLs/web-search/scripts/test-basic.js | 33 | // Step 4: Navigate to a test URL | COMMENT |
| LOW⚡ | SKILLs/web-search/scripts/test-basic.js | 38 | // Step 5: Get page title | COMMENT |
| LOW⚡ | SKILLs/web-search/scripts/test-basic.js | 43 | // Step 6: Take screenshot | COMMENT |
| LOW⚡ | SKILLs/web-search/scripts/test-basic.js | 48 | // Step 7: Get text content | COMMENT |
| LOW | SKILLs/seedance/scripts/generate_video.js | 510 | // Step 1: 创建任务 | COMMENT |
| LOW⚡ | SKILLs/seedance/scripts/generate_video.js | 521 | // Step 2: 轮询状态 | COMMENT |
| LOW⚡ | SKILLs/seedance/scripts/generate_video.js | 524 | // Step 3: 下载视频 | COMMENT |
| LOW | src/renderer/components/Settings.tsx | 3102 | // Step 1: Request device code | COMMENT |
| LOW | src/renderer/components/Settings.tsx | 3113 | // Step 2: Poll for token | COMMENT |
| LOW⚡ | src/main/libs/githubCopilotAuth.ts | 296 | // Step 1: Get device code | COMMENT |
| LOW⚡ | src/main/libs/githubCopilotAuth.ts | 300 | // Step 2: Poll for access token | COMMENT |
| LOW⚡ | src/main/libs/githubCopilotAuth.ts | 308 | // Step 3: Get user info | COMMENT |
| LOW⚡ | src/main/libs/githubCopilotAuth.ts | 311 | // Step 4: Get Copilot token (includes derived base URL) | COMMENT |
| LOW | src/main/im/imGatewayManager.ts | 2808 | // Step 1: init — obtain nonce | COMMENT |
| LOW | src/main/im/imGatewayManager.ts | 2819 | // Step 2: begin — obtain device_code + QR url | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | SKILLs/pptx/ooxml/scripts/validation/base.py | 767 | # Create a clean copy | COMMENT |
| MEDIUM | SKILLs/pptx/ooxml/scripts/validation/base.py | 919 | # Create a copy of the document to avoid modifying the original | COMMENT |
| MEDIUM | SKILLs/pptx/ooxml/scripts/validation/base.py | 298 | ): # This file is not referenced by .rels | CODE |
| MEDIUM | SKILLs/pptx/scripts/thumbnail.py | 401 | # Create a highlight overlay | COMMENT |
| MEDIUM | SKILLs/pptx/scripts/rearrange.py | 108 | # Create a new relationship in the destination slide for this image | COMMENT |
| MEDIUM | SKILLs/local-tools/scripts/calendar.sh | 71 | # Create a new event | COMMENT |
| MEDIUM⚡ | SKILLs/docx/ooxml/scripts/validation/base.py | 767 | # Create a clean copy | COMMENT |
| MEDIUM | SKILLs/docx/ooxml/scripts/validation/base.py | 919 | # Create a copy of the document to avoid modifying the original | COMMENT |
| MEDIUM | SKILLs/docx/ooxml/scripts/validation/base.py | 298 | ): # This file is not referenced by .rels | CODE |
| MEDIUM | SKILLs/docx/scripts/document.py | 984 | # Create the relationship entry | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | SKILLs/docx/scripts/document.py | 265 | Reject an insertion by wrapping its content in a deletion. Wraps all runs inside w:ins in w:del, converting w:t | STRING |
| HIGH | SKILLs/docx/scripts/document.py | 343 | Reject a deletion by re-inserting the deleted content. Creates w:ins elements after each w:del, copying deleted | STRING |
| HIGH | SKILLs/docx/scripts/document.py | 483 | Mark a w:r or w:p element as deleted with tracked changes (in-place DOM manipulation). For w:r: wraps in <w:del | STRING |
| HIGH | SKILLs/docx/scripts/document.py | 681 | Get or create a DocxXMLEditor for the specified XML file. Enables lazy-loaded editors with bracket not | STRING |
| HIGH | SKILLs/docx/scripts/utilities.py | 83 | Get a DOM element by tag and identifier. Finds an element by either its line number in the original fi | STRING |
| HIGH | SKILLs/docx/scripts/utilities.py | 313 | Parse XML fragment and return list of imported nodes. Args: xml_content: String containing | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | SKILLs/pptx/ooxml/scripts/validation/docx.py | 0 | run all validation checks and return true if all pass. | STRING |
| HIGH | SKILLs/pptx/ooxml/scripts/validation/pptx.py | 0 | run all validation checks and return true if all pass. | STRING |
| HIGH | SKILLs/pptx/ooxml/scripts/validation/base.py | 0 | run all validation checks and return true if all pass. | STRING |
| HIGH | SKILLs/docx/ooxml/scripts/validation/docx.py | 0 | run all validation checks and return true if all pass. | STRING |
| HIGH | SKILLs/docx/ooxml/scripts/validation/pptx.py | 0 | run all validation checks and return true if all pass. | STRING |
| HIGH | SKILLs/docx/ooxml/scripts/validation/base.py | 0 | run all validation checks and return true if all pass. | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …channel/2026-04-09-email-channel-integration-design.md | 168 | allowFrom?: string[]; // Whitelist: ["user@example.com", "*.trusted.com"] | CODE |
| LOW | …channel/2026-04-09-email-channel-integration-design.md | 1255 | allowFrom?: string[]; // Whitelist: ["user@example.com", "*.trusted.com"] | CODE |
| LOW | …channel/2026-04-09-email-channel-integration-design.md | 1916 | emailAddressPlaceholder: 'user@example.com', | CODE |
| LOW | …channel/2026-04-09-email-channel-integration-design.md | 2011 | emailAddressPlaceholder: 'user@example.com', | CODE |
| LOW | SKILLs/playwright/SKILL.md | 99 | "$PWCLI" fill e1 "user@example.com" | CODE |
| LOW | SKILLs/playwright/references/workflows.md | 21 | pwcli fill e1 "user@example.com" | CODE |
| LOW | SKILLs/playwright/references/cli.md | 29 | pwcli fill e5 "user@example.com" | CODE |
| LOW | SKILLs/pptx/SKILL.md | 155 | - Use `class="placeholder"` for areas where charts/tables will be added (render with gray background for visibility) | CODE |
| LOW | SKILLs/pptx/html2pptx.md | 34 | - `class="placeholder"` - Reserved space for charts (returns `{ id, x, y, w, h }`) | CODE |
| LOW | SKILLs/pptx/html2pptx.md | 172 | <div id="chart" class="placeholder" style="width: 350pt; height: 200pt;"></div> | CODE |
| LOW | SKILLs/pptx/scripts/html2pptx.js | 16 | * - Extracts placeholder elements (class="placeholder") with positions | COMMENT |
| LOW | SKILLs/pptx/scripts/html2pptx.js | 558 | if (el.className && el.className.includes('placeholder')) { | CODE |
| LOW | SKILLs/docx/ooxml.md | 298 | doc = Document('unpacked', author="John Doe", initials="JD") | CODE |
| LOW | SKILLs/docx/scripts/document.py | 10 | doc = Document('workspace/unpacked', author="John Doe", initials="JD") | STRING |
| LOW | src/renderer/services/i18n.ts | 2705 | emailAddressPlaceholder: 'user@example.com', | CODE |
| LOW | src/renderer/services/i18n.ts | 5606 | emailAddressPlaceholder: 'user@example.com', | CODE |
| LOW | src/main/i18n.ts | 234 | emailAddressPlaceholder: 'user@example.com', | CODE |
| LOW | src/main/i18n.ts | 551 | emailAddressPlaceholder: 'user@example.com', | CODE |
| LOW | src/main/libs/openclawConfigSync.runtime.test.ts | 2035 | email: 'user@example.com', | CODE |
| LOW | src/main/im/types.ts | 531 | allowFrom?: string[]; // Whitelist: ["user@example.com", "*.trusted.com"] | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …viders/2026-03-31-refactor-build-provider-selection.md | 681 | // 场景 1b: lobsterai-server without proxy port | COMMENT |
| LOW | …viders/2026-03-31-refactor-build-provider-selection.md | 701 | // 断言: | COMMENT |
| LOW | …viders/2026-03-31-refactor-build-provider-selection.md | 721 | // baseUrl 不包含 '/openai' 后缀 | COMMENT |
| LOW | …viders/2026-03-31-refactor-build-provider-selection.md | 741 | COMMENT | |
| LOW | SKILLs/article-writer/SKILL.md | 81 | ## 分析维度2 (400-600字) — 对比/反面论证 | COMMENT |
| LOW | SKILLs/article-writer/SKILL.md | 101 | ## 开头 (150-200字) — 场景切入 + 悬念 | COMMENT |
| LOW | SKILLs/pptx/scripts/thumbnail.py | 21 | Usage: | COMMENT |
| LOW | src/renderer/components/im/IMSettings.tsx | 1461 | await imService.persistConfig({ | COMMENT |
| LOW | src/shared/cowork/text.ts | 1 | // The OpenClaw gateway hard-rejects chat.send messages containing U+0000 | COMMENT |
| LOW | src/main/main.ts | 7241 | return { success: false, message: error instanceof Error ? error.message : 'Cancel failed' }; | COMMENT |
| LOW | src/main/libs/coworkUtil.ts | 1021 | // Ensure critical Windows system environment variables are always present. | COMMENT |
| LOW | src/main/libs/coworkUtil.ts | 1081 | // Tell git-bash to inherit the PATH from the parent process instead of | COMMENT |
| LOW | src/main/libs/openclawEngineManager.ts | 521 | // Point the OpenAI provider's ChatGPT/Codex auth lookup at our app-managed | COMMENT |
| LOW | src/main/libs/appUpdateInstaller.ts | 361 | } | COMMENT |
| LOW | src/main/libs/agentEngine/openclawRuntimeAdapter.ts | 6661 | // Silent memory-maintenance turns intentionally outlive the maintenance | COMMENT |
| LOW | src/main/libs/agentEngine/openclawRuntimeAdapter.ts | 9661 | // streamed before user messages were synced). If so, use insertMessageBeforeId | COMMENT |
| LOW | src/main/libs/agentEngine/openclawRuntimeAdapter.ts | 10061 | if (runId && this.isRecentlyClosedRunId(runId)) { | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | SKILLs/skill-creator/scripts/quick_validate.py | 7 | CODE | |
| LOW | SKILLs/pptx/ooxml/scripts/validation/__init__.py | 5 | CODE | |
| LOW | SKILLs/pptx/ooxml/scripts/validation/__init__.py | 6 | CODE | |
| LOW | SKILLs/pptx/ooxml/scripts/validation/__init__.py | 7 | CODE | |
| LOW | SKILLs/pptx/ooxml/scripts/validation/__init__.py | 8 | CODE | |
| LOW | SKILLs/stock-announcements/scripts/announcements.py | 17 | CODE | |
| LOW | SKILLs/stock-analyzer/scripts/analyze.py | 11 | CODE | |
| LOW | SKILLs/docx/ooxml/scripts/validation/__init__.py | 5 | CODE | |
| LOW | SKILLs/docx/ooxml/scripts/validation/__init__.py | 6 | CODE | |
| LOW | SKILLs/docx/ooxml/scripts/validation/__init__.py | 7 | CODE | |
| LOW | SKILLs/docx/ooxml/scripts/validation/__init__.py | 8 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | src/main/im/nimGateway.ts | 542 | // Mark stop as requested so any pending/future reconnect timers are | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …work-context-compaction-quality-optimization-design.md | 85 | #### 不能默认降低未知模型 context window | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/main/libs/htmlPreviewServer.ts | 242 | function handleRequest(req: http.IncomingMessage, res: http.ServerResponse): void { | CODE |
| LOW | src/main/libs/openclawTokenProxy.ts | 105 | async function handleRequest(req: http.IncomingMessage, res: http.ServerResponse): Promise<void> { | CODE |
| LOW | src/main/libs/coworkOpenAICompatProxy.ts | 2322 | async function handleRequest( | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | SKILLs/pptx/ooxml/scripts/validation/__init__.py | 10 | __all__ = [ | CODE |
| LOW | SKILLs/docx/ooxml/scripts/validation/__init__.py | 10 | __all__ = [ | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/build-openclaw-runtime.sh | 5 | # Usage: | COMMENT |