Find Untested Sources
dotnet/skills
Statically pairs source files with test files to list code that no test references, using Roslyn for C# or tree-sitter for many languages, with no build.
Audit bindings for coverage gaps — verify every public Rust item is exposed across all generated language bindings.
$ npx skills add xberg-io/alef --skill binding-audit -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install xberg-io/alef binding-audit --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/xberg-io/alef.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.ai-rulez/skills/binding-audit .claude/skills/binding-audit && rm -rf skills-srcUse ~/.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/
Install the "binding-audit" agent skill from https://github.com/xberg-io/alef/tree/main/.ai-rulez/skills/binding-audit into .claude/skills/binding-audit/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "binding-audit", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/xberg-io/alef/tree/main/.ai-rulez/skills/binding-auditType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add xberg-io/alef --skill binding-audit -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install xberg-io/alef binding-audit --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/xberg-io/alef.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.ai-rulez/skills/binding-audit .agents/skills/binding-audit && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "binding-audit" agent skill from https://github.com/xberg-io/alef/tree/main/.ai-rulez/skills/binding-audit into .agents/skills/binding-audit/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "binding-audit", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add xberg-io/alef --skill binding-audit -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install xberg-io/alef binding-audit --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/xberg-io/alef.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.ai-rulez/skills/binding-audit .cursor/skills/binding-audit && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "binding-audit" agent skill from https://github.com/xberg-io/alef/tree/main/.ai-rulez/skills/binding-audit into .cursor/skills/binding-audit/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "binding-audit", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/xberg-io/alef.git --path .ai-rulez/skills/binding-audit--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add xberg-io/alef --skill binding-audit -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install xberg-io/alef binding-audit --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/xberg-io/alef.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.ai-rulez/skills/binding-audit .gemini/skills/binding-audit && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "binding-audit" agent skill from https://github.com/xberg-io/alef/tree/main/.ai-rulez/skills/binding-audit into .gemini/skills/binding-audit/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "binding-audit", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install xberg-io/alef binding-auditInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add xberg-io/alef --skill binding-audit -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/xberg-io/alef.git skills-src && mkdir -p .github/skills && cp -r skills-src/.ai-rulez/skills/binding-audit .github/skills/binding-audit && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "binding-audit" agent skill from https://github.com/xberg-io/alef/tree/main/.ai-rulez/skills/binding-audit into .github/skills/binding-audit/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "binding-audit", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add xberg-io/alef --skill binding-audit -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install xberg-io/alef binding-audit --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/xberg-io/alef.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.ai-rulez/skills/binding-audit .opencode/skills/binding-audit && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "binding-audit" agent skill from https://github.com/xberg-io/alef/tree/main/.ai-rulez/skills/binding-audit into .opencode/skills/binding-audit/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "binding-audit", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
binding-auditAudit bindings for coverage gaps — verify every public Rust item is exposed across all generated language bindings.
Binding Audit is an agent skill from xberg-io/alef. Audit bindings for coverage gaps — verify every public Rust item is exposed across all generated language bindings. Use this skill any time you need to check that a function/type is present in every target language, audit intentional exclusions, or investigate missing bindings in one or more languages. Covers the full audit flow: config review, attribute scan, item enumeration, cross-binding diff, gap reporting, and triage (alef vs Alef-owned workflow/action vs consumer config).
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 Testing & QA, covering Test coverage. It works with Rust. The repository describes itself as: Generate fully-typed, lint-clean language bindings for Rust libraries across 16 languages. The licence is MIT.
7 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit fc04366. It shows what the files ask for, not the result of running them.
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.
No scripts in the folder and no shell commands in SKILL.md (its code samples are bash).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Binding Audit loads about 2.9k tokens when it runs. Until then it costs about 124 tokens; SKILL.md has 990 words of instructions outside code blocks.
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.
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.
The full file from xberg-io/alef at commit fc04366, republished under its MIT licence (© xberg-io). 990 words, ~2,881 tokens.
.claude/skills/binding-audit/SKILL.md (or your agent's skills folder).Verify that every public Rust item has a corresponding binding in all target languages. Identify coverage gaps and triage them upstream.
[crates.exclude] (types/functions/methods/fields) inside a [[crates]] entry, crate-wide and unioned across every language; per-language exclude_types / exclude_functions directly on each [crates.<lang>] table; [workspace.opaque_types], workspace-level only, which remaps a type rather than excluding it. At the attribute level, the extractor accepts three spellings — #[alef::skip], #[alef(skip)], and either nested in #[cfg_attr(...)] (the form in common use) — plus #[doc(hidden)]; #[alef::exclude] and #[alef::opaque] do not exist. Only flag items not covered by these.CHANGELOG.md — each upstream fix gets an [Unreleased] entry.From the source repo (the Rust library being bound, not alef itself):
# Open alef.toml and record:
# - [languages] enabled backends
# - [e2e] enabled language suites
# - [crates.exclude] items (types/functions/methods/fields) inside a [[crates]]
# entry — crate-wide, unioned across every language
# - Per-language exclude_types / exclude_functions directly on each
# [crates.<lang>] table (e.g. [crates.python].exclude_types,
# [crates.ffi].exclude_functions) — unioned with the crate-wide list for
# that language only
# - [workspace.opaque_types] — workspace-level only, no per-crate override.
# This is a type-REMAPPING declaration (Rust type name -> external path
# alef can't extract), not an exclusion list.
grep -E '^\[' alef.toml | head -20There is no [crates.skipped], no bare exclude_types key, and no per-crate override under
[workspace.crates."<name>"] — [[crates]] is a plain array (WorkspaceConfig has no crates
field; RawCrateConfig has no skipped field), so there is no name-keyed map to override into.
src/docs/language_pages/excludes.rs::language_excludes is the canonical per-language union of
the config surfaces above.
Record intentional removals. Anything listed here is not a gap.
The current backend surface is Python/PyO3, TypeScript/Node/NAPI, Ruby/Magnus, PHP, Go/cgo, Java, JNI,
C#, Elixir/Rustler, WASM, Dart, Kotlin, Kotlin Android, Swift, Zig, C FFI, R/extendr when enabled, and
Gleam when generated. Do not invent an expected package for a language that is not enabled in alef.toml.
Grep the source Rust crate for intentional removal markers. The extractor accepts three
spellings of the skip attribute, plus #[doc(hidden)]
(src/extract/extractor/helpers/attributes.rs::extract_binding_exclusion_reason, lines 304-333):
#[alef::skip], the list form #[alef(skip)], and either of those nested in #[cfg_attr(...)]
(e.g. #[cfg_attr(alef, alef(skip))] — the form in common use; the extractor's own reason
string for it is literally "alef(skip)", not "alef::skip"). A grep for only #[alef::skip]
misses the cfg_attr form and will manufacture false gaps.
#[alef::exclude] and #[alef::opaque] do not exist in alef — do not grep for or expect them.
# Find all skip-attribute spellings (bare, list-form, cfg_attr-nested) and #[doc(hidden)]
grep -rEln '#\[(cfg_attr\([^)]*,\s*)?(alef::skip|alef\(skip\))\]?|#\[doc\(hidden\)\]' --include='*.rs' .
# For each file found, inspect the context:
grep -B2 -A2 -E '#\[(cfg_attr\([^)]*,\s*)?(alef::skip|alef\(skip\))\]?|#\[doc\(hidden\)\]' <file.rs>Record the annotated items — these are intentional and do not flag as gaps.
Both attributes set the binding_excluded flag on the item's IR node at extraction time. That
flag is honored independently by every downstream consumer — each backend, src/core/jni.rs,
src/core/validation/readiness.rs, docs generation, etc. all filter on it separately; there is no
single central enforcement point. Critically, language_excludes (step 0) never consults
binding_excluded; it only reads the config surfaces. So a #[alef::skip]'d (or
#[doc(hidden)]) item is correctly invisible in every generated binding, but tooling that treats
language_excludes's answer as the complete set of intentional removals will misclassify that
skipped item as a real gap, because it never shows up in language_excludes's output at all
(live defect: alef-task #329).
From the source Rust crate, list all public items. Adjust the path glob to the source repo's layout (src/, crates/*/src/, or a workspace path):
# Functions:
grep -rE "^pub fn " src --include="*.rs" | wc -l
# Types (structs, enums):
grep -rE "^pub struct|^pub enum|^pub trait" src --include="*.rs"
# Methods (on pub types):
grep -rE "impl.*pub fn" src --include="*.rs"Build a reference set: {module::ItemName} for each public item, excluding those from step 1.
For each enabled language under packages/<lang>/, crates/*-<binding>/, or language-native output dirs:
# Python (generated stubs):
ls -la packages/python/*.pyi
grep -E "^def |^class " packages/python/*.pyi
# TypeScript / Node (generated .d.ts or package entrypoint):
grep -R -E "export (function|class|type|const) " packages/typescript crates/*-node --include="*.ts" --include="*.d.ts"
# Ruby:
grep -R -E "^ def |^ def " packages/ruby crates/*-rb --include="*.rb"
# PHP:
grep -R -E "function |class " packages/php --include="*.php"
# Go (FFI):
grep -R -E "^func " packages/go --include="*.go"
# Java / JNI:
grep -R -E "^\s+(public static|public) (native )?" packages/java packages/jni --include="*.java"
# C#:
grep -R -E "^\s+public (static|extern|class|struct)" packages/csharp --include="*.cs"
# Elixir:
grep -R -E "def |defmodule " packages/elixir --include="*.ex"
# WASM:
grep -R -E "export (function|class|type|const) " packages/wasm --include="*.ts" --include="*.d.ts"
# Dart:
grep -R -E "class |^[a-zA-Z_][a-zA-Z0-9_]*\\(" packages/dart --include="*.dart"
# Kotlin / Kotlin Android:
grep -R -E "fun |class " packages/kotlin packages/kotlin-android --include="*.kt"
# Swift:
grep -R -E "public (func|class|struct|enum)" packages/swift --include="*.swift"
# Zig:
grep -R -E "pub (fn|const|const.*= struct|const.*= enum)" packages/zig --include="*.zig"
# C FFI headers:
grep -R -E "^[a-zA-Z_][a-zA-Z0-9_ *]+ [a-zA-Z_][a-zA-Z0-9_]+\\(" packages/c crates/*-ffi --include="*.h"
# R / extendr:
grep -R -E "^[a-zA-Z.][a-zA-Z0-9_.]* <- function|#' @export" packages/r --include="*.R"
# Gleam:
grep -R -E "^pub (fn|type)" packages/gleam --include="*.gleam"For each language, build a set of exported items.
For each public Rust item, check presence across all binding sets:
# Pseudo-algorithm:
all_langs = [
"python", "typescript", "ruby", "php", "go", "java", "jni", "csharp", "elixir", "wasm",
"dart", "kotlin", "kotlin_android", "swift", "zig", "c_ffi", "r", "gleam",
]
enabled_langs = [lang for lang in all_langs if lang is enabled in alef.toml and output exists]
for each item in reference_set:
langs_present = [lang for lang in enabled_langs if item in binding_sets[lang]]
if len(langs_present) < len(enabled_langs):
report(item, langs_present, missing_from=enabled_langs - langs_present)Output: gap report with columns:
Rust item (function/type name)Present in (comma-separated languages)Missing from (comma-separated languages)Intentional? (yes if config or attribute covers it, no otherwise)For each non-intentional gap:
src/codegen/ or a specific src/backends/<lang>/. Fix in ../alef repo.alef.toml under [crates.exclude] or a per-language exclude_types / exclude_functions on [crates.<lang>]? That's intentional — no action needed upstream.For each upstream fix:
CHANGELOG.md [Unreleased] section with the gap and the fix.release-procedure skill.alef.toml and all three skip-attribute spellings (including the cfg_attr-nested form) / #[doc(hidden)] first.tests/ or a fixture under src/e2e/ to prevent regression.| Step | Command | Output |
|---|---|---|
| Config | grep -E '^\[' alef.toml | Intentional exclusions ([crates.exclude], per-language exclude_types/exclude_functions, [workspace.opaque_types]) |
| Attributes | grep -rEln '#\[(cfg_attr\([^)]*,\s*)?(alef::skip|alef\(skip\))\]?|#\[doc\(hidden\)\]' --include='*.rs' . | Annotated items |
| Public items | grep -rE "^pub fn|^pub struct" src | Reference set |
| Bindings | grep -R -E "export|def|func|public|fun " packages crates | Per-language sets |
| Gaps | Diff reference set vs per-language sets | Gap report |
| Triage | Root-cause analysis (config vs codegen vs action) | Fix location |
© xberg-io, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .ai-rulez/skills/binding-audit of xberg-io/alef.
Open the folder on GitHubat commit fc04366
Binding Audit 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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Binding Audit this skillxberg-io/alef | 100 | — | ~2.9k | Automated safety check: Pass | MIT | |
| Find Untested Sourcesdotnet/skills | 5.6k | 1 repos | ~3.3k | Automated safety check: Pass | MIT | |
| Libreqos Review Subagents WorkflowLibreQoE/LibreQoS | 719 | — | ~1.2k | Automated safety check: Pass | GPL-2.0 | |
| Reviewwebern/cargo-readme | 385 | — | ~2k | Automated safety check: Notes | Apache-2.0 | |
| Supercovsupercorp-ai/supercov | 151 | 1 repos | ~415 | Automated safety check: Pass | MIT | |
| Reviewapollographql/apollo-mcp-server | 313 | — | ~2.9k | Automated safety check: Pass | MIT |
dotnet/skills
Statically pairs source files with test files to list code that no test references, using Roslyn for C# or tree-sitter for many languages, with no build.
LibreQoE/LibreQoS
Project workflow for invoking the local review sub-agents Thomas, Helen, Beck, Jonas, The Reaper, and Heckler during LibreQoS coding sessions.
webern/cargo-readme
Reviews a GitHub pull request for correctness, architecture, security, backward compatibility, and test coverage.
supercorp-ai/supercov
Measures test coverage and code quality in a repository with the supercov CLI, and turns what it finds into small, focused tests or fixes.
apollographql/apollo-mcp-server
Review a GitHub pull request for a Rust codebase. An agent skill from apollographql/apollo-mcp-server.
supercorp-ai/supercov
Scans a repository's source for security vulnerabilities with the supercov CLI, pointing to the line of each finding and mapping it to CWE classes.
xberg-io/alef
Use Alef correctly for Rust-to-polyglot binding generation. An agent skill from xberg-io/alef.
xberg-io/alef
Mechanics of alef's Minijinja template system: which templateenv module to call, how to register a template, inline-template rules, and engine settings.
xberg-io/alef
Treat running alef generate/alef all/alef verify in a consumer repo as an audit, not a build step.
xberg-io/alef
Cut, tag, and publish an alef release end-to-end. An agent skill from xberg-io/alef.
xberg-io/alef
Alef's dominant defect shape: two components read the same config or IR and act on it differently.
Works with
Categories
Audit bindings for coverage gaps — verify every public Rust item is exposed across all generated language bindings. Binding Audit is an agent skill from xberg-io/alef. Audit bindings for coverage gaps — verify every public Rust item is exposed across all generated language bindings.
Binding Audit fits situations like: tasks that involve Test coverage.
Run `npx skills add xberg-io/alef --skill binding-audit -a claude-code`. Or copy the skill folder (.ai-rulez/skills/binding-audit in xberg-io/alef) into .claude/skills/binding-audit in your project. Claude Code loads it when a task matches its description.
Run `npx skills add xberg-io/alef --skill binding-audit -a codex`. Or copy the skill folder (.ai-rulez/skills/binding-audit in xberg-io/alef) into .agents/skills/binding-audit in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add xberg-io/alef --skill binding-audit -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/binding-audit, .gemini/skills/binding-audit, .github/skills/binding-audit and .opencode/skills/binding-audit in your project.
SKILL.md names no scripts, command-line tools or credentials: Binding Audit is instructions for the agent only. Our summary lists: Python 3.
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.
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.
Binding Audit is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
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.
Skills that share tags, products or a category with Binding Audit: Find Untested Sources (dotnet/skills, 5.6k stars), Libreqos Review Subagents Workflow (LibreQoE/LibreQoS, 719 stars), Review (webern/cargo-readme, 385 stars) and Supercov (supercorp-ai/supercov, 151 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
xberg-io (a GitHub organization) maintains it in xberg-io/alef, which has 100 GitHub stars. The repository holds 6 skills in this directory. The repository was last updated on October 9, 2026.
Source: xberg-io/alef on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.