plugin-authoring
| Placement | compiled-in (in-process) |
| Source | github.com/opencharly/plugin-authoring/candy/plugin-authoring |
| Version | 2026.196.0000 |
| Candy | plugin-authoring |
This plugin is listed in charly/charly.yml’s compiled_plugins:, so its providers are compiled into the charly binary and register in-process.
Providers
Section titled “Providers”The reserved words this plugin serves:
add-candy:box— command classcat:box— command classfetch:box— command classrefresh:box— command classrm-candy:box— command classset:box— command classwrite:box— command class
What it does
Section titled “What it does”The charly box … AUTHORING verb handlers — a COMMAND-class charly plugin
(github.com/opencharly/sdk), NESTED under the core box command group (P14b).
charly box set/add-candy/rm-candy/write/cat mutate a project’s charly.yml directly via
sdk/kit (kit.SetByDotPath / kit.MappingChild / kit.SaveYAMLNodeFile — the comment-preserving
yaml.Node utilities) + the project-rooted file escape hatch (resolveProjectFile
path-traversal guard), with ZERO core reentry. charly box fetch/refresh pre-prime /
force-re-clone the remote-repo cache by re-running the hidden core __box-fetch /
__box-refresh reentry over the generic HostBuild(“cli”) reverse channel — the repo
resolver is host-coupled
(CHARLY_REPO_OVERRIDE + the refs-backend dispatch + the command:migrate auto-migration).
COMPILED-IN, it dispatches IN-PROC via Invoke(OpRun) (kong-parse each verb’s grammar), so
the handlers own charly’s real stdio. Placement-invisible (F8): the SAME provider compiles
into charly or serves out-of-process.
Parameter schema
Section titled “Parameter schema”The CUE schema below is the authoritative grammar for this plugin’s input. It is the same single source that generates the plugin’s Go parameter types and answers the runtime Describe RPC, so this page cannot disagree with either.
schema/authoring.cue
Section titled “schema/authoring.cue”// plugin-authoring's OWN self-contained CUE schema — the SINGLE SOURCE for this plugin's// served declaration surface (there is no schema-less plugin: every plugin ships a// non-empty schema over Describe).//// SELF-CONTAINED and PACKAGE-LESS: it references no base def and carries no package// clause, so it compiles STANDALONE — the property the SDK's serve-side compile needs// and the property that lets the host splice `base ++ plugin` at the load gate// (registerPluginUnitSchema); a self-contained schema that will not splice is a LOUD// load failure.//// NO GO CONSUMER: the plugin declares no typed `plugin_input` (its authored input is// its pass-through CLI grammar), so this schema generates NO `params` package and has// NO `cue exp gengotypes` artifact — it is the SERVED documentation/config surface,// not a code-generation source.//// It DOCUMENTS the `command:<word>:box` command surface: the `box` parent and the seven// words this plugin serves.#AuthoringPlugin: { // The command group every word below NESTS under — part of each capability's // declared IDENTITY (`command:<word>:box`), keyed by charly's provider registry. parent: "box"
// The command words this plugin serves, all nested under `parent`. A command's // args are pass-through CLI tokens (there is no typed plugin_input), so these // words ARE this plugin's authored declaration surface. commands: ["set", "add-candy", "rm-candy", "fetch", "refresh", "write", "cat"]
// What the plugin does, in one line (the public-docs surface). contract: string & !=""}See also the candy reference for this candy’s install surface.