Skip to main content

Installation

How to invoke

Ask your agent to create any combination of files:
“Use the apastra-scaffold skill to create a prompt spec, dataset, evaluator, and suite for summarizing text”
For a quick start without four separate files:
“Use the apastra-scaffold skill to create a quick eval for email classification”

What gets created

A full scaffold creates four files:
You can also ask for any individual piece: just a prompt spec, just a dataset, just an evaluator, or just a suite.

Prompt spec template

Your agent creates promptops/prompts/<id>.yaml:
Rules for prompt specs:
  • id is required and must be unique — use kebab-case with a version suffix (for example, classify-email-v1)
  • variables is required — defines the input schema as a map of variable names to JSON Schema type objects
  • template is required — the prompt text with {{variable}} placeholders
  • output_contract is optional but recommended — defines expected output structure
  • Never rename an id; create a new version instead

Dataset template

Your agent creates promptops/datasets/<id>.jsonl — one JSON object per line:
Rules for datasets:
  • Use .jsonl format (one JSON object per line, not a JSON array)
  • case_id is required and must be unique within the dataset
  • inputs is required — keys must match the prompt spec’s variables
  • expected_outputs is optional — used by evaluators for checking
  • Aim for 5–10 cases in a smoke dataset and 50+ in a regression dataset
  • Include edge cases: empty inputs, very long inputs, adversarial inputs

Evaluator templates

Your agent creates promptops/evaluators/<id>.yaml. Three evaluator types are available:
Rule-based checks — fastest to run, no model calls required:
Rules for evaluators:
  • id is required and must be unique
  • type is required — must be one of deterministic, schema, or judge
  • metrics is required — array of metric names this evaluator produces (minimum 1)
  • For judge evaluators: treat the rubric text as a versioned artifact — changing it changes what the metric means

Suite template

Your agent creates promptops/suites/<id>.yaml:
Suite tiers — recommended usage:

Quick eval template

For rapid iteration, your agent can scaffold a single file instead of four: Your agent creates promptops/evals/<id>.yaml:
When to use quick eval vs. full suite:

Dataset with inline assertions

When you want per-case checks without a separate evaluator file, ask your agent to add assert arrays directly in the JSONL:
Inline assertions and evaluator files complement each other. Use inline assertions for per-case checks and evaluator files for suite-wide scoring rules.

Available assertion types

Deterministic: equals, contains, icontains, contains-any, contains-all, regex, starts-with, is-json, contains-json, is-valid-json-schema Model-assisted: similar, llm-rubric, factuality, answer-relevance Performance: latency, cost Negate any type with not- prefix — for example, not-contains, not-is-json.
After scaffolding, run the apastra-validate skill to catch any typos or formatting issues before your first eval.