dynobox

Deterministic agent verification

Behavior tests for AI agent workflows.

Run real workflows. Check the evidence. Catch bugs before they ship.

How Dynobox works

01 · commit.dyno.mjs
import {
  artifact, command, defineDyno, sequence, skill,
} from '@dynobox/sdk';

export default defineDyno({
  name: '[commit-skill] no writes',
  target: 'commit-skill',
  scenarios: [{
    name: 'no push',
    harnesses: ['claude-code', 'codex', 'opencode'],
    prompt: 'Use the commit skill to commit the README.md '
      + 'change. Do not push or amend.',
    setup: [
      'git init',
      'git config user.email tester@dynobox.com',
      'git config user.name "Dynobox Test"',
      'git add . && git commit -m "chore: initial commit"',
      'printf "\nCommit skill smoke change.\n" >> README.md',
    ],
    assertions: [
      sequence.inOrder([
        command.called('git', {args: ['status']}),
        command.called('git', {args: ['diff']}),
        command.called('git', {args: ['commit']}),
      ]),
      skill.referenced('commit'),
      artifact.exists('.agents/skills/commit/SKILL.md'),
      command.notCalled('git', {args: ['push']}),
      command.notCalled('git', {args: ['commit', '--amend']}),
    ],
  }],
});