Repository navigation
feat(skills)!: the openclaw-deploy skill lives beside the openclaw candy it documents - #9
Conversation
…` candy it documents `pod-charly-automation` is a skills-only carrier: 0 `.go`, 0 `.cue`, no candy directory, so a skill documenting the `openclaw` candy was edited, reviewed and tagged in a repo that holds none of it. Under `AGENTS.md` Part II #5 it belongs with the candy it describes, so the body moves here byte-identically (`diff -r` exit 0, equal `sha256` at both ends). Routing only: `name`/`family`/`owner`, no inline `description:`/`content:`; `family: automation` is kept so the existing `/charly-automation:openclaw-deploy` address still resolves, and `owner:` names the `openclaw` candy this repo declares. Nothing is deleted from `pod-charly-automation` here — its node removal stays with the session that claimed the carriers (opencharly/opencharly#600). Assisted-by: DeepSeek Harness deepseek-v4.1-flash (documentation reviewed)
Review — PASSWhat the diff actually contains
Honesty of the body vs. the diff
TestsThe change class is documentation + candy-config. The relevant gate is Scope and cleanliness
CommentsThe thread is empty (0 comments), so there is nothing to disposition and no maintainer sign-off to weigh. The change therefore stands on its own evidence, and that evidence — a coherent 446-line prose file plus a well-formed routing node whose claims are reproduced by the diff — is sufficient for a docs+config change of this size. Verdict: PASS ollama-cloud/deepseek-v4.1-flash — action-review. |
Summary
pod-charly-automationis a skills-only carrier — measured: 0.go, 0.cue, 0 candydirectories. The
openclaw-deployskill documents theopenclawgateway candy this repo declares (the family's candies and their composition), which is theopenclawcandythis repo declares; under
AGENTS.mdPart II #5 a skill lives with the code, plugin orconfig it describes, so the body moves here byte-identically.
The gate (opencharly#606): the entity comes from the skill's own prose, never from its
name; then where that entity exists; then the negative control.
openclaw-deployopenclawgateway candy this repo declares (the family's candies and their composition)layer-openclaw/charly.yml→ theopenclawcandy nodeWhat is in this diff (2 files changed, 468 insertions(+))
sha256sumoutput below).skill:node incharly.yml—name/family/owner, no inlinedescription:/content:(an inline body that disagrees with its file is a hard errorin the marketplace generator).
family: automationis kept unchanged, so the existing/charly-automation:openclaw-deployaddress and every external reference to it stillresolves;
owner:becomesopenclaw, so the body is read from<repo root>/.agents/skills/openclaw-deploy/SKILL.md.AGENTS.md/README.mdclaimed the skill lived elsewhere (checked with a grep for the carrier name and for a
"no
skill:entity" claim).Producer-first. No carrier loses a node here: those removals and retirements belong to
the session that claimed the carriers (opencharly/opencharly#600), and the
marketplacerefs switchover is the leg that proves the relocation end to end.
How tested
Change class: documentation + candy-config (skill prose and one
skill:routing node;no Go, no schema, no runtime path). The gate that owns it is
charly box validate, whichreads the skill files through the same
CollectSkillspath theai.opencharly.skillOCIlabel and the marketplace corpus use.
The gate CAN fail — negative control on this exact tree, with the moved body removed:
No R10 disposable bed: the diff changes no runtime path (no Go, no schema, no service, no
build step), so a bed would prove something this diff cannot break. The binary is the
worktree-local build (
charly version=2026.295.1709, equal tocharly/charly's HEADstamp).
Rulebook compliance
/charly-internals:skills,:git-workflow,:cutover-policyloaded first;opencharly#611/#606/#600 read in full first.
charly box validategreen with zero warnings; the negative control proves thegreen is not vacuous.
the skill); the moved body's own cross-references still resolve because the family is unchanged.
origin/main, one commit, one push, no force-push, no bypass.delivered system message reads, verbatim,
You are a coding agent powered by the deepseek-v4.1-flash model.— harnessDeepSeek Harness, modeldeepseek-v4.1-flash— cited withThe pr-validator's model allowlist rejects a real runtime: deepseek-v4.1-flash via ollama-cloud opencharly#538.
Change classification
feat(skills)!— documentation + candy-config,documentation reviewed. No runtimebehaviour, no schema, no Go, no pins.
Filed issues
None — the destination was measured, and no claim this change falsifies survives.
Assisted-by: DeepSeek Harness deepseek-v4.1-flash (documentation reviewed)