feat(zeroclaw): add native skills install support#1053
Conversation
Ship ZeroClaw install docs, a copy-based skills installer, and release component mapping so CE skills load through ZeroClaw workspace discovery without a Bun converter target. ZeroClaw rejects symlinked skills; users must enable [skills] allow_scripts for CE bundled scripts.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 70d5be4cae
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
ZeroClaw skills install always writes to config.data_dir, so returning early after a successful CLI install left --dir and ZEROCLAW_SKILLS_DIR destinations empty. Restrict zeroclaw CLI to default global path only.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: d9450143e5
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: f5ef2d39b7
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
ZeroClaw agents load skills from agents/<alias>/workspace/skills, not the legacy workspace/skills tree or data_dir/skills where the CLI installs. Default --global now maps to the default agent workspace; add --agent and --shared modes and drop zeroclaw skills install from the script.
f5ef2d3 to
c87169a
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: c87169aee5
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
| exit 1 | ||
| fi | ||
| else | ||
| DESTS+=("$INSTALL_ROOT/agents/$AGENT_ALIAS/workspace/skills") |
There was a problem hiding this comment.
When --global runs before quickstart has created default, or when --agent is misspelled, this still appends a destination and install_to_dest later mkdir -ps it and reports success. ZeroClaw's schema defines agents through the [agents.<alias>] map ("Aliased agents in this install" in crates/zeroclaw-config/src/schema.rs), so merely creating agents/<alias>/workspace/skills does not configure an agent to load those skills; these installs silently land in an unused tree instead of failing like --agent all already does when no agents exist.
Useful? React with 👍 / 👎.
Merge upstream main (Antigravity one-command install, skill updates). Honor ZEROCLAW_CONFIG_DIR for install root resolution, refuse unknown agent aliases, and document both in INSTALL.md and docs/specs/zeroclaw.md.
|
cc: @tmchow |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 90a5757b68
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
ZeroClaw skill bundle aliases must match [a-z0-9][a-z0-9_]{0,62};
hyphenated compound-engineering could not be referenced in config.toml.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: f03ad3765f
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
| if [[ -n "${ZEROCLAW_CONFIG_DIR:-}" ]]; then | ||
| expand_path "$ZEROCLAW_CONFIG_DIR" | ||
| return | ||
| fi | ||
| printf '%s\n' "$HOME/.zeroclaw" |
There was a problem hiding this comment.
Honor ZeroClaw data-dir profiles
The fresh gap after the config-dir fix is that users who run ZeroClaw with ZEROCLAW_DATA_DIR (or the still-supported legacy ZEROCLAW_WORKSPACE) fall through to $HOME/.zeroclaw, so the installer can copy all CE skills into a different agent tree while reporting success. I checked ZeroClaw's resolve_runtime_config_dirs, which resolves ZEROCLAW_CONFIG_DIR first, then ZEROCLAW_DATA_DIR, then ZEROCLAW_WORKSPACE, before defaulting; a temp smoke test with ZEROCLAW_DATA_DIR=/tmp/profile/data installed 20 skills under $HOME/.zeroclaw and none under the profile. Mirror that precedence here unless ZEROCLAW_INSTALL_ROOT is set.
Useful? React with 👍 / 👎.
|
Thanks for pushing this through the earlier path fixes. I think ZeroClaw support is worth having if it stays this shape: native skills install, docs, and release metadata only. Avoiding a converter target is the right call. I would not merge this yet though. Two install path cases still look wrong:
I reproduced both cases against the current PR script in temp roots. The custom workspace case installed 20 skills into the default derived path and 0 into the workspace path ZeroClaw would actually read. Could you fix those two resolver cases and add a small script test around them? The rest of the shape looks fine to me: CI is green, |
Match ZeroClaw env precedence (CONFIG_DIR > DATA_DIR > WORKSPACE), resolve DATA_DIR through the same config-dir-for-data helper, install into [agents.<alias>.workspace.path] when set, and add script tests.
|
Addressed both install-path cases from @tmchow's review in
Added CI and cc: @tmchow |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: abbd338545
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
| /^\[agents\./ { | ||
| in_agent = ($0 == "[agents." alias "]" || $0 == "[agents.\"" alias "\"]") | ||
| in_workspace = ($0 == "[agents." alias ".workspace]" || $0 == "[agents.\"" alias "\".workspace]") | ||
| next |
There was a problem hiding this comment.
Reset the TOML section state on all table headers
When a config has [agents.default.workspace] without its own path and a later unrelated table with a path key, this parser keeps in_workspace true because only [agents.*] headers reset the state. The installer then treats that unrelated path (for example a logging or identity path) as the agent workspace and copies all CE skills under <that>/skills, reporting success while the actual agent workspace remains unchanged.
Useful? React with 👍 / 👎.
| in_workspace && /^[ \t]*path[ \t]*=/ { | ||
| sub(/^[ \t]*path[ \t]*=[ \t]*/, "") | ||
| print unquote($0) |
There was a problem hiding this comment.
Strip TOML comments before using workspace path
If the workspace override uses valid TOML with an inline comment, such as path = "/srv/zc/default" # workspace, this branch passes the whole remainder to unquote; because the value no longer matches a fully quoted string, the returned path still contains the quotes and comment. agent_skills_dir then appends /skills and installs into a bogus directory, so users with commented config lines get a successful install that ZeroClaw will not load.
Useful? React with 👍 / 👎.
Summary
--to zeroclawconverter), following the same strategy used for OpenCode, Pi, and Cline.zeroclaw/scripts/install-skills.shto copy CEskills/directories into~/.zeroclaw/workspace/skills/(ZeroClaw rejects symlinked skill dirs at audit time)allow_scriptsrequirement, pinning, local dev, and uninstall in.zeroclaw/INSTALL.mdanddocs/specs/zeroclaw.mdApproach
ZeroClaw loads skills from
SKILL.mddirectories under the agent workspace. This PR intentionally avoids a converter target. The installer copies each skill (usingzeroclaw skills installwhen the CLI is available, withcp -Rfallback) and skips manual-only skills by default, with--include-manualopt-in.Users must set
[skills] allow_scripts = truein~/.zeroclaw/config.toml— many CE skills ship bundled shell/Python scripts that ZeroClaw blocks otherwise.Test plan
ZEROCLAW_SKILLS_DIR=... ./.zeroclaw/scripts/install-skills.sh --globalcopies 20 invocable skills (smoke-tested locally)bun run release:validatepassesbun test tests/release-components.test.tspasses