plugin-harness-kind
| Version | 2026.218.1200 |
| Repo | box/github.com/opencharly/plugin-harness-kind:v2026.242.0529 |
| 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.
Acceptance plan
Section titled “Acceptance plan”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 |