AGENTS.md · microsoft/waza
AGENTS.md from microsoft/waza: 562 lines covering Overview, Squad Team, Project Tracking, Code Structure (Go) and more.
Template by microsoft
Install
Works with Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode, Claude Code. Read the repository before you give any tool access to your data.
curl -fsSL https://raw.githubusercontent.com/microsoft/waza/main/AGENTS.md -o AGENTS.md
Read it and adapt it to your project before use.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: testing, code-generation
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
What's in it
An AGENTS.md file: instructions coding agents (Codex, Cursor, Copilot, Gemini CLI and others) read before working in a repo.
- For
- Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode, Claude Code
- Length
- 562 lines
- File
AGENTS.md
Sections
- Overview
- Squad Team
- Project Tracking
- Code Structure (Go)
- Go Naming Conventions
- Key Go Patterns
- Review-derived Engineering Standards
- Building and Testing
- CI/CD
- Fixture Isolation
- Documentation Requirements
- Documentation Maintenance
- Adding New Features
- Code Ownership and Review
- Commit Messages
- Files to Ignore
- Quick Reference
- Epics and Priorities
First lines (shown under the repo's MIT license)
# Agent Instructions for waza Repository
## Overview
This repository contains `waza`, a CLI tool for evaluating Agent Skills. **Go is the only implementation**, and it lives in the repository root. (An early Python implementation was removed in February 2026.)
When making changes, follow these guidelines to maintain consistency and quality.
## Squad Team
See [Meet the Squad](meet-the-squad.md) for current owners, the pinned Squad
tooling, and upgrade/verification procedures. `.squad/team.md` and
`.squad/routing.md` define the active team; `.squad/governance.md` defines bounded
collaboration and independent review. Persisted GPT-first role assignments live
in `.squad/config.json`, with code-review and fallback rules in
`.squad/model-policy.md`. Historical model directives are superseded.
## Project Tracking
**Keep issues and tracking up to date:**
- **Tracking Issue:** [#66 - Waza Platform Roadmap](https://github.com/microsoft/waza/issues/66)
- **PRD:** [docs/PRD.md](docs/PRD.md)
- When completing work, update the relevant GitHub issue
- Reference issue numbers in commit messages (e.g., `feat: Add tokens command #47`)
## Code Structure (Go)
```
cmd/waza/ # CLI entrypoint
└── main.go # Command parsing and execution
internal/
├── config/ # Configuration with functional options
├── execution/ # AgentEngine interface and implementations
│ ├── engine.go # Core engine interface
│ ├── mock.go # Mock engine for testing
│ └── copilot.go # Copilot SDK integration
├── graders/ # Grader interface and Create() factory
│ ├── grader.go # Grader interface + Create() switch over grader kinds
│ ├── text_grader.go # Text grader (one file per grader kind)
│ └── file_grader.go # File grader
├── models/ # Data structures
│ ├── spec.go # EvalSpec (eval configuration)
│ ├── testcase.go # TestCase (task definition)
│ ├── grader_params.go # models.*GraderParameters types
│ └── outcome.go # EvaluationOutcome (results)
├── orchestration/ # EvalRunner for coordinating execution
│ └── runner.go # Eval orchestration
└── scoring/ # Skill-adherence heuristic scoring
└── scoring.go # Scorer / HeuristicScorer
go.mod
go.sum
Makefile # Build and test commands
.golangci.yml
```
## Go Naming Conventions
The Go implementation uses idiomatic Go naming:
| Concept | Go Name | Defined in |
|---------|---------|------------|
| Eval configuration | `EvalSpec` | `internal/models/spec.go` |
| Executor | `AgentEngine` | `internal/execution/engine.go` |
| Grader | `Grader` | `internal/graders/grader.go` |
| Task | `TestCase` | `internal/models/testcase.go` |
| Result | `EvaluationOutcome` | `internal/models/outcome.go` |
## Key Go Patterns
### Functional Options for Configuration
```go
cfg := config.NewEvalConfig(spec,
config.WithSpecDir("evals"),
config.WithVerbose(true),
)
```
### Builder for Engine Construction
```go
// options may be nil in production; tests pass a NewCopilotClient factory
engine := execution.NewCopilotEngineBuilder(modelID, nil).Build()
```
### Interface-based Design
```go
type AgentEngine interface {
Initialize(ctx context.Context) error
Execute(ctx context.Context, req *ExecutionRequest) (*ExecutionResponse, error)
Shutdown(ctx context.Context) error
SessionUsage(sessionID string) *models.UsageStats
}
```
### Grader Factory
```go
// Create() switches over the models.*GraderParameters type to build a Grader
g, err := graders.Create(identifier, params)
```
## Review-derived Engineering Standards
These standards come from the last 150 merged PRs reviewed on 2026-10-15
(merged 2026-07-27 through 2026-10-15): 106 dependency PRs and 44 other PRs,
including 310 review threads and the review bodies and conversation comments.
The links below identify representative feedback, not a claim that every
suggestion was accepted or every merged PR was defect-free. Check the final
disposition and current implementation before reusing a proposed fix.
### Preserve wire contracts and field presence
- Treat Go loaders, eval/task JSON Schemas, preflight, result writers, API DTOs,
TypeScript guards, exports, and documentation as separate consumers. Update
every affected consumer, including task/checkpoint graders and regrading.
- Distinguish omitted, null, empty, explicit zero/false, and populated values
wherever the contract does. Preserve that distinction through copies and
read/regrade/write cycles; do not repair invalid types into valid defaults.
For strict identity-bearing profiles, validate original wire types, duplicate
keys/aliases, Unicode, and numeric precision before lossy decoding.
- Keep legacy reader defaults separate from new writer versions. Eval, result,
snapshot, and sidecar versions are independent; task YAML has no independent
version negotiation. Do not apply a new strict profile to unrelated historical
payloads or tighten an intentionally tolerant loader without a reviewed
compatibility decision.
Sources: [nested grader/schema parity](https://github.com/microsoft/waza/pull/573#pullrequestreview-5237174677),
[presence lost during regrade](https://github.com/microsoft/waza/pull/652#discussion_r4266695291),
[legacy admission regression](https://github.com/microsoft/waza/pull/666#discussion_r4236249110).
### Resolve effective configuration once, then use it consistently
- Reuse shared resolution and validation instead of adding command-specific
copies. Run, grade, preflight, trigger, migration, and API discovery must agree
on the supported filenames, spec-relative paths, task overrides, filtered
skills, and original CSV row identities. Honor configured file/glob settings.
- Resolve agent selection and policy from the same effective paths as execution.
Preserve explicit disable/deny-all behavior, source-qualified tool namespaces,
and per-run policy across initial/resumed/follow-up turns; do not leak mutable
policy between tasks or baseline passes.
- When adding behavior-affecting configuration, audit `internal/cache/cache.go`.
Hash the relevant effective configuration/content, including interacting flags,
or explicitly bypass incompatible cached results. Test both cache-key changes
and actual request/session propagation.
Sources: [run/grade CSV divergence](https://github.com/microsoft/waza/pull/671#discussion_r4252290593),
[effective skill selection](https://github.com/microsoft/waza/pull/670#discussion_r4262603609),
[cache invalidation](https://github.com/microsoft/waza/pull/627#discussion_r4122534791),
[policy namespaces](https://github.com/microsoft/waza/pull/596#discussion_r4096082837).
### Report only observed, complete evidence
- Missing scores, credits, provenance, or observations are unavailable, not zero
or success. Preserve explicit recorded zero. Keep mock, authored, cached, and
live evidence distinguishable; a digest or configured mock does not prove
execution, reconstruction, dependency isolation, or real-world assurance.
- Use authoritative final SDK usage, not token-price estimates. Count each
session once, distinguish cumulative snapshots from deltas, include discarded
retries/judges/responders, and exclude cached historical billing from the new
evaluation. Incomplete inputs must not become authoritative partial totals;
offline regrading must preserve execution billing.
- Bind evidence to its actual eval/task/run/attempt, including cache-sourceSignals
- Stars
- 1,427
- Forks
- 92
- Open issues
- 5
- Last commit (this folder)
- Oct 20, 2026 (9 days ago)
- Last release
- Oct 20, 2026 (9 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/microsoft/waza
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from microsoft
- 0.714score
skillopt-sleep
microsoftOfficial
Reference-only OpenClaw adaptation of SkillOpt-Sleep.
SkillAFreshness: A★ 18.7KClaude Code +9 - 0.707score
Playwright MCP
microsoftOfficial
Playwright Tools.
ConnectorAFreshness: ALocal★ 38.6KClaude Code +5 - 0.687score
squad
microsoftOfficial
Squad's command catalog and interactive menu.
SkillAFreshness: A★ 1.4KClaude Code +9 - 0.687score
coordinator-response-mode
microsoftOfficial
Selecting WHO handles work is the Routing table; selecting HOW they handle it (Direct, Lightweight, Standard, Full) is Response Mode.
SkillAFreshness: A★ 1.4KClaude Code +9 - 0.687score
coordinator-source-of-truth
microsoftOfficial
The complete file-by-file source-of-truth hierarchy for Squad: which files are authoritative, which are derived/append-only, who may write each one, who may…
SkillAFreshness: A★ 1.4KClaude Code +9 - 0.687score
squad-commands
microsoftOfficial
Categorized catalog of common Squad operations.
SkillAFreshness: A★ 1.4KClaude Code +9
Cite this page
AGENTS.md · microsoft/waza. Agent Mart. https://agentmart.dev/templates/microsoft-waza-agents-md (last updated 2026-10-24)