{"data":{"skill":{"slug":"britecharts-britecharts","name":"britecharts","icon":"📦","repo":"https://github.com/britecharts/britecharts/tree/1c1e22b5d7ecb005e209979d03f52b782a07818b/skills/britecharts","status":"approved","author":"britecharts","authorVersion":null,"skillstoreRevision":1},"audit":{"id":"d58c7ab2-7a77-4df9-ae99-6b403d817999","skill_id":"f056e2fb-20bc-4f90-bb91-8a63cfc1d0bf","version":1,"content_hash":"v3:a3d9b7281cbaeaa47c49a2fe4e4d75f5c320e884:f41178f3ae01d5afdc6f25d072ec68e2e75e5338087a76614ae9f3c75f0beade:f9ae63483d6bf0159f36c04344d4bf691535697e8595c6f803fdd028273dc850:736b696c6c732f62726974656368617274732f6272697465636861727473:cc5f31bb7faff572aa0542f618373ae4","risk_level":"safe","is_blocked":false,"safe_to_publish":true,"analysis_status":"ok","agent_auto_install_policy":"allowed","manual_install_policy":"allowed","summary":"All 65 static findings are false positives involving documentation formatting, chart examples, public resource links, or a local evaluation fixture copy. The reviewed files contain no evidence of credential theft, unauthorized data transmission, system reconnaissance, or prompt injection. Referenced packages and CDN assets were not independently audited.","remediation":[],"risk_factor_evidence":[{"factor":"external_commands","evidence":[{"file":"evals/migrate-v2-charts/place-files.sh","line_end":3,"line_start":3},{"file":"references/react.md","line_end":87,"line_start":86},{"file":"SKILL.md","line_end":12,"line_start":12},{"file":"SKILL.md","line_end":13,"line_start":13},{"file":"SKILL.md","line_end":14,"line_start":14},{"file":"SKILL.md","line_end":20,"line_start":20},{"file":"SKILL.md","line_end":22,"line_start":22},{"file":"SKILL.md","line_end":23,"line_start":23},{"file":"SKILL.md","line_end":30,"line_start":27},{"file":"SKILL.md","line_end":34,"line_start":30},{"file":"SKILL.md","line_end":36,"line_start":34},{"file":"SKILL.md","line_end":38,"line_start":36},{"file":"SKILL.md","line_end":38,"line_start":38},{"file":"SKILL.md","line_end":48,"line_start":40},{"file":"SKILL.md","line_end":52,"line_start":48},{"file":"SKILL.md","line_end":66,"line_start":52},{"file":"SKILL.md","line_end":68,"line_start":66},{"file":"SKILL.md","line_end":69,"line_start":68},{"file":"SKILL.md","line_end":70,"line_start":69},{"file":"SKILL.md","line_end":71,"line_start":70},{"file":"SKILL.md","line_end":71,"line_start":71},{"file":"SKILL.md","line_end":73,"line_start":72},{"file":"SKILL.md","line_end":73,"line_start":73},{"file":"SKILL.md","line_end":75,"line_start":74},{"file":"SKILL.md","line_end":75,"line_start":75},{"file":"SKILL.md","line_end":76,"line_start":76},{"file":"SKILL.md","line_end":77,"line_start":77},{"file":"SKILL.md","line_end":78,"line_start":78},{"file":"SKILL.md","line_end":84,"line_start":84},{"file":"SKILL.md","line_end":85,"line_start":85},{"file":"SKILL.md","line_end":86,"line_start":86},{"file":"SKILL.md","line_end":87,"line_start":87},{"file":"SKILL.md","line_end":88,"line_start":88},{"file":"SKILL.md","line_end":89,"line_start":89},{"file":"SKILL.md","line_end":90,"line_start":90},{"file":"SKILL.md","line_end":91,"line_start":91},{"file":"SKILL.md","line_end":92,"line_start":92},{"file":"SKILL.md","line_end":93,"line_start":93},{"file":"SKILL.md","line_end":94,"line_start":94},{"file":"SKILL.md","line_end":95,"line_start":95},{"file":"SKILL.md","line_end":97,"line_start":97},{"file":"SKILL.md","line_end":103,"line_start":101},{"file":"SKILL.md","line_end":116,"line_start":103},{"file":"SKILL.md","line_end":120,"line_start":116},{"file":"SKILL.md","line_end":120,"line_start":120},{"file":"SKILL.md","line_end":121,"line_start":121},{"file":"SKILL.md","line_end":122,"line_start":122},{"file":"SKILL.md","line_end":123,"line_start":123},{"file":"SKILL.md","line_end":124,"line_start":124},{"file":"SKILL.md","line_end":125,"line_start":125}]},{"factor":"network","evidence":[{"file":"SKILL.md","line_end":41,"line_start":41},{"file":"SKILL.md","line_end":42,"line_start":42},{"file":"SKILL.md","line_end":43,"line_start":43},{"file":"SKILL.md","line_end":150,"line_start":150},{"file":"SKILL.md","line_end":160,"line_start":160}]}],"critical_findings":[],"high_findings":[],"medium_findings":[],"low_findings":[],"dangerous_patterns":[],"files_scanned":35,"total_lines":827,"audit_model":"codex","audited_at":"2026-10-30T13:14:28.567+00:00","created_at":"2026-10-30T14:04:35.827606+00:00","static_findings":[{"id":"external_commands:evals/migrate-v2-charts/place-files.sh:3:shell-command-substitution","file":"evals/migrate-v2-charts/place-files.sh","pattern":"Shell command substitution","snippet":"cp -R \"$(dirname \"$0\")/files/.\" .","category":"external_commands","line_end":3,"severity":"medium","line_start":3},{"id":"blocker:references/charts.md:60:system-reconnaissance","file":"references/charts.md","pattern":"System reconnaissance","snippet":"API page: `line`. Data: an object, not an array: `{ data: [{ topicName, name, date, value }] }`. Eac","category":"blocker","line_end":60,"severity":"low","line_start":60},{"id":"external_commands:references/react.md:86:ruby-shell-backtick-execution","file":"references/react.md","pattern":"Ruby/shell backtick execution","snippet":"<button onClick={() => setExportName(`visits-${Date.now()}.svg`)}>Download SVG</button>","category":"external_commands","line_end":87,"severity":"medium","line_start":86},{"id":"blocker:references/wrappers.md:35:system-reconnaissance","file":"references/wrappers.md","pattern":"System reconnaissance","snippet":"heigth: did you mean height?","category":"blocker","line_end":35,"severity":"low","line_start":35},{"id":"external_commands:SKILL.md:12:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `@britecharts/core` | The charts themselves, in plain JavaScript or TypeScript. |","category":"external_commands","line_end":12,"severity":"medium","line_start":12},{"id":"external_commands:SKILL.md:13:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `@britecharts/wrappers` | One `create` / `update` / `destroy` object per chart, for wiring charts ","category":"external_commands","line_end":13,"severity":"medium","line_start":13},{"id":"external_commands:SKILL.md:14:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `@britecharts/react` | The charts as React function components. |","category":"external_commands","line_end":14,"severity":"medium","line_start":14},{"id":"external_commands:SKILL.md:20:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"1. **Find out what the project uses.** Check `package.json`. `britecharts` (no scope) or `britechart","category":"external_commands","line_end":20,"severity":"medium","line_start":20},{"id":"external_commands:SKILL.md:22:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"3. **Shape the data exactly as the chart expects.** Field names are fixed: v3 removed the accessors ","category":"external_commands","line_end":22,"severity":"medium","line_start":22},{"id":"external_commands:SKILL.md:23:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"4. **Open the chart's section in `references/charts.md`** for its accessors and events before using ","category":"external_commands","line_end":23,"severity":"medium","line_start":23},{"id":"external_commands:SKILL.md:27:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":30,"severity":"medium","line_start":27},{"id":"external_commands:SKILL.md:30:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":34,"severity":"medium","line_start":30},{"id":"external_commands:SKILL.md:34:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```js","category":"external_commands","line_end":36,"severity":"medium","line_start":34},{"id":"external_commands:SKILL.md:36:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":38,"severity":"medium","line_start":36},{"id":"external_commands:SKILL.md:38:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Without a bundler, load the CDN bundle, which exposes a global `core`, plus d3-selection for `d3.sel","category":"external_commands","line_end":38,"severity":"medium","line_start":38},{"id":"external_commands:SKILL.md:40:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```html","category":"external_commands","line_end":48,"severity":"medium","line_start":40},{"id":"external_commands:SKILL.md:48:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":52,"severity":"medium","line_start":48},{"id":"external_commands:SKILL.md:52:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```js","category":"external_commands","line_end":66,"severity":"medium","line_start":52},{"id":"external_commands:SKILL.md:66:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":68,"severity":"medium","line_start":66},{"id":"external_commands:SKILL.md:68:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Create one chart instance per container and keep it. To redraw with new data or settings, change a","category":"external_commands","line_end":69,"severity":"medium","line_start":68},{"id":"external_commands:SKILL.md:69:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Setters return the chart, so they chain; getters (no argument) return the value, and an accessor y","category":"external_commands","line_end":70,"severity":"medium","line_start":69},{"id":"external_commands:SKILL.md:70:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Charts take their width from you. For a responsive chart, measure the container and redraw on resi","category":"external_commands","line_end":71,"severity":"medium","line_start":70},{"id":"external_commands:SKILL.md:71:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `isLoading(true)` draws a skeleton in the chart's shape; set it back to `false` and call again whe","category":"external_commands","line_end":71,"severity":"medium","line_start":71},{"id":"external_commands:SKILL.md:72:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `isAnimated(true)` animates the draw; it is skipped automatically when the reader's system asks fo","category":"external_commands","line_end":73,"severity":"medium","line_start":72},{"id":"external_commands:SKILL.md:73:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `colorSchema(colors.colorSchemas.okabeIto)` gives a colour-blind-safe palette (`import { colors } ","category":"external_commands","line_end":73,"severity":"medium","line_start":73},{"id":"external_commands:SKILL.md:74:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `exportChart('name.svg')` downloads an SVG, any other filename a PNG; an optional second argument ","category":"external_commands","line_end":75,"severity":"medium","line_start":74},{"id":"external_commands:SKILL.md:75:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Every chart but the legend renders its data as a visually hidden table after its svg, linked with ","category":"external_commands","line_end":75,"severity":"medium","line_start":75},{"id":"external_commands:SKILL.md:76:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- The bar, donut, grouped bar, heatmap, line, scatter plot, stacked area and stacked bar charts are ","category":"external_commands","line_end":76,"severity":"medium","line_start":76},{"id":"external_commands:SKILL.md:77:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Dark mode and theming are CSS, not accessors: the charts follow the page's `color-scheme` (`:root ","category":"external_commands","line_end":77,"severity":"medium","line_start":77},{"id":"external_commands:SKILL.md:78:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Number formats are d3-format strings (`numberFormat('.1%')`); locales are objects passed to `value","category":"external_commands","line_end":78,"severity":"medium","line_start":78},{"id":"external_commands:SKILL.md:84:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| One value per category | `bar` | `{ name, value }` |","category":"external_commands","line_end":84,"severity":"medium","line_start":84},{"id":"external_commands:SKILL.md:85:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| Several series per category, side by side | `groupedBar` | `{ name, group, value }` |","category":"external_commands","line_end":85,"severity":"medium","line_start":85},{"id":"external_commands:SKILL.md:86:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| Several series per category, stacked | `stackedBar` | `{ name, stack, value }` |","category":"external_commands","line_end":86,"severity":"medium","line_start":86},{"id":"external_commands:SKILL.md:87:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| Parts of a whole | `donut` | `{ name, quantity, id? }` |","category":"external_commands","line_end":87,"severity":"medium","line_start":87},{"id":"external_commands:SKILL.md:88:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| One or more series over time | `line` | data is `{ data: [{ topicName, name, date, value }] }` — n","category":"external_commands","line_end":88,"severity":"medium","line_start":88},{"id":"external_commands:SKILL.md:89:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| Series over time, stacked | `stackedArea` | `{ date, name, value }` |","category":"external_commands","line_end":89,"severity":"medium","line_start":89},{"id":"external_commands:SKILL.md:90:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| Two numeric variables | `scatterPlot` | `{ name, x, y }` |","category":"external_commands","line_end":90,"severity":"medium","line_start":90},{"id":"external_commands:SKILL.md:91:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| Day × hour intensity | `heatmap` | `{ day, hour, value }` (day 0–6, hour 0–23) |","category":"external_commands","line_end":91,"severity":"medium","line_start":91},{"id":"external_commands:SKILL.md:92:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| A small trend, no axes | `sparkline` | `{ date, value }` |","category":"external_commands","line_end":92,"severity":"medium","line_start":92},{"id":"external_commands:SKILL.md:93:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| A measure against ranges and a target | `bullet` | one object per chart, not an array: `{ ranges: ","category":"external_commands","line_end":93,"severity":"medium","line_start":93},{"id":"external_commands:SKILL.md:94:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| Selecting a date window | `brush` | `{ date, value }` (value may be `null` for gaps) |","category":"external_commands","line_end":94,"severity":"medium","line_start":94},{"id":"external_commands:SKILL.md:95:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| A key for another chart | `legend` | `{ id, name, quantity? }` |","category":"external_commands","line_end":95,"severity":"medium","line_start":95},{"id":"external_commands:SKILL.md:97:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Dates are ISO strings (`'2020-01-01T00:00:00Z'`). In `line`, `name` is a numeric id for the series a","category":"external_commands","line_end":97,"severity":"medium","line_start":97},{"id":"external_commands:SKILL.md:101:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"There is one tooltip component; `miniTooltip` is its single-value preset. Wire the chart's events to","category":"external_commands","line_end":103,"severity":"medium","line_start":101},{"id":"external_commands:SKILL.md:103:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```js","category":"external_commands","line_end":116,"severity":"medium","line_start":103},{"id":"external_commands:SKILL.md:116:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":120,"severity":"medium","line_start":116},{"id":"external_commands:SKILL.md:120:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `line` | `tooltip()` | `.metadata-group .hover-marker` | — |","category":"external_commands","line_end":120,"severity":"medium","line_start":120},{"id":"external_commands:SKILL.md:121:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `stackedArea` | `tooltip()` | `.metadata-group .vertical-marker-container` | `.topicLabel('values'","category":"external_commands","line_end":121,"severity":"medium","line_start":121},{"id":"external_commands:SKILL.md:122:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `stackedBar` | `tooltip()` | `.metadata-group` | `.topicLabel('values').nameLabel('stack')` |","category":"external_commands","line_end":122,"severity":"medium","line_start":122},{"id":"external_commands:SKILL.md:123:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `groupedBar` | `tooltip()` | `.metadata-group` | `.topicLabel('values').nameLabel('group')` |","category":"external_commands","line_end":123,"severity":"medium","line_start":123},{"id":"external_commands:SKILL.md:124:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `bar`, `donut`, `heatmap` | `miniTooltip()` | `.metadata-group` | — |","category":"external_commands","line_end":124,"severity":"medium","line_start":124},{"id":"external_commands:SKILL.md:125:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `scatterPlot` | `miniTooltip()` | `.metadata-group` | `.valueLabel('y')`, optionally `.nameLabel('","category":"external_commands","line_end":125,"severity":"medium","line_start":125},{"id":"external_commands:SKILL.md:127:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Without those settings the tooltip shows no rows, rows without colours, or no value. Pass the handle","category":"external_commands","line_end":127,"severity":"medium","line_start":127},{"id":"external_commands:SKILL.md:131:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```jsx","category":"external_commands","line_end":144,"severity":"medium","line_start":131},{"id":"external_commands:SKILL.md:144:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":146,"severity":"medium","line_start":144},{"id":"external_commands:SKILL.md:146:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Props mirror the chart's accessors. `data` is required: pass `null` while loading. A chart redraws o","category":"external_commands","line_end":146,"severity":"medium","line_start":146},{"id":"external_commands:SKILL.md:150:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Use `@britecharts/wrappers`: `BarWrapper.create(element, data, config)` returns the chart; `update(e","category":"external_commands","line_end":150,"severity":"medium","line_start":150},{"id":"external_commands:SKILL.md:156:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Each accessor used appears in the chart's list in `references/charts.md`; nothing from v2 (`aspect","category":"external_commands","line_end":156,"severity":"medium","line_start":156},{"id":"external_commands:SKILL.md:160:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"The full documentation, as one text file, is at https://britecharts.github.io/britecharts/llms-full.","category":"external_commands","line_end":160,"severity":"medium","line_start":160},{"id":"network:SKILL.md:41:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"<link rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/npm/@britecharts/core/dist/styles/bundle/brite","category":"network","line_end":41,"severity":"low","line_start":41},{"id":"network:SKILL.md:42:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"<script src=\"https://cdn.jsdelivr.net/npm/d3-selection@3/dist/d3-selection.min.js\"></script>","category":"network","line_end":42,"severity":"low","line_start":42},{"id":"network:SKILL.md:43:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"<script src=\"https://cdn.jsdelivr.net/npm/@britecharts/core/dist/cdn/bundle/core.cdn.min.js\"></scrip","category":"network","line_end":43,"severity":"low","line_start":43},{"id":"network:SKILL.md:150:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"Use `@britecharts/wrappers`: `BarWrapper.create(element, data, config)` returns the chart; `update(e","category":"network","line_end":150,"severity":"low","line_start":150},{"id":"network:SKILL.md:160:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"The full documentation, as one text file, is at https://britecharts.github.io/britecharts/llms-full.","category":"network","line_end":160,"severity":"low","line_start":160},{"id":"blocker:SKILL.md:97:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"Dates are ISO strings (`'2020-01-01T00:00:00Z'`). In `line`, `name` is a numeric id for the series a","category":"blocker","line_end":97,"severity":"low","line_start":97}],"finding_verdicts":[{"id":"external_commands:evals/migrate-v2-charts/place-files.sh:3:shell-command-substitution","reason":"The quoted dirname substitution locates bundled evaluation fixtures for copying into the test directory. It does not evaluate supplied code or invoke remote commands.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/charts.md:60:system-reconnaissance","reason":"This line documents the line chart data structure and numeric series identifiers. It contains no host inspection or reconnaissance operation.","verdict":"false_positive","confidence":1},{"id":"external_commands:references/react.md:86:ruby-shell-backtick-execution","reason":"The backticks delimit a JavaScript template literal constructing an SVG download filename from Date.now(). No shell or Ruby execution occurs.","verdict":"false_positive","confidence":1},{"id":"blocker:references/wrappers.md:35:system-reconnaissance","reason":"The text demonstrates an accessor spelling suggestion: heigth should be height. It is a documentation error message, not a system query.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:12:ruby-shell-backtick-execution","reason":"Backticks format the @britecharts/core package name in a Markdown table. They do not execute commands.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:13:ruby-shell-backtick-execution","reason":"Backticks format the wrappers package and its create, update, and destroy methods. These are Markdown API labels, not shell expressions.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:14:ruby-shell-backtick-execution","reason":"The backticks mark the React package name as inline code. No executable shell context exists.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:20:ruby-shell-backtick-execution","reason":"Inline code names the dependency manifest, packages, and migration reference. Inspecting project dependencies is relevant to selecting the correct chart API.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:22:ruby-shell-backtick-execution","reason":"The backticks identify removed chart accessors in data mapping guidance. They are documentation formatting, not command execution.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:23:ruby-shell-backtick-execution","reason":"The line links a local chart reference and quotes an unsupported accessor error. No shell invocation is present.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:27:ruby-shell-backtick-execution","reason":"The match is a Markdown bash fence around ordinary npm installation examples for chart dependencies. There is no backtick substitution or hidden payload.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:30:ruby-shell-backtick-execution","reason":"The backticks close an installation example and precede stylesheet documentation. Markdown fence delimiters are not executable shell syntax here.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:34:ruby-shell-backtick-execution","reason":"This fenced JavaScript example imports the Britecharts stylesheet. Its Markdown delimiters do not run shell commands.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:36:ruby-shell-backtick-execution","reason":"The matched backticks close a stylesheet import example. The following text describes a browser bundle, not shell execution.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:38:ruby-shell-backtick-execution","reason":"Inline code identifies the browser global core and the d3.select API. Neither is a Ruby or shell backtick expression.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:40:ruby-shell-backtick-execution","reason":"The backticks delimit an HTML example loading chart libraries and rendering a bar chart. The example contains no shell execution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:48:ruby-shell-backtick-execution","reason":"This is a closing Markdown HTML fence followed by the next example section. The scanner treats documentation delimiters as executable backticks.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:52:ruby-shell-backtick-execution","reason":"The fenced JavaScript configures and renders a chart through D3 selection APIs. Markdown backticks do not invoke a shell.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:66:ruby-shell-backtick-execution","reason":"The match closes a JavaScript chart example and reaches inline redraw guidance. These backticks are documentation markup.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:68:ruby-shell-backtick-execution","reason":"The inline JavaScript shows how to redraw an existing chart instance with new data. It contains no external command invocation.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:69:ruby-shell-backtick-execution","reason":"Inline formatting documents getter defaults and setter chaining. No shell or Ruby expression appears.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:70:ruby-shell-backtick-execution","reason":"The backticks label ResponsiveContainer and loading APIs in chart sizing guidance. These are Markdown references rather than commands.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:71:ruby-shell-backtick-execution","reason":"The line describes isLoading and false values for a chart skeleton state. Inline API notation does not execute a shell.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:72:ruby-shell-backtick-execution","reason":"The backticks format animation and palette APIs in adjacent documentation. There is no external command operation.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:73:ruby-shell-backtick-execution","reason":"Inline examples configure accessible color palettes and category colors. Backticks are Markdown formatting, not executable shell substitutions.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:74:ruby-shell-backtick-execution","reason":"The line documents an intentional browser chart download through exportChart. No shell execution or upload destination is specified.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:75:ruby-shell-backtick-execution","reason":"Inline code describes accessibility attributes and the built-in data table toggle. It is unrelated to operating system commands.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:76:ruby-shell-backtick-execution","reason":"Backticks mark chart focus events and keyboard accessibility settings. The prose contains no shell command.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:77:ruby-shell-backtick-execution","reason":"The inline examples set CSS color-scheme and custom properties. CSS documentation is not Ruby or shell execution.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:78:ruby-shell-backtick-execution","reason":"The backticks identify number formatting and locale accessors. They are inline Markdown code spans without a shell context.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:84:ruby-shell-backtick-execution","reason":"The table formats the bar chart name and its name/value data fields. These are documentation labels, not executed commands.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:85:ruby-shell-backtick-execution","reason":"The table describes groupedBar rows using name, group, and value. Backticks format the chart schema only.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:86:ruby-shell-backtick-execution","reason":"The line documents stackedBar data fields within a Markdown table. It contains no executable shell expression.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:87:ruby-shell-backtick-execution","reason":"Inline code documents donut chart fields, including quantity and an optional identifier. No command interpreter is involved.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:88:ruby-shell-backtick-execution","reason":"Backticks delimit the line chart name and its wrapped data object. They describe a JavaScript data shape rather than shell execution.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:89:ruby-shell-backtick-execution","reason":"The table describes stackedArea rows with date, name, and value fields. The backticks are Markdown code spans.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:90:ruby-shell-backtick-execution","reason":"This row documents scatterPlot data keys for numeric variables. There is no Ruby code or shell command.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:91:ruby-shell-backtick-execution","reason":"Inline code describes heatmap day, hour, and value fields. These are chart coordinates, not operating system queries or commands.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:92:ruby-shell-backtick-execution","reason":"The row documents sparkline data using date and value. Backticks are formatting for API names and object fields.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:93:ruby-shell-backtick-execution","reason":"The row documents the bullet chart object with ranges, measures, and markers. It contains no command substitution.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:94:ruby-shell-backtick-execution","reason":"The table describes brush data and null values for gaps. These inline code spans do not execute commands.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:95:ruby-shell-backtick-execution","reason":"The line documents legend identifiers, names, and optional quantities. Markdown formatting is the only use of backticks.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:97:ruby-shell-backtick-execution","reason":"The backticks format a fixed ISO timestamp and line chart series fields. No shell interpreter or dynamic execution appears.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:101:ruby-shell-backtick-execution","reason":"The prose introduces the miniTooltip preset and the following JavaScript example. Its inline formatting and code fence are not shell execution.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:103:ruby-shell-backtick-execution","reason":"The fenced JavaScript connects chart mouse events to tooltip methods and a DOM selection. It invokes no shell or external process.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:116:ruby-shell-backtick-execution","reason":"The backticks close the tooltip example and precede a chart reference table. They are Markdown delimiters.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:120:ruby-shell-backtick-execution","reason":"This table row identifies the line tooltip and its DOM attachment selector. Inline code does not execute a shell.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:121:ruby-shell-backtick-execution","reason":"The row documents stackedArea tooltip placement and a topicLabel setting. Backticks format JavaScript API references only.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:122:ruby-shell-backtick-execution","reason":"The row documents stackedBar tooltip labels and its attachment selector. No command execution mechanism is present.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:123:ruby-shell-backtick-execution","reason":"Inline code describes groupedBar tooltip label configuration. It is ordinary Markdown API documentation.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:124:ruby-shell-backtick-execution","reason":"The row lists chart names, the miniTooltip preset, and a DOM selector. None is evaluated as shell syntax.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:125:ruby-shell-backtick-execution","reason":"The row documents scatterPlot tooltip field mappings for x and y. Markdown backticks do not invoke a process.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:127:ruby-shell-backtick-execution","reason":"Inline JavaScript describes chart event arguments and a tooltip title callback. These functions operate on chart data without shell execution.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:131:ruby-shell-backtick-execution","reason":"The JSX fence contains a React chart composed with Tooltip and ResponsiveContainer. Markdown fence characters are not executable commands.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:144:ruby-shell-backtick-execution","reason":"The match closes a React example and reaches prose about chart props. The backticks are documentation formatting.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:146:ruby-shell-backtick-execution","reason":"The inline code documents required data props, loading values, and a local React reference. It contains no shell command.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:150:ruby-shell-backtick-execution","reason":"Inline code describes wrapper lifecycle methods and a declarative chart specification. Backticks delimit examples rather than execute shell commands.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:156:ruby-shell-backtick-execution","reason":"The checklist names removed v2 APIs and the chart reference file. These are Markdown labels, not executable expressions.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:160:ruby-shell-backtick-execution","reason":"Backticks format an official chart API URL template and example page names. No shell or Ruby execution occurs.","verdict":"false_positive","confidence":1},{"id":"network:SKILL.md:41:hardcoded-url","reason":"The URL loads the chart stylesheet from jsDelivr for the documented browser setup. It does not specify an upload or transmit application secrets.","verdict":"false_positive","confidence":0.98},{"id":"network:SKILL.md:42:hardcoded-url","reason":"The URL loads the expected d3-selection browser dependency from jsDelivr. This documented library request is not an exfiltration endpoint.","verdict":"false_positive","confidence":0.97},{"id":"network:SKILL.md:43:hardcoded-url","reason":"The URL loads the Britecharts browser bundle from jsDelivr as part of a chart example. No secret-bearing request is shown.","verdict":"false_positive","confidence":0.97},{"id":"network:SKILL.md:150:hardcoded-url","reason":"The URL identifies an official chart JSON Schema inside a declarative specification. It is a validation reference, not a data collection endpoint.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:160:hardcoded-url","reason":"The URLs point to public Britecharts documentation and chart API pages. The text requests reference material without instructing transmission of user data.","verdict":"false_positive","confidence":0.99},{"id":"blocker:SKILL.md:97:system-reconnaissance","reason":"The line explains ISO date strings and numeric chart series identifiers. It neither reads system information nor directs host reconnaissance.","verdict":"false_positive","confidence":1}],"semantic_findings":[],"subject_marketplace_commit_sha":"a3d9b7281cbaeaa47c49a2fe4e4d75f5c320e884","subject_content_hash":"f41178f3ae01d5afdc6f25d072ec68e2e75e5338087a76614ae9f3c75f0beade","subject_tree_hash":"f9ae63483d6bf0159f36c04344d4bf691535697e8595c6f803fdd028273dc850","subject_plugin_path":"skills/britecharts/britecharts","audit_payload_hash":"cc5f31bb7faff572aa0542f618373ae4","confirmed_risk_level":"safe","scanner_version":"3.0.0","policy_version":"skillstore-security-audit-policy-v1","subject":{"marketplaceCommitSha":"a3d9b7281cbaeaa47c49a2fe4e4d75f5c320e884","contentHash":"f41178f3ae01d5afdc6f25d072ec68e2e75e5338087a76614ae9f3c75f0beade","treeHash":"f9ae63483d6bf0159f36c04344d4bf691535697e8595c6f803fdd028273dc850","pluginPath":"skills/britecharts/britecharts","auditPayloadHash":"cc5f31bb7faff572aa0542f618373ae4"},"scannerVersion":"3.0.0","policyVersion":"skillstore-security-audit-policy-v1"},"auditTranslation":null,"localization":{"requestedLocale":"en","contentLocale":"en","availableLocales":["en"],"fallbackToEnglish":false},"attestation":{"availability":"issued","url":"/api/skills/britecharts-britecharts/audits/1/attestation","status":"active"},"trust":{"publicState":"public","auditState":"complete","auditCurrentness":null,"confirmedRiskLevel":"safe","confirmedFindingCount":0,"capabilityReviewCount":0,"needsReviewCount":0,"falsePositiveCount":0,"agentAutoInstallPolicy":"allowed","manualInstallPolicy":"allowed","artifactSignatureState":"available","attestationState":"active","verificationState":"not_verified"},"isLatest":true}}