Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add datathings/marketplace --skill greycat-cgit clone --depth 1 https://github.com/datathings/marketplaceWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/datathings/marketplace/greycat-c)<a href="https://agentmods.dev/skills/datathings/marketplace/greycat-c"><img src="https://agentmods.dev/badge/skills/datathings/marketplace/greycat-c/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/datathings/marketplace/greycat-c"><img src="https://agentmods.dev/badge/skills/datathings/marketplace/greycat-c.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector pass
What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00184 | $0.05859 |
| Opus 5 | $0.00092 | $0.02929 |
| Sonnet 5 | $0.00037 | $0.01172 |
| Haiku 4.5 | $0.00018 | $0.00586 |
Grade A, and why
greycat-c scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured today.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 194 lines — stays where its author put it; the contents beside it link to each section on GitHub.
GreyCat SDK - C API, Standard Library & Plugin Development
Comprehensive reference for GreyCat native development (C API), the GCL Standard Library, and plugin development patterns. Tracks SDK 8.3 (headers re-verified 2026-09-09 against upstream 0dc6e7632). Changes since 8.2:
gc_object__is_instance_ofnow accounts for monomorphization — aBox<String>instance now tests true against the generic declarationBox, not just exact-type/inheritance matches as before. Signature unchanged. See api_memory_text.md.- Stdlib:
runtime::Log.timeis explicitly@format(DurationUnit::microseconds)— the field was always written as raw epoch microseconds by the log writer, now the type declares it instead of leaving it implicit. Readingfiles/root/log.csvwithCsvReader<runtime::Log>needsCsvFormat { string_delimiter: '\0' }, since the payload column is written unescaped. See standard_library.md.
Previously, in 8.2 (headers re-verified 2026-08-28 against upstream e1e7edf54):
- New:
gc_dtz_time__parse_format(str, len, format, format_len, tz, out_epoch_us)— parses a date/time string against an explicit format, the counterpart ofgc_dtz_time__printand the custom-format arm ofgc_dtz_time__parse. A format leaves the instant naive, sotzis the zone it is read in; returnsfalsewhen the input does not match the format, or names an instant the zone does not have. See api_services.md. - New: CLI hooks on
gc_program_library. Two optionalgc_hook_function_t *fields —installandcodegen— with settersgc_program_library__set_install_hook(lib, hook)andgc_program_library__set_codegen_hook(lib, hook). The install hook runs at the end of a successfulgreycat install(after the project is rebuilt and linked) for every library that registers one; returningfalsefails the command. The codegen hook makes the library itself a generator forgreycat codegen <lang>, dispatched by matching<lang>against library names (the built-inc/ts/java/rust/python2generators stay native to the CLI). Both are purely additive — aNULLhook opts out. See plugin_development.md, api_core.md. - New: resolved host configuration exposed to native libraries.
gc/env.hdefinesgc_env_slot_t(tagged-by-convention union:bool/i64_t/u64_t/f64_t/char *) andgc_env_options_offset_t(one variant per CLI/.env-resolved option, e.g.gc_env_options__port,gc_env_options__ca_path, terminated by the length markergc_env_options_len). The newgc_host__options(host)returns aconst gc_env_slot_t *array indexed by that enum, valid for the life of the host.gc/ca.h's newgc_ssl_ca__pem_bundle(u64_t *len)hands out the resolved TLS trust chain (system CA store +ca_path) as a PEM byte string, owned by the runtime — for libraries that verify their own TLS connections and want to honor the same trust config as the host. Both headers are pulled in automatically viagreycat.h. Full detail: api_runtime_storage.md. - New:
gc_machine__this_type(self)— thegc_type_tcounterpart togc_machine__this; returnsgc_type_undefined(and must not be called) when the current frame has no receiver. New:gc_abi__finalize_ex(abi)— releases everything a load allocated but notabiitself, for callers that own agc_abi_tinline rather than throughgc_abi__create. Both added for the Rust SDK rewrite. See api_core.md, api_runtime_storage.md. - Breaking:
gc_slot_tunion field order changed.u64_t u64is now the first member (previouslybool bwas first), to stop positional (non-designated) initializers from silently truncating throughbool. Any code using a non-designatedgc_slot_tinitializer ((gc_slot_t){x}with no.field =) now targets.u64instead of.b— designated initializers ({.i64 = x},{.object = p}, etc., used throughout this SDK's own examples) are unaffected. See api_core.md. - Breaking: three
gc/buffer.htype-name helpers removed, no replacement.gc_buffer__add_type_name,gc_buffer__add_type_name_by_id, andgc_buffer__add_type_qnameare gone from the header entirely (briefly exported, then removed again in the same cycle — never shipped as stable). Code calling any of the three no longer compiles. Every remaininggc/buffer.hfunction is now uniformlygc_sdk-exported (some previously lacked the export macro and could fail to link from a plugin shared library on strict-visibility builds) — this includes the pre-existing non-static inlinewriter functions (gc_buffer__write_u8/_bool/_u16/_u32/_u64/_u64_at/_f64/_vu32/_vu64/_vi64/_ptr), now reliably linkable from callers (e.g. FFI bindings) that can't call a Cstatic inlinefunction. See api_memory_text.md.
What ships with it
7 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- today Changed · +5 lines bf02a2169814
- 10d ago First seen · 189 lines · 184 tokens per session scan A 421ec2582cbd
greycat-c is a skill published in the GitHub repository datathings/marketplace (11 stars, last pushed today), licensed Apache-2.0. It adds 184 tokens to every session and 5,859 once invoked, about $0.0009 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
zoom-meeting-sdk-unreal
Zoom Meeting SDK for Unreal Engine wrapper integrations. Use when building Unreal projects that embed Zoom meetings with C++ and Blueprint wrappers, including wrapper-to-SDK mapping concerns.
ax-cpp-gen
Use when writing C++ code with axllm for AxGen programs, forward calls, indexed multi-sampling, result pickers, streaming, tools, assertions, traces, usage, and output parsing.
doca-argp
Use this skill for hands-on DOCA Arg Parser CLI work on a shipped sample or new DOCA-using app — adding / removing / renaming flags; wiring docaargpinit → register params → docaargpstart → docaargpdestroy in order; picking a parameter type from the full public enum (DOCAARGPTYPESTRING, INT, BOOLEAN, DEVICE, DEVICEREP…
cpu-kernels
Provides guidance for writing, optimizing, and benchmarking C++ CPU kernels with SIMD intrinsics (AVX2/AVX512) for the Hugging Face kernels ecosystem. Includes a two-phase workflow: Phase 1 correctness (generic → AVX2) and Phase 2 performance exploration (AVX512 with branching trial loop), runtime CPU dispatch, OpenMP…
llvm-learning
Comprehensive learning resources and tutorials for LLVM, Clang, and compiler development. Use this skill when helping users learn LLVM internals, find educational resources, or understand compiler concepts.
llvm-security
Expertise in LLVM security features including sanitizers, hardening techniques, exploit mitigations, and secure compilation. Use this skill when implementing security-focused compiler features, analyzing vulnerabilities, or hardening applications.