The skill-up architecture is designed as a modular pipeline that transforms high-level evaluation definitions into structured performance reports. It orchestrates the lifecycle of an AI agent's execution within isolated environments, followed by automated grading and artifact collection.
The following diagram illustrates the high-level flow from a user's CLI command to the final generated reports, showing how the internal subsystems interact.
Sources: internal/evaluator/evaluator.go1-5 internal/runner/runner.go1-13 README.md43-54
The CLI layer serves as the entry point, handling flag parsing, environment variable resolution, and command routing. The run command is the primary driver, managing the transition from user configuration to the execution phases.
eval.yaml to invoking the Runner.--engine, --model, or --api-key) with loaded configuration.skill-up uses a convention-based discovery system. It searches for configuration files and identifies the "Skill Root" by looking for a SKILL.md file to resolve relative paths for fixtures and scripts README.md122-125
config.EvalConfig represents the root document loaded from eval.yaml internal/runner/runner.go49-50Environment (none, opensandbox, docker), Engine (claude_code, codex, qodercli, custom), and Judge strategies README.md49-51Loader resolves the skill name from SKILL.md or directory basenames internal/runner/runner.go103-118The execution is split into two orchestration levels:
--iteration) and IterationWorkspace setup internal/runner/runner.go1-13 internal/runner/runner.go95-180Runtime, invoking the Agent, and performing grading via Judge internal/evaluator/evaluator.go1-5 internal/evaluator/evaluator.go179-237This diagram bridges the conceptual "Evaluation Lifecycle" to the specific Go types and methods responsible for each stage.
Sources: internal/evaluator/evaluator.go179-237 internal/runner/runner.go153-172 internal/agent/agent.go133-148 internal/runner/runner.go1-13
Every evaluation run generates a structured directory within a workspace. This contains per-iteration folders, agent transcripts, and final reports in multiple formats (JSON, JUnit, HTML).
evaluator.EvalResult holds the outcome of a single case, including Status (PASS, FAIL, SKIP, ERROR) and Grading details internal/evaluator/evaluator.go67-106<skill-name>-workspace/iteration-N/ internal/runner/runner.go121-133JUnitReporter and HTMLReporter transform report.Input into final artifacts internal/report/junit.go18-22 internal/report/html.go19-23The system follows a strict data transformation path:
eval.yaml + case.yaml + CLI overrides are processed by the Loader.config.Loader produces configuration objects and identifies the project root via SKILL.md internal/runner/runner.go103-118Resolver determines the final AgentInitParams (API keys, base URLs) internal/runner/runner.go61-67evaluator.Evaluator executes the pipeline, producing evaluator.EvalResult which embeds the agent.SessionResult containing tokens, turns, and messages internal/evaluator/evaluator.go67-71runner.Runner writes results to result.json and triggers formatted report generation via the report package internal/runner/runner.go191-204Sources: internal/runner/runner.go1-13 internal/evaluator/evaluator.go67-106 internal/report/reporter.go17-27 README.md43-54