Agent skill

Corvus Julia Evaluator

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

Work on the Julia port of the V5 standalone schema evaluator (src-jl/CorvusJsonSchema, package CorvusJsonSchema): loader, compiler, the fail-fast plans and fused object plans, results collector and…

Apache-2.0Auto-check passedDevelopment

Install Corvus Julia Evaluator

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

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

GitHub CLI
$ gh skill install corvus-dotnet/Corvus.JsonSchema corvus-julia-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-julia-evaluator .claude/skills/corvus-julia-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-julia-evaluator
GitHub stars
200
Token cost
~3k tokens
SKILL.md length
1,528 words
Files
1
Skills in repo
28
Repo updated
First seen
Licence
Apache-2.0

At a glance

Work on the Julia port of the V5 standalone schema evaluator (src-jl/CorvusJsonSchema, package CorvusJsonSchema): loader, compiler, the fail-fast plans and fused object plans, results collector and…

  • Debugging the Julia evaluator
  • SKILL.md covers Overview, Build and test, Julia versions, PCRE2 and… and Zero allocation and type…, plus 5 more sections
  • Calls pwsh
  • Measuring it against the other Corvus evaluators and Blaze

What it does

Corvus Julia Evaluator is an agent skill from corvus-dotnet/Corvus.JsonSchema. Work on the Julia port of the V5 standalone schema evaluator (src-jl/CorvusJsonSchema, package CorvusJsonSchema): loader, compiler, the fail-fast plans and fused object plans, results collector and annotations, the document parser, the ECMA-262 pattern translator over PCRE2, the precompile workload, the allocation and type stability tests, the conformance and annotation suites, the jsonschema-benchmark and Bowtie integrations, and performance measurement. USE FOR: changing or debugging the Julia evaluator…

Its SKILL.md is about 3k 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, covering Translation. It works with C#, Java and TypeScript. 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 Julia evaluator
  • Measuring it against the other Corvus evaluators and Blaze
  • Running its Bowtie harness
  • Releasing the package to Julias General registry

Example prompts

  • “/corvus-julia-evaluator”

What it can do on your machine

Read from SKILL.md and the folder at commit ca269a3. 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:

    • 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 Julia Evaluator loads about 3k tokens when it runs. Until then it costs about 241 tokens; SKILL.md has 1,528 words of instructions outside code blocks.

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

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 ca269a3, republished under its Apache-2.0 licence (© corvus-dotnet). 1,528 words, ~3,050 tokens.

Download SKILL.mdSave it as .claude/skills/corvus-julia-evaluator/SKILL.md (or your agent's skills folder).
name
corvus-julia-evaluator
description
Work on the Julia port of the V5 standalone schema evaluator (src-jl/CorvusJsonSchema, package CorvusJsonSchema): loader, compiler, the fail-fast plans and fused object plans, results collector and annotations, the document parser, the ECMA-262 pattern translator over PCRE2, the precompile workload, the allocation and type stability tests, the conformance and annotation suites, the jsonschema-benchmark and Bowtie integrations, and performance measurement. USE FOR: changing or debugging the Julia evaluator, measuring it against the other Corvus evaluators and Blaze, running its Bowtie harness, releasing the package to Julia's General registry, 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 Go port (corvus-go-evaluator), the Java port (corvus-java-evaluator), the TypeScript port (corvus-typescript-evaluator).

Julia Standalone Evaluator

Overview

src-jl/CorvusJsonSchema ports the Corvus.Text.Json.RuntimeEvaluator pipeline to Julia, from the Go port (src-go/corvus-json-schema), which it follows file for file: each source file says which Go file it was ported from. loader.jl and compiler.jl build the node graph and its analyses (marking, in-place cycles, discriminators). plan.jl compiles each node to a fail-fast plan (the types are in plan_types.jl), and fused.jl fuses an object's keywords across $ref, allOf, if/then/else, dependencies and oneOf/anyOf into one pass. eval.jl is the general evaluator: it serves results collection, and the nodes that track evaluated properties or items. Document (document.jl) is the instance model: the UTF-8 text plus a flat tape, two words per value. names.jl is the property name lookup, pattern.jl the regex-free pattern matchers, and src/ecmaregex (the EcmaRegex submodule) the ECMA-262 translator over PCRE2 behind every other pattern. validator.jl has the public functions, and precompile.jl the workload that puts the evaluator in the package image.

The package has no dependencies. Keep it that way: the benchmark and Bowtie harnesses are projects of their own for that reason (src-jl/CorvusJsonSchemaBench, src-jl/CorvusJsonSchemaBowtie), and PackageCompiler is used only by the benchmark's optional system image.

The package README describes the design. OPTIMIZATIONS.md maps every optimisation to its counterpart in the C#, Rust, Java and Go 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

Julia 1.10 or later. From src-jl/CorvusJsonSchema:

bash
julia --startup-file=no --project=. -t 4 test/runtests.jl               # every test, as CI runs them
julia --startup-file=no --project=. -e 'using Pkg; Pkg.test()'          # the same, as a user's Pkg.test does
julia --startup-file=no -t 4 test/ecmaregex/runtests.jl                 # the pattern engine alone, from its sources
JSONSCHEMA_BENCHMARK=<jsonschema-benchmark> julia --startup-file=no --project=. -t 4 test/runtests.jl   # also plans against the general evaluator

Run them on the oldest Julia (1.10) and the latest before a change is done. Pkg.test adds --check-bounds=yes on Julia 1.10 to 1.12 and not on 1.13, so the script is what CI runs on every version.

The suites read the repository's JSON-Schema-Test-Suite submodule (or JSON_SCHEMA_TEST_SUITE, and CORVUS_JSON_SCHEMA_TEST_SUITE for the pattern engine's tests). 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.

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

src-jl/CorvusJsonSchemaBowtie runs the Bowtie harness over IHOP on the required and annotation suites, and src-jl/CorvusJsonSchemaBench runs the benchmark programs on small corpora (their READMEs say how to set the projects up). CI (.github/workflows/julia.yml) runs all of these on Linux x64 and arm64, Windows and macOS, with Julia 1.10, 1.11, 1.12 and the latest. Manifest.toml files are not committed.

Julia versions, PCRE2 and Unicode data

Project.toml says julia = "1.10". Use no language or library feature newer than Julia 1.10.

The package takes no Unicode data from Julia or from the PCRE2 that Julia bundles, so it gives the same results with every Julia release. Each Julia minor bundles a PCRE2 of its own with its own Unicode version (10.42 in Julia 1.10 and 1.11, 10.44 in 1.12, 10.46 in 1.13). EcmaRegex never gives PCRE2 the PCRE2_UCP option and never asks it what a character is: every class, property and case-insensitive set is written as explicit ranges from src/ecmaregex/unicode_data.jl (Unicode 17). The formats read the same tables through src/unicode.jl. Never call a Julia function that reads Unicode data (isletter, lowercase, Base.Unicode), and never build a Base.Regex, outside a test. test/unicode.jl scans the sources and fails if one appears.

src/ecmaregex/EcmaRegex.jl, emitter.jl and pcre.jl say what is written around the two PCRE2 versions the module was written against, and why. A pattern that cannot be written with exactly the same meaning is refused (PatternError with unsupported, which compile_schema reports as a CompileError). Never translate one approximately. A match that reaches a PCRE2 limit throws EcmaRegex.MatchError and is never reported as no match. The engine's tests compare with answers recorded from V8: test/ecmaregex/v8_oracle.json, a copy of the file the Go and Java ports are tested with (the Go port's testdata/gen_oracle.js writes it), and v8_fuzz.json, which test/ecmaregex/gen_fuzz_oracle.js writes. To move to a later Unicode version, change the tables and record both again with a V8 of the same version, together.

The PCRE2 callout (for a lookbehind of no fixed length) is a C function pointer. makecallout in pcre.jl makes it the first time a pattern that has a callout is matched, in a module of its own, and with @cfunction only while a package is being precompiled. A @cfunction compiled into a package image allocates on every call on Julia 1.10, which the allocation tests of test/ecmaregex/runtimetests.jl catch. Do not simplify it without running them on Julia 1.10.

Zero allocation and type stability

Validation must allocate nothing in the steady state, from a Document, a vector of bytes or a String. test/allocations.jl measures each case with @allocated. Add a case for every new keyword path. A Validator owns one evaluation state (Evaluator) and takes it with one atomic exchange. Validations that overlap take a state from the validator's pool. Evaluated-property sets come from the state's arena, and fused passes are reused through it. The README's "What allocates" lists the exceptions. Keep it true.

test/stability.jl fails if the optimised code of a hot function has a dynamic dispatch, or a hot structure has a field of an abstract type. A field of an abstract type, a Union beyond a concrete type and Nothing, or a function whose result type depends on a value, makes Julia box values and dispatch at run time, which allocates.

The reads of the tape and of the document's bytes are checked. @inbounds on them was measured and declined (OPTIMIZATIONS.md, "Measured and declined"). Do not add @inbounds or pointer reads to the evaluator.

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

The precompile workload

A schema is interpreted from compiled plans and nothing is generated at run time (OPTIMIZATIONS.md, "The execution model", has the measurement). precompile.jl runs a workload while Julia writes the package image, so the image holds the compiled evaluator and a process that loads the package compiles nothing to validate. When a change adds a code path (a new plan shape, a new entry point), add a case to the workload that takes it, and check with julia --trace-compile=stderr that a validation compiles nothing. The workload must leave nothing behind but compiled code: a compiled engine pattern holds memory of the process that made it.

Performance work

  • Work through OPTIMIZATIONS.md in its Todo order. Measure each change before keeping it.
  • In process: src-jl/CorvusJsonSchemaBench/compare.jl (see its README) runs the jsonschema-benchmark corpora with CorvusJsonSchema and JSONSchema.jl, interleaving the engines' passes.
  • Against Blaze and the other Corvus evaluators: build the image (pwsh Build-Image.ps1 in src-jl/CorvusJsonSchemaBench/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. The Performance tables of the README and docs/JsonSchemaForJulia.md hold the figures of the last such run. Change them only from a new one.
  • The package's code is what the package IMAGE holds, not what a session shows. Julia does not inline into a recursive cycle it is still compiling, so run_child, run and apply_opt were real calls in the image though @code_typed showed them inlined. They are macros (@run_child, @run) for that reason. Check the image (objdump of the package's .so) when a hot path is slower than its source suggests.
  • A multi-byte read is checked once only in the forms OPTIMIZATIONS.md lists ("Bounds checks the compiler removes"), and Julia 1.10 and 1.13 accept different ones. Use le64 and le32. Do not add @inbounds.
  • To see what Julia compiled and inferred: @code_warntype, @code_llvm, and --trace-compile=stderr for what a process compiles at run time.

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.jl and test/results.jl, which reproduces the C# ResultsTests/ResultPathTests expectations. Format recognition follows SchemaCompiler.GetFormatKind (formats.jl). A change to a plan in the Go module (plan.go, fused.go) or the Rust crate (eval/plan.rs, eval/plan/fused.rs) usually ports line for line to plan.jl and fused.jl. Patterns have ECMA-262 semantics through EcmaRegex, which is a port of the Java library's EcmaRegex.java (see corvus-ecma-regex for the .NET translator).

Releasing the package

Versioned independently, with its history in src-jl/CorvusJsonSchema/VERSIONHISTORY.md. Bump version in Project.toml, add the history entry, and merge. .github/workflows/julia-publish.yml runs the tests, asks JuliaRegistrator to register the version in Julia's General registry with a comment on the commit, waits for the registry to merge it, and tags CorvusJsonSchema-v<version>. See docs/ReleaseProcess.md, "The Julia package". Never push that tag by hand before the version is registered. In 0.x a new minor version is a breaking release.

Integrations

  • src-jl/CorvusJsonSchemaBench/jsonschema-benchmark/: the implementations/corvus-jl directory for jsonschema-benchmark. Its Dockerfile needs the registered package, so local builds use Build-Image.ps1.
  • src-jl/CorvusJsonSchemaBowtie/: the Bowtie harness and its image.
  • Docs: docs/JsonSchemaForJulia.md, its row in docs/OtherLanguages.md, and the home page's language list. The code samples in the docs and the README are run by test/docs.jl, which reads the two files: a statement with a comment after it is checked against the comment, and so is what a sample prints.

© 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-julia-evaluator of corvus-dotnet/Corvus.JsonSchema.

Open the folder on GitHubat commit ca269a3

Compare with similar skills

Corvus Julia 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 Julia Evaluator compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Corvus Julia Evaluator this skillcorvus-dotnet/Corvus.JsonSchema200—~3kAutomated safety check: PassApache-2.0
Build Teaql Appteaql/teaql-agent-kit2.8k—~4.6kAutomated safety check: PassMIT
Create Module FileMichealWayne/fe-tools207—~381Automated safety check: PassNone
Growing Outside In Systemslexler/skill-factory2391 repos~1.9kAutomated safety check: PassApache-2.0
Module Level Code TranslatorArabelaTso/Skills-4-SE253—~1.9kAutomated safety check: PassApache-2.0
Code TranslationArabelaTso/Skills-4-SE253—~3.1kAutomated safety check: PassApache-2.0

Similar skills

  • Build Teaql App

    teaql/teaql-agent-kit

    Build or change a TeaQL application in Java, Rust, Go, Swift, Python, C/.NET, or TypeScript, including Kotlin/JVM applications that consume Java-generated libraries.

    2.8k GitHub stars~4.6k tokensUpdated 13 days ago
    MobileAuto-check passed
  • Create Module File

    MichealWayne/fe-tools

    Create a new module file for fe-tools utilities. An agent skill from MichealWayne/fe-tools.

    207 GitHub stars~381 tokensUpdated 1 mo ago
    DevelopmentAuto-check passed
  • Growing Outside In Systems

    lexler/skill-factory

    Drive feature development using Outside-In TDD with Hexagonal Architecture.

    239 GitHub starsUsed in 1 repo~1.9k tokens
    Testing & QAAuto-check passed
  • Module Level Code Translator

    ArabelaTso/Skills-4-SE

    Translate source code between programming languages at function, class, and module levels while preserving behavior and generating verification tests.

    253 GitHub stars~1.9k tokensUpdated 1 mo ago
    Writing & ContentAuto-check passed
  • Code Translation

    ArabelaTso/Skills-4-SE

    Convert code between programming languages while preserving functionality and semantics.

    253 GitHub stars~3.1k tokensUpdated 1 mo ago
    Writing & ContentAuto-check passed
  • Polyglot Test Agent

    boshi-xixixi/TraeSkill

    Generates comprehensive, workable unit tests for any programming language using a multi-agent pipeline.

    276 GitHub stars~1.7k tokensUpdated 5 mo ago
    Testing & QAAuto-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.

    200 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.

    200 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.

    200 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.

    200 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…

    200 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.

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

Questions about Corvus Julia Evaluator

What does Corvus Julia Evaluator do?

Work on the Julia port of the V5 standalone schema evaluator (src-jl/CorvusJsonSchema, package CorvusJsonSchema): loader, compiler, the fail-fast plans and fused object plans, results collector and…. JsonSchema. Work on the Julia port of the V5 standalone schema evaluator (src-jl/CorvusJsonSchema, package CorvusJsonSchema): loader, compiler, the fail-fast plans and fused object plans, results collector and annotations, the document parser, the ECMA-262 pattern translator over PCRE2, the precompile workload, the allocation and type stability tests, the conformance and annotation suites, the jsonschema-benchmark and Bowtie integrations, and performance measurement.

When should I use Corvus Julia Evaluator?

Corvus Julia Evaluator fits situations like: debugging the Julia evaluator; measuring it against the other Corvus evaluators and Blaze; running its Bowtie harness; releasing the package to Julias General registry.

How do I install Corvus Julia Evaluator in Claude Code?

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

How do I install Corvus Julia Evaluator in Codex?

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

Can I use Corvus Julia 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-julia-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-julia-evaluator, .gemini/skills/corvus-julia-evaluator, .github/skills/corvus-julia-evaluator and .opencode/skills/corvus-julia-evaluator in your project.

What does Corvus Julia Evaluator need to run?

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

Does Corvus Julia 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 Julia 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 Julia Evaluator use?

Corvus Julia 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 Julia Evaluator use?

About 3k tokens (SKILL.md is roughly 12k 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 Julia Evaluator?

Skills that share tags, products or a category with Corvus Julia Evaluator: Build Teaql App (teaql/teaql-agent-kit, 2.8k stars), Create Module File (MichealWayne/fe-tools, 207 stars), Growing Outside In Systems (lexler/skill-factory, 239 stars) and Module Level Code Translator (ArabelaTso/Skills-4-SE, 253 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Corvus Julia Evaluator?

corvus-dotnet (a GitHub organization) maintains it in corvus-dotnet/Corvus.JsonSchema, which has 200 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.