Embedded validation library + lineage for the insight-blueprint hypothesis-driven EDA skills plugin
Project description
insight-blueprint
A Claude Code skills plugin for hypothesis-driven EDA. Analysis designs, journals,
reviews, and the data catalog live as YAML under .insight/; skills read and write them
directly. Integrity is enforced by an embedded validation library (validate.py) plus
a pre-write hook — no server, no daemon, no SQLite. See
docs/ARCHITECTURE.md and docs/PRD.md.
Quickstart
Prerequisites: Claude Code, uv,
and Python 3.11+. The skills shell out to uv run …, which resolves the Python dependencies
automatically — there is nothing to pip install.
- Install the plugin. In Claude Code, register this repo as a marketplace and install:
/plugin marketplace add etoyama/insight-blueprint-skills /plugin install insight-blueprint@insight-blueprint-marketplace - Open your analysis project in Claude Code and take the first step:
/analysis-framing # explore your data & frame a direction /analysis-design # turn it into a hypothesis design document /analysis-journal # record reasoning as you investigate /analysis-reflection # conclude (or branch) the hypothesis /knowledge-extract # save reusable, source-scoped knowledge
There is nothing to launch — skills read and write YAML under .insight/ in your project
(created on first use). Writes to design documents are validated automatically by a pre-write hook.
Installation
Claude Code plugin (recommended)
In Claude Code, add this repository as a plugin marketplace and install from it:
/plugin marketplace add etoyama/insight-blueprint-skills
/plugin install insight-blueprint@insight-blueprint-marketplace
Here insight-blueprint is the plugin name and insight-blueprint-marketplace is the
marketplace defined in .claude-plugin/marketplace.json.
Local clone (for development)
git clone https://github.com/etoyama/insight-blueprint-skills.git
claude --plugin-dir ./insight-blueprint-skills
--plugin-dir loads the plugin for the current session only. Add a shell alias to make it stick:
alias claude-ib='claude --plugin-dir /path/to/insight-blueprint-skills'
Optional: Python package (only for hand-written lineage)
You do not need to install anything for the skills to work. The plugin is
self-contained: its bundled uv environment provides insight_blueprint (models,
validation, lineage) and /analysis-notebook runs marimo/pandas through that same
environment (--extra notebook). See ADR-0006.
Install the insight-blueprint-lineage package only if you want to import
tracked_pipe directly in your own notebooks/scripts (i.e. lineage tracking outside
/analysis-notebook). The import name stays insight_blueprint:
uv add insight-blueprint-lineage
See CHANGELOG.md for release notes.
How it works
- Skills (
skills/) drive the workflow and read/write.insight/YAML via small server-free helpers (skills/_shared/design_io.py,catalog_io.py). - Validation is centralized in
src/insight_blueprint/validate.py(Pydantic schema + state-transition guard). A pre-write hook (hooks/validate-design.py, shipped with the plugin viahooks/hooks.json) calls the same library to block invalid writes to*_hypothesis.yaml. - Lineage (
src/insight_blueprint/lineage/) records DataFrame transformations and exports Mermaid diagrams.
Skills
/rq-problematization— Generate impactful research questions by problematizing prior-research assumptions (upstream of framing)/analysis-framing— Explore available data and existing analyses to frame a direction/analysis-design— Guided creation of hypothesis design documents/analysis-review— Produce a structured review of a design and record it as a review batch/analysis-notebook— Generate a marimo notebook from the design's methodology, run it, and record results to the journal/analysis-journal— Record reasoning steps during analysis (observations, evidence, decisions, questions)/analysis-reflection— Structured reflection to draw conclusions or branch hypotheses/analysis-revision— Guided revision workflow for addressing review comments/catalog-register— Step-by-step data source registration/knowledge-extract— Extract reusable, source-scoped domain knowledge from a concluded analysis/data-lineage— Track data transformations and export lineage diagrams (Mermaid)/premortem— Report-only pre-flight cost/risk evaluation of designs before expensive data access/analysis-auto— Guided autopilot: drives the pipeline, pausing only at genuine decisions
Skills support both English and Japanese trigger phrases.
Analysis Workflow
/rq-problematization (problematize assumptions → research questions) ← optional upstream
↓ (RQ Brief)
/analysis-framing (explore data, frame direction)
↓
/analysis-design (create hypothesis)
↓ ↘ /analysis-review (review the design) → /analysis-revision (address comments)
↓ ↘ /premortem (optional: cost/risk report before expensive data access)
/analysis-notebook (generate & run a marimo notebook from the methodology → record results)
↓ ↘ /data-lineage (optional: track transformations, export Mermaid)
/analysis-journal (record reasoning during analysis)
↓
/analysis-reflection (reflect → conclude or branch)
↓ ↗ back to /analysis-framing (new direction needed)
/knowledge-extract (save reusable, source-scoped knowledge)
Skills are invoked explicitly (/command) by default and the flow is interactive. The
actual analysis is run by /analysis-notebook, which generates a marimo notebook from the
design's methodology, executes it, and records the results to the journal
(uv add "insight-blueprint-lineage[notebook]" for the runtime deps).
Guided autopilot. /analysis-auto drives the whole pipeline for you — auto-advancing the
low-friction steps and pausing only at genuine decisions: confirming the hypothesis,
registering a data source, a HARD_BLOCK/HIGH premortem, a notebook that would need
out-of-allowlist packages or external communication beyond the declared source, and the
conclusion. It is opt-in and still interactive — not an unattended pipeline. The individual
skills stay explicit everywhere else. See
ADR-0005.
/catalog-register sits upstream (register a data source before you frame against it);
/knowledge-extract sits downstream (harvest what a concluded analysis taught you about that source).
Each design has an analysis_intent field (exploratory, confirmatory, or mixed).
The Insight Journal (.insight/designs/{id}_journal.yaml) tracks your reasoning with event
types mapped to the Narrative Scaffolding framework (Huang+ IUI 2026).
Designs, status & review
There is no web UI — everything is skill-driven over .insight/ YAML:
- Status transitions are performed by the skills, not by hand.
/analysis-reflectionproposes the terminal transition (e.g.analyzing → supported) and runs it viadesign_io transition; the pre-write hook enforces the allowed transitions. - Review is a producer/consumer pair (no dashboard):
/analysis-reviewcritiques a design and records a review batch under.insight/designs/{id}_reviews.yaml(viadesign_io review-batch), setting the design torevision_requestedoranalyzing./analysis-revisionthen consumes arevision_requestedbatch, walking you through each comment — tracking per-comment progress in.insight/designs/{id}_revision.yaml— and re-submitting for review.
Capturing knowledge (/knowledge-extract)
When an analysis concludes, /knowledge-extract reads its journal/reflection/review and
proposes source-scoped knowledge entries (a caution, a definition, a methodology note),
which — after you confirm — are persisted to the catalog:
echo '{"entries": [
{"key": "pop-null-pre-2019", "title": "population null before 2019",
"content": "population is null before 2019; start time series at 2019.",
"category": "caution", "importance": "high", "affects_columns": ["population"]}
]}' | catalog_io add-knowledge --id <source_id>
category is an open string (conventional values: methodology / caution / definition /
context). Analytical conclusions stay in the reflection, not the catalog.
Pre-flight Risk Evaluation (/premortem)
/premortem evaluates designs for cost/risk before expensive data access and prints a risk
report (HARD_BLOCK / HIGH / MEDIUM / LOW / SKIP). It is report-only — it issues
no tokens and writes nothing; it advises. It exits non-zero when any design is
HARD_BLOCK/HIGH, so you can gate a script on it if you want.
Development
Requires Python 3.11+ and uv.
git clone https://github.com/etoyama/insight-blueprint-skills.git
cd insight-blueprint-skills
uv sync --all-extras
# Run lint + typecheck + test
uv run poe all
See CONTRIBUTING.md for setup, code style, and PRs. Contributor/architecture docs: CLAUDE.md, docs/ARCHITECTURE.md, docs/PRD.md.
Tech Stack
| Tool | Purpose |
|---|---|
| uv | Package management |
| ruff | Linting and formatting |
| ty | Type checking |
| pytest | Testing |
| marimo | Notebooks & lineage |
Support
If you find this project useful, consider buying me a coffee.
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file insight_blueprint_lineage-0.7.1.tar.gz.
File metadata
- Download URL: insight_blueprint_lineage-0.7.1.tar.gz
- Upload date:
- Size: 362.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
66c1159fb3cb998ecdbcc35a7df019c9ec1880dad9258953dee850248c587c87
|
|
| MD5 |
c445b0a317444f7fbc9835e682b92680
|
|
| BLAKE2b-256 |
58e606dd322e1379e1f7fd8a1ffb0592ad0d2d230b61233d433d8682ad96785b
|
Provenance
The following attestation bundles were made for insight_blueprint_lineage-0.7.1.tar.gz:
Publisher:
publish.yml on etoyama/insight-blueprint-skills
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
insight_blueprint_lineage-0.7.1.tar.gz -
Subject digest:
66c1159fb3cb998ecdbcc35a7df019c9ec1880dad9258953dee850248c587c87 - Sigstore transparency entry: 2063576315
- Sigstore integration time:
-
Permalink:
etoyama/insight-blueprint-skills@3d9ab423f208a0e98e739323853ea4a6b1425191 -
Branch / Tag:
refs/tags/v0.7.1 - Owner: https://github.com/etoyama
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@3d9ab423f208a0e98e739323853ea4a6b1425191 -
Trigger Event:
push
-
Statement type:
File details
Details for the file insight_blueprint_lineage-0.7.1-py3-none-any.whl.
File metadata
- Download URL: insight_blueprint_lineage-0.7.1-py3-none-any.whl
- Upload date:
- Size: 16.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5ee58d20f82847b75d18b38b80cfcd35fbc506619686bf765a7e3f7957cc2b05
|
|
| MD5 |
59c5d5b7037eebd704517b68f8abebe1
|
|
| BLAKE2b-256 |
2060d7e7badad93d905cce67e59a2a4edea6a0bdb9df3e4f8e96350cbc2de55e
|
Provenance
The following attestation bundles were made for insight_blueprint_lineage-0.7.1-py3-none-any.whl:
Publisher:
publish.yml on etoyama/insight-blueprint-skills
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
insight_blueprint_lineage-0.7.1-py3-none-any.whl -
Subject digest:
5ee58d20f82847b75d18b38b80cfcd35fbc506619686bf765a7e3f7957cc2b05 - Sigstore transparency entry: 2063576322
- Sigstore integration time:
-
Permalink:
etoyama/insight-blueprint-skills@3d9ab423f208a0e98e739323853ea4a6b1425191 -
Branch / Tag:
refs/tags/v0.7.1 - Owner: https://github.com/etoyama
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@3d9ab423f208a0e98e739323853ea4a6b1425191 -
Trigger Event:
push
-
Statement type: