Skip to content

Ask Waza

Ask about Waza commands, writing evals, or troubleshooting an error. Paste YAML below for a schema check.

AI answers can be wrong. Do not share secrets or sensitive information. History may be retained.

CLI reference | Privacy & limits

    Check pasted YAML (optional)

    About

    Waza (技 - Japanese for “skill/technique”) is a Go CLI for evaluating agent workflows, skills and custom agents. Repository, CLI and MCP scenarios make workflow behavior first-class without requiring a SKILL.md.

    Start with Concepts and the offline Quick Start, then configure an authenticated model-backed run. Published v0.39.0 includes these workflows; see release availability and platform limits.

    Creating, testing, and evaluating AI agent skills lacks consistent tooling:

    • Automated compliance validation — No standardized scoring to ensure skill quality
    • Trigger testing — Manual verification of skill activation patterns
    • Cross-model evaluation — No framework for testing skills across GPT-4o, Claude, etc.
    • Token budget enforcement — Guidelines exist but aren’t automatically checked

    Waza automates the skill development workflow:

    Phase Capability
    Scaffold Generate a compliant skill structure ready for evaluation
    Develop Iterate with real-time compliance scoring
    Test Run agentic test loops with real LLM execution
    Evaluate Cross-model comparison with comprehensive metrics

    Waza is built in Go for:

    • Bundled core runtime; selected graders and dependencies can need interpreters or services
    • Fast execution
    • Cross-platform compatibility (Linux, macOS, Windows)
    waza/
    ├── cmd/waza/ # CLI entrypoint
    ├── internal/
    │ ├── config/ # Configuration
    │ ├── execution/ # Agent engines
    │ ├── models/ # Data structures
    │ ├── orchestration/ # Test runner
    │ └── scoring/ # Validators
    ├── web/ # Dashboard (React + Tailwind)
    └── examples/ # Example evals
    1. Fixture Isolation — Each task gets a fresh temp workspace. Original fixtures never modified.
    2. Pluggable Validators — 13 native grader kinds
    3. Cross-Model Support — Test skills against multiple LLM providers
    4. Local-First — Mock executor for development, real API for CI/CD
    5. Observability — Full transcripts, detailed metrics, dashboard visualization

    Define test cases in YAML:

    name: code-explainer-eval
    tasks:
    - "tasks/*.yaml"
    graders:
    - type: text
    config:
    regex_match: ["function", "parameter"]
    • Code — Python assertions
    • Text — Text matching
    • File — Output file checking
    • Diff — Diff comparison
    • JSON Schema — JSON structure validation
    • Prompt — LLM-powered evaluation
    • Behavior — Agent behavior validation
    • Action Sequence — Tool call sequence validation
    • Skill Invocation — Skill invocation validation
    • Program — Program execution validation
    • Trigger — Skill activation checks
    • Tool Constraint — Required/forbidden tool constraints
    • Tool Calls — Tool events and argument checks
    Terminal window
    waza run eval.yaml --model gpt-4o -o gpt4.json
    waza run eval.yaml --model claude-sonnet-4.6 -o sonnet.json
    waza compare gpt4.json sonnet.json
    Terminal window
    waza serve

    Explore results, trends, and comparisons in a web interface.

    Pre-configured GitHub Actions workflow:

    Terminal window
    waza init my-project
    # Creates .github/workflows/eval.yml

    We welcome contributions! Here’s how to get involved:

    Found a bug or have a feature request?

    1. Check existing issues
    2. Open a new issue with clear reproduction steps
    3. Include error logs and environment details
    1. Fork the repository
    2. Create a branch for your feature: git checkout -b feature/my-feature
    3. Make changes following the code style
    4. Write tests for new functionality
    5. Run linter and tests:
      Terminal window
      make lint
      make test
    6. Commit with clear messages: feat: Add my feature
    7. Push to your fork and open a pull request
    Terminal window
    # Clone repository
    git clone https://github.com/microsoft/waza.git
    cd waza
    # Set up Go environment
    go version # Requires 1.26+
    git lfs install
    git lfs pull
    # Build (requires Make, Node.js and npm; generates dashboard assets)
    make build
    # Test
    make test
    # Lint
    make lint
    # Run
    ./waza --help
    • Follow Go idioms (Effective Go)
    • Use gofmt for formatting
    • Include unit tests for new code
    • Document public functions

    To add a native grader:

    1. Implement Grader in internal/graders/.
    2. Add the parameter type in internal/models/grader_params.go and the kind/schema entry.
    3. Add the matching Create() factory case and tests.
    4. Update the README, canonical grader catalog and configuration examples.
    • Update relevant docs when changing behavior
    • Add examples for new features
    • Keep README.md and GUIDE.md in sync

    Have questions or ideas? Join the conversation:

    • ✅ waza run — Execute benchmarks
    • ✅ waza init — Scaffold projects
    • ✅ waza new skill — Create skills
    • ✅ waza compare — Cross-model comparison
    • ✅ 13 native grader kinds
    • ✅ waza check — Compliance scoring
    • ✅ waza dev — Iterative improvement
    • 🟡 Token budget optimization
    • 🟡 Trigger accuracy testing

    E3: Evaluation Framework (🟡 In Progress)

    Section titled “E3: Evaluation Framework (🟡 In Progress)”
    • ✅ Multi-model testing
    • ✅ Comprehensive metrics
    • 🟡 Statistical analysis
    • 🟡 LLM-powered suggestions
    • Token counting across models
    • Budget enforcement
    • Optimization recommendations
    • Conversational skill interface
    • Interactive development
    • ✅ GitHub Actions workflow
    • ✅ Artifact handling
    • ✅ PR comments
    • ✅ Azure Developer CLI integration
    • ✅ Registry publishing

    MIT License

    Shayne Boyer (@spboyer)

    Maintained by the waza team and community contributors.


    Questions? Open an issue or start a discussion.


    The waterfall timeline visualization in the waza dashboard was inspired by the .NET Aspire distributed application dashboard, which provides a similar trace/span view for distributed systems observability.