Agent skill

Corvus Go Evaluator

by corvus-dotnet in corvus-dotnet/Corvus.JsonSchema

Work on the Go port of the V5 standalone schema evaluator (src-go/corvus-json-schema, module github.com/corvus-dotnet/Corvus.JsonSchema/src-go/corvus-json-schema, package jsonschema): loader…

Apache-2.0Auto-check passedDevelopment

Install Corvus Go Evaluator

skills CLI
$ npx skills add corvus-dotnet/Corvus.JsonSchema --skill corvus-go-evaluator -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install corvus-dotnet/Corvus.JsonSchema corvus-go-evaluator --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/corvus-dotnet/Corvus.JsonSchema.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.github/skills/corvus-go-evaluator .claude/skills/corvus-go-evaluator && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
corvus-go-evaluator
GitHub stars
199
Token cost
~2.2k tokens
SKILL.md length
991 words
Files
1
Skills in repo
28
Repo updated
First seen
Licence
Apache-2.0

At a glance

Work on the Go port of the V5 standalone schema evaluator (src-go/corvus-json-schema, module github.com/corvus-dotnet/Corvus.JsonSchema/src-go/corvus-json-schema, package jsonschema): loader…

  • Debugging the Go evaluator
  • SKILL.md covers Overview, Build and test, The minimum Go version and… and Zero allocation, plus 4 more sections
  • Calls go and pwsh
  • Measuring it against santhosh-tekuri/jsonschema

What it does

Corvus Go Evaluator is an agent skill from corvus-dotnet/Corvus.JsonSchema. Work on the Go port of the V5 standalone schema evaluator (src-go/corvus-json-schema, module github.com/corvus-dotnet/Corvus.JsonSchema/src-go/corvus-json-schema, package jsonschema): loader, compiler, the fail-fast plans and fused object plans, results collector and annotations, the document parser, the ECMA-262 regular expression engine, the allocation tests, the conformance and annotation suites, the jsonschema-benchmark and Bowtie integrations, and performance measurement. USE FOR: changing or debugging the…

Its SKILL.md is about 2.2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Development. It works with C#, Java, TypeScript and GitHub. The repository describes itself as: Support for Json Schema validation and entity generation. The licence is Apache-2.0.

When your agent uses it

  • Debugging the Go evaluator
  • Measuring it against santhosh-tekuri/jsonschema
  • Blaze and the other Corvus evaluators
  • Running its Bowtie harness

Example prompts

  • “/corvus-go-evaluator”

What it can do on your machine

Read from SKILL.md and the folder at commit 973097f. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • go
    • pwsh

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Corvus Go Evaluator loads about 2.2k tokens when it runs. Until then it costs about 236 tokens; SKILL.md has 991 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~236
When it runs · the whole SKILL.md, loaded when a task matches
~2.2k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from corvus-dotnet/Corvus.JsonSchema at commit 973097f, republished under its Apache-2.0 licence (© corvus-dotnet). 991 words, ~2,246 tokens.

Download SKILL.mdSave it as .claude/skills/corvus-go-evaluator/SKILL.md (or your agent's skills folder).
name
corvus-go-evaluator
description
Work on the Go port of the V5 standalone schema evaluator (src-go/corvus-json-schema, module github.com/corvus-dotnet/Corvus.JsonSchema/src-go/corvus-json-schema, package jsonschema): loader, compiler, the fail-fast plans and fused object plans, results collector and annotations, the document parser, the ECMA-262 regular expression engine, the allocation tests, the conformance and annotation suites, the jsonschema-benchmark and Bowtie integrations, and performance measurement. USE FOR: changing or debugging the Go evaluator, measuring it against santhosh-tekuri/jsonschema, Blaze and the other Corvus evaluators, running its Bowtie harness, releasing the module, keeping it in parity with the C# runtime evaluator. DO NOT USE FOR: the C# runtime evaluator itself (see corvus-standalone-evaluator and docs/RuntimeEvaluator.md), the Java port (corvus-java-evaluator), the TypeScript port (corvus-typescript-evaluator).

Go Standalone Evaluator

Overview

src-go/corvus-json-schema ports the Corvus.Text.Json.RuntimeEvaluator pipeline to Go, by way of the Rust port (src-rs/corvus-json-schema), which it follows file for file. loader.go and compiler.go build the node graph (schemaNode) and its analyses (marking, in-place cycles, discriminators). plan.go compiles each node to a fail-fast plan, and fused.go fuses an object's keywords across $ref, allOf, if/then/else, dependencies and oneOf/anyOf into one pass. eval.go is the general evaluator: it serves results collection, and the nodes that track evaluated properties or items. Document (document.go) is the instance model: the UTF-8 text plus a flat tape, two words per value. names.go is the property name lookup, pattern.go the regex-free pattern matchers, and internal/ecmaregex the ECMA-262 engine behind every other pattern. internal/ucd holds the Unicode tables that the engine and the formats read.

The module has no dependencies outside the standard library. Keep it that way: the benchmark and Bowtie harnesses are modules of their own for that reason.

The package README describes the design. OPTIMIZATIONS.md maps every optimisation to its counterpart in the C#, Rust and Java evaluators, and its Todo list is the order of the performance work. Keep it current: a technique added to any of the other evaluators should be checked off (or ruled out, with the reason) there.

Build and test

Go 1.25 or later. From src-go/corvus-json-schema:

bash
go vet ./...
gofmt -l .                      # prints nothing when the code is formatted
go test -p 4 ./...              # every test
go test -p 4 -race ./...        # as CI does on Linux and macOS (needs a C compiler; CC=clang works)
JSONSCHEMA_BENCHMARK=<jsonschema-benchmark> go test -p 4 -run TestPlansAgree .   # plans against the general evaluator

The suites read the repository's JSON-Schema-Test-Suite submodule (or JSON_SCHEMA_TEST_SUITE). Every required, optional and format test must pass (draft4/optional/zeroTerminatedFloats.json is excluded, as in the C# runner), and all annotation assertions. Each case runs fail-fast as a document, as bytes and as a string, and through a collector at each level, and the verdicts must agree. SUITE_DRAFT and SUITE_FILTER narrow the run.

TestEmbeddedMetaschemasAreCurrent checks the embedded metaschemas (metaschemas/) against src/Corvus.Text.Json/metaschema. UPDATE_METASCHEMAS=1 copies them again.

src-go/corvus-json-schema-bowtie runs the Bowtie harness over IHOP on the required and annotation suites (go test -p 4 ./... there). CI (.github/workflows/go.yml) runs all of these on Linux x64 and arm64, Windows and macOS, with the oldest Go the module accepts, Go 1.26, Go 1.27 and the latest.

The minimum Go version and Unicode data

go.mod says go 1.25.0. CI tests that exact toolchain, Go 1.26, Go 1.27 and the latest release. Use no language or library feature newer than Go 1.25.

The module takes no Unicode data from the toolchain, so it gives the same results with every Go release. The standard library's unicode package is Unicode 15 in Go 1.25 and 1.26 and Unicode 17 in Go 1.27, and the \p classes and case folding of regexp and the case functions of strings and bytes read it. Never use any of them outside a test file. TestNoToolchainUnicodeData (unicode_test.go) scans the module and fails if one appears.

Use internal/ucd instead. ucd.Category, ucd.Script, ucd.ScriptExtensions and ucd.Binary return a *ucd.Table (Contains, AppendRanges), ucd.Letter() and its siblings are the general category groups, and ucd.Fold and ucd.ToUpper are the simple case mappings. For ASCII-only case rules use asciiLower (uri.go). A regular expression given to regexp must spell out ranges from the tables, as idnEmailLocalRegexp in formats.go and writeRE2 in internal/ecmaregex do.

internal/ucd/tables_gen.go holds Unicode 17, the version V8 answered with in internal/ecmaregex/testdata/v8_oracle.json. internal/ucd/gen_tables.ps1 writes it from the Unicode data of the regress crate that the Rust port depends on, already formatted as gofmt formats it:

powershell
pwsh src-go/corvus-json-schema/internal/ucd/gen_tables.ps1 -RegressTables ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regress-0.12.0/src/unicodetables.rs

To move to a later Unicode version, generate the tables from a regress release that carries it (pass -UnicodeVersion), record the V8 oracle again with a V8 of the same version (testdata/gen_oracle.js), and update TestTheDataIsUnicode17 in internal/ucd. Do the three together.

Show full SKILL.md (409 more words)Show less

Zero allocation

Validation must allocate nothing in the steady state, from a *Document, a []byte or a string. TestValidationAllocatesNothingInTheSteadyState measures each case with testing.AllocsPerRun. Add a case for every new keyword path. The evaluator is a value on the stack. Its buffers are a scratch, taken from the validator's sync.Pool only when first needed (evaluator.state). Evaluated-property sets come from the scratch's arena (newBits), and fused passes are reused through it. The race detector makes sync.Pool drop values, so the allocation tests skip under -race (raceEnabled).

Performance work

  • Work through OPTIMIZATIONS.md in its Todo order. Measure each change before keeping it.
  • In process: src-go/corvus-json-schema-bench (see its README) runs the jsonschema-benchmark corpora with corvus and santhosh-tekuri/jsonschema, interleaving the engines' passes. Profile with go test -cpuprofile or pprof on that program.
  • Against Blaze and the other Corvus evaluators: build the image (pwsh Build-Image.ps1 in src-go/corvus-json-schema-bench/jsonschema-benchmark) and run Compare-Images.ps1, pinned with -CpuSet. Every harness must warm up by time (2 seconds, at least 100 passes) and report the last warm-up pass, timed inside the loop. Compare like with like.
  • Measure before and after on the same machine, interleaved, with nothing else running. Do not publish a figure that was not measured that way.
  • To see what the compiler inlined and where it kept bounds checks: go build -gcflags='-m -d=ssa/check_bce' .

Parity with the C# evaluator

When the C# collecting mode changes (paths, messages, row order, which subschema results are kept), update the collecting paths of eval.go and results_test.go, which reproduces the C# ResultsTests/ResultPathTests expectations. Format recognition follows SchemaCompiler.GetFormatKind (formatKind in formats.go). A change to a plan in the Rust crate (eval/plan.rs, eval/plan/fused.rs) usually ports line for line to plan.go and fused.go. Patterns have ECMA-262 semantics through internal/ecmaregex, which is tested against answers recorded from V8 (see corvus-ecma-regex for the .NET translator).

Releasing the module

Versioned independently, with its history in src-go/corvus-json-schema/VERSIONHISTORY.md. Bump Version in version.go, add the history entry, and merge. .github/workflows/go-publish.yml runs the tests, tags src-go/corvus-json-schema/v<version> and asks the Go module proxy for the version. See docs/ReleaseProcess.md, "The Go module". Never push that tag by hand, and never move one: the checksum database has recorded it.

Integrations

  • src-go/corvus-json-schema-bench/jsonschema-benchmark/: the implementations/corvus-go directory for jsonschema-benchmark. It requires the published module, so local builds use a workspace (go work init . ../../corvus-json-schema).
  • src-go/corvus-json-schema-bowtie/: the Bowtie harness and its image.
  • Docs: docs/JsonSchemaForGo.md, its row in docs/OtherLanguages.md, and the home page's language list. The code samples in the docs and the README are example tests (example_test.go). Change both together.

© corvus-dotnet, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .github/skills/corvus-go-evaluator of corvus-dotnet/Corvus.JsonSchema.

Open the folder on GitHubat commit 973097f

Compare with similar skills

Corvus Go Evaluator next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Corvus Go Evaluator compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Corvus Go Evaluator this skillcorvus-dotnet/Corvus.JsonSchema199—~2.2kAutomated safety check: PassApache-2.0
Code Reviewdotnet/macios2.9k—~1.7kAutomated safety check: PassCustom licence
Code Reviewjonathanpeppers/dotnes780—~2.1kAutomated safety check: PassMIT
Release Roslynatordotnet/roslynator3.5k—~1kAutomated safety check: PassCustom licence
Gh Stackdotnet/macios2.9k3 repos~10kAutomated safety check: PassCustom licence
Git HooksProrise-cool/Claude-Code-Multi-Agent305—~3.6kAutomated safety check: NotesNone

Similar skills

  • Code Review

    dotnet/macios

    Official

    Review dotnet/macios PRs against established rules. An agent skill from dotnet/macios.

    2.9k GitHub stars~1.7k tokensUpdated today
    DevelopmentAuto-check passed
  • Code Review

    jonathanpeppers/dotnes

    Review dotnes pull requests against established repository rules.

    780 GitHub stars~2.1k tokensUpdated 16 days ago
    DevelopmentAuto-check passed
  • Release Roslynator

    dotnet/roslynator

    Official

    A skill your agent uses when shipping a roslynator release, rolling CHANGELOG.md [Unreleased], updating the VS Code extension changelog, creating a GitHub v release, or optionally tagging cli-v.

    3.5k GitHub stars~1k tokensUpdated 5 days ago
    DevelopmentAuto-check passed
  • Gh Stack

    dotnet/macios

    Official

    Manage stacked branches and pull requests with the gh-stack GitHub CLI extension.

    2.9k GitHub starsUsed in 3 repos~10k tokens
    DevelopmentAuto-check passed
  • Git Hooks

    Prorise-cool/Claude-Code-Multi-Agent

    Central authority on git hook implementations, modern best practices, and tooling for .NET/C, JavaScript/TypeScript, Python, and polyglot repositories.

    305 GitHub stars~3.6k tokensUpdated 23 days ago
    DevelopmentAuto-check: notes
  • Answers questions about code structure, history, bugs and PR risk using a CodeScope knowledge graph and semantic index built from the repository.

    28k GitHub starsUsed in 1 repo~9.3k tokens
    DevelopmentAuto-check passed

More from corvus-dotnet/Corvus.JsonSchema

All 28 skills in this repo
  • Corvus Analyzers

    corvus-dotnet/Corvus.JsonSchema

    Understand and work with the Roslyn analyzers shipped with Corvus.Text.Json.

    199 GitHub stars~876 tokensUpdated today
    Auto-check passed
  • Corvus Benchmarks

    corvus-dotnet/Corvus.JsonSchema

    Run, interpret, and maintain BenchmarkDotNet benchmarks for JSON Schema validation and query languages.

    199 GitHub stars~1.2k tokensUpdated today
    Auto-check passed
  • Corvus Bowtie Testing

    corvus-dotnet/Corvus.JsonSchema

    Test Corvus.JsonSchema against the JSON Schema Test Suite using Bowtie, the cross-implementation meta-validator.

    199 GitHub stars~1.4k tokensUpdated today
    Auto-check passed
  • Corvus Buffer And Pooling

    corvus-dotnet/Corvus.JsonSchema

    Write allocation-efficient buffer code in Corvus.JsonSchema using the codebase's established three-tier pooling pattern: stackalloc → ArrayPool → ThreadStatic caches.

    199 GitHub stars~2.9k tokensUpdated today
    Auto-check passed
  • Corvus Bytes To Bytes

    corvus-dotnet/Corvus.JsonSchema

    Eliminate hand-rolled POCO record<-document string seams — types/paths that materialize a managed string (or List<string/Dictionary) between a bytes SOURCE (a parsed UTF-8 body, a DB column, a…

    199 GitHub stars~3k tokensUpdated today
    Auto-check passed
  • Corvus Codegen

    corvus-dotnet/Corvus.JsonSchema

    Generate strongly-typed C from JSON Schema using the Roslyn source generator or the corvusjson CLI tool.

    199 GitHub stars~2.1k tokensUpdated today
    Auto-check passed

Categories

Questions about Corvus Go Evaluator

What does Corvus Go Evaluator do?

Work on the Go port of the V5 standalone schema evaluator (src-go/corvus-json-schema, module github.com/corvus-dotnet/Corvus.JsonSchema/src-go/corvus-json-schema, package jsonschema): loader…. JsonSchema.JsonSchema/src-go/corvus-json-schema, package jsonschema): loader, compiler, the fail-fast plans and fused object plans, results collector and annotations, the document parser, the ECMA-262 regular expression engine, the allocation tests, the conformance and annotation suites, the jsonschema-benchmark and Bowtie integrations, and performance measurement.

When should I use Corvus Go Evaluator?

Corvus Go Evaluator fits situations like: debugging the Go evaluator; measuring it against santhosh-tekuri/jsonschema; blaze and the other Corvus evaluators; running its Bowtie harness.

How do I install Corvus Go Evaluator in Claude Code?

Run `npx skills add corvus-dotnet/Corvus.JsonSchema --skill corvus-go-evaluator -a claude-code`. Or copy the skill folder (.github/skills/corvus-go-evaluator in corvus-dotnet/Corvus.JsonSchema) into .claude/skills/corvus-go-evaluator in your project. Claude Code loads it when a task matches its description.

How do I install Corvus Go Evaluator in Codex?

Run `npx skills add corvus-dotnet/Corvus.JsonSchema --skill corvus-go-evaluator -a codex`. Or copy the skill folder (.github/skills/corvus-go-evaluator in corvus-dotnet/Corvus.JsonSchema) into .agents/skills/corvus-go-evaluator in your project. Codex loads it when a task matches its description.

Can I use Corvus Go Evaluator in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add corvus-dotnet/Corvus.JsonSchema --skill corvus-go-evaluator -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/corvus-go-evaluator, .gemini/skills/corvus-go-evaluator, .github/skills/corvus-go-evaluator and .opencode/skills/corvus-go-evaluator in your project.

What does Corvus Go Evaluator need to run?

Going by SKILL.md and its folder, Corvus Go Evaluator needs the command-line tools its instructions call (go and pwsh).

Does Corvus Go Evaluator access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Corvus Go Evaluator safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Corvus Go Evaluator use?

Corvus Go Evaluator is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Corvus Go Evaluator use?

About 2.2k tokens (SKILL.md is roughly 9k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Corvus Go Evaluator?

Skills that share tags, products or a category with Corvus Go Evaluator: Code Review (dotnet/macios, 2.9k stars), Code Review (jonathanpeppers/dotnes, 780 stars), Release Roslynator (dotnet/roslynator, 3.5k stars) and Gh Stack (dotnet/macios, 2.9k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Corvus Go Evaluator?

corvus-dotnet (a GitHub organization) maintains it in corvus-dotnet/Corvus.JsonSchema, which has 199 GitHub stars. The repository holds 28 skills in this directory. The repository was last updated on October 9, 2026.

Source: corvus-dotnet/Corvus.JsonSchema on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.