Agent skill

Corvus Buffer And Pooling

by corvus-dotnet in 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.

Apache-2.0Auto-check passedAI & LLM Engineering

Install Corvus Buffer And Pooling

skills CLI
$ npx skills add corvus-dotnet/Corvus.JsonSchema --skill corvus-buffer-and-pooling -a claude-code

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

GitHub CLI
$ gh skill install corvus-dotnet/Corvus.JsonSchema corvus-buffer-and-pooling --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-buffer-and-pooling .claude/skills/corvus-buffer-and-pooling && 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-buffer-and-pooling
GitHub stars
199
Token cost
~2.9k tokens
SKILL.md length
984 words
Files
1
Skills in repo
26
Repo updated
First seen
Licence
Apache-2.0

At a glance

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

  • Works in 5 steps: Declare rentedArray before the ternary —… → Use the named constant, not a magic… → Always slice to length —… → …
  • : writing any code that needs temporary byte/char buffers
  • SKILL.md covers The Three-Tier Pooling Hierarchy, Tier 1 + 2: The stackalloc /…, Tier 2: ArrayPool Usage in… and Tier 3: Thread-Local Caches, plus 4 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Corvus Buffer And Pooling is an agent skill from 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. Covers threshold constants, the rent/return pattern, UTF-8-first processing, thread-local writer and workspace caches, and PooledByteBufferWriter. USE FOR: writing any code that needs temporary byte/char buffers, adding new pooled caches, working with UTF-8 data, avoiding heap allocation on hot paths. DO NOT USE FOR: choosing which ref-struct…

Its SKILL.md is about 2.9k 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 AI & LLM Engineering, covering AI interpretability. The repository describes itself as: Support for Json Schema validation and entity generation. The licence is Apache-2.0.

When your agent uses it

  • : writing any code that needs temporary byte/char buffers
  • Adding new pooled caches
  • Working with UTF-8 data
  • Avoiding heap allocation on hot paths

Example prompts

  • “/corvus-buffer-and-pooling”

Workflow steps

5 steps, taken from the first numbered list in SKILL.md.

  1. Declare rentedArray before the ternary — it must be in scope for the finally block
  2. Use the named constant, not a magic number, for both the threshold check and the stackalloc size
  3. Always slice to length — ArrayPool.Rent() returns an array that may be larger than requested
  4. Always use try/finally to guarantee the rented array is returned
  5. For fixed-size buffers always ≤ threshold (e.g., a 128-byte scratch buffer), plain stackalloc without pool fallback is acceptable

What it can do on your machine

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

    No scripts in the folder and no shell commands in SKILL.md (its code samples are csharp).

    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 Buffer And Pooling loads about 2.9k tokens when it runs. Until then it costs about 166 tokens; SKILL.md has 984 words of instructions outside code blocks.

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

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 b9e3040, republished under its Apache-2.0 licence (© corvus-dotnet). 984 words, ~2,923 tokens.

Download SKILL.mdSave it as .claude/skills/corvus-buffer-and-pooling/SKILL.md (or your agent's skills folder).
name
corvus-buffer-and-pooling
description
Write allocation-efficient buffer code in Corvus.JsonSchema using the codebase's established three-tier pooling pattern: stackalloc → ArrayPool → ThreadStatic caches. Covers threshold constants, the rent/return pattern, UTF-8-first processing, thread-local writer and workspace caches, and PooledByteBufferWriter. USE FOR: writing any code that needs temporary byte/char buffers, adding new pooled caches, working with UTF-8 data, avoiding heap allocation on hot paths. DO NOT USE FOR: choosing which ref-struct collection to use (use corvus-low-alloc-data-structures), document model internals (use corvus-parsed-documents-and-memory).

Buffer Management and Pooling Patterns

The Three-Tier Pooling Hierarchy

All temporary buffers in this codebase follow a strict three-tier allocation strategy. Use the cheapest tier that fits.

Tier 1: stackalloc           — ≤ threshold bytes, zero cost, no cleanup needed
Tier 2: ArrayPool<T>.Shared  — larger buffers, must return in finally block
Tier 3: [ThreadStatic] cache — expensive-to-create objects (writers, workspaces), reused per thread

Tier 1 + 2: The stackalloc / ArrayPool Rent Pattern

This is the single most common pattern in the codebase. Every temporary buffer follows it exactly.

csharp
byte[]? rentedArray = null;

Span<byte> buffer = length <= JsonConstants.StackallocByteThreshold
    ? stackalloc byte[JsonConstants.StackallocByteThreshold]
    : (rentedArray = ArrayPool<byte>.Shared.Rent(length));

try
{
    DoWork(buffer.Slice(0, length));
}
finally
{
    if (rentedArray != null)
    {
        ArrayPool<byte>.Shared.Return(rentedArray);
    }
}
Threshold Constants

Defined in Common/src/System/Text/Json/JsonConstants.cs:

ConstantValueUse for
JsonConstants.StackallocByteThreshold256byte / UTF-8 buffers
JsonConstants.StackallocCharThreshold128char buffers
JsonConstants.StackallocNonRecursiveByteThreshold4096Non-recursive contexts (e.g., top-level parse)
JsonConstants.StackallocNonRecursiveCharThreshold2048Non-recursive char contexts

Use NonRecursive variants only when you can prove the call site is not recursive — otherwise stack overflow is possible.

Rules (non-negotiable)
  1. Declare rentedArray before the ternary — it must be in scope for the finally block
  2. Use the named constant, not a magic number, for both the threshold check and the stackalloc size
  3. Always slice to length — ArrayPool.Rent() returns an array that may be larger than requested
  4. Always use try/finally to guarantee the rented array is returned
  5. For fixed-size buffers always ≤ threshold (e.g., a 128-byte scratch buffer), plain stackalloc without pool fallback is acceptable
Sizing the buffer: GetMaxByteCount, not GetByteCount

When the length that sizes a transient UTF-8 scratch buffer comes from a string/char span, size it with Encoding.UTF8.GetMaxByteCount(chars.Length) (a multiply — chars.Length * 3 + 3), not Encoding.UTF8.GetByteCount(chars) (a full transcoding scan of every code point). GetMaxByteCount returns a safe upper bound, so the buffer is never under-sized; the exact filled length is whatever the subsequent Encoding.UTF8.GetBytes(chars, buffer) (or your assemble routine) returns, and you slice the buffer by that return value. The pattern is already "rent ≥ requested, then slice to actual", so an over-estimate of a few bytes costs nothing and skips the scan. Assembling several parts: sum each part's GetMaxByteCount plus exact-width separators.

csharp
// ✅ multiply, not a scan — buffer is an upper bound; `written` is the exact length the rest of the code uses
int max = Encoding.UTF8.GetMaxByteCount(text.Length);
byte[]? rented = max > Threshold ? ArrayPool<byte>.Shared.Rent(max) : null;
Span<byte> buffer = rented ?? stackalloc byte[Threshold];
int written = Encoding.UTF8.GetBytes(text, buffer);
Use(buffer[..written]);   // never the `max`

A public "how big a buffer do I need" helper that uses this should be named for the upper bound it returns (GetMaxEncodedLength, not GetEncodedLength) and documented as a safe size, not an exact count — otherwise a caller may trust it as exact. Pair it with a writer that reports what it actually wrote (EncodeToUtf8(out written)), so the caller sizes from the bound and then trims to the truth.

GetByteCount (exact) is still required — do NOT switch these to GetMaxByteCount: an exact single-shot output allocation (new byte[total] where total is the precise serialized size, e.g. WorkflowPackage.PackPooled), a structural length field written into a format (a ushort entry-name length), an offset you then copy at (dest[exactPrefixLen..]), or IBufferWriter.AppendSpan(n) / GetSpan(n)-style APIs that commit exactly n (over-sizing commits uninitialised trailing bytes). The rule is: transient scratch sliced by the actual written length → GetMaxByteCount; a value that is itself exact output, a committed length, or a copy offset → GetByteCount.

char buffer variant
csharp
char[]? rentedChars = null;

Span<char> charBuffer = length <= JsonConstants.StackallocCharThreshold
    ? stackalloc char[JsonConstants.StackallocCharThreshold]
    : (rentedChars = ArrayPool<char>.Shared.Rent(length));

try
{
    DoWork(charBuffer.Slice(0, length));
}
finally
{
    if (rentedChars != null)
    {
        ArrayPool<char>.Shared.Return(rentedChars);
    }
}

Tier 2: ArrayPool Usage in Core Types

Several core types rent directly from ArrayPool<T>.Shared:

TypeWhat it rentsPool typeReturn trigger
MetadataDbToken metadata arrayArrayPool<byte>Dispose()
ParsedJsonDocumentUTF-8 value bufferArrayPool<byte>Dispose() via Interlocked.Exchange
JsonWorkspaceDocument index arrayArrayPool<IJsonDocument>Dispose() with 2× growth on expand
Utf8KeyHashSetBuckets, entries, key bufferArrayPool<int> + ArrayPool<byte>Dispose()
PooledByteBufferWriterWrite bufferArrayPool<byte>ClearAndReturnBuffers()

When writing Dispose logic for pooled types, use Interlocked.Exchange(ref _array, null) to prevent double-return.

Tier 3: Thread-Local Caches

For objects that are expensive to construct but frequently needed, the codebase uses [ThreadStatic] caches with a depth-counter pattern:

csharp
[ThreadStatic]
private static ThreadLocalState? t_threadLocalState;

public static ExpensiveObject Rent(...)
{
    ThreadLocalState state = t_threadLocalState ??= new();
    if (state.RentedCount++ == 0)
    {
        // First (non-recursive) call — return the cached instance
        state.CachedObject.Reset(...);
        return state.CachedObject;
    }
    // Recursive call — allocate a fresh instance
    return new ExpensiveObject(...);
}

public static void Return(ExpensiveObject obj)
{
    ThreadLocalState state = t_threadLocalState!;
    if (--state.RentedCount == 0)
    {
        state.CachedObject.ResetAllStateForCacheReuse();
        // Cached object stays in thread-local for next Rent
    }
    else
    {
        obj.Dispose(); // Recursive instance — dispose immediately
    }
}

Three caches follow this pattern:

Cache classWhat it poolsKey file
Utf8JsonWriterCacheUtf8JsonWriter + PooledByteBufferWriter pairWriter/Utf8JsonWriterCache.cs
JsonWorkspaceCacheJsonWorkspace instancesDocumentBuilder/Internal/JsonWorkspaceCache.cs
JsonSchemaResultsCollectorCacheSchema validation result collectorsJsonSchema/Internal/JsonSchemaResultsCollectorCache.cs
Show full SKILL.md (414 more words)Show less
Rules for thread-local caches
  • The depth counter is critical — it handles recursive re-entry (e.g., schema validation validating a sub-schema)
  • ResetAllStateForCacheReuse() must clear all mutable state without reallocating internal buffers
  • Only cache objects where construction cost justifies the pattern (writers with internal buffers, workspaces with document arrays)

UTF-8-First Processing

The entire parsing and validation pipeline operates on ReadOnlySpan<byte> (UTF-8). Strings are only created when the user explicitly requests them.

Key principle: never create System.String on hot paths
  • URI components: Utf8Uri is a readonly ref struct that stores integer offsets into the original UTF-8 byte span — component accessors return Slice() calls, not substrings
  • Format validation (date, email, URI, regex): operates directly on ReadOnlySpan<byte>
  • Property lookup: PropertyMap hashes UTF-8 bytes directly via Utf8Hash.GetHashCode() — no string at any point
  • Use UTF-8 string literals ("..."u8) for static byte arrays (character sets, fixed tokens)
When you must transcode

Use JsonReaderHelper.TranscodeHelper — four overloads with zero allocation except when a string is genuinely needed:

SignatureAllocation
string TranscodeHelper(ReadOnlySpan<byte>)One string (unavoidable)
int TranscodeHelper(ReadOnlySpan<byte>, Span<char>)Zero — writes to caller's buffer
bool TryTranscode(ReadOnlySpan<byte>, Span<char>, out int)Zero — non-throwing variant
int TranscodeHelper(ReadOnlySpan<char>, Span<byte>)Zero — reverse direction
SearchValues on .NET 8+

Use SearchValues<byte> for character class matching:

csharp
private static readonly SearchValues<byte> s_controlQuoteBackslash =
    SearchValues.Create("\u0000\u0001...\u001F\"\\"u8);

This is vectorised by the JIT. On older TFMs, fall back to manual Span.IndexOfAny().

PooledByteBufferWriter

The bridge between ArrayPool and IBufferWriter<byte>. Wraps an ArrayBuffer that rents from the shared pool.

  • Used by Utf8JsonWriterCache to provide pre-allocated write buffers
  • ClearAndReturnBuffers() returns memory to the pool without disposing the writer itself
  • ArrayBuffer uses a sliding-window pattern: Discard(n) advances read position, Commit(n) extends write position, growth doubles capacity

Common Pitfalls

MistakeConsequenceFix
Missing try/finally on rented arrayMemory leak from ArrayPoolAlways wrap in try/finally
Using magic number 256 instead of JsonConstants.StackallocByteThresholdInconsistency, harder to changeUse the named constant
Forgetting to slice rented bufferProcessing garbage bytes beyond lengthAlways buffer.Slice(0, length)
Returning rented array twicePool corruptionUse Interlocked.Exchange(ref arr, null)
Creating string from UTF-8 on a hot pathUnnecessary GC pressureUse ReadOnlySpan<byte> throughout, transcode only at the boundary
GetByteCount(chars) to size a transient scratch bufferA full transcoding scan where a multiply would doGetMaxByteCount(chars.Length), slice by the actual GetBytes return — but keep GetByteCount for an exact output allocation, a length field, or a copy offset
Using NonRecursive threshold in recursive codeStack overflowOnly use when call site is provably non-recursive

Cross-References

  • For ref-struct collections (hash sets, list builders, string builders), see corvus-low-alloc-data-structures
  • For document memory model and disposal, see corvus-parsed-documents-and-memory
  • For full conventions, see .github/copilot-instructions.md

© 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-buffer-and-pooling of corvus-dotnet/Corvus.JsonSchema.

Open the folder on GitHubat commit b9e3040

Compare with similar skills

Corvus Buffer And Pooling 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 Buffer And Pooling compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Corvus Buffer And Pooling this skillcorvus-dotnet/Corvus.JsonSchema199—~2.9kAutomated safety check: PassApache-2.0
Esmfold2JimLiu/science-skills2274 repos~2.5kAutomated safety check: PassApache-2.0
ObliteratusRedWoodOG/Hermes-Desktop1776 repos~3.8kAutomated safety check: PassMIT
Sparse Autoencoder Training with SAELensOrchestra-Research/AI-Research-SKILLs13k6 repos~3.2kAutomated safety check: PassMIT
TransformerLens InterpretabilityOrchestra-Research/AI-Research-SKILLs13k4 repos~3kAutomated safety check: PassMIT
Nnsight Remote InterpretabilityOrchestra-Research/AI-Research-SKILLs13k3 repos~3.3kAutomated safety check: PassMIT

Similar skills

  • Esmfold2

    JimLiu/science-skills

    Biohub ESMFold2 / ESMFold2-Fast all-atom co-folding (Candido et al.

    227 GitHub starsUsed in 4 repos~2.5k tokens
    AI & LLM EngineeringAuto-check passed
  • Obliteratus

    RedWoodOG/Hermes-Desktop

    Remove refusal behaviors from open-weight LLMs using OBLITERATUS — mechanistic interpretability techniques (diff-in-means, SVD, whitened SVD, LEACE, SAE decomposition, etc.) to excise guardrails…

    177 GitHub starsUsed in 6 repos~3.8k tokens
    AI & LLM EngineeringAuto-check passed
  • Sparse Autoencoder Training with SAELens

    Orchestra-Research/AI-Research-SKILLs

    Guides training and analyzing sparse autoencoders with SAELens to break neural network activations into interpretable features, including superposition and monosemanticity studies.

    13k GitHub starsUsed in 6 repos~3.2k tokens
    AI & LLM EngineeringAuto-check passed
  • TransformerLens Interpretability

    Orchestra-Research/AI-Research-SKILLs

    Guides mechanistic interpretability work with TransformerLens: loading models, caching activations, using HookPoints, activation patching and attention-pattern analysis.

    13k GitHub starsUsed in 4 repos~3k tokens
    AI & LLM EngineeringAuto-check passed
  • Nnsight Remote Interpretability

    Orchestra-Research/AI-Research-SKILLs

    Provides guidance for interpreting and manipulating neural network internals using nnsight with optional NDIF remote execution.

    13k GitHub starsUsed in 3 repos~3.3k tokens
    AI & LLM EngineeringAuto-check passed
  • pyvene Causal Interventions

    Orchestra-Research/AI-Research-SKILLs

    Guides causal experiments on PyTorch models with pyvene, such as causal tracing, activation patching and interchange intervention training, to test how a model works.

    13k GitHub starsUsed in 3 repos~3.5k tokens
    AI & LLM EngineeringAuto-check passed

More from corvus-dotnet/Corvus.JsonSchema

All 26 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 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
  • Corvus Ctj Handler Implementation

    corvus-dotnet/Corvus.JsonSchema

    Implement OpenAPI server handlers using Corvus.Text.Json generated types.

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

Questions about Corvus Buffer And Pooling

What does Corvus Buffer And Pooling do?

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

When should I use Corvus Buffer And Pooling?

Corvus Buffer And Pooling fits situations like: : writing any code that needs temporary byte/char buffers; adding new pooled caches; working with UTF-8 data; avoiding heap allocation on hot paths.

How do I install Corvus Buffer And Pooling in Claude Code?

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

How do I install Corvus Buffer And Pooling in Codex?

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

Can I use Corvus Buffer And Pooling 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-buffer-and-pooling -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-buffer-and-pooling, .gemini/skills/corvus-buffer-and-pooling, .github/skills/corvus-buffer-and-pooling and .opencode/skills/corvus-buffer-and-pooling in your project.

What does Corvus Buffer And Pooling need to run?

SKILL.md names no scripts, command-line tools or credentials: Corvus Buffer And Pooling is instructions for the agent only.

Does Corvus Buffer And Pooling 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 Buffer And Pooling 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 Buffer And Pooling use?

Corvus Buffer And Pooling 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 Buffer And Pooling use?

About 2.9k 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 Buffer And Pooling?

Skills that share tags, products or a category with Corvus Buffer And Pooling: Esmfold2 (JimLiu/science-skills, 227 stars), Obliteratus (RedWoodOG/Hermes-Desktop, 177 stars), Sparse Autoencoder Training with SAELens (Orchestra-Research/AI-Research-SKILLs, 13k stars) and TransformerLens Interpretability (Orchestra-Research/AI-Research-SKILLs, 13k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Corvus Buffer And Pooling?

corvus-dotnet (a GitHub organization) maintains it in corvus-dotnet/Corvus.JsonSchema, which has 199 GitHub stars. The repository holds 26 skills in this directory. The repository was last updated on October 8, 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.