Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Create beautiful infographics based on the given text content. Use this when users request creating infographics.
.claude/skills/nicepkg-infographic-creation/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-08 | ✗→✓ | ▲ Improved | 60% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 47% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 50% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 55% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 6% | 0% |
An infographic (Infographic) transforms data, information, and knowledge into perceivable visual language. It combines visual design with data visualization, using intuitive symbols to compress complex information and help audiences quickly understand and remember key points.
Infographic = Information Structure + Visual Expression
This is a task that utilizes AntV Infographic to create visual infographics.
Before you start the task, you need to understand the AntV Infographic Syntax specification, including template lists, data structures, themes, and more.
AntV Infographic Syntax is a mermaid-like DSL for describing infographic rendering configuration. It uses indentation to describe information, has strong robustness, and makes it easy to render infographics through AI streaming output. It mainly contains the following information:
e.g.:
plaininfographic list-row-horizontal-icon-arrow data title Title desc Description items - label Label value 12.5 desc Explanation icon mdi/rocket-launch theme palette #3b82f6 #8b5cf6 #f97316
infographic <template-name>, and the template is selected from the list below (the _Available Templates_ section).mdi/chart-line)data should contain title/desc/items (which can be omitted according to semantics)data.items should contain label(string)/value(number)/desc(string)/icon(string)/children(object), where children represents the hierarchical structurecompare-), construct exactly two root nodes and place every comparison item under them as children to keep the hierarchy cleartheme field is for customizing the theme of the infographic, including palette, font, etc.e.g. dark theme with custom palette: plain infographic list-row-simple-horizontal-arrow theme dark palette
data items
desc Start
desc In Progress
desc Complete
theme.base.text.font-family to specify fonts, such as the handwriting style '851tegakizatsu'theme.stylize to select built-in styles and pass parametersCommon stylization types include:
rough: Apply hand-drawn style to make graphics look like they were drawn by hand.pattern: Apply pattern fill to add repeated pattern effects to graphics.linear-gradient / radial-gradient: Apply gradient fill to add linear or radial gradient effects to graphics.e.g: Hand-drawn style (rough): plain infographic list-row-simple-horizontal-arrow theme stylize rough base text font-family 851tegakizatsu data items
desc Start
desc In Progress
desc Complete
Typescript definition for data field:
tsinterface Data { title?: string; desc?: string; items: ItemDatum[]; [key: string]: any; } interface ItemDatum { icon?: string; label?: string; desc?: string; value?: number; illus?: string; children?: ItemDatum[]; [key: string]: any; }
Icons (from Iconify):
<collection>/<icon-name>, e.g., mdi/rocket-launchmdi/* - Material Design Icons (most commonly used)fa/* - Font Awesomebi/* - Bootstrap Iconsheroicons/* - Heroiconsmdi/code-tags, mdi/database, mdi/api, mdi/cloudmdi/chart-line, mdi/briefcase, mdi/currency-usdmdi/check-circle, mdi/arrow-right, mdi/cogmdi/account, mdi/account-group, mdi/shield-accountIllustrations (from unDraw):
codingcoding, programmer, server, cloud-syncbusiness-plan, team-work, analyticsabstract, building-blocks, connectionUsage Tips:
sequence-* and list-* templates → use iconillusTemplate Selection Guidelines:
sequence-* seriessequence-timeline-*sequence-stairs-*sequence-roadmap-vertical-*sequence-zigzag-*sequence-circular-simplesequence-color-snake-steps-*sequence-pyramid-simplelist-row-* series or list-column-* seriescompare-binary-* seriescompare-swothierarchy-tree-*chart-* seriesquadrant-* serieslist-grid-* seriesrelation-circle-*chart-wordcloudDraw an information graph of the Internet technology evolution
plaininfographic list-row-horizontal-icon-arrow data title Internet Technology Evolution desc From Web 1.0 to AI era, key milestones items - time 1991 label Web 1.0 desc Tim Berners-Lee published the first website, opening the Internet era icon mdi/web - time 2004 label Web 2.0 desc Social media and user-generated content become mainstream icon mdi/account-multiple - time 2007 label Mobile desc iPhone released, smartphone changes the world icon mdi/cellphone - time 2015 label Cloud Native desc Containerization and microservices architecture are widely used icon mdi/cloud - time 2020 label Low Code desc Visual development lowers the technology threshold icon mdi/application-brackets - time 2023 label AI Large Model desc ChatGPT ignites the generative AI revolution icon mdi/brain
plaininfographic sequence-horizontal-zigzag-simple-illus data title Product Development Phases desc Key stages in our development process items - label Research desc Understanding user needs illus user-research - label Design desc Creating user experience illus design-thinking - label Development desc Building the product illus coding - label Launch desc Going to market illus launch-day
Before creating the infographic, it is important to understand the user's requirements and the information they want to present. This will help in defining the template and the data structure.
If the user provides a clear and concise description of the information they want to present, break down the information into a clear and concise structure.
Otherwise, ask the user for clarification (e.g., "Please provide a clear and concise description of the information you want to present.", "Which template would you prefer to use?")
{syntax}.CRITICAL NOTE: Must respect the language of the user's input content. e.g. if the user's input content is in Chinese, the text content in infographic syntax must be in Chinese.
Once you have the final AntV Infographic Syntax, you can generate the complete infographic HTML file by following these steps:
{title} - Infographichttps://unpkg.com/@antv/infographic@latest/dist/infographic.min.jscontainer where the infographic will renderwidth: '100%' and height: '100%'{title} with the actual title{syntax} with the actual AntV Infographic Syntaxconst svgDataUrl = await infographic.toDataURL({ type: 'svg' });The Html template you can follow:
html<div id="container"></div> <script src="https://unpkg.com/@antv/infographic@latest/dist/infographic.min.js"></script> <script> // Resource Loader Script // Use the following resource loader script to handle icon and illustration loading: const svgTextCache = new Map(); const pendingRequests = new Map(); AntVInfographic.registerResourceLoader(async (config) => { const { data, scene } = config; try { const key = `${scene}::${data}`; let svgText; // 1. Check cache if (svgTextCache.has(key)) { svgText = svgTextCache.get(key); } // 2. Check if request is already in progress else if (pendingRequests.has(key)) { svgText = await pendingRequests.get(key); } // 3. Make new request else { const fetchPromise = (async () => { try { let url; if (scene === 'icon') { url = `https://api.iconify.design/${data}.svg`; } else if (scene === 'illus') { url = `https://raw.githubusercontent.com/balazser/undraw-svg-collection/refs/heads/main/svgs/${data}.svg`; } else return null; if (!url) return null; const response = await fetch(url, { referrerPolicy: 'no-referrer' }); if (!response.ok) { console.error(`HTTP ${response.status}: Failed to load ${url}`); return null; } const text = await response.text(); if (!text || !text.trim().startsWith('<svg')) { console.error(`Invalid SVG content from ${url}`); return null; } svgTextCache.set(key, text); return text; } catch (fetchError) { console.error(`Failed to fetch resource ${key}:`, fetchError); return null; } })(); pendingRequests.set(key, fetchPromise); try { svgText = await fetchPromise; } catch (error) { pendingRequests.delete(key); console.error(`Error loading resource ${key}:`, error); return null; } finally { pendingRequests.delete(key); } } if (!svgText) { return null; } const resource = AntVInfographic.loadSVGResource(svgText); if (!resource) { console.error(`loadSVGResource returned null for ${key}`); svgTextCache.delete(key); return null; } return resource; } catch (error) { console.error('Unexpected error in resource loader:', error); return null; } }); </script> <script> const infographic = new AntVInfographic.Infographic({ container: '#container', width: '100%', height: '100%', }); infographic.render(`{syntax}`); </script>
<title>-infographic.html using the Write toolNote: The HTML file must include:
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-08 | fail→pass | 23,974 | 21,032 | -12% | 1 | 1 | 0% | 5,328 | 8,525 | +60% | 0 | 0 | — |
case-01 | fail→fail | 23,857 | 18,213 | -24% | 1 | 1 | 0% | 5,227 | 7,408 | +42% | 0 | 0 | — |
case-02 | fail→fail | 20,606 | 19,929 | -3% | 1 | 1 | 0% | 4,179 | 5,874 | +41% | 0 | 0 | — |
case-03 | fail→fail | 28,290 | 12,703 | -55% | 1 | 1 | 0% | 6,196 | 6,862 | +11% | 0 | 0 | — |
case-04 | pass→pass | 8,654 | 22,615 | +161% | 1 | 1 | 0% | 1,510 | 8,332 | +452% | 0 | 0 | — |
case-05 | fail→pass | 34,892 | 25,561 | -27% | 1 | 1 | 0% | 6,183 | 9,059 | +47% | 0 | 0 | — |
case-06 | pass→pass | 9,797 | 26,379 | +169% | 1 | 1 | 0% | 1,829 | 9,248 | +406% | 0 | 0 | — |
case-07 | pass→pass | 20,560 | 15,868 | -23% | 1 | 1 | 0% | 3,925 | 7,334 | +87% | 0 | 0 | — |
case-09 | fail→pass | 27,742 | 19,505 | -30% | 1 | 1 | 0% | 5,553 | 8,304 | +50% | 0 | 0 | — |
case-10 | fail→pass | 20,453 | 11,955 | -42% | 1 | 1 | 0% | 3,911 | 6,077 | +55% | 0 | 0 | — |
case-11 | fail→pass | 28,540 | 12,033 | -58% | 1 | 1 | 0% | 6,169 | 6,516 | +6% | 0 | 0 | — |
case-12 | fail→pass | 11,201 | 17,044 | +52% | 1 | 1 | 0% | 2,103 | 7,398 | +252% | 0 | 0 | — |
case-13 | fail→pass | 10,346 | 22,194 | +115% | 1 | 1 | 0% | 1,905 | 8,857 | +365% | 0 | 0 | — |
case-14 | fail→pass | 19,252 | 16,133 | -16% | 1 | 1 | 0% | 3,715 | 7,299 | +96% | 0 | 0 | — |
case-15 | pass→pass | 8,357 | 18,366 | +120% | 1 | 1 | 0% | 1,393 | 5,794 | +316% | 0 | 0 | — |
case-16 | pass→pass | 19,662 | 13,933 | -29% | 1 | 1 | 0% | 3,862 | 6,820 | +77% | 0 | 0 | — |
case-17 | fail→pass | 28,835 | 19,698 | -32% | 1 | 1 | 0% | 6,173 | 8,503 | +38% | 0 | 0 | — |
case-18 | fail→pass | 26,465 | 20,950 | -21% | 1 | 1 | 0% | 5,336 | 9,001 | +69% | 0 | 0 | — |
case-19 | fail→pass | 17,732 | 15,463 | -13% | 1 | 1 | 0% | 3,518 | 7,199 | +105% | 0 | 0 | — |
case-20 | fail→pass | 13,331 | 20,692 | +55% | 1 | 1 | 0% | 2,462 | 8,883 | +261% | 0 | 0 | — |
case-21 | fail→pass | 26,516 | 15,487 | -42% | 1 | 1 | 0% | 6,169 | 7,111 | +15% | 0 | 0 | — |
case-22 | fail→pass | 28,177 | 11,797 | -58% | 1 | 1 | 0% | 6,182 | 6,640 | +7% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +64 percentage points is the difference between those two pass rates over the 22 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.