# Installation and usage ## Get the source Use an existing checkout or clone the repository into a stable location. Replace `` with the URL of your copy; this checkout has no configured Git remote from which to derive one. ```sh git clone ~/Projects/work/global-skills cd ~/Projects/work/global-skills ``` Requirements: Bash, Python 3, and symbolic-link support. No Python packages or Node packages are needed for syncing. Keep the checkout after installing: installed links point into it. The commands here target a Linux host. Native Windows installation and junction management are not implemented by this script. ## Install the catalog ```sh ./sync-skills.sh --dry-run ./sync-skills.sh ./sync-skills.sh --check ``` The first command previews changes, the second applies them, and the third checks the result without writing. Default destinations are `~/.agents/skills`, `~/.codex/skills`, and `~/.claude/skills`. Sync includes every valid skill directory from this checkout and, when available, `~/Projects/work/JEV/.agents/skills`. A source skill must have a kebab-case directory name and a `SKILL.md` file. Duplicate names across sources stop sync before writes. Existing unrelated destinations are preserved and reported as conflicts. If JEV is absent, sync warns and installs the shared catalog. Some skill references and the `anti-slop-editor` alias depend on JEV or the expected sibling-checkout layout. The optional catalog validator reports unresolved local references; it is not required to install the shared skills. ## Install into selected agent directories `--target` replaces the default destinations. Repeat it to select several: ```sh ./sync-skills.sh --target "$HOME/.codex/skills" ./sync-skills.sh --target "$HOME/.codex/skills" --target "$HOME/.claude/skills" ``` Both commands install the available source catalogs, not a selected subset of skills. Targets cannot overlap a source catalog. For a different JEV location, use the same override for syncing and checking: ```sh ./sync-skills.sh --jev-dir /path/to/JEV/.agents/skills --target "$HOME/.codex/skills" ./sync-skills.sh --check --jev-dir /path/to/JEV/.agents/skills --target "$HOME/.codex/skills" ``` `--global-dir` overrides the shared source directory. Moving sources may require manual removal of old links: the script recognizes ownership only under the source roots supplied for that invocation. ## Install one shared skill For a small selection, create links directly instead of running catalog sync. From the repository root: ```sh mkdir -p "$HOME/.codex/skills" ln -s "$PWD/skills/interface-kit" "$HOME/.codex/skills/interface-kit" ``` Repeat with the desired skill name and agent directory. Link the whole skill directory so its references remain available. Keep the checkout and its protocols; copying just `SKILL.md` can break relative references. `ln -s` fails if that destination already exists. Inspect an existing entry before replacing it. Catalog sync later adds all available skills to that target; it is not a subset installer. ## Antigravity The sync script does not edit Antigravity configuration. On this host, Antigravity reads source directories listed in `~/.gemini/config/skills.json`: ```json { "entries": [ { "path": "/absolute/path/to/global-skills/skills" }, { "path": "/absolute/path/to/JEV/.agents/skills" } ] } ``` Use your actual absolute paths and omit JEV if unavailable. Merge entries with existing configuration rather than overwriting unrelated sources. This is the configuration used by the current host integration; another Antigravity version or setup may discover skills differently. ## Use and update Ask for work normally or explicitly name a skill. For example: ```text Use app-security to check authorization on these routes. Give me a report first. Use deepen to simplify this module while preserving its public behavior. Use fuck-slop to edit this draft without changing its claims. ``` The agent decides applicability from its available skill catalog. Naming a skill does not authorize unrelated edits, publishing, or other external actions. Edit the canonical source to update a skill. Existing links expose that content immediately; start a new agent session if the running session cached older instructions. Sync after changes to skill names or directory locations. For Git updates, follow your checkout's branch/remote convention. Inspect local changes before pulling; this project does not impose a remote or auto-update policy. ## Remove an installation Remove an individual symlink from the agent directory after inspecting it: ```sh ls -l "$HOME/.codex/skills/interface-kit" ``` If it points to this checkout, remove that link. Removing an installed link leaves the source intact; the next full sync recreates it. To retire a skill from the catalog, remove its source directory and sync while the source root is still available. Missing JEV sources cause their old links to be preserved, not removed. ## Troubleshooting | Result | Meaning and next step | | --- | --- | | `check: 0 changes, 0 conflicts` | Installed links match the available catalogs. | | Check exits `1` with changes | Preview with `--dry-run`, then sync to apply the changes. | | `SKIP: unrelated entry` or `unrelated symlink` | Inspect that destination; sync preserves it. Choose another target or deliberately resolve the collision. | | Colliding skill name, exit `2` | Rename or consolidate the source skills; there is no silent precedence rule. | | JEV unavailable warning | Shared skills can install; JEV links are preserved until its source is available. | | Validator reports missing local links | Restore the referenced file/checkouts or correct the source link. Sync checks installation, not reference integrity. | | Skill missing in a running agent | Check the source and installed link, then refresh that agent's session/catalog. | `--dry-run` and `--check` make no changes. Dry-run exits `0` for a conflict-free preview even when changes are needed. Check exits `1` for drift or conflicts. Sync also exits `1` for destination conflicts; unaffected destinations may already have been updated. Invalid source catalogs/arguments exit `2` before syncing.