assay — migrated from GitHub
  • Rust 99.5%
  • Shell 0.3%
  • Just 0.1%
Find a file
Alexander Wollan 12f62897df
Some checks failed
CI / Validate plugins (push) Successful in 2s
CI / Check smelt (stable) (push) Failing after 26s
CI / Check assay (stable) (push) Failing after 27s
chore: update rustls-webpki 0.103.10 → 0.103.13
Fixes RUSTSEC-2026-0098 and RUSTSEC-2026-0099 (URI name constraint
validation in rustls-webpki).
2026-04-21 08:59:35 -05:00
.assay fix(v0.6.2): phases 60-61 — process safety + type correctness/serde consistency 2026-04-09 12:01:16 -05:00
.cargo feat(M019/S01): git subtree import + workspace scaffolding (#5) 2026-04-02 03:10:41 +00:00
.claude docs: add solo-workflow-tighten change proposal with OpenSpec tooling 2026-04-14 09:19:34 -05:00
.codex/skills docs: add solo-workflow-tighten change proposal with OpenSpec tooling 2026-04-14 09:19:34 -05:00
.config fix(M024/S05): add ManifestSession.prompt + streaming arg fixes 2026-04-08 17:30:20 -05:00
.forgejo/workflows fix(M019/S03): address remaining review findings 2026-04-02 22:02:26 -05:00
.githooks fix: serialize docker_lifecycle tests and fix test_real_assay_manifest_parsing 2026-04-03 14:55:30 -05:00
.github/workflows feat(M019/S03): Unified tooling + CI 2026-04-02 18:54:05 -05:00
.kata chore: fix kata projectId to point to assay project 2026-04-04 19:10:37 -05:00
.opencode docs: add solo-workflow-tighten change proposal with OpenSpec tooling 2026-04-14 09:19:34 -05:00
.planning feat: solo-workflow-tighten — tighten solo dev loop (#7) 2026-04-14 18:39:07 +00:00
.rtk [kata/root/M005/S01] Milestone & Chunk Type Foundation (#146) 2026-03-19 13:56:11 -05:00
_bmad-output docs: add AI agent project context with 95 implementation rules 2026-04-20 15:18:09 -05:00
crates feat: solo-workflow-tighten — tighten solo dev loop (#7) 2026-04-14 18:39:07 +00:00
docs docs: generate exhaustive project documentation via BMad Document Project 2026-04-21 08:48:51 -05:00
examples/close-the-loop fix(62): address S04/S05 review findings — 7 issues 2026-04-09 17:33:34 -05:00
ide chore(01): add existing project scaffold 2026-02-28 22:23:41 -06:00
openspec feat: solo-workflow-tighten — tighten solo dev loop (#7) 2026-04-14 18:39:07 +00:00
plugins feat: solo-workflow-tighten — tighten solo dev loop (#7) 2026-04-14 18:39:07 +00:00
schemas fix(M024/S05): pipeline streaming fixes + live verification results 2026-04-08 17:33:02 -05:00
smelt fix: serialize docker_lifecycle tests and fix test_real_assay_manifest_parsing 2026-04-03 14:55:30 -05:00
.editorconfig chore(01): add existing project scaffold 2026-02-28 22:23:41 -06:00
.gitignore chore: gitignore BMad Method installation artifacts 2026-04-21 08:50:59 -05:00
.linear.toml chore(01): add existing project scaffold 2026-02-28 22:23:41 -06:00
.mise.toml [kata/root/M010/S01] feat(M010/S01): StateBackend trait, CapabilitySet, and LocalFsBackend skeleton (#187) 2026-03-26 10:19:46 -05:00
AGENTS.md feat: solo-workflow-tighten — tighten solo dev loop (#7) 2026-04-14 18:39:07 +00:00
Cargo.lock chore: update rustls-webpki 0.103.10 → 0.103.13 2026-04-21 08:59:35 -05:00
Cargo.toml feat(64-01): add CriteriaLibrary and precondition types with TDD tests 2026-04-11 10:57:53 -05:00
CHANGELOG.md chore: complete v0.4.0 milestone with release 2026-03-15 16:08:47 -05:00
CLAUDE.md feat: solo-workflow-tighten — tighten solo dev loop (#7) 2026-04-14 18:39:07 +00:00
clippy.toml chore(01): add existing project scaffold 2026-02-28 22:23:41 -06:00
CONTRIBUTING.md fix(M019/S03): address remaining review findings 2026-04-02 22:02:26 -05:00
deny.toml feat(M019/S03): Unified tooling + CI 2026-04-02 18:54:05 -05:00
justfile fix(M024/S05): pipeline streaming fixes + live verification results 2026-04-08 17:33:02 -05:00
LICENSE chore(01): add existing project scaffold 2026-02-28 22:23:41 -06:00
package-lock.json [kata/root/M005/S01] Milestone & Chunk Type Foundation (#146) 2026-03-19 13:56:11 -05:00
package.json [kata/root/M005/S01] Milestone & Chunk Type Foundation (#146) 2026-03-19 13:56:11 -05:00
README.md feat(M024/S05): end-to-end live scenario + documentation 2026-04-08 17:08:56 -05:00
rust-toolchain.toml chore(01): add existing project scaffold 2026-02-28 22:23:41 -06:00
rust_out [kata/root/M006/S02] In-TUI Authoring Wizard (#159) 2026-03-20 21:21:16 -05:00
rustfmt.toml chore(01): add existing project scaffold 2026-02-28 22:23:41 -06:00
WORKFLOW-assay.md fix(S02): add deny.toml skip entries for smelt transitive deps 2026-04-02 09:59:05 -05:00

Assay

Agentic development kit — spec-driven workflows with dual-track quality gates for AI coding agents.

What It Does

Assay enforces quality gates between AI agent output and your main branch. Define specs with acceptance criteria, and Assay evaluates them automatically using two tracks:

  • Deterministic gates: Shell commands, test suites, linter checks — binary, reproducible, cheap
  • Agent-evaluated gates: Natural-language assertions verified by AI via MCP — nuanced, context-aware

Gates support required/advisory enforcement levels, persist results to run history for audit trails, and integrate with both CLI and MCP surfaces.

v0.4.0 adds gate_evaluate — a single MCP call that computes diffs, spawns a headless evaluator subprocess, and persists structured per-criterion results. Also ships WorkSession persistence for tracking agent work across phases, spec_validate for static spec health checking, context engine integration for token-budgeted diff slicing, and comprehensive observability improvements.

Quick Start

# Install toolchain
mise install

# Install the CLI
cargo install --path crates/assay-cli

# Initialize a project
assay init

# Write a spec in .assay/specs/my-feature.toml, then run gates
assay gate run my-feature

# Or run all specs at once
assay gate run --all

CLI Commands

Command Description
assay init Initialize .assay/ project structure
assay spec show <name> Display a spec with its criteria
assay spec list List all specs in the project
assay gate run <name> Run gates for a spec
assay gate run --all Run gates for all specs
assay history <name> View gate run history for a spec
assay context diagnose Token usage, bloat breakdown, context %
assay context list List sessions with sizes and token counts
assay context prune Dry-run pruning strategies on a session
assay context guard start Start the guard daemon for a session
assay worktree create <spec> Create isolated git worktree for a spec
assay worktree list List active worktrees
assay worktree status <spec> Check worktree branch/dirty/ahead status
assay worktree cleanup <spec> Remove a worktree
assay checkpoint save Save team state checkpoint
assay mcp serve Start the MCP server (stdio)

MCP Server

Assay exposes tools via MCP (Model Context Protocol) for agent integration:

  • spec_list — Enumerate available specs
  • spec_get — Retrieve a spec by name (with optional resolved config)
  • spec_validate — Static spec health check with structured diagnostics
  • gate_run — Execute command criteria for a spec (with timeout and enforcement)
  • gate_evaluate — Single-call headless agent evaluation (diff + subprocess + persist)
  • gate_report — Submit agent-evaluated gate results with reasoning
  • gate_finalize — Complete an agent evaluation session
  • gate_history — Query past gate run results (with outcome filter and limit)
  • session_create — Start a work session linking worktree, spec, and agent
  • session_get — Retrieve session details by ID
  • session_update — Transition session phase and link gate runs
  • session_list — Enumerate sessions with optional filters
  • context_diagnose — Full session diagnostics with bloat analysis
  • estimate_tokens — Token count, context %, and growth rate metrics
  • worktree_create — Create isolated git worktree for agent work
  • worktree_list — List active worktrees
  • worktree_status — Check worktree branch and dirty state
  • worktree_cleanup — Remove a worktree

Claude Code Plugin

Install the plugin from plugins/claude-code/ to get:

  • MCP server auto-registration
  • /gate-check and /spec-show skills
  • PostToolUse hook for automatic gate reminders
  • Stop hook preventing completion without passing gates
  • Checkpoint hooks for team state protection

Project Structure

crates/
  assay-types/   Shared serializable types (serde, schemars)
  assay-core/    Domain logic: specs, gates, config, context, pruning, guard
  assay-cli/     CLI binary (clap)
  assay-tui/     TUI binary (ratatui) — scaffold
  assay-mcp/     MCP server library (rmcp)
plugins/
  claude-code/   Claude Code plugin
schemas/         JSON Schemas (generated from assay-types)

Examples

Close the Loop — Mid-Session Checkpoints + Auto-Promote

Demonstrates the M024 gate/spec loop: mid-session checkpoint evaluation with early abort on tool-budget violations, and automatic spec promotion (in-progressverified) on clean runs. Exercises EventCount checkpoint criteria, NoToolErrors session-end gates, and auto_promote against a real claude CLI subprocess.

just demo-close-the-loop

Development

just build      # Build all crates
just test       # Run tests (836 tests)
just lint       # Clippy with -D warnings
just fmt        # Format code
just ready      # Full check suite: fmt + lint + test + deny
just schemas    # Regenerate JSON schemas

License

MIT