CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

bun-ffi

This skill should be used when the user asks about "bun:ffi", "foreign function interface", "calling C from Bun", "native libraries", "dlopen", "shared libraries", "calling native code", or integrating C/C++ libraries with Bun.

54

Quality

68%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Passed

No findings from the security scan

Fix and improve this skill with Tessl

tessl review fix ./plugins/bun/skills/bun-ffi/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

57%Weight 40%Scale 1-5

Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.

The body is a well-organized, largely executable FFI reference with genuinely useful error-recovery guidance, but it behaves as a monolithic API document rather than an overview pointing to bundle files. Its two advertised references are missing entirely, and several snippets contain placeholders or undefined variables that break copy-paste readiness. Splitting reference material into the promised files and completing the code examples would address the weakest dimensions.

Suggestions

Actually create `references/type-mappings.md` and `references/performance.md` (or remove the "When to Load References" section) — both are advertised but missing from the bundle, and move the inline FFI type table and callback details there to slim SKILL.md toward an overview.

Replace non-executable placeholders (`dlopen(..., { ... })`, undefined `arrayPtr`/`length`/`cPointer`) with complete, copy-paste-ready examples, including the missing `toArrayBuffer` import in the callbacks section.

Add validation checkpoints around risky operations: e.g. verifying a returned pointer is non-null before dereferencing, and checking dlopen error handling before calling symbols, to pair with the existing Common Errors table.

DimensionReasoningScore

Conciseness

The 327-line body is essentially an inlined API reference: the FFI types section enumerates every type, every snippet repeats its imports, and the platform-path section shows three variants of the same task. Prose is lean (no explanations of concepts Claude already knows), so it clears anchor 2 but fits anchor 3 ("mostly efficient but could be tightened").

3 / 5

Actionability

Most snippets are executable TypeScript covering the common cases (quick start, strings, buffers, callbacks, SQLite), but several blocks use non-executable `{ ... }` placeholders, the callback example references undefined `arrayPtr`/`length` and an unimported `toArrayBuffer`, and `lib.symbols.free(cPointer)` uses undefined variables. Minor gaps place it at anchor 4 rather than 5.

4 / 5

Workflow Clarity

Topics are logically sequenced (loading → types → functions → strings → pointers → structs → callbacks → example → memory → errors) and the Common Errors table gives some recovery guidance, but there are no validation checkpoints for risky operations like memory management where segfaults are expected failures. Sequence without checkpoints matches anchor 3.

3 / 5

Progressive Disclosure

The "When to Load References" section is a clearly signaled navigation aid, but both referenced files (`references/type-mappings.md`, `references/performance.md`) do not exist in the bundle, and ~330 lines of type/API reference that belong in separate files are fully inlined. Structure is present (not anchor 2's minimal structure) but organization is compromised by dangling references and inlined bulk, matching anchor 3.

3 / 5

Total

13

/

20

Passed

Description

65%Weight 40%Scale 1-5

Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.

The description is trigger-rich and highly distinct, with natural terms users would actually say, but it is entirely a "when" clause. It never states the skill's capabilities in its own words, leaving the "what" implied. Adding a brief third-person capability statement would make it complete.

Suggestions

Lead with a capability statement in third person, e.g. "Calls native C/C++ libraries from JavaScript using Bun's FFI (dlopen, pointers, callbacks, structs). This skill should be used when..." — this fixes the implied-only "what" that keeps completeness low.

Add file-extension and abbreviation trigger terms users naturally mention: ".so", ".dylib", ".dll", and bare "FFI".

Mention one or two concrete sub-capabilities (e.g. passing/receiving strings and pointers, wrapping callbacks) to lift specificity from implied actions to explicitly listed ones.

DimensionReasoningScore

Specificity

Concrete domain actions like "calling C from Bun" and "integrating C/C++ libraries with Bun" appear only inside the trigger list; no explicit capability statement is made. This matches anchor 3 (domain plus 1-2 concrete actions, not comprehensive) rather than 4, which expects several explicitly listed actions.

3 / 5

Completeness

The "when" is explicit and rich ("This skill should be used when the user asks about..."), but the "what" is only implied through trigger phrases — the description never states what the skill does. It sits below anchor 4, which requires both what and when to be present with only one improvable.

3 / 5

Trigger Term Quality

Good natural coverage including "bun:ffi", "dlopen", "native libraries", "calling C from Bun", and "foreign function interface". It falls short of anchor 5 because common variations and file extensions users might mention (".so", ".dylib", ".dll", bare "FFI") are absent.

4 / 5

Distinctiveness Conflict Risk

"bun:ffi" and Bun-specific phrasing ("calling C from Bun") carve a clear niche with triggers unlikely to fire for Node.js or generic C tooling skills. Minimal conflict risk, matching anchor 5.

5 / 5

Total

15

/

20

Passed

Validation

93%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation — 15 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

referenced_paths_exist

Referenced path issues: 2 missing

Warning

Total

15

/

16

Passed

Repository

secondsky/claude-skills

Path

plugins/bun/skills/bun-ffi/SKILL.md

Reviewed

Table of Contents

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.