analyst
Skill0 starsChanged 4 months agoMITView on GitHub
Analyst sub-role of the data-narrative skill. Delegates exhaustive dataset profiling to the data-science skill, then emits analyst.json - a structured list of findings where every finding carries a pointer to the script and line that produced it. Loaded and invoked by the data-narrative orchestrator only.
16 other projects use a version of this.
Adopted by
Most recently taken up by
- hollandkevint/data-product-operatortheir own version, first seen Nov 8, 2026
- gybson63/1c-oData-skilltheir own version, first seen Nov 8, 2026
- eranw2000/multi-phase-skills-frameworktheir own version, first seen Oct 25, 2026
- langchain-ai/lca_dcodetheir own version, first seen Oct 25, 2026
- CMZN-Consulting/brainstorm-matrixtheir own version, first seen Oct 25, 2026
- BojanKocijan/design-forgetheir own version, first seen Oct 19, 2026
Other versions16 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 16
- QinghongLin/data2story-skill★ 155same name
- eranw2000/multi-phase-skills-framework★ 10same name
- sergeeey/Claude-cod-top-2026★ 9same name
- gybson63/1c-oData-skill★ 8same name
- hollandkevint/data-product-operator★ 5same name
- BojanKocijan/bk-charterline★ 4same name
- BojanKocijan/design-forge★ 4same name
- SilentDawnAndDarkCrow/claude-code-maestro★ 4same name
- mik2win/foureyes★ 2same name
- CMZN-Consulting/brainstorm-matrix★ 1same name
6 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository29 other files it gives its agents.
- architectSkill
- brainstormingSkill
- concise-planningSkill
- context-engineerSkill
- data-analystSkill
- data-deprecation-analysisSkill
- data-engineeringSkill
- detectiveSkill
- editorSkill
- inspectorSkill
- data-narrativeSkill
- data-scienceSkill
- excalidraw-diagramSkill
- genai-securitySkill
- guardianSkill
- holdout-validationSkill
- implementerSkill
- llm-app-patternsSkill
- llm-memSkill
- opsSkill
- prompt-librarySkill
- security-boundariesSkill
- story-masterSkill
- story-plannerSkill
- subagent-executionSkill
- systematic-debuggingSkill
- task-routingSkill
- thinkerSkill
- verification-before-completionSkill
The file
We split this skill into the rules it gives an agent
6 rules. 0 are common, 2 are distinctive, and 4 are very specific to this project.
0
Common
Most of the 12 edited versions we read keep these.
2
Distinctive
This author's own choices. Worth a look.
4
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 24
Completeness over selection: Run every analysis the dataset permits.
- Very specific: line 25
Code for every finding: Every finding in analyst.json must have a companion Python script in narrative-output/analyst/.
- Distinctive: line 28
Emit line references: After writing each script, record the exact line numbers where the key result variable is computed.
- Very specific: line 43
If the relationship field is absent or contains an unrecognised value, treat each file as independent and profile them separately.
- Very specific: line 89
Write narrative-output/analyst.json with this structure:
- Very specific: line 123
After writing analyst.json, summarise:
“Common” is measured: kept by at least 6 in 10 of the 12 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
data-narrative - Analyst Role
Version: 9.0 | Updated: 01-July-2026 | Architect: Karim Bhalwani |
The Analyst runs exhaustive analysis on the dataset and produces a structured findings manifest where every result is paired with the code that generated it. The goal is completeness: surface every pattern, trend, correlation, and anomaly the data can support - not just the obvious ones. The Editor selects which findings are worth narrating; the Analyst's job is to produce the full menu.
Behavioral Directives
- Load
data-scienceskill first. Follow its EDA Workflow as the authoritative sequence for profiling: shape, types, missingness, distributions, outliers, correlations, and class balance. The 7-step list in Step 1 below is a fallback reference only - use it if thedata-scienceskill is unavailable or does not specify a step for a given analysis type. Thedata-scienceskill is the authoritative reference for statistical testing, modeling, and experiment analysis. - Completeness over selection. Run every analysis the dataset permits. Do not pre-filter by what seems interesting - that is the Editor's job.
- Code for every finding. Every finding in
analyst.jsonmust have a companion Python script innarrative-output/analyst/. No finding should be computed mentally or approximated. - One script per finding group. Group related computations (e.g., all distribution stats for a column) into a single script. Do not split trivially related computations across multiple files.
- Scripts must be self-contained and reproducible. Each script reads the source dataset from a path argument or a well-known relative path (
data/, the dataset name passed in). It must run cleanly with standard libraries (pandas, numpy, scipy, matplotlib). - Emit line references. After writing each script, record the exact line numbers where the key result variable is computed. The Inspector depends on this.
Inputs
| Input | Description |
narrative-output/preflight.json | Pre-flight record - read this first to know the mode (single/multi), file list, relationship type, and join key |
narrative-output/detective.json | Context from the Detective - domain background and definitions |
Multi-file handling:
"relationship": "union"→ concatenate files into one DataFrame before profiling (pd.concat). Add asource_filecolumn so findings can trace back to the origin file if needed."relationship": "join"→ merge onjoin_keybefore profiling (pd.merge). Profile the joined result as the primary unit of analysis. Also profile individual files to support cross-file comparisons (e.g., "customers in region X have 2× higher order value") - these are the most valuable angle for the Editor. Ifjoin_keyis missing frompreflight.jsonor is not present in all files, halt the merge, report the specific error in the Step 4 summary (e.g., "join_key 'customer_id' not found in orders.csv"), and profile individual files independently as a fallback.- If the
relationshipfield is absent or contains an unrecognised value, treat each file as independent and profile them separately. Record a warning in the Step 4 summary describing the unrecognised value and the fallback taken.
Outputs
| File | Description |
narrative-output/analyst.json | Structured findings manifest (schema below) |
narrative-output/analyst/*.py | One Python script per finding group |
Workflow
Step 1: Understand the Dataset
Load narrative-output/detective.json to read domain context before touching the data. This prevents misinterpreting column names or units (e.g., knowing "revenue" is in thousands, not raw dollars). If narrative-output/detective.json is absent or cannot be parsed, proceed without domain context and record a warning in the Step 4 summary: "detective.json unavailable - column names and units interpreted at face value." Do not halt execution.
Then profile the dataset using the data-science EDA Workflow sequence:
- Shape and dtypes (
df.shape,df.dtypes, sample 10 rows) - Missing data (per-column null counts and %)
- Distributions (histograms for numerics, value counts for categoricals)
- Outliers (IQR or z-score on numerics)
- Correlations (pairwise for numerics; flag |r| > 0.7)
- Temporal patterns if a date column exists (trend, seasonality, anomalies)
- Group comparisons if categorical columns exist (means, proportions by group)
Step 2: Write Findings Scripts
For each analysis area in the EDA Workflow sequence (Steps 1–7), write a Python script to narrative-output/analyst/ regardless of whether the results appear interesting. Only omit a script if the analysis is structurally inapplicable to the dataset (e.g., no date column exists for temporal analysis). Name scripts descriptively:
distributions.py- column distributions and summary statscorrelations.py- correlation matrix and top pairstrend_<column>.py- time trend for a specific columngroup_compare_<col>.py- group comparison for a categorical breakdownoutliers.py- outlier detection results
Every script must:
- Accept dataset path via
argparseor read fromdata/by default - Print key results to stdout in a structured format (JSON or labeled text)
- Save any plots to
narrative-output/analyst/plots/as PNG files - Exit 0 on success
Step 3: Produce analyst.json
Write narrative-output/analyst.json with this structure:
{
"dataset": "<dataset path or name>",
"generated_at": "<ISO 8601 UTC>",
"findings": [
{
"finding_id": "finding-001",
"title": "Short descriptive title",
"description": "One or two sentences describing the finding in plain English",
"finding_type": "distribution|trend|correlation|outlier|group_comparison|anomaly|other",
"significance": "high|medium|low",
"result_value": "<the specific number, range, or conclusion>",
"code": {
"script": "narrative-output/analyst/distributions.py",
"line_start": 42,
"line_end": 51,
"result_variable": "top_category_share"
},
"plot": "narrative-output/analyst/plots/distributions.png"
}
]
}significance guidance:
- high: finding would likely anchor a paragraph in the final story (large effect, clear trend, striking anomaly)
- medium: supporting detail worth mentioning
- low: context or background, probably cut by the Editor
Step 4: Report to Orchestrator
After writing analyst.json, summarise:
- Total findings produced
- Count by significance level
- Any columns that yielded no interesting findings (so the Editor knows what to skip)
- Any data quality issues encountered (missing data patterns, suspect values)
Quality Bar
A finding qualifies for analyst.json only if:
- It is computed by code, not estimated mentally
- The result is specific (a number, a percentage, a named category) - not vague ("there is some variation")
- The companion script runs cleanly from the command line
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

