[IMP] skills: install PS skills from git, not npx - #35
Open
kfr-odoo wants to merge 1 commit into
Open
Conversation
Skills were never actually installed: odev only ran 'npx skills list -g' and printed a command for the user to run by hand. A fresh setup ran without any skill, an existing installation was never updated, and both depended on a package pulled from npm at every check. Clone odoo-ps/ps-ai-skills in the odev home directory instead, pull it once a week, and symlink every skill into the global skills directory of each supported agent. Nothing is downloaded from npm anymore. * Link into '.gemini/antigravity-cli/skills', the directory the 'agy' CLI reads, and into '.config/opencode/skills' for OpenCode. * Skip the agents the user does not have, the way 'npx skills' does: their configuration directory tells whether they are installed. * Name the links after the 'name:' declared in SKILL.md rather than after the directory, as agents do: a skill whose declared name differs from its directory would otherwise show up twice. * Unlink the skills a previous 'npx skills add' installed from this same repository. They shadow ours under the same name and would stay frozen at the version installed back then. Only symlinks are removed, so the copies under '~/.agents/skills' and the ones npm wrote in place of a link are kept, and skills from another source or managed by the user are never touched. * Never overwrite a directory or a symlink we do not own, and remove our own links once a skill disappears or is disabled. * Bind the clone into the sandbox, otherwise the symlinks resolve to nothing inside the bwrap mount namespace. Failures are logged and swallowed: a missing network or SSH key must never prevent an agent from starting. Configuration goes through 'skills.disabled' and 'skills.interval'. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
kfr-odoo
force-pushed
the
imp/skills-from-git
branch
from
August 7, 2026 11:37
dd4ed37 to
26a3b73
Compare
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.
Description
odevnever actually installed the PS skills.run_ai_agent()only rannpx skills list -g --jsonand, whenodevor
test_skillwas missing from the output, printed annpx -y skills add …command for the user to run by hand. Afresh setup therefore ran without a single skill, an existing installation was never updated, and both paths depended
on a package fetched from the npm registry before every agent start.
This replaces npx with git:
~/odev/skillsthrough odev's ownGitConnector, then pulled every 7 days(
skills.interval,skills.date);~/.claude/skills,~/.gemini/antigravity-cli/skills(agy),~/.copilot/skills,~/.config/opencode/skills, plus~/.gemini/antigravity/skillsfor the Antigravity IDE;skillsnpm CLI performs before installinganything for them;
name:declared inSKILL.md: that is how agents identify a skill, and it does notalways match the directory name (a mismatch used to install the same skill twice under two names);
.config/opencodewas added to the OpenCode handler config and persistent directories, without which its skillsdirectory is not visible from inside the sandbox.
Skills can be skipped with
odev config skills.disabled <names>, by declared name or by directory name.Impact on existing installations
An installation made with
npx skills add odoo-ps/ps-ai-skillskeeps working, with one change: the symlinks it createdin the agents' directories for skills coming from that same repository are removed, otherwise they shadow the
git-managed ones under the same name and stay frozen at the version installed back then. Only symlinks are removed —
the copies under
~/.agents/skills, and anything npm wrote in place of a link, are kept and reported so the userdecides what to do with them. Skills coming from another repository or managed by the user are never touched, and a
directory or a symlink we do not own is never overwritten.
Failures are logged and swallowed: no network, no SSH key, or no access to the skills repository must never prevent an
agent from starting.
Compliance
docsdirectorypython3 common/skills.pyruns an assert-based self-check of the linking and migration logic on a temporary treerequirements.txtfile, if any — none, the standard library is enoughCo-Authored-By: Claude Opus 5