Skip to content

Repository files navigation

Anu Framework

Version 12.2 · A 21-skill framework — 19 current pipeline skills plus 2 superseded-but-still-shipped ones — for agent-driven data construction, empirical research, and reproducible publication, designed so the outputs reproduce without agents.

The framework covers the full lifecycle, orchestrated by anu-build:

  • Researching source materials (mining quotes, methodology, footnotes)
  • Ingesting data into a registry-driven structure with full provenance
  • Extending historical series with modern API data under strict faithfulness rules
  • Producing machine-readable CSVs and human-readable Excel workbooks
  • Building self-contained replication packages
  • Visualizing results interactively
  • Auditing quality across 14 dimensions with two hard gates
  • Distributing through three sibling channels: GitHub repo (anu-publish), Google Drive package (anu-drive), audit-grade archive (anu-archive)
  • Orchestrating the whole pipeline with anu-build (9 stages, computed construction order, mandatory gates, multi-agent handoff cascade)

The framework is self-auditing: anu-doctor checks framework invariants across all skills, and CI runs those checks on every push and pull request. They pass, with no exemptions — see Current self-audit state.


The 19 current pipeline skills

See docs/SKILL_VERSION_MATRIX.md for the authoritative table, or docs/ANU_FRAMEWORK_OVERVIEW.md for the full architecture write-up.

Stage Skill What it does
1 anu-research Mine the Knowledge Base for every quote, footnote, methodology note
2 anu-adequacy Post-research readiness gate
3 anu-ingestion Build series_registry.json, decompose series, write DPRs
4 anu-extension Faithful data extension methodology (EPRs)
5 anu-scaffold Generate L01/P02/V03 stubs from registry
5 anu-replicator Self-contained L##/P##/V##/M## reproduction package
6a anu-chopped Machine-readable CSV format
6b anu-extenbook Human-readable Excel workbook (4 sheets)
7 anu-visualize Interactive Plotly Dash / R Shiny app
8a anu-publish GitHub replication channel + web export contract
8b anu-drive Google Drive consumer package
8c anu-archive Audit-grade transparency archive
Float anu-review 14-dimension quality audit (D1–D12 weighted + D13/D14 gates)
Float anu-docs Per-series documentation (T1/T2/T3 tiers) + the Anu Explainer
Float anu-variant Methodology variant tracking
Infra anu-ledger Artifact inventory
Infra anu-architecture 8-phase econometric research scaffold (also available standalone on GitHub)
Infra anu-doctor Framework + project self-audit
Orch anu-build Orchestrator — plans, tracks and gates a 9-stage build + documentation cascade (it does not execute stage work; agents do)

Superseded (2, still shipped in full): anu-pipeline and anu-rebuild were merged into anu-build in v12.0. They are not redirect stubs — both still ship complete instructions, seven templates between them, and anu-doctor holds all 21 skills to the same 11-section template. They are kept because reducing them to stubs would delete the most detailed pipeline-stage tables and the only end-to-end rebuild runbook the framework has, and anu-build restates neither. Each now opens with a superseded banner pointing at anu-build, and anu-ledger no longer declares requires: anu-pipeline. Prefer anu-build. Recorded in docs/SKILL_VERSION_MATRIX.md.


Core principles

  1. No synthetic data. Every value traces to a real source. If unavailable, the series is data_unavailable — never filled. np.random in a data construction script is always wrong.
  2. No proxies without justification. CPI is not PPI. Earnings is not compensation. Concept substitutions are documented in the registry with "proxy": true and a written justification.
  3. No lazy splices on derived quantities. If the original used a formula, the extension must compute the same formula with new component data — not growth-rate splice the result.
  4. Reproducibility without agents. A researcher clones the package, sets API keys, runs python replicate.py, gets validated output with full SHA-256 audit trail.
  5. Audit trail everywhere. Every transformation, parameter choice, and model run is logged in structured JSON. Manual adjustments require a five-field audit manifest.

Full statement: docs/ANU_FRAMEWORK_OVERVIEW.md.


Reference implementation

The Shaikh & Tonak (1994) replication built the framework: 64 series, 100% PASS, three distribution channels, 21 commits. The 12 friction points surfaced during that build drove the v11.0 absorption.

A minimal worked example ships at examples/mini-replication/.


Installing

The two self-audit checkers are stdlib-only and need nothing. The packaging and variant generators need six third-party packages:

python -m pip install -r requirements.txt

Lower bounds only — nothing is pinned. See requirements.txt for which script needs which package.


API keys — bring your own

The framework ships no keys and reads none from any tracked file. Provide your own via the environment; copy .env.example to .env (git-ignored) or export them in your shell.

Variable What for Where to get it
FRED_API_KEY ALFRED/FRED vintage downloads in anu-variant (vintage_downloader.py, which also accepts --api-key and warns-and-continues if unset) Free, instant: https://fred.stlouisfed.org/docs/api/api_key.html
ANU_SCRUB_PATTERNS Optional. Path to your private scrub deny-list overlay for anu-publish/audit.py You write it — see skills/anu-publish/scrub_patterns.json

No other key is read by any shipped script. If a project's L## loader needs a BEA or BLS key, that key belongs to the project, not to the framework.


Using the framework

The skills are designed to be invoked by an AI agent (Claude Code, Cursor, GLM, etc.) via slash commands or direct skill invocation. Each SKILL.md declares its frontmatter (name, version, requires, argument-hint) and prescribes its sub-commands.

For human use:

  1. Read docs/GETTING_STARTED.md.
  2. Set up a project with anu-architecture (or, for the standalone version, clone github.com/andenick/anu-architecture and pip install -e . — it is not on PyPI).
  3. Use anu-researchanu-adequacyanu-ingestionanu-extensionanu-replicator to construct data.
  4. Use anu-review to audit quality.
  5. Use anu-publish / anu-drive / anu-archive to distribute.

Self-audit

python tools/check_framework.py      # framework invariants (D01-D19)
python tools/audit_publish.py --strict   # pre-publication scrub audit
python skills/anu-publish/audit.py --self-test   # prove the scrub gate is armed
python tools/generate_skill_graph.py --check     # prove the skill graph matches frontmatter

The D##-checks verify version consistency across the matrix/overview/frontmatter triangle, requires-graph acyclicity, headline-version match, evolution-log presence, canonical-doc existence, stage-map coherence, and stale-version-string detection. CI runs the first two on every push and pull request.

Current self-audit state

tools/check_framework.py exits 0 on main: 0 failures, 0 warnings, across all 19 checks and all 21 skills. There are no exemptions — nothing is skipped, ignored or excluded to reach that result. What closed the last of it, in July 2026:

Check Was Now
D16 15 skills missing v12.0 template sections Sections written for all 15 — real documentation work, summarizing what each SKILL.md already specified. Where a section genuinely did not apply, it says so and why, rather than being padded.
D17 docs/schemas/skill_graph.json not in this repository Shipped, and generated from the requires: frontmatter by tools/generate_skill_graph.py (--check fails if it drifts). Nothing in it is authored by hand.
D18 docs/schemas/anu_build_manifest.schema.json not in this repository Shipped. It describes the manifest anu-build init actually writes, and a generated manifest validates against it.
D19 Same missing Stage Position sections as D16 Every skill carries a stage tag agreeing with anu-build's canonical stage table.
D10 (false negative) The check resolved script claims against the skill root only, so scripts shipped under scripts/ read as missing. Fixed in anu-doctor v2.4.

tools/audit_publish.py --strict reports clean, and it is clean because there is nothing left to find, not because anything is exempted:

  • This repository ships no .publish_ignore. It previously shipped one that exempted eleven files — including every file that carried a leak. It was deleted, not shortened.
  • The only exemption in force is the structural one audit.py hard-codes for itself and its own deny-list, which necessarily contain matching patterns (see docs/GATE_DESIGN.md §6(b)).
  • python skills/anu-publish/audit.py --self-test proves the deny-list is still armed: 5 patterns, 5 positive and 4 negative fixtures. A gate that cannot fail is not a gate (§6(c)).

If a future change makes a check fail and the finding will not be fixed, the rule is an exemption recorded per docs/GATE_DESIGN.md §6(a) — a committed line carrying a reason, an owner and a review-by date, arguable in the diff. Never a silent skip. A gate carrying standing failures teaches people to ignore it; so does a green one that was bought by exclusion.

Standalone components

  • anu-architecture is also available as a standalone repo: github.com/andenick/anu-architecture. git clone it and pip install -e . to get the anu-architecture CLI without adopting the full framework. (Not currently on PyPI.)

License

MIT. See LICENSE.


Citing

If you use the framework in academic work:

@software{anu_framework_2026,
  title  = {Anu Framework: agent-driven data construction and reproducible
            publication},
  author = {Anu Framework contributors},
  year   = {2026},
  url    = {https://github.com/andenick/anu-framework},
  version = {12.2.0}
}

About

A skill-based framework for agent-driven data construction, empirical research, and reproducible publication. Anu v12.2 (19 current skills + 2 superseded).

Topics

Resources

Code of conduct

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages