pagghiu/sanecpplibraries/sane-cpp-libraries

Claude Code and agent skill by pagghiu/sanecpplibraries

Trust tier 3
  • community
Source check pending

Checking that the SKILL.md file is still in the repository.

Use when adopting, integrating, debugging, or composing Sane C++ Libraries APIs. Covers selecting a Sane library, single-file or repo integration, and correct use of Foundation, Memory, Containers, Async, File, Process, networking, serialization, plugins, build tools, and tests. Do not use for general C++ design that does not require Sane APIs; use Sane C++ Style for that.

Install

npx vskill@latest install pagghiu/sanecpplibraries/sane-cpp-libraries

SKILL.md

Sane C++ Libraries

Help users compose the APIs that exist in this checkout, rather than translating them into STL-shaped abstractions or guessing overloads. This is an adoption skill, not a requirement to adopt all Sane libraries.

Start Here

  • For integration or library selection, read getting started, then adoption if needed.
  • For one library, read only its matching references/<topic>/guide.md; use the topic map for ambiguous requests.
  • For an async process with pipe capture, read the composition recipe as well as async, file, and process.
  • Before emitting code, verify the selected public header and the cited test or example in the local checkout. The source locations behind the composition guidance are in source anchors.

Composition rules that prevent real mistakes

  • Treat a Result as an obligation: check it and propagate or classify it at the boundary. Do not infer successful I/O from EOF or ignore setup failures.
  • Storage, descriptors, request objects, callback captures, and input views must outlive each active operation. The event loop does not own or move AsyncRequest objects.
  • Define the completion predicate before writing callbacks. For a process with stdout and stderr capture, process exit alone is insufficient: wait for process completion and EOF/error handling on each stream before reuse or destruction.
  • A recurring AsyncFileRead is reactivated only after its result is handled. Continue reading after a bounded capture buffer fills when draining is required; retain a prefix separately from the byte total.
  • PipeOptions::blocking applies to pipe creation, not just the parent read end. Check the platform behavior and child contract before using a pipe as child stdout/stderr. Make inheritance deliberate: an extra inherited writer can suppress EOF.
  • A deadline must participate in the event loop's blocking wait. Checking a clock before or after runOnce() does not bound a quiet wait; start an AsyncLoopTimeout or arrange an explicit wake-up before blocking.
  • Moving a blocking descriptor operation to AsyncTaskSequence or a shared ThreadPool keeps the loop responsive, but the OS read remains blocking. Do not use that route when the task forbids blocking reads.
  • Pass the descriptors expected by Process::launch; inspect the overload and the process tests rather than constructing its nested redirection types from guessed handles.
  • For a capacity-bounded scheduler, make slots—not merely counters—reusable. Reset a slot only after its request/descriptors and completion predicate make reuse safe; separately reset or reconstruct stateful resources such as Process before the next logical operation.
  • In a queued async workflow, a launch or setup failure may complete synchronously without a callback. If it frees capacity, schedule the next queued item before entering a blocking loop wait; a deadline wake-up is not a substitute for queue progress.
  • Treat exit notification and OS resource reclamation as separate obligations until the selected backend/API proves otherwise. If the contract requires reaping, verify the normal completion path actually performs it.

Integration and verification

Use the smallest distribution route that meets the request: a single-file library for a narrow dependency footprint, or SC.cpp plus public library headers for multi-library work. Follow the selected guide for platform link requirements; do not include Internal or test headers in an application.

When changing Sane code, follow the repository's AGENTS.md, build the affected target before running it, run focused tests, and preserve independence checks where a new dependency could be introduced. When answering without changing code, say which header/test establishes any non-obvious claim.

Topic Guides

Onboarding And Navigation
Core Types And Data Structures
I/O, Async, And Platforms
Reflection, Serialization, And Plugins

Security

  • Security scanPassed, 95 of 100Pattern checks on the skill's files.
  • Model reviewPassed

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

Repository stars
624
Repository forks
19
7-day trend score
32

Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/pagghiu/sanecpplibraries/sane-cpp-libraries/badge)](https://verified-skill.com/skills/pagghiu/sanecpplibraries/sane-cpp-libraries)

Something wrong with this skill or its page? Tell us.