Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add seed-forge/harness-ai-kit --skill devlab-web-echarts-usagegit clone --depth 1 https://github.com/seed-forge/harness-ai-kitWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/seed-forge/harness-ai-kit/devlab-web-echarts-usage)<a href="https://agentmods.dev/skills/seed-forge/harness-ai-kit/devlab-web-echarts-usage"><img src="https://agentmods.dev/badge/skills/seed-forge/harness-ai-kit/devlab-web-echarts-usage/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/seed-forge/harness-ai-kit/devlab-web-echarts-usage"><img src="https://agentmods.dev/badge/skills/seed-forge/harness-ai-kit/devlab-web-echarts-usage.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector pass
What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00060 | $0.00883 |
| Opus 5.5 | $0.00024 | $0.00353 |
| Sonnet 5.5 | $0.00012 | $0.00177 |
| Haiku 4.5 | $0.00006 | $0.00088 |
Grade A, and why
devlab-web-echarts-usage scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 1mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 100 lines — stays where its author put it; the contents beside it link to each section on GitHub.
devlab-web-echarts-usage
用途
ECharts 在 Astro/前端项目中的完整集成指南,包含 tree-shaking、IntersectionObserver 按需加载、自定义系列集成、拓扑图实现、雷达图配置、调试经验。
适用场景:
- 在 Astro/React/Vue 项目中引入 ECharts 图表
- 需要 tree-shaking 以避免全量 300KB 加载
- 需要 IntersectionObserver 按需加载(视口进入才加载)
- 实现 force-directed 拓扑图、雷达图、散点图等
- 处理 ECharts 在 Astro Islands 模式下的数据传递
核心概念
Tree-Shaking 导入
ECharts 必须使用 tree-shaking 导入,否则会加载全量 ~300KB:
// ✅ 正确:只导入需要的子模块
import * as echarts from "echarts/core";
import { RadarChart, ScatterChart, EffectScatterChart } from "echarts/charts";
import { TooltipComponent, LegendComponent, GridComponent } from "echarts/components";
import { CanvasRenderer } from "echarts/renderers";
echarts.use([RadarChart, ScatterChart, EffectScatterChart, TooltipComponent, LegendComponent, GridComponent, CanvasRenderer]);
// ❌ 错误:全量导入
import * as echarts from "echarts";
Astro Islands 数据传递
Astro 组件通过 data-* 属性传递数据到客户端脚本:
<div class="chart" data-scores={JSON.stringify(scores)}></div>
<script>
const container = document.querySelector('.chart');
const scores = JSON.parse(container.dataset.scores);
// 使用 scores 初始化 ECharts...
</script>
IntersectionObserver 按需加载
图表不在首屏时,延迟加载以减少首屏 JS payload:
export function observeChart(container, onReady) {
const observer = new IntersectionObserver((entries) => {
for (const entry of entries) {
if (entry.isIntersecting) {
observer.unobserve(container);
const chart = echarts.init(container);
if (chart) onReady(chart);
}
}
}, { rootMargin: "200px" });
observer.observe(container);
}
实现流程
- 确定目标图表类型(雷达图/拓扑图/折线图等)
- 配置 tree-shaking imports(echarts/charts + echarts/components)
- 设置 IntersectionObserver 按需加载
- 实现图表渲染 + 响应式 resize
- 处理 Astro Islands 集成(客户端脚本 + 数据传递)
- 处理 prefers-reduced-motion 降级
推荐输出格式
执行完毕后输出极简回执:状态(✅ 成功 / ⚠️ 部分成功 / ❌ 失败)+ 关键结果(1-2 行,如操作对象、产出位置、下一步)。无需强制套用大表格。
约束
- MUST 使用 ECharts tree-shaking(非全量 300KB)
- MUST IntersectionObserver 按需加载
- MUST 处理 prefers-reduced-motion 降级(显示静态数据或简化图表)
- MUST NOT 在 SSR 阶段执行 ECharts 初始化(仅 client-side)
What ships with it
6 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 1mo ago First seen · 100 lines · 60 tokens per session scan A 156410b1f5ca
devlab-web-echarts-usage is a skill published in the GitHub repository seed-forge/harness-ai-kit (25 stars, last pushed 1mo ago), licensed Apache-2.0. It adds 60 tokens to every session and 883 once invoked, about $0.0002 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
extract-source-sample
Given the path to a finished content-goose ad-run folder, extract everything that defines that ad — recipe shot list, VO script, characters, voices, world, atom-skills, master mp4 — and emit a source-sample.json in the exact shape the upload-ad-sample skill writes to the Goose Ads library. Also links every character…
create-video-seedance-2-fal
Generate a single 4-15s vertical video clip with ByteDance Seedance 2.0 reference-to-video via fal.ai, for shots with no realistic face (a product hero, a product in motion, an empty set). Multi-image reference (product + setting), ambient audio, internal multi-cut handling within one render, 720p by default. Routes…
google-search-ads-builder
End-to-end Google Search Ads campaign builder. Performs deep keyword research (competitor SEO, review language mining, Reddit/HN community terminology, site audit), builds keyword architecture with funnel mapping and intent classification, creates ad group structure, generates headline/description variants, builds…
create-workflow-diagram
Create FigJam/Miro-style workflow diagrams as high-quality PNG images from plain-text workflow descriptions. Renders beautiful HTML diagrams with connected nodes, arrows, and labels, then screenshots them for sharing.
comprehensive-enrichment
Enrich any person or company from any identifier — email, name, LinkedIn URL, domain, company name, Twitter/X handle. Use when asked to enrich, look up, or research a lead, contact, person, or company.
meta-ad-manager
Front door and loop owner of a Meta (Facebook/Instagram) ad harness. Reads the brand's ads/ docs, works out which campaign the user means and which stage it is at, hands off to the stage skill that runs it (intake, strategy, creative, launch, checks, fixes, answers), and writes every stage change back to the docs. Use…