tell-data-story — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited tell-data-story (Agent Skill) and scored it 96/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 1 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 1 flagged
The text {match} tells the agent to skip the normal "ask the user first" gate. Used adversarially it removes the human-in-the-loop check before destructive or sensitive actions, turning a normally-gated agent into a fire-and-forget executor.
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Turn raw data plus a goal into a one-page interactive story built from 2-3 narrative design patterns. The output is a single self-contained HTML file the user can open in a browser, send to a colleague, or paste into a CMS.
The user provides:
Optional $ARGUMENTS: a pattern name (compare, concretise) or pattern number (13, 08). Empty argument means auto-pick mode.
Copy this checklist into your response and tick boxes as you go:
- [ ] Step 1: Read the data and note its shape
- [ ] Step 2: Clarify takeaway, audience, format (skip questions already answered)
- [ ] Step 3: Confirm the goal back to the user before going further
- [ ] Step 4: Propose patterns (direct from $ARGUMENTS, or auto-pick 2-3) and get sign-off
- [ ] Step 5: Generate narrative-output.html from template.html
- [ ] Step 6: Report picks, rationale, and output pathpython3 -c "import pdfplumber, sys; print(pdfplumber.open(sys.argv[1]).pages[0].extract_text())" <path>. If pdfplumber is not installed or extraction fails, ask the user to paste the key rows.State the shape back in one sentence so the user can correct you before pattern selection.
If the user has not already said, ask up to three questions in a single message. Do not ask more than three. Skip any that are already answered:
Before picking patterns, mirror the brief back to the user in 2 to 4 short lines, then stop and wait for confirmation. Do not move on until they reply.
Use this shape:
Data: one line restating the shape (rows, dimension, range). Takeaway: the one-sentence message you'll build the story around. Audience and format: who it's for, where it lives.
>
Sound right, or want to adjust before I pick patterns?
If the user corrects anything, update your understanding and re-confirm only if the change is material (different takeaway, different audience). Small wording tweaks do not need a second round.
If `$ARGUMENTS` is non-empty (direct mode):
13-compare), the short name (compare), or the number (13).Otherwise (auto-pick mode), choose 2 to 3 patterns. Use these heuristics, then read patterns.md for the candidates' full why and how before finalising:
01-repetition, 02-silent-data, 13-compare08-concretise, 05-humans-behind-the-dots03-exploration, 04-users-find-themselves, 16-make-a-guess06-gradual-reveal, 07-speed-up-slow-down09-familiarisation, 15-defamiliarisation, 14-convention-breaking, 17-physical-metaphor18-call-to-action11-breaking-the-4th-wall, 12-addressing-the-audienceSelection rules:
categories (in patterns.md) align with the stated goal.01-repetition; two-entity comparisons favour 13-compare; sequential or time-series data favours 06-gradual-reveal; large counts of people or events favour 05-humans-behind-the-dots or 08-concretise.For each pick, write one sentence of rationale that names the user's specific data and goal, not a generic restatement of the pattern. Bad: "Use Compare to show the difference." Good: "Use Compare so the 3 % marketing spend sits next to the 47 % salary line at the same scale, and the gap becomes the chart."
Then present the proposal to the user as a short bulleted list (pattern name, one-sentence rationale each) and ask:
Happy with these, or want to swap one out? I'll generate the page once you say go.
Wait for a green light before Step 5. If they swap a pattern, update the list and re-confirm. If they say go, proceed.
{{TITLE}} — short headline derived from the user's takeaway.{{TAKEAWAY}} — the takeaway sentence verbatim.{{PATTERN_BLOCKS}} — one <section class="pattern-demo"> per selected pattern, in the order the story should be read. Each block contains:whytemplate.html, yellow .hl only as a background behind text, soft .demo-frame panels for chart areas.narrative-output.html in the current working directory. Overwrite if it exists.Critical: the demo must use the user's numbers, not the example data from the pattern's catalog entry. The catalog's example field is a reference to existing work, not data to copy.
In your final response, give the user:
./narrative-output.html).Keep the report short. The HTML is the deliverable.
Use these ids (or the bare number / short name) for $ARGUMENTS matching. Full why and how for each in patterns.md.
01-repetition — Repeat one motif across small multiples until the pattern feels inescapable.02-silent-data — Ghost a data point, then reveal it for shock.03-exploration — Let the reader filter and drill in.04-users-find-themselves — Reader locates their own dot in the population.05-humans-behind-the-dots — Hover a dot, meet the person.06-gradual-reveal — Layer complexity one beat at a time.07-speed-up-slow-down — Control playback tempo to spotlight dense moments.08-concretise — Translate abstract magnitude into a familiar physical equivalent.09-familiarisation — Re-label the chart around the reader's own reference point.10-rhetorical-question — Open with a question, deliver the answer in the chart.11-breaking-the-4th-wall — A subject inside the chart turns and addresses the reader.12-addressing-the-audience — Rewrite copy in the second person.13-compare — Two things at the same scale; the disparity is the chart.14-convention-breaking — Set up a chart convention, then break it.15-defamiliarisation — Re-draw something familiar strangely.16-make-a-guess — Reader draws their prediction; reveal the truth over it.17-physical-metaphor — Direction carries feeling: up is good, down is bad.18-call-to-action — End with one specific, low-friction next step.why, how, and a real-world example for each: patterns.mdtemplate.html stays in sync: design-system.html~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.