[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M7C29886MA51VBHZTSDJSYSP":3,"skill-same:01M7C29886MA51VBHZTSDJSYSP":63},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":19,"linkOnly":20,"markdownContent":21,"markdownBody":22,"frontMatter":23,"refName":24,"commitSha":25,"skillDirectory":26,"forksCount":27,"repositoryHtmlUrl":28,"repositoryHomepageUrl":6,"ownerHtmlUrl":29,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":30,"install":31,"resources":44},"01M7C29886MA51VBHZTSDJSYSP","d3-visualization",null,"Build deterministic, verifiable data visualizations with D3.js (v6). Generate standalone HTML\u002FSVG (and optional PNG) from local data files without external network dependencies. Use when tasks require charts, plots, axes\u002Fscales, legends, tooltips, or data-driven SVG output.","linyouxue\u002Fskill-repair-benchmark","linyouxue","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F216151464?v=4","01M7BJEVCXKD74KH6FG9CBVSQB","林宥学","01M7BJEVE02NP217V93BKZFC0J",0,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark\u002Fblob\u002Fmain\u002Fevaluation\u002Fresults\u002FWML-Opus47-15Tasks-20260923\u002Ftasks\u002Fdata-to-d3\u002Frepaired_run\u002Finputs\u002Fskills\u002Fd3-visualization\u002FSKILL.md",[],[],"2026-11-15 14:19:17",false,"---\nname: d3-visualization\ndescription: Build deterministic, verifiable data visualizations with D3.js (v6). Generate standalone HTML\u002FSVG (and optional PNG) from local data files without external network dependencies. Use when tasks require charts, plots, axes\u002Fscales, legends, tooltips, or data-driven SVG output.\n---\n\n# D3.js Visualization Skill\n\nUse this skill to turn structured data (CSV\u002FTSV\u002FJSON) into **clean, reproducible** visualizations using **D3.js**. The goal is to produce **stable outputs** that can be verified by diffing files or hashing.\n\n## When to use\n\nActivate this skill when the user asks for any of the following:\n\n- “Make a chart\u002Fplot\u002Fgraph\u002Fvisualization”\n- bar\u002Fline\u002Fscatter\u002Farea\u002Fhistogram\u002Fbox\u002Fviolin\u002Fheatmap\n- timelines, small multiples, faceting\n- axis ticks, scales, legends, tooltips\n- data-driven SVG output for a report or web page\n- converting data to a static SVG or HTML visualization\n\nIf the user only needs a quick table or summary, **don’t** use D3—use a spreadsheet or plain markdown instead.\n\n---\n\n## Inputs you should expect\n\n- One or more local data files: `*.csv`, `*.tsv`, `*.json`\n- A chart intent:\n  - chart type (or you infer the best type)\n  - x\u002Fy fields and aggregation rules\n  - sorting\u002Ffiltering rules\n  - dimensions (width\u002Fheight) and margins\n  - color rules (categorical \u002F sequential)\n  - any labeling requirements (title, axis labels, units)\n- Output constraints:\n  - “static only”, “no animation”, “must be deterministic”, “offline”, etc.\n\nIf details are missing, **make reasonable defaults** and document them in comments near the top of the output file.\n\n---\n\n## Outputs you should produce\n\nPrefer producing **all of** the following when feasible:\n\n1. `dist\u002Fchart.html` — standalone HTML that renders the visualization\n2. `dist\u002Fchart.svg` — exported SVG (stable and diff-friendly)\n3. (Optional) `dist\u002Fchart.png` — if the task explicitly needs a raster image\n\nAlways keep outputs in a predictable folder (default: `dist\u002F`), unless the task specifies paths.\n\n### Delivery and self-check discipline (static web deliverables)\n\nWhen the contract is *“produce files at path X so a grader\u002Fbrowser can open them”*, the deliverable is a **static artifact**, not a running service. Once the required files exist:\n\n- Prefer **file-level checks only**, in this order, and stop at the first sufficient level:\n  1. **Existence & layout**: every required path is present with non-zero size.\n  2. **Static parse**: HTML is well-formed; JS parses (e.g., `node --check visualization.js`); CSS parses. No execution required.\n  3. **Optional headless render**: only if truly necessary to catch a runtime bug you cannot reason about statically.\n- Do **not** launch long-lived helper services (HTTP server, websocket, headless browser bridge) in the same sandbox as the grader unless you can satisfy the *Self-verification hygiene* rules below. A grader may bind its own fixtures to fixed ports\u002Fpaths; a leaked listener will cascade every downstream test into an error even though your artifact is correct.\n- Treat the phrase *“I should be able to open it in a browser”* as a **statement about the artifact**, not an instruction to simulate a browser session inside the delivery sandbox.\n\n---\n\n## Determinism rules (non-negotiable)\n\nTo keep results stable across runs and machines:\n\n### Data determinism\n- **Sort** input rows deterministically before binding to marks (e.g., by x then by category).\n- Use stable grouping order (explicit `Array.from(grouped.keys()).sort()`).\n- Avoid locale-dependent formatting unless fixed (use `d3.format`, `d3.timeFormat` with explicit formats).\n\n### Rendering determinism\n- **No randomness**: do not use `Math.random()` or `d3-random`.\n- **No transitions\u002Fanimations** by default (transitions can introduce timing variance).\n- **Fixed** `width`, `height`, `margin`, `viewBox`.\n- Use **explicit tick counts** only when needed; otherwise rely on D3 defaults but keep domains fixed.\n- Avoid layout algorithms with non-deterministic iteration unless you control seeds\u002Fiterations (e.g., force simulation). If a force layout is required:\n  - fix the tick count,\n  - fix initial positions deterministically (e.g., sorted nodes placed on a grid),\n  - run exactly N ticks and stop.\n\n### Offline + dependency determinism\n- Do **not** load D3 from a CDN.\n- Pin D3 to a specific version (default: **d3@7.9.0**).\n- Prefer vendoring a minified D3 bundle (e.g., `vendor\u002Fd3.v7.9.0.min.js`) or bundling with a lockfile.\n\n### File determinism\n- Stable SVG output:\n  - Avoid auto-generated IDs that may change.\n  - If you must use IDs (clipPath, gradients), derive them from stable strings (e.g., `\"clip-plot\"`).\n- Use LF line endings.\n- Keep numeric precision consistent (e.g., round to 2–4 decimals if needed).\n\n### Self-verification hygiene (sandbox-shared resources)\n\nIf — after the file-level checks above — you still choose to run an auxiliary process to smoke-test the artifact (HTTP server, jsdom bridge, headless browser), treat that process as **shared sandbox state that the grader may also touch**. Follow all of the following, or skip the probe entirely:\n\n1. **Never bind fixed ports.** Bind to port `0` (OS-assigned ephemeral port) and read the actual port back before use, e.g.:\n   - Python: `httpd = HTTPServer((\"127.0.0.1\", 0), Handler); port = httpd.server_address[1]`.\n   - Node: `server.listen(0, () => port = server.address().port)`.\n   - Shell: prefer `python3 -m http.server 0` and parse the printed port, or use a helper that reports the bound port.\n2. **Track by PID, not by pattern.** Capture the child PID at launch (`$!` in shell, `child.pid` in Node, `.pid` on `Popen`). Do not rely on `pkill -f \u003Cpattern>` as the sole teardown — pattern matches are fragile and often miss.\n3. **Unconditional teardown before finishing.** Wrap the probe in `try\u002Ffinally` (or a shell `trap`) that always runs `kill \u003CPID>` (then `kill -9 \u003CPID>` if still alive) *before* you emit the completion message — even on error, timeout, or early return.\n4. **Verify release.** After teardown, assert the port is free (e.g., `ss -ltn | grep -q \":\u003Cport> \" && echo LEAKED`) and that no child process remains. If either check fails, do not declare success.\n5. **Prefer in-process alternatives.** When feasible, avoid a listener altogether: load the HTML with jsdom’s file `ResourceLoader`, read\u002Feval the JS directly, or run `node --check` for a pure syntax pass. These leave no socket state behind.\n6. **Do not install heavyweight probe dependencies in the delivery sandbox** unless the task requires them; each install increases the surface for collisions with the grader’s own environment.\n\nRationale: graders commonly reuse fixed ports or filesystem locations in the same sandbox. A leaked listener on a well-known port (e.g., `8000`, `8080`, `8765`) causes the grader’s fixture setup to fail with `Address already in use`, turning every downstream test into an ERROR even when the delivered artifact is fully correct.\n\n---\n\n## Recommended project layout\n\nIf the task doesn't specify an existing structure, use:\n\n```\ndist\u002F\n  chart.html        # standalone HTML with inline or linked JS\u002FCSS\n  chart.svg         # exported SVG (optional but nice)\n  chart.png         # rasterized (optional)\nvendor\u002F\n  d3.v7.9.0.min.js  # pinned D3 library\n```\n\n---\n\n## Interactive features (tooltips, click handlers, hover effects)\n\nWhen the task requires interactivity (e.g., tooltips on hover, click to highlight):\n\n### Tooltip pattern (recommended)\n\n1. **Create a tooltip element** in HTML:\n```html\n\u003Cdiv id=\"tooltip\" class=\"tooltip\">\u003C\u002Fdiv>\n```\n\n2. **Style with CSS** using `.visible` class for show\u002Fhide:\n```css\n.tooltip {\n    position: absolute;\n    padding: 10px;\n    background: rgba(0, 0, 0, 0.8);\n    color: white;\n    border-radius: 4px;\n    pointer-events: none;  \u002F* Prevent mouse interference *\u002F\n    opacity: 0;\n    transition: opacity 0.2s;\n    z-index: 1000;\n}\n\n.tooltip.visible {\n    opacity: 1;  \u002F* Show when .visible class is added *\u002F\n}\n```\n\n3. **Add event handlers** to SVG elements:\n```javascript\nsvg.selectAll('circle')\n    .on('mouseover', function(event, d) {\n        d3.select('#tooltip')\n            .classed('visible', true)  \u002F\u002F Add .visible class\n            .html(`\u003Cstrong>${d.name}\u003C\u002Fstrong>\u003Cbr\u002F>${d.value}`)\n            .style('left', (event.pageX + 10) + 'px')\n            .style('top', (event.pageY - 10) + 'px');\n    })\n    .on('mouseout', function() {\n        d3.select('#tooltip').classed('visible', false);  \u002F\u002F Remove .visible class\n    });\n```\n\n**Key points:**\n- Use `opacity: 0` by default (not `display: none`) for smooth transitions\n- Use `.classed('visible', true\u002Ffalse)` to toggle visibility\n- `pointer-events: none` prevents tooltip from blocking mouse events\n- Position tooltip relative to mouse with `event.pageX\u002FpageY`\n\n### Click handlers for selection\u002Fhighlighting\n\n```javascript\n\u002F\u002F Add 'selected' class on click\nsvg.selectAll('.bar')\n    .on('click', function(event, d) {\n        \u002F\u002F Remove previous selection\n        d3.selectAll('.bar').classed('selected', false);\n        \u002F\u002F Add to clicked element\n        d3.select(this).classed('selected', true);\n    });\n```\n\nCSS for highlighting:\n```css\n.bar.selected {\n    stroke: #000;\n    stroke-width: 3px;\n}\n```\n\n### Conditional interactivity\n\nSometimes only certain elements should be interactive:\n```javascript\n.on('mouseover', function(event, d) {\n    \u002F\u002F Example: Don't show tooltip for certain categories\n    if (d.category === 'excluded') {\n        return;  \u002F\u002F Exit early, no tooltip\n    }\n    \u002F\u002F Show tooltip for others\n    showTooltip(event, d);\n})\n```\n\n---\n","# D3.js Visualization Skill\n\nUse this skill to turn structured data (CSV\u002FTSV\u002FJSON) into **clean, reproducible** visualizations using **D3.js**. The goal is to produce **stable outputs** that can be verified by diffing files or hashing.\n\n## When to use\n\nActivate this skill when the user asks for any of the following:\n\n- “Make a chart\u002Fplot\u002Fgraph\u002Fvisualization”\n- bar\u002Fline\u002Fscatter\u002Farea\u002Fhistogram\u002Fbox\u002Fviolin\u002Fheatmap\n- timelines, small multiples, faceting\n- axis ticks, scales, legends, tooltips\n- data-driven SVG output for a report or web page\n- converting data to a static SVG or HTML visualization\n\nIf the user only needs a quick table or summary, **don’t** use D3—use a spreadsheet or plain markdown instead.\n\n---\n\n## Inputs you should expect\n\n- One or more local data files: `*.csv`, `*.tsv`, `*.json`\n- A chart intent:\n  - chart type (or you infer the best type)\n  - x\u002Fy fields and aggregation rules\n  - sorting\u002Ffiltering rules\n  - dimensions (width\u002Fheight) and margins\n  - color rules (categorical \u002F sequential)\n  - any labeling requirements (title, axis labels, units)\n- Output constraints:\n  - “static only”, “no animation”, “must be deterministic”, “offline”, etc.\n\nIf details are missing, **make reasonable defaults** and document them in comments near the top of the output file.\n\n---\n\n## Outputs you should produce\n\nPrefer producing **all of** the following when feasible:\n\n1. `dist\u002Fchart.html` — standalone HTML that renders the visualization\n2. `dist\u002Fchart.svg` — exported SVG (stable and diff-friendly)\n3. (Optional) `dist\u002Fchart.png` — if the task explicitly needs a raster image\n\nAlways keep outputs in a predictable folder (default: `dist\u002F`), unless the task specifies paths.\n\n### Delivery and self-check discipline (static web deliverables)\n\nWhen the contract is *“produce files at path X so a grader\u002Fbrowser can open them”*, the deliverable is a **static artifact**, not a running service. Once the required files exist:\n\n- Prefer **file-level checks only**, in this order, and stop at the first sufficient level:\n  1. **Existence & layout**: every required path is present with non-zero size.\n  2. **Static parse**: HTML is well-formed; JS parses (e.g., `node --check visualization.js`); CSS parses. No execution required.\n  3. **Optional headless render**: only if truly necessary to catch a runtime bug you cannot reason about statically.\n- Do **not** launch long-lived helper services (HTTP server, websocket, headless browser bridge) in the same sandbox as the grader unless you can satisfy the *Self-verification hygiene* rules below. A grader may bind its own fixtures to fixed ports\u002Fpaths; a leaked listener will cascade every downstream test into an error even though your artifact is correct.\n- Treat the phrase *“I should be able to open it in a browser”* as a **statement about the artifact**, not an instruction to simulate a browser session inside the delivery sandbox.\n\n---\n\n## Determinism rules (non-negotiable)\n\nTo keep results stable across runs and machines:\n\n### Data determinism\n- **Sort** input rows deterministically before binding to marks (e.g., by x then by category).\n- Use stable grouping order (explicit `Array.from(grouped.keys()).sort()`).\n- Avoid locale-dependent formatting unless fixed (use `d3.format`, `d3.timeFormat` with explicit formats).\n\n### Rendering determinism\n- **No randomness**: do not use `Math.random()` or `d3-random`.\n- **No transitions\u002Fanimations** by default (transitions can introduce timing variance).\n- **Fixed** `width`, `height`, `margin`, `viewBox`.\n- Use **explicit tick counts** only when needed; otherwise rely on D3 defaults but keep domains fixed.\n- Avoid layout algorithms with non-deterministic iteration unless you control seeds\u002Fiterations (e.g., force simulation). If a force layout is required:\n  - fix the tick count,\n  - fix initial positions deterministically (e.g., sorted nodes placed on a grid),\n  - run exactly N ticks and stop.\n\n### Offline + dependency determinism\n- Do **not** load D3 from a CDN.\n- Pin D3 to a specific version (default: **d3@7.9.0**).\n- Prefer vendoring a minified D3 bundle (e.g., `vendor\u002Fd3.v7.9.0.min.js`) or bundling with a lockfile.\n\n### File determinism\n- Stable SVG output:\n  - Avoid auto-generated IDs that may change.\n  - If you must use IDs (clipPath, gradients), derive them from stable strings (e.g., `\"clip-plot\"`).\n- Use LF line endings.\n- Keep numeric precision consistent (e.g., round to 2–4 decimals if needed).\n\n### Self-verification hygiene (sandbox-shared resources)\n\nIf — after the file-level checks above — you still choose to run an auxiliary process to smoke-test the artifact (HTTP server, jsdom bridge, headless browser), treat that process as **shared sandbox state that the grader may also touch**. Follow all of the following, or skip the probe entirely:\n\n1. **Never bind fixed ports.** Bind to port `0` (OS-assigned ephemeral port) and read the actual port back before use, e.g.:\n   - Python: `httpd = HTTPServer((\"127.0.0.1\", 0), Handler); port = httpd.server_address[1]`.\n   - Node: `server.listen(0, () => port = server.address().port)`.\n   - Shell: prefer `python3 -m http.server 0` and parse the printed port, or use a helper that reports the bound port.\n2. **Track by PID, not by pattern.** Capture the child PID at launch (`$!` in shell, `child.pid` in Node, `.pid` on `Popen`). Do not rely on `pkill -f \u003Cpattern>` as the sole teardown — pattern matches are fragile and often miss.\n3. **Unconditional teardown before finishing.** Wrap the probe in `try\u002Ffinally` (or a shell `trap`) that always runs `kill \u003CPID>` (then `kill -9 \u003CPID>` if still alive) *before* you emit the completion message — even on error, timeout, or early return.\n4. **Verify release.** After teardown, assert the port is free (e.g., `ss -ltn | grep -q \":\u003Cport> \" && echo LEAKED`) and that no child process remains. If either check fails, do not declare success.\n5. **Prefer in-process alternatives.** When feasible, avoid a listener altogether: load the HTML with jsdom’s file `ResourceLoader`, read\u002Feval the JS directly, or run `node --check` for a pure syntax pass. These leave no socket state behind.\n6. **Do not install heavyweight probe dependencies in the delivery sandbox** unless the task requires them; each install increases the surface for collisions with the grader’s own environment.\n\nRationale: graders commonly reuse fixed ports or filesystem locations in the same sandbox. A leaked listener on a well-known port (e.g., `8000`, `8080`, `8765`) causes the grader’s fixture setup to fail with `Address already in use`, turning every downstream test into an ERROR even when the delivered artifact is fully correct.\n\n---\n\n## Recommended project layout\n\nIf the task doesn't specify an existing structure, use:\n\n```\ndist\u002F\n  chart.html        # standalone HTML with inline or linked JS\u002FCSS\n  chart.svg         # exported SVG (optional but nice)\n  chart.png         # rasterized (optional)\nvendor\u002F\n  d3.v7.9.0.min.js  # pinned D3 library\n```\n\n---\n\n## Interactive features (tooltips, click handlers, hover effects)\n\nWhen the task requires interactivity (e.g., tooltips on hover, click to highlight):\n\n### Tooltip pattern (recommended)\n\n1. **Create a tooltip element** in HTML:\n```html\n\u003Cdiv id=\"tooltip\" class=\"tooltip\">\u003C\u002Fdiv>\n```\n\n2. **Style with CSS** using `.visible` class for show\u002Fhide:\n```css\n.tooltip {\n    position: absolute;\n    padding: 10px;\n    background: rgba(0, 0, 0, 0.8);\n    color: white;\n    border-radius: 4px;\n    pointer-events: none;  \u002F* Prevent mouse interference *\u002F\n    opacity: 0;\n    transition: opacity 0.2s;\n    z-index: 1000;\n}\n\n.tooltip.visible {\n    opacity: 1;  \u002F* Show when .visible class is added *\u002F\n}\n```\n\n3. **Add event handlers** to SVG elements:\n```javascript\nsvg.selectAll('circle')\n    .on('mouseover', function(event, d) {\n        d3.select('#tooltip')\n            .classed('visible', true)  \u002F\u002F Add .visible class\n            .html(`\u003Cstrong>${d.name}\u003C\u002Fstrong>\u003Cbr\u002F>${d.value}`)\n            .style('left', (event.pageX + 10) + 'px')\n            .style('top', (event.pageY - 10) + 'px');\n    })\n    .on('mouseout', function() {\n        d3.select('#tooltip').classed('visible', false);  \u002F\u002F Remove .visible class\n    });\n```\n\n**Key points:**\n- Use `opacity: 0` by default (not `display: none`) for smooth transitions\n- Use `.classed('visible', true\u002Ffalse)` to toggle visibility\n- `pointer-events: none` prevents tooltip from blocking mouse events\n- Position tooltip relative to mouse with `event.pageX\u002FpageY`\n\n### Click handlers for selection\u002Fhighlighting\n\n```javascript\n\u002F\u002F Add 'selected' class on click\nsvg.selectAll('.bar')\n    .on('click', function(event, d) {\n        \u002F\u002F Remove previous selection\n        d3.selectAll('.bar').classed('selected', false);\n        \u002F\u002F Add to clicked element\n        d3.select(this).classed('selected', true);\n    });\n```\n\nCSS for highlighting:\n```css\n.bar.selected {\n    stroke: #000;\n    stroke-width: 3px;\n}\n```\n\n### Conditional interactivity\n\nSometimes only certain elements should be interactive:\n```javascript\n.on('mouseover', function(event, d) {\n    \u002F\u002F Example: Don't show tooltip for certain categories\n    if (d.category === 'excluded') {\n        return;  \u002F\u002F Exit early, no tooltip\n    }\n    \u002F\u002F Show tooltip for others\n    showTooltip(event, d);\n})\n```\n\n---\n",{"name":5,"description":7},"main","cdcb6d230f3b15c3c33f8a2bdd16439f43602cbe","evaluation\u002Fresults\u002FWML-Opus47-15Tasks-20260923\u002Ftasks\u002Fdata-to-d3\u002Frepaired_run\u002Finputs\u002Fskills\u002Fd3-visualization",1,"https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark","https:\u002F\u002Fgithub.com\u002Flinyouxue","2026-11-14 20:28:35",{"source":8,"skillName":5,"commands":32,"prompt":42,"zipAvailable":43},[33,36,39],{"tool":34,"command":35},"npx","npx skills add linyouxue\u002Fskill-repair-benchmark --skill d3-visualization",{"tool":37,"command":38},"bunx","bunx skills add linyouxue\u002Fskill-repair-benchmark --skill d3-visualization",{"tool":40,"command":41},"pnpm","pnpm dlx skills add linyouxue\u002Fskill-repair-benchmark --skill d3-visualization","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark\u002Fblob\u002Fmain\u002Fevaluation\u002Fresults\u002FWML-Opus47-15Tasks-20260923\u002Ftasks\u002Fdata-to-d3\u002Frepaired_run\u002Finputs\u002Fskills\u002Fd3-visualization\u002FSKILL.md",true,[45,51,55,59],{"path":46,"resourceType":47,"resourceTypeDesc":48,"sizeBytes":49,"sourceHtmlUrl":50},"scripts\u002Fbubble_chart_example.js","SCRIPT","脚本",3679,"https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark\u002Fblob\u002Fmain\u002Fevaluation\u002Fresults\u002FWML-Opus47-15Tasks-20260923\u002Ftasks\u002Fdata-to-d3\u002Frepaired_run\u002Finputs\u002Fskills\u002Fd3-visualization\u002Fscripts\u002Fbubble_chart_example.js",{"path":52,"resourceType":47,"resourceTypeDesc":48,"sizeBytes":53,"sourceHtmlUrl":54},"scripts\u002Fcheck_tooltip.js",1752,"https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark\u002Fblob\u002Fmain\u002Fevaluation\u002Fresults\u002FWML-Opus47-15Tasks-20260923\u002Ftasks\u002Fdata-to-d3\u002Frepaired_run\u002Finputs\u002Fskills\u002Fd3-visualization\u002Fscripts\u002Fcheck_tooltip.js",{"path":56,"resourceType":47,"resourceTypeDesc":48,"sizeBytes":57,"sourceHtmlUrl":58},"scripts\u002Finteractive_table_example.js",4439,"https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark\u002Fblob\u002Fmain\u002Fevaluation\u002Fresults\u002FWML-Opus47-15Tasks-20260923\u002Ftasks\u002Fdata-to-d3\u002Frepaired_run\u002Finputs\u002Fskills\u002Fd3-visualization\u002Fscripts\u002Finteractive_table_example.js",{"path":60,"resourceType":47,"resourceTypeDesc":48,"sizeBytes":61,"sourceHtmlUrl":62},"scripts\u002Ftooltip_handler.js",5741,"https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark\u002Fblob\u002Fmain\u002Fevaluation\u002Fresults\u002FWML-Opus47-15Tasks-20260923\u002Ftasks\u002Fdata-to-d3\u002Frepaired_run\u002Finputs\u002Fskills\u002Fd3-visualization\u002Fscripts\u002Ftooltip_handler.js",[64,71,78,85,90,95],{"skillNo":65,"name":66,"nameZh":6,"description":67,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":68,"categories":69,"keywords":70,"publishedAt":19},"01M7E1HGVRY73NBJ022CJG13X6","video-frame-extraction","Extract frames from video files and save them as images using OpenCV","https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark\u002Fblob\u002Fmain\u002Fjpg-ocr-stat\u002Fresult\u002Fskilltta-claude4.7\u002Fgroup_03\u002Frun_03\u002Finputs\u002Fskills\u002Fvideo-frame-extraction\u002FSKILL.md",[],[],{"skillNo":72,"name":73,"nameZh":6,"description":74,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":75,"categories":76,"keywords":77,"publishedAt":19},"01M7E1HAG5R7CJ9C8NYJS771MB","openai-vision","Analyze images and multi-frame sequences using OpenAI GPT vision models","https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark\u002Fblob\u002Fmain\u002Fjpg-ocr-stat\u002Fresult\u002Fskilltta-claude4.7\u002Fgroup_03\u002Frun_03\u002Finputs\u002Fskills\u002Fopenai-vision\u002FSKILL.md",[],[],{"skillNo":79,"name":80,"nameZh":6,"description":81,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":82,"categories":83,"keywords":84,"publishedAt":19},"01M7E1H7DADKB6QBWKC2KQ63SZ","image-ocr","Extract text content from images using Tesseract OCR via Python, including structured field extraction from receipts and forms","https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark\u002Fblob\u002Fmain\u002Fjpg-ocr-stat\u002Fresult\u002Fskilltta-claude4.7\u002Fgroup_03\u002Frun_03\u002Finputs\u002Fskills\u002Fimage-ocr\u002FSKILL.md",[],[],{"skillNo":86,"name":66,"nameZh":6,"description":67,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":87,"categories":88,"keywords":89,"publishedAt":19},"01M7E1H0WBNT43TENGQY7AVZHD","https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark\u002Fblob\u002Fmain\u002Fjpg-ocr-stat\u002Fresult\u002Fskilltta-claude4.7\u002Fgroup_03\u002Frun_02\u002Finputs\u002Fskills\u002Fvideo-frame-extraction\u002FSKILL.md",[],[],{"skillNo":91,"name":73,"nameZh":6,"description":74,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":92,"categories":93,"keywords":94,"publishedAt":19},"01M7E1GTC7D4N4Q2EF03875J9E","https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark\u002Fblob\u002Fmain\u002Fjpg-ocr-stat\u002Fresult\u002Fskilltta-claude4.7\u002Fgroup_03\u002Frun_02\u002Finputs\u002Fskills\u002Fopenai-vision\u002FSKILL.md",[],[],{"skillNo":96,"name":80,"nameZh":6,"description":81,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":97,"categories":98,"keywords":99,"publishedAt":19},"01M7E1GQ92CWFMGH53KSSE4WER","https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark\u002Fblob\u002Fmain\u002Fjpg-ocr-stat\u002Fresult\u002Fskilltta-claude4.7\u002Fgroup_03\u002Frun_02\u002Finputs\u002Fskills\u002Fimage-ocr\u002FSKILL.md",[],[]]