Repository navigation
fix(skills): move the openclaw-cmd skill body to the repo root, where sdk#445 reads it - #10
Merged
Merged
Conversation
…e the reader now looks sdk#445 moved deploykit's skill base from the owning candy's directory to the owning candy's REPO ROOT: filepath.Join(repoRoot, ".agents/skills"). This commit is the mirror image of #9 (2026.293.1539), which moved the body BESIDE the candy under the old base -- so under the new reader the node has no body at all, and `charly box validate` at this repo's main says exactly that (rc=1, naming the repo root). Pure move: the SKILL.md blob is byte-identical before and after (f3e7bca), the candy manifest is untouched, and the candy-dir copy is deleted in this same commit. Assisted-by: DeepSeek Harness deepseek-v4.1-flash (fully tested and validated) Co-authored-by: Andreas Trawoeger <aitrawog@gmail.com>
This was referenced Oct 22, 2026
Review — PASSWhat the PR doesA single-file relocation: Checks
Minor, non-blocking observations
The change is minimal, coherent, complete, and backed by the gate that can actually fail on it. Verdict: PASS ollama-cloud/deepseek-v4.1-flash — action-review. |
github-actions Bot
pushed a commit
to opencharly/opencharly
that referenced
this pull request
Oct 22, 2026
…32 (#580) plugin-mise d99282f583ab -> 43e30ac959 (opencharly/plugin-mise#19, v2026.295.0432) plugin-openclaw f870257d45c7 -> 8d2492bcee (opencharly/plugin-openclaw#10, v2026.295.0432) plugin-media 01a1e8f759b0 -> 8d77fa909d (opencharly/plugin-media#11, v2026.295.0432) Written by `charly task sync` (verb:git-submodules MODE=bump) on a session worktree branched off origin/main (c72427b), never by hand. The verb rolled ONE pin outside this change's scope: layer-openclaw 567a33541c -> 3c1007a476, which is #571's armed advance and not this PR's to carry. It was restored in the index (`git checkout HEAD -- layer-openclaw`) AND in the checkout (`git -C layer-openclaw checkout 567a33541c`), so `verify`'s checkout audit and the recorded gitlink agree. charly and the six distro-* edges rolled to their default-branch HEADs and re-derived to exactly the values #579 recorded, so nothing changed there. Assisted-by: DeepSeek Harness deepseek-v4.1-flash (fully tested and validated) Co-authored-by: Andreas Trawoeger <atrawog@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Moves the
openclaw-cmdskill body fromcandy/plugin-openclaw/.agents/skills/openclaw-cmd/SKILL.mdto.agents/skills/openclaw-cmd/SKILL.mdat the repo root — where theshipped reader now resolves it — and deletes the candy-dir copy in the same commit.
Head
6448ccc5a19c50a0dc0c15f0303fff3822321d0b, one commit offorigin/main(f870257d45), 1 file: a pure rename, 0 insertions and 0 deletions.Why it is landable now, and why it was not before.
sdk#445moveddeploykit's skill base from the owning candy'sdirectory to the owning candy's REPO ROOT (
filepath.Join(repoRoot, ".agents/skills")). It shipped assdk v0.2026294.1520, whichcharlyadopted in opencharly/charly#1017 (merge00396e3e, tagv2026.295.0418) —the cutover opencharly/opencharly#568 item (b) was blocked on. Under that reader this repo's own manifest gate fails
at
main:rc=1, naming the repo root, because #9 had moved the body BESIDE thecandy under the OLD base. The move turns that gate green in the same commit, which is the property #568 asked for.
Pure move, proven by blob identity. Both sides are read out of
git ls-tree— the before side fromorigin/main,the after side from the staged index tree (
git write-tree=63ac14428bbf295195963131dae352e1ea9ff4aa) — never rebuilt from a template:The blob object is
f3e7bca22992b8392c3380a6c209cff9149e3bf6on both sides, so the move cannot have altered the body; git's own rename detectionagrees, recording 100% similarity rather than a delete plus an add:
How tested
Change class: config — a relocation of authored content that decides where a shipped reader finds a skill body.
No Go source, no
box/, no candy manifest and no CUE schema changed, so the gate that owns this change is thisrepo's own manifest gate,
charly box validate, which is also the gate that reads the body. This repo's live bedsbuild images from candies whose Go sources this diff does not touch, and none of their steps asserts anything about a
skill body, so no bed here can fail on this relocation — per R10 a bed that cannot fail on the change is not run, and
the gate that can fail on it is pasted instead.
Proof binary — worktree-local, built from the MERGED charly tree (
c837b661, charly'sorigin/mainafter#1017), not a shared install and not a pre-#1017 build:
The A/B: one body, two layouts, one binary. The negative control is the tree exactly as
origin/mainhas it (bodybeside the candy); the second run is the committed tree, which differs from it by exactly this commit's one
git mvand by nothing else — the blob above is the same object on both sides. The two extracted
SKILL.mdfiles are thesame bytes:
Then the gate itself, first on the pre-move layout and then on the committed tree:
The
WARNING:line is the harness's worktree-build notice on stderr (R9 requires a worktree-local build), not avalidation warning; the gate's own summary reads
0 warnings, 0 errors.The committed tree, at the branch head, with the same binary:
Rulebook compliance
/charly-internals:git-workflow,/charly-internals:strict-policy,/charly-internals:root-cause-analyzer,/charly-internals:cutover-policy, plus this repo's ownAGENTS.md(Part II docs(openclaw): drop the false pluginCalVer claim and state the verified gateway surface #4) which names
charly box validateas the repo's structural check and the org-wide validator as themerge gate.
mainunder the shipped reader. It isBLOCKING for this change, because landing the move without it is impossible and the change's own claim (the body
resolves) is false without it — so it is fixed here, in this diff, not filed. The RCA is the base flip:
sdk#445changed the resolution root and no consumer can be correct on both sides of it at once. Two separable findings keep
their existing numbered homes and are not touched here (see
## Filed issues).this same commit rather than kept alongside.
copy:directive, no symlink, no second accepted path, no dual layout. The file moved.documented that needs more than the
charlybinary.CHANGELOG/history, which R5 permits:
git statusread before the first commit (empty), onefeat/branch off freshorigin/main, one commit,one push, no force-push, no amend after the push, no push to
main, no hook bypass.rc=1naming the repo root, the moved layout returnsrc=0; both are pasted above, on the same archive and thesame binary.
2026.295.0418, withgo version -mpasted above;no shared install was used and no runtime OS dependency was added.
charly box validateon the committed tree, is pasted above:rc=0,0 warnings, 0 errors. No bed in this repo has a step that reads a skill body, so the image beds cannot fail on aSKILL.mdrelocation; they are not run, and that is stated rather than implied.Change classification
Config — a pure relocation of a skill body so the shipped reader resolves it. No runtime behaviour, no schema, no
provider surface, and no emitted image label changes.
Filed issues
Nothing is filed by this PR; the two separable follow-ons already have numbered homes and are not touched here:
opencharly/sdk#444— the four carrier candies that declarecopy: .agents/skillsrender no directive once thebody sits at the repo root. It is inert in this repo (no candy here declares
copy:), so it does not gate thisdiff.
opencharly/opencharly#568— the tracker for the remaining corpus leg: these three repos are absent frommarketplace's ref list, and adding them is amarketplacePR.marketplaceis not touched here.A3 — attribution evidence
The delivered system message in this session reads, verbatim:
The footer below uses those exact names —
DeepSeek Harnessis the harness (@deepseek-ai/dsh),deepseek-v4.1-flashis the model id — and the runtime's own config names the provider and the id:opencharly/opencharly#538is the record of why this needs saying: the validator's model allowlist rejected thisreal runtime once, and the answer is evidence, never an edited footer.
Agent: charly
Assisted-by: DeepSeek Harness deepseek-v4.1-flash (fully tested and validated)