Skip to content

plugin-harness-kind

Version 2026.218.1200
Repo box/github.com/opencharly/plugin-harness-kind:v2026.254.0600
Plugin yes — see the plugin reference

The skill / hook / marketplace HARNESS-SURFACE kinds — the plugins→candies migration’s first-class entities. A skill: node is a sibling top-level entity in a candy’s charly.yml carrying the FULL inline skill definition (metadata + markdown content); a hook: node carries a .claude/hooks/* gate script; a marketplace: node carries the single harness/marketplace config (families + settings). All three are FLAT kinds (Structural:false — no deploy members): their self-contained values ride op.Params, are validated at load against this plugin’s served #SkillInput/#HookInput/ #MarketplaceInput schemas (validateAuthoredPluginInput), and fold into uf.PluginKinds[“skill”|“hook”|“marketplace”][name] as opaque JSON.

COMPILED-IN (in the embedded compiled_plugins:) — the plugin-candy-kind placement, because the words must be recognized on every parse (validate/build/deploy) without an out-of-process build. The skill bodies feed BOTH the ai.opencharly.skills OCI label (CollectSkills → charly box labels) and the regenerated marketplace corpus (candy/plugin-marketplace, command:marketplace); hook bodies feed the .claude/hooks/* emission + settings.json wiring; the marketplace body feeds the plugin.json / marketplace.json / profiles.json / settings.json generated surface.

This candy’s plan: — the runnable spec charly check executes against a live deployment. check: steps are idempotent probes; run: steps change state.

Intent Step
check the skill/hook/marketplace harness kinds ship a buildable Go module the host compiles in (default) or serves out-of-process; a skill: node parses, validates against