Babysitter FFI Design
Expert skill for designing and implementing foreign function interfaces to native code
install
source · Clone the upstream repo
git clone https://github.com/a5c-ai/babysitter
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/a5c-ai/babysitter "$T" && mkdir -p ~/.claude/skills && cp -r "$T/library/specializations/programming-languages/skills/ffi-design" ~/.claude/skills/a5c-ai-babysitter-ffi-design && rm -rf "$T"
manifest:
library/specializations/programming-languages/skills/ffi-design/SKILL.mdsource content
FFI Design Skill
Overview
Expert skill for designing and implementing foreign function interfaces to native code.
Capabilities
- Design FFI declaration syntax
- Implement type marshaling between languages
- Handle C calling conventions (cdecl, stdcall, fastcall)
- Implement callback support (native calling managed)
- Handle string encoding conversions
- Implement struct layout matching (padding, alignment)
- Design memory ownership transfer rules
- Support dynamic library loading
Target Processes
- ffi-implementation.js
- interpreter-implementation.js
- bytecode-vm-implementation.js
- code-generation-llvm.js
Dependencies
- libffi
- Platform ABI documentation
Usage Guidelines
- Safety: Design safe wrappers around unsafe FFI calls
- Marshaling: Document type marshaling rules explicitly
- Ownership: Make memory ownership clear at FFI boundaries
- Callbacks: Handle callback lifetimes carefully
- Strings: Handle string encoding conversions correctly (UTF-8, UTF-16)
Output Schema
{ "type": "object", "properties": { "callingConventions": { "type": "array", "items": { "type": "string" } }, "marshalingRules": { "type": "array", "items": { "type": "object", "properties": { "sourceType": { "type": "string" }, "targetType": { "type": "string" } } } }, "callbackSupport": { "type": "boolean" }, "generatedFiles": { "type": "array", "items": { "type": "string" } } } }