Live survey304 models · 14 providers · 22,792 auditsAudited grill-with-docs · SAFE →What changedHow we verifyllms.txt

Agent skill · Audited from source

antv-s2-expert

skill · antvis/chart-visualization-skillsMIT licenceAudited 22 Oct 2026 · source 34615c1ed06b

★ 512pushed 30 days ago
!CAUTIONGrade B · 89/100 · 7 findings · 34615c1
512repo stars · whole antvis/chart-visualization-skills

Is it safe? With care — CAUTION, grade B (89/100). We read this skill's source at commit 34615c1ed06b and observed network access and no hard-coded secrets. The audit raised 7 findings, 0 critical or high. What it does: Use this skill whenever the user wants to create, customize, or troubleshoot G2 v5 chart visualizations. Triggers include: any mention of 'G2', 'antv g2', '@antv/g2', 'G2 chart', 'G2 可视化', or requests to produce charts…

Ask an AI about this pageGChatGPTCClaudePPerplexityGeGeminiXGrok
More
Cite

Cite this page

ModelsAtlas. “antv-s2-expert (antvis/chart-visualization-skills)”. Retrieved 22 Oct 2026. https://modelsatlas.com/skills/antvis/antv-s2-expert

Trust audit

Audit 0.4.1 · source read 22 Oct 2026

Trust score89/100!CAUTION B
0 critical0 high4 medium2 low1 info

CAUTION means the audit found things worth knowing before you trust this skill. Grade B is shared by 16,667 of 17,602 audited skills.

What the source does

  • FilesystemNone observedNo reads or writes in the source
  • NetworkDeclared5 observations
  • ShellNone observedNo commands run in the source
  • DependenciesNot pinnedSome versions float
  • SecretsNone foundNo keys in source

Five audit layers

LayerWhat we checkResultFindings
L0 ProvenanceRepo owner, licence, archive status, activityPASS1
L1 Static sourceSecrets, path traversal, supply chain, hidden codePASS2
L2 InstructionsPrompt injection, authority framing, hidden directivesWARN4
L3 InventoryThe files and declarations match the sourcePASS0
L4 SandboxRun in isolation and watch behaviourSKIPPED why0

Gates applied: no behavioural pass.

Findings (7)

MEDIUMPrompt injectionprompt.hidden_style · src/content/x6/intermediate/custom-node.md:301
F-01 Prompt injectionCWE-94 · CWE-1427Layer L2
const header = `<div style="background:#5B8FF9;color:#fff;padding:6px 8px;font-weight:bold">${tableName || 'table'}</div>`;
Why
No further detail recorded for this rule.
Fix
—
MEDIUMPrompt injectionprompt.hidden_style · src/content/x6/patterns/er.md:58
F-01 Prompt injectionCWE-94 · CWE-1427Layer L2
const header = `<div style="background:#1890ff;color:#fff;padding:6px 8px;font-weight:bold;">${data.name || 'Table'}</div>`;
Why
No further detail recorded for this rule.
Fix
—
MEDIUMPrompt injectionprompt.hidden_style · src/content/x6/patterns/er.md:217
F-01 Prompt injectionCWE-94 · CWE-1427Layer L2
const header = '<div style="background:#1890ff;color:#fff;padding:6px 8px;font-weight:bold;">' + (data.name || 'Entity') + '</div>';
Why
No further detail recorded for this rule.
Fix
—
MEDIUMPrompt injectionprompt.hidden_style · src/content/x6/patterns/er.md:326
F-01 Prompt injectionCWE-94 · CWE-1427Layer L2
const header = '<div style="background:#1890ff;color:#fff;padding:6px 8px;font-weight:bold;">' + (data.name || 'Entity') + '</div>';
Why
No further detail recorded for this rule.
Fix
—
LOWSupply chainsupply.unpinned · eval/package.json
F-08 Supply chainCWE-829 · CWE-1357Layer L1
dotenv, esbuild, pngjs, puppeteer
Why
4 dependency range(s) float
Fix
pin exact versions or ship a lockfile
LOWSupply chainsupply.unpinned · package.json
F-08 Supply chainCWE-829 · CWE-1357Layer L1
@antv/context, commander, gray-matter, @types/node, tsx, typescript, vitest
Why
7 dependency range(s) float
Fix
pin exact versions or ship a lockfile
INFOInventory / provenanceinv.oversize · eval/cases/g2-dataset-174.json
F-13 Inventory / provenanceCWE-1104Layer L0
eval/cases/g2-dataset-174.json
Why
1789759 bytes not read
Fix
—

Audit 0.4.1 · source sha 34615c1ed06b · 22 Oct 2026Report an issue or request a re-scan

Provenance

Who published it, and what the verdict is pinned to

  • Publisherantvis GitHub organizationOwner of the repository this skill is read from
  • Source folderantvis/chart-visualization-skillsThe exact folder we audited
  • LicenceMITAs the repository states it
  • Commit pinned for this verdict34615c1ed06bA new audit runs when the source changes
  • Repository statusNot archivedLast push 30 days ago
  • Sandboxed runNot runSkills are read, not executed; layer L4 is skipped

What it tells the agent

Full source on GitHub ↗

Its description: Use this skill whenever the user wants to create, customize, or troubleshoot G2 v5 chart visualizations. Triggers include: any mention of 'G2', 'antv g2', '@antv/g2', 'G2 chart', 'G2 可视化', or requests to produce charts…

---
name: antv-g2-chart
description: "Use this skill whenever the user wants to create, customize, or troubleshoot G2 v5 chart visualizations. Triggers include: any mention of 'G2', 'antv g2', '@antv/g2', 'G2 chart', 'G2 可视化', or requests to produce charts like bar charts (柱状图), line charts (折线图), pie charts (饼图), scatter plots (散点图), area charts (面积图), heatmap (热力图), radar charts (雷达图), treemap (矩形树图), funnel charts (漏斗图), sankey diagrams (桑基图), gauge (仪表盘), wordcloud (词云), boxplot (箱线图), as well as G2-specific topics like encode channels, scale config, coordinate systems, transforms, interactions, themes, labels, and animations. Also use when debugging G2 rendering errors, V4→V5 migration issues, or chart type selection. Do NOT use for G6 graph/network visualization, X6 editor diagrams, or S2 pivot tables."
tools:
  - curl
---

# G2 v5 Chart Visualization

## Overview

G2 v5 is AntV's grammar-of-graphics charting library. It uses **Spec Mode** — a declarative, JSON-like configuration style. Generated examples should start from a complete spec; runtime code may later merge a local update through `chart.options()`.

```javascript
import { Chart } from '@antv/g2';

const chart = new Chart({ container: 'container', autoFit: true });
chart.options({
  type: 'interval',
  data: [{ genre: 'Sports', sold: 275 }],
  encode: { x: 'genre', y: 'sold' },
});
chart.render();
```

### CDN Usage

```html
<script src="https://unpkg.com/@antv/g2@5/dist/g2.min.js"></script>
<script>
  const chart = new G2.Chart({ container: 'container', autoFit: true });
  chart.options({
    type: 'interval',
    data: [{ genre: 'Sports', sold: 275 }],
    encode: { x: 'genre', y: 'sold' },
  });
  chart.render();
</script>
```

## Content Retrieval Service

When using AntV G2 for data visualization, if you need to understand the concepts, usage, API, examples, and other aspects of G2 v5, you can use the provided context retrieval service. When using the skill, content is retrieved via an antv HTTP API server using GET requests.

- Host: `https://sive.antv.antgroup.com`
- Endpoint: `/api/v1/context/retrieve`
- Method: `GET`
- Parameters: `query`, `library`, `topK`, `content`, `maxTokens`

Retrieve reference documents by query (hybrid search = FTS + vector + RRF fusion).

| Parameter | Type | Required | Description |
|---|---|---|---|
| `query` | string | ✅ | Search keywords, e.g. `bar chart interval` |
| `library` | string | ✅ | Library name: `g2`, `g6`, `x6` |
| `topK` | number | | Number of results to return (default: 5) |
| `content` | boolean | | Return full reference doc markdown (default: true) |
| `maxTokens` | number | | Max tokens per result (default: unlimited) |

```bash
curl "https://sive.antv.antgroup.com/api/v1/context/retrieve?query=bar+chart+stacked&library=g2"
```

## Critical Rules

### MUST: Use V5 Spec Mode ONLY

```javascript
// ❌ WRONG — V4 chain API (deprecated, will not render)
chart.interval()
  .data([...])
  .encode('x', 'genre')
  .encode('y', 'sold')
  .style({ radius: 4 });

// ✅ CORRECT — V5 Spec Mode
chart.options({
  type: 'interval',
  data: [...],
  encode: { x: 'genre', y: 'sold' },
  style: { radius: 4 },
});
```

### Multi-mark overlays use `view + children`

`chart.options()` supports incremental deep-merge updates, which is useful for runtime interaction. For generated one-shot code, provide a complete initial spec. To create independent overlay marks, use one `type: 'view'` with `children`; sequentially changing the root `type` does not create an overlay.

```javascript
// ❌ WRONG — this changes one root mark from line to point; it does not overlay them
chart.options({ type: 'line', data, encode: { x: 'date', y: 'value' } });
chart.options({ type: 'point', data, encode: { x: 'date', y: 'value' } });

// ✅ CORRECT — children array for multi-mark
chart.options({
  type: 'view',
  data,
  children: [
    { type: 'line',  encode: { x: 'date', y: 'value' } },
    { type: 'point', encode: { x: 'date', y: 'value' } },
  ],
});
```

### MUST: `container` is mandatory, `chart.render()` at the end

```javascript
// ❌ WRONG — no container, no render
const chart = new Chart();
chart.options({ type: 'interval', data });

// ✅ CORRECT
const chart = new Chart({ container: 'container', autoFit: true });
chart.options({ type: 'interval', data, encode: { x: 'genre', y: 'sold' } });
chart.render();
```

### MUST: Correct mark types only

| ❌ Hallucinated (from ECharts/Vega) | ✅ G2 correct replacement |
|---|---|
| `type: 'ruleX'` | `type: 'lineX'` |
| `type: 'ruleY'` | `type: 'lineY'` |
| `type: 'regionX'` | `type: 'rangeX'` |
| `type: 'regionY'` | `type: 'rangeY'` |
| `type: 'venn'` | `type: 'path'` + transform |

**Legal G2 marks**: `interval`, `line`, `area`, `point`, `rect`, `cell`, `text`, `image`, `path`, `polygon`, `shape`, `link`, `connector`, `vector`, `lineX`, `lineY`, `rangeX`, `rangeY`, `range`, `box`, `boxplot`, `density`, `heatmap`, `beeswarm`, `treemap`, `pack`, `partition`, `tree`, `sankey`, `chord`, `wordCloud`, `gauge`, `liquid`. `sunburst` requires `@antv/g2-extension-plot`.

### MUST: `encode` is an object, `transform` is an array

```javascript
// ❌ WRONG
.encode('x', 'genre')
.transform: { type: 'stackY' }

// ✅ CORRECT
encode: { x: 'genre', y: 'sold' }
transform: [{ type: 'stackY' }]
```

### MUST: `labels` is plural; range encodings use mark-appropriate channels

```javascript
// ❌ WRONG
label: { text: 'sold' }

// ✅ CORRECT
labels: [{ text: 'sold' }]
// Interval / link ranges may use either a two-field array or y + y1.
encode: { y: ['start', 'end'] }
// RangeY explicitly uses y + y1.
encode: { y: 'start', y1: 'end' }
```

### MUST: No d3 in user code

```javascript
// ❌ WRONG — d3 is not exposed in user scope
const total = d3.sum(data, d => d.value);

// ✅ CORRECT — use native JS or G2 built-in transforms
const total = data.reduce((sum, d) => sum + d.value, 0);
```

### MUST: No white/near-white fill, no `padding` as array

```javascript
// ❌ WRONG
style: { fill: '#fff' }  

Excerpt, first 6,000 characters of SKILL.md, verbatim from the audited commit. It is text from someone else’s repository, quoted so you can judge it before your agent reads it.

Install

Pinned to the audited commit 34615c1

Download folder ↗
npx skills add antvis/chart-visualization-skills
npm install -g @antv/chart-visualization-skills
npm install @antv/gpt-vis
npm install @antv/t8
npm install @antv/g6-extension-react

Commands as the repository documents them: shown, never run by us. Our verdict covers commit 34615c1ed06b only.

Works in which agents?

What its own text says, not a test

AgentStatusMore
Claude CodeMentioned in its text, not testedSkills for Claude Code · About Claude Code
GitHub CopilotMentioned in its text, not testedSkills for GitHub Copilot · About GitHub Copilot
CursorMentioned in its text, not testedSkills for Cursor · About Cursor
“Mentioned” means the skill’s text names the agent. We have not run it there.

Audit history

Every audit, every source change

  1. !CAUTION B 89 / 100

    first audit · source 34615c1ed06b

README badge

For maintainers · shows the latest audit

ModelsAtlas: CAUTION BMODELSATLASCAUTION · B
[![ModelsAtlas: CAUTION B](https://modelsatlas.com/skills/antvis/antv-s2-expert/badge.svg)](https://modelsatlas.com/skills/antvis/antv-s2-expert/)

The badge shows our verdict and grade for this skill, and links back to this page. It changes when the audit does.

Similar skills

icon-retrieval✓SAFE

antvis/chart-visualization-skills

Search icons through HTTP API and retrieve SVG strings with curl.

★ 516Grade B
chart-visualization✓SAFE

antvis/chart-visualization-skills

将数据可视化为图表。当用户需要生成柱状图、折线图、饼图、散点图、雷达图、桑基图、思维导图、流程图等图表时调用此技能,通过 curl 工具调用 AntV API 生成图表图片

★ 515Grade B
antv-x6-editor✓SAFE

antvis/chart-visualization-skills

Use this skill whenever the user wants to create, customize, or troubleshoot X6 v3 graph editor diagrams. Triggers include: any mention of 'X6', 'antv x6', '@antv/x6', 'X6 editor', 'X6 图编辑', '流程图', 'DAG', 'ER图',…

★ 514Grade B
antv-g2-chart✓SAFE

antvis/chart-visualization-skills

Use this skill whenever the user wants to create, customize, or troubleshoot G2 v5 chart visualizations. Triggers include: any mention of 'G2', 'antv g2', '@antv/g2', 'G2 chart', 'G2 可视化', or requests to produce charts…

★ 512Grade B
antv-g6-graph✓SAFE

antvis/chart-visualization-skills

Use this skill whenever the user wants to create, customize, or troubleshoot G6 v5 graph/network visualizations. Triggers include: any mention of 'G6', 'antv g6', '@antv/g6', 'G6 graph', 'G6 图', '网络图', '关系图', '拓扑图',…

★ 512Grade B
smart-search✓SAFE

jackwener/opencli

基于 opencli 命令的智能搜索路由器。当用户想要使用 OpenCLI、CLI 或 API 搜索、查询、查找或研究信息时,尤其是涉及指定网站、社交媒体、技术资料、新闻、购物、旅游、求职、金融或中文内容时,务必使用此 skill

★ 31kGrade B

Add this badge to your README

[![ModelsAtlas: CAUTION B](https://modelsatlas.com/skills/antvis/antv-s2-expert/badge.svg)](https://modelsatlas.com/skills/antvis/antv-s2-expert/)

Questions about antv-s2-expert

What does the antv-s2-expert skill do?
⛏️ Turning data into a visual language for better thinking with Skills.
Is antv-s2-expert safe to install?
With care. The audit graded it B (89/100) and found 7 things worth knowing before you trust this skill, listed below with the exact line each was found on.
What can antv-s2-expert access on my machine?
The audit observed that it reaches the network. Each of those is consistent with what it says it does. Secrets in the source: none found.
Which assistants does antv-s2-expert work with?
Its documentation mentions claude-code, copilot and cursor. That is what the text claims, not a compatibility test we ran.
How current is this page?
The grade is for one exact copy of the source (34615c1ed06b), read on 2026-10-22. The repository is watched, and a new audit runs when it changes — this is the first audit.

Sources

Spotted something wrong? Report a correction · Methodology

Keep going in your AI

Opens with this page as the source. We add nothing else to the prompt.