Versioned prompts, skills, agents, schemas, and repo-local component contracts for AI4RA research-administration workflows.
This repository is the prompt-library leg of the AI4RA evaluation triad:
AI4RA/prompt-library— prompts, skills, agents, schemas, and component contractsAI4RA/evaluation-data-sets— datasets, artifacts, and scoring referencesAI4RA/evaluation-harness— discovers components and datasets, runs evaluation campaigns, and publishes run artifactsui-insight/AI4RA-UDM— shared UDM foundation where applicable
A change in one leg often implies a change in the others. Human-facing docs in this repo should line up with the machine-readable catalog so harness consumers are not forced to infer contract scope from prose.
Browse the library: https://ai4ra.github.io/prompt-library/
Machine-readable discovery: component_catalog.json
For cross-repo work, start with TRIAD.md, triad.workspace.yaml, and AGENTS.md. Tools that prefer CLAUDE.md can use the mirrored guidance there. Default to this repository first, then open the sibling repos only when the task crosses a contract, validation, or observed-ref boundary.
Each component is a directory under components/ named by a short slug. A component represents a single task and may expose one or more manifestations:
prompt.md— the canonical, LLM-agnostic promptskill/SKILL.md— Claude Skill form when a skill manifestation existsagent/AGENT.md— agent/subagent manifestation when orchestration behavior is part of the contractschema.json— machine-readable contract for structured outputs when the component has oneREADME.md— human-readable overview, scope, provenance, and relationshipsCHANGELOG.md— per-component version historyevals/— golden cases and, where present, published run reports
Workflows are a Vandalizer-shaped manifestation layered on top of components. Every workflow lives at workflows/<wf-slug>/ regardless of whether it pins one component (a 1:1 repackaging) or several (a multi-component orchestration). Each workflow directory has an authored manifest.yaml (source of truth, pins component version(s) and describes steps) and a generated <wf-slug>.vandalizer.json (the uploadable export, with an x_ai4ra provenance block). See templates/new-workflow/ for the scaffold and docs/contracts.md for the workflow lifecycle rules.
Harness and automation consumers should start with these surfaces, in this order:
component_catalog.json— repo-level machine discovery surface for components, workflows, manifestations, contract scope, evaluation posture, related components, and observed upstream refs.components/<slug>/prompt.md— canonical prompt manifestation.components/<slug>/skill/SKILL.mdoragent/AGENT.md— runtime-specific manifestations when a caller needs them.components/<slug>/schema.json— authoritative structured-output contract when present.components/<slug>/evals/cases/*/metadata.yamlplusexpected.*— golden-case validation surface.workflows/<wf-slug>/manifest.yaml— authored Vandalizer-workflow source, pinning one or more components.workflows/<wf-slug>/<wf-slug>.vandalizer.json— the generated export, carrying anx_ai4raprovenance block (workflow source path, pinned component versions, embedded-prompt SHA256). Never hand-edited.
Important nuance: a component name that ends in -udm does not automatically mean the checked-in schema.json is the shared UDM contract from ui-insight/AI4RA-UDM. In this repo, many -udm components are repo-local extraction or routing contracts that align to shared UDM semantics without redefining the shared UDM itself. component_catalog.json records which contract scope applies per component.
Each component is versioned independently with semver. Manifestations within one component stay in lockstep.
- MAJOR — output contract break for downstream consumers
- MINOR — backward-compatible capability or contract addition
- PATCH — wording, clarity, or non-behavioral cleanup
Evaluation posture is tracked per component by validated_against_version in each eval case's metadata.yaml. The repo computes a component's last fully evaluated version as the minimum validated version across its cases.
That distinction matters:
stablemeans the contract is intended for downstream use and has validated reference coverage.stabledoes not mean every checked-in version has been fully revalidated against every case.- Consumers should pin commit SHA + component version and check the component's last fully evaluated version before treating a run as release-grade evidence.
- Copy
templates/new-component/intocomponents/<slug>/. - Fill in
README.md,prompt.md, andCHANGELOG.md. - If the component has structured output, add
schema.jsonand keep its version expectations aligned with the component's current version. - Add at least one eval case under
evals/cases/withmetadata.yamlandexpected.*. - Add the component's triad metadata to
component_catalog_overrides.yamland regeneratecomponent_catalog.json. - Register any new controlled vocabulary in
taxonomy.md. - Regenerate docs so the site and catalog stay aligned.
- Copy
templates/new-workflow/intoworkflows/<wf-slug>/. - Fill in
manifest.yaml— setworkflow_version, pin each referenced component at its currentprompt.mdversion, describe steps (withprompt_refpointing at the component's## Promptsection), and choose eval posture:inherits_from: <path>for a 1:1 repackaging, orworkflow_local: truefor any multi-step orchestration, parameterization, or prompt override. - Run
python3 scripts/build_vandalizer_workflows.pyto generate the sibling<wf-slug>.vandalizer.json; never hand-edit the generated JSON. - If the workflow has its own triad metadata (harness pairings, dataset coverage, specific harness notes), add an optional entry under the top-level
workflows:mapping incomponent_catalog_overrides.yaml. - Regenerate
component_catalog.jsonso workflows surface in the machine-readable catalog.
When a referenced component bumps MAJOR, the workflow must either re-pin (and bump its own MAJOR) or be marked retired in its manifest — the build script fails loudly on drift unless pinned_version_sha records an intentional lag.
python3 scripts/build_component_catalog.py
python3 scripts/build_vandalizer_workflows.py
python3 .github/scripts/lint_components.py
python3 scripts/build_docs.py
python3 -m mkdocs build --strictFor local preview:
python3 -m mkdocs serveIf mkdocs is already on PATH, the bare mkdocs command is equivalent; the python3 -m mkdocs form is more robust across environments.
Two GitHub Actions workflows run on pushes to main:
lint.ymlchecks component manifests, taxonomy usage, eval validation metadata, lockstep manifestation versions, workflow directory structure, thatcomponent_catalog.jsonmatches the generated catalog, and that every checked-in<wf-slug>.vandalizer.jsonmatches a fresh build of itsmanifest.yaml.pages.ymlregeneratescomponent_catalog.json, rebuilds generated docs from components, and publishes the MkDocs site.
The current triad alignment in this repo was refreshed against these observed upstream heads on 2026-04-21:
| Upstream | Branch | Observed commit |
|---|---|---|
AI4RA/evaluation-harness |
main |
02a7583abdade86877f9f1b4a70fde078f982d40 |
AI4RA/evaluation-data-sets |
main |
85c2d11d5f4d808b218716e90f590b1863bdffde |
ui-insight/AI4RA-UDM |
main |
9e85e44cf181dbb54c573cde2a89df2a287af2d0 |
These refs are recorded in component_catalog.json so downstream consumers do not have to infer cross-repo assumptions from floating main links.
This repository is licensed under the GNU General Public License v3.0.
Please cite this work when you use it in research publications, derivative components, downstream software, internal tooling, or production deployments. Citation guidance is documented here and in CITATION.cff; the repository's binding license terms remain those of the GPL.
Machine-readable citation metadata lives in CITATION.cff. When citing a specific state of the repository, pin to the commit SHA and the component version you used:
Robison, B. (2026). AI4RA Prompt Library (commit
<sha>, component<slug>v<version>). https://github.com/AI4RA/prompt-library