Agent skill

Detective

by QinghongLin in QinghongLin/data2story-skill

Research external context for a dataset — domain background, history, related studies, and why this data matters.

MITAuto-check: notesFrontend & Design

Install Detective

skills CLI
$ npx skills add QinghongLin/data2story-skill --skill detective -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install QinghongLin/data2story-skill detective --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/QinghongLin/data2story-skill.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/data2story/detective .claude/skills/detective && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
detective
GitHub stars
155
Token cost
~2.4k tokens
SKILL.md length
1,177 words
Files
11 (incl. scripts, references)
Skills in repo
31
Repo updated
First seen
Licence
MIT

At a glance

Research external context for a dataset — domain background, history, related studies, and why this data matters.

  • Works in 5 steps: Identify the Domain → Research Background → Identify Interpretive Hooks → …
  • Frontend & Design work in your project
  • SKILL.md covers Setup, Steps, Output and Scientific Paper Mode
  • Runs Python scripts from its folder; calls python3

What it does

Detective is an agent skill from QinghongLin/data2story-skill. Research external context for a dataset — domain background, history, related studies, and why this data matters. Outputs detective.json (structured findings with detxx IDs) before any analysis begins.

Its SKILL.md is about 2.4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 12 other files, including scripts and reference files (for example `references/categories.json`, `references/field_rules.json` and `references/instance_verification.json`).

It sits in Frontend & Design. The repository describes itself as: Data Journalist Agent: Transforming Data into Verifiable Multimodal Story. The licence is MIT.

When your agent uses it

  • Frontend & Design work in your project

Example prompts

  • “/detective”

Requirements

  • Python 3
  • Pre-approved tools (allowed-tools): Bash(*), Read, Write, Glob, Grep, WebSearch, WebFetch

Workflow steps

5 steps, taken from the step headings in SKILL.md.

  1. Identify the Domain
  2. Research Background
  3. Identify Interpretive Hooks
  4. Collect Reference Media (a default step for visual/geographic/event/sports datasets)
  5. Scope for the Analyst

What it can do on your machine

Read from SKILL.md and the folder at commit 63a55c1. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Bash(*)
    • Read
    • Write
    • Glob
    • Grep
    • WebSearch
    • WebFetch

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 5 files in scripts/ (Python), which the agent can run.

    Shell commands in SKILL.md call:

    • python3

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Detective loads about 2.4k tokens when it runs, and up to ~5.7k if it reads all its reference files. Until then it costs about 53 tokens; SKILL.md has 1,177 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~53
When it runs · the whole SKILL.md, loaded when a task matches
~2.4k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~5.7k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NotePre-approves every shell command (allowed-tools: Bash)SKILL.md
    allowed-tools: Bash(*), Read, Write, Glob, Grep, WebSearch, WebFetch

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from QinghongLin/data2story-skill at commit 63a55c1, republished under its MIT licence (© QinghongLin). 1,177 words, ~2,353 tokens.

Download SKILL.mdSave it as .claude/skills/detective/SKILL.md (or your agent's skills folder). This skill also uses 10 other files; get the full folder from GitHub.
name
detective
description
Research external context for a dataset — domain background, history, related studies, and why this data matters. Outputs detective.json (structured findings with det_xx IDs) before any analysis begins.
allowed-tools
Bash(*), Read, Write, Glob, Grep, WebSearch, WebFetch
argument-hint
[DATA_DIR] [PROJECT_DIR]

Detective

Your job is context. Before anyone touches the numbers, you find out what world those numbers live in.

You are not analyzing the data. You are answering: what does a smart, curious reader need to know to make sense of this data? What happened in the real world that explains what's in this dataset?

Setup

  • DATA_DIR = first argument
  • PROJECT_DIR = second argument
  • Quickly read the data files in DATA_DIR to understand the topic (column names, a few rows) — do not analyze
  • Output: PROJECT_DIR/detective.json

Steps

1. Identify the Domain

From a quick scan of the data, determine:

  • What subject area is this? (psychology, sports, ecology, economics, etc.)
  • Who collected this data and why?
  • What real-world phenomenon is being measured?
2. Research Background

Search for external context relevant to this dataset. Look for:

  • Origin: Who created this data, when, and for what purpose? Link to the original study or source.
  • Domain knowledge: What does the field already know about this topic? What are the established findings?
  • Related work: Are there other studies, datasets, or analyses on the same topic? What did they find?
  • Why it matters: What is the real-world significance? Why would a general reader care?
  • Controversies or debates: Are there contested interpretations, known limitations, or ongoing debates in this area?
3. Identify Interpretive Hooks

Flag anything from your research that could:

  • Provide surprising context for what the data shows
  • Explain an anomaly the analyst might find
  • Connect the data to something readers already know about
  • Change how a finding should be interpreted
4. Collect Reference Media (a default step for visual/geographic/event/sports datasets)

Real-world media helps the Designer build a multimedia-rich page, so collecting it is a default part of your job, not optional, for visual, geographic, event-based, cultural, historical, product, animal, art, place, food, fashion, sports, and scientific datasets. Use the helper scripts in this skill's scripts/ folder — fetch_images.py, fetch_logos.py, fetch_flags.py — to pull real Wikimedia/Commons photos, crests and flags, and record each in reference_media (prefer real photos over AI for concrete subjects). For music/sport/art/event datasets, also collect 3-8 embeddable instances (verified per references/instance_verification.json). Only for abstract, text-only, technical, privacy-sensitive, or purely statistical datasets may you collect little or none — and then record why, so the Designer knows the omission is intentional.

While researching, actively hunt for real-world media:

  • Photos: relevant real-world images (Creative Commons, public domain, or press photos with source attribution)
  • Videos: YouTube clips, news footage, documentary segments — save the URL, not the file
  • Data visualizations: existing charts or infographics from other analyses of this topic
  • Maps / diagrams: geographic or structural visuals related to the domain
  • Logos / icons: if the data involves specific organizations, teams, or brands

For each useful piece of media found:

  • Download images to PROJECT_DIR/assets/ref_*.{png,jpg} (prefix with ref_ to distinguish from generated assets)
  • For videos: record the URL in the JSON (do not download large video files)
  • Note the source and license for each item

Media volume guidance:

  • Visual-heavy datasets (animals, insects, art, architecture, sports, food, fashion, nature, places, physical objects): strongly prefer 5-8 sample images from the data source itself or related sources.
  • Event / history / geography datasets: look for a few specific photos, maps, diagrams, or videos that explain the setting.
  • Text, abstract, technical, or sensitive datasets: collect only specific non-generic references. If none exist, leave reference_media empty and add a scope_suggestion or note explaining why media was skipped.

Quality over quantity: Every image should earn its place. Ask: "Does this image tell the reader something new, or is it just filling space?" Do not download generic stock-photo-style images just to hit a count. One striking, relevant photo is worth more than five bland ones.

Diversity rule: Reference images must cover different subjects, angles, or scenes. Never download multiple images of the same thing. If the data covers multiple people — show different people. Multiple locations — show different places. Multiple time periods — show different eras. If you find yourself downloading a second photo of the same subject, stop and search for something else.

Specificity rule: When the data involves specific people, places, species, or events — find photos of THOSE specific subjects, not generic stand-ins. Presidents → photos of those presidents in action. Animal species → photos of those species. Cities → photos of those cities. Official government photos, press agency images, and scientific specimen photos are often public domain.

How to find images:

  • Search for Creative Commons images on Wikimedia Commons, Flickr (CC-licensed), Unsplash
  • Check if the dataset source provides sample images or thumbnails
  • Use WebSearch with site:commons.wikimedia.org or site:unsplash.com for topic-specific photos
  • For scientific datasets: check the paper's figures, supplementary materials, or the project website
  • Reusable Wikimedia/Commons fetch helpers live in this skill's scripts/ folder — fetch_images.py, fetch_logos.py, fetch_flags.py, fetch_hle_images.py, fetch_venue_weather.py (run with python3 SKILL_DIR/scripts/<script>.py, where SKILL_DIR is this skill's directory)

This is not about generating visuals — that is the Designer's job. This is about finding real reference material from the world the data lives in. If you find zero useful media, note why in detective.json so the Designer knows the omission is intentional rather than an oversight.

Show full SKILL.md (356 more words)Show less
Embeddable instances

Beyond contextual reference_media, collect concrete embeddable examples (a song to play, a specific artwork photo, an audio demo) into the instances array when the dataset has rich individual examples (music, art, food, sports) — 3-8 of them. Skip for abstract/statistical datasets.

Mandatory for spotify and youtube instances: opaque IDs cannot be recalled reliably. Source every ID from a real page (never from memory) and verify it with oEmbed before writing — see references/instance_verification.json for the exact 4-step workflow and the curl commands. Never write an unverified embed.

5. Scope for the Analyst

Based on your research, suggest:

  • Which dimensions of the data are most worth analyzing deeply
  • Which comparisons have external benchmarks (e.g. "the average X is Y according to Z")
  • What caveats or confounds the analyst should watch for

Output

Write PROJECT_DIR/detective.json incrementally — do not wait until the end.

  1. After identifying the domain (Step 1), initialize detective.json with meta and empty containers:
    json
    {"meta": {"role": "detective", "version": "2.0"}, "items": {}, "reference_media": []}
  2. After researching each source/topic, immediately append the new item(s) by reading the current file, adding the item, and writing it back.
  3. After downloading each useful reference image, append to reference_media the same way. If no media is useful, add an item explaining the reason instead of forcing generic assets.

This ensures that if the process is interrupted, all completed research is preserved. Every item is saved as soon as it is ready — do not batch them.

References:

Scientific Paper Mode

When DATA_DIR contains paper.pdf and metadata.json, activate academic investigation: paper positioning, task-demo extraction, venue & review context, impact assessment, and review/audit deep-dives. The full steps, the task_demo.json schema, the paper_previews.json schema, and which detective categories each addition maps to are in references/paper_mode.json.

Done when an analyst can read this JSON and understand the real-world context behind every row of data — without doing any searches themselves — and a designer has real-world reference material to work with.

© QinghongLin, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 10 other files (scripts, references) in skills/data2story/detective of QinghongLin/data2story-skill.

  • SKILL.md
  • references/categories.json
  • references/field_rules.json
  • references/instance_verification.json
  • references/paper_mode.json
  • references/schema.json
  • scripts/fetch_flags.py
  • scripts/fetch_hle_images.py
  • scripts/fetch_images.py
  • scripts/fetch_logos.py
  • scripts/fetch_venue_weather.py

Open the folder on GitHubat commit 63a55c1

Compare with similar skills

Detective next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Detective compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Detective this skillQinghongLin/data2story-skill155—~2.4kAutomated safety check: NotesMIT
Web Artifacts Builderanthropics/skills180k40 repos~769Automated safety check: PassApache-2.0
React Doctormakeplane/plane61k12 repos~657Automated safety check: PassAGPL-3.0
Impeccablebestofjs/bestofjs3.1k26 repos~2.6kAutomated safety check: PassMIT
Figma Design System Builderwarpdotdev/warp65k2 repos~4.4kAutomated safety check: PassAGPL-3.0
Web Interface Guidelines Reviewervercel-labs/openreview1.7k97 repos~308Automated safety check: PassNone

Similar skills

  • Web Artifacts Builder

    anthropics/skills

    Official

    Builds multi-component claude.ai HTML artifacts as a small React, TypeScript and Tailwind project, then bundles it into one shareable HTML file.

    180k GitHub starsUsed in 40 repos~769 tokens
    Frontend & DesignAuto-check passed
  • React Doctor

    makeplane/plane

    Scans React code for lint, accessibility, bundle size and architecture issues, reports a health score and checks that changes do not lower it.

    61k GitHub starsUsed in 12 repos~657 tokens
    Frontend & DesignAuto-check passed
  • Impeccable

    bestofjs/bestofjs

    A skill your agent uses when the user wants to design, redesign, shape, critique, audit, polish, clarify, distill, harden, optimize, adapt, animate, colorize, extract, or otherwise improve a…

    3.1k GitHub starsUsed in 26 repos~2.6k tokens
    Frontend & DesignAuto-check passed
  • Builds or updates a design system in Figma from a codebase in ordered phases: discovery, variables and tokens, components, theming and documentation, with checkpoints.

    65k GitHub starsUsed in 2 repos~4.4k tokens
    Frontend & DesignAuto-check passed
  • Web Interface Guidelines Reviewer

    vercel-labs/openreview

    Official

    Review UI code for Web Interface Guidelines compliance. Use when asked to "review my UI", "check accessibility", "audit design", "review UX", or "check my…

    1.7k GitHub starsUsed in 97 repos~308 tokens
    Frontend & DesignAuto-check passed
  • Tailwindcss Development

    anonaddy/anonaddy

    Always invoke when the user's message includes 'tailwind' in any form.

    4.9k GitHub starsUsed in 10 repos~865 tokens
    Frontend & DesignAuto-check passed

More from QinghongLin/data2story-skill

All 31 skills in this repo
  • Inspector

    QinghongLin/data2story-skill

    Run sentence-level traceability verification on a Data2Story blog (verify.py - verifier.json), then emit the in-page Inspector panel (the reader-facing runnable verifier) + the verify/ artifacts…

    155 GitHub stars~3.1k tokensUpdated 3 mo ago
    Auto-check: notes
  • Auditor

    QinghongLin/data2story-skill

    Audit a generated Data2Story blog for build correctness across ALL modalities by ACTUALLY RENDERING it in a real headless browser (when available) — catching blank/0-width charts, broken/oversized…

    155 GitHub stars~6.4k tokensUpdated 3 mo ago
    Auto-check: notes
  • Critic

    QinghongLin/data2story-skill

    Review a finished Data2Story blog against the 5 quality rubric dimensions (visualdesign, narrativepacing, datamethodtransparency, claimdataalignment, insightvalue), score each 1-7 with on-page…

    155 GitHub stars~4.7k tokensUpdated 3 mo ago
    Auto-check: notes
  • Inspector

    QinghongLin/data2story-skill

    Run sentence-level traceability verification on a blog, then generate viewer.html with interactive evidence panel.

    155 GitHub stars~697 tokensUpdated 3 mo ago
    Auto-check: notes
  • Data2story Pro

    QinghongLin/data2story-skill

    A skill your agent uses to turn a dataset into a verifiable multimedia blog (a data story / data-driven article / interactive dashboard from a dataset).

    155 GitHub stars~14k tokensUpdated 3 mo ago
    Auto-check: notes
  • Openrouter Embeddings

    QinghongLin/data2story-skill

    Generate text embeddings via OpenRouter using Qwen3-Embedding-8B.

    155 GitHub stars~499 tokensUpdated 3 mo ago
    Auto-check passed

Questions about Detective

What does Detective do?

Research external context for a dataset — domain background, history, related studies, and why this data matters. Detective is an agent skill from QinghongLin/data2story-skill. Research external context for a dataset — domain background, history, related studies, and why this data matters.

When should I use Detective?

Detective fits situations like: frontend & Design work in your project.

How do I install Detective in Claude Code?

Run `npx skills add QinghongLin/data2story-skill --skill detective -a claude-code`. Or copy the skill folder (skills/data2story/detective in QinghongLin/data2story-skill) into .claude/skills/detective in your project. Claude Code loads it when a task matches its description.

How do I install Detective in Codex?

Run `npx skills add QinghongLin/data2story-skill --skill detective -a codex`. Or copy the skill folder (skills/data2story/detective in QinghongLin/data2story-skill) into .agents/skills/detective in your project. Codex loads it when a task matches its description.

Can I use Detective in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add QinghongLin/data2story-skill --skill detective -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/detective, .gemini/skills/detective, .github/skills/detective and .opencode/skills/detective in your project.

What does Detective need to run?

Going by SKILL.md and its folder, Detective needs Python for the scripts in its folder and the command-line tools its instructions call (python3). Our summary lists: Python 3. Its frontmatter pre-approves these tools: Bash(*), Read, Write, Glob, Grep, WebSearch, WebFetch.

Does Detective access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Detective safe to install?

Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Detective use?

Detective is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Detective use?

About 2.4k tokens (SKILL.md is roughly 9.4k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 3.3k tokens, read only when the agent opens those files.

What are the alternatives to Detective?

Skills that share tags, products or a category with Detective: Web Artifacts Builder (anthropics/skills, 180k stars), React Doctor (makeplane/plane, 61k stars), Impeccable (bestofjs/bestofjs, 3.1k stars) and Figma Design System Builder (warpdotdev/warp, 65k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Detective?

QinghongLin (a GitHub user) maintains it in QinghongLin/data2story-skill, which has 155 GitHub stars. The repository holds 31 skills in this directory. The repository was last updated on July 5, 2026.

Source: QinghongLin/data2story-skill on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.