Agent Skills Integration
Outcome
Preserve one explicit boundary for reusable skills:
wcygan/agent-skills dotfiles GitHub CLI / Codex
source and validation -> exact consumer lock -> shared machine-local user copies
supported orchestration and tracking state
Success means reusable skill source remains in wcygan/agent-skills, this
repository consumes one reviewed commit through agent-skills.lock.toml, and
GitHub CLI installs and reports the complete Codex shared user catalog at that
exact commit.
Ownership Contract
- The
agent-skills repository owns reusable skill contents, dependencies,
packaging, and provider-side validation.
- This repository owns only the external repository identifier, immutable
commit pin, supported command, collision policy, recovery boundary, and
consumer-side verification.
- GitHub CLI owns fetching, installing, and tracking machine-local copies.
The lock owns a portable relative shared directory; resolve it under the
current home and verify its actual contents with
gh skill list --dir.
- Project-specific operating skills remain under
.agents/skills/ here and
are not part of the global catalog.
Invariants
- Pin a full lowercase 40-character commit SHA. Mutable branches, tags, and
abbreviated SHAs are not an installation contract.
- Invoke
gh skill install with --dir <resolved shared user directory> --all --pin. Keep catalog discovery and installation in GitHub CLI instead of
adding a second clone, copy, vendoring, or synchronization implementation.
- Keep installation explicit through
./bootstrap.sh agent-skills; the default
dotfiles install does not mutate the global skill catalog.
- Serialize and journal installation as a dotfiles mutation. Keep
./bootstrap.sh agent-skills --check read-only and lock-free.
- Refuse same-name user skills from another source or duplicate user-scope
locations before using
--force.
- Verify every expected skill's source, custom-directory scope, pinned flag,
exact version, and installed path after installation.
- Keep installed copies and GitHub CLI tracking state untracked and
machine-local. Never write credentials or remote contents to the operation
journal.
- Judge unchanged reruns by durable catalog state. Because installation uses
--force, GitHub CLI refreshes updatedAt for managed entries in
~/.agents/.skill-lock.json even when source, pin, paths, and contents are
unchanged. A timestamp-only tracking diff is expected; any inventory,
duplicate-name, source, scope, pin, path, or file-content change is not.
- Treat removal separately when advancing a pin: GitHub CLI installation does
not prove that skills removed upstream were pruned locally.
Workflow
- Read
agent-skills.lock.toml, src/dotfiles_setup/agent_skills.py, the
agent-skills CLI branch in src/dotfiles_setup/cli.py, recovery handling,
focused tests, and the pinned-skills section of the operations runbook.
- Inspect
git status --short in both repositories and inspect the live
shared user inventory with gh skill list --dir "$HOME/.agents/skills" --json skillName,sourceURL,scope,version,pinned,path.
- Classify the change:
- author or modify a reusable skill in
wcygan/agent-skills;
- advance the dotfiles consumer pin after reviewing the provider change;
- install, reconcile, or verify the currently pinned catalog;
- change the consumer integration, collision rules, or recovery behavior;
- explicitly review stale local skills removed from the provider catalog.
- Make the change only in the owning layer. A provider-source change does not
belong in dotfiles, and a consumer pin or setup-policy change does not belong
in the provider repository.
- For a pin advance, use the reviewed provider commit's full SHA, update only
agent-skills.lock.toml, run the explicit installer, then run the read-only
check. Inspect removed or renamed skills before any cleanup.
- For integration code changes, preserve the root
bootstrap.sh entry point,
mutation journal, recovery behavior, and metadata-based verification; add
focused tests for each changed invariant.
Acceptance
Run the narrow checks first, then the repository gate appropriate to the
change:
uv tool run --from skills-ref agentskills validate \
.agents/skills/agent-skills-integration
make agent-skills-check
make test-pre
git diff --check
git diff --exit-code -- flake.lock uv.lock
git status --short
For a live installation or pin advance, also confirm that gh skill list --dir
reports one source, one exact version, scope=custom, and pinned=true for
the complete expected catalog. For an unchanged rerun, compare the normalized
inventory and installed file contents; do not use the raw tracking-lock digest
as the idempotency oracle. For Python setup or recovery changes, follow the
broader setup validation matrix in $dotfiles-operations.
Report the provider commit, catalog count, actual destination reported by
GitHub CLI, validation evidence, stale-skill review, recovery state, worktree
state, and whether either repository was committed or published.
1---2name: agent-skills-integration3description: Maintain the pinned agent-skills provider/consumer integration. Use when changing the external skill repository or pin, installing or verifying the Codex user catalog, troubleshooting skill collisions or recovery, or changing the dotfiles integration contract.4---56# Agent Skills Integration78## Outcome910Preserve one explicit boundary for reusable skills:1112```text13wcygan/agent-skills dotfiles GitHub CLI / Codex14source and validation -> exact consumer lock -> shared machine-local user copies15 supported orchestration and tracking state16```1718Success means reusable skill source remains in `wcygan/agent-skills`, this19repository consumes one reviewed commit through `agent-skills.lock.toml`, and20GitHub CLI installs and reports the complete Codex shared user catalog at that21exact commit.2223## Ownership Contract2425- The `agent-skills` repository owns reusable skill contents, dependencies,26 packaging, and provider-side validation.27- This repository owns only the external repository identifier, immutable28 commit pin, supported command, collision policy, recovery boundary, and29 consumer-side verification.30- GitHub CLI owns fetching, installing, and tracking machine-local copies.31 The lock owns a portable relative shared directory; resolve it under the32 current home and verify its actual contents with `gh skill list --dir`.33- Project-specific operating skills remain under `.agents/skills/` here and34 are not part of the global catalog.3536## Invariants3738- Pin a full lowercase 40-character commit SHA. Mutable branches, tags, and39 abbreviated SHAs are not an installation contract.40- Invoke `gh skill install` with `--dir <resolved shared user directory> --all41 --pin`. Keep catalog discovery and installation in GitHub CLI instead of42 adding a second clone, copy, vendoring, or synchronization implementation.43- Keep installation explicit through `./bootstrap.sh agent-skills`; the default44 dotfiles install does not mutate the global skill catalog.45- Serialize and journal installation as a dotfiles mutation. Keep46 `./bootstrap.sh agent-skills --check` read-only and lock-free.47- Refuse same-name user skills from another source or duplicate user-scope48 locations before using `--force`.49- Verify every expected skill's source, custom-directory scope, pinned flag,50 exact version, and installed path after installation.51- Keep installed copies and GitHub CLI tracking state untracked and52 machine-local. Never write credentials or remote contents to the operation53 journal.54- Judge unchanged reruns by durable catalog state. Because installation uses55 `--force`, GitHub CLI refreshes `updatedAt` for managed entries in56 `~/.agents/.skill-lock.json` even when source, pin, paths, and contents are57 unchanged. A timestamp-only tracking diff is expected; any inventory,58 duplicate-name, source, scope, pin, path, or file-content change is not.59- Treat removal separately when advancing a pin: GitHub CLI installation does60 not prove that skills removed upstream were pruned locally.6162## Workflow63641. Read `agent-skills.lock.toml`, `src/dotfiles_setup/agent_skills.py`, the65 `agent-skills` CLI branch in `src/dotfiles_setup/cli.py`, recovery handling,66 focused tests, and the pinned-skills section of the operations runbook.672. Inspect `git status --short` in both repositories and inspect the live68 shared user inventory with `gh skill list --dir "$HOME/.agents/skills"69 --json skillName,sourceURL,scope,version,pinned,path`.703. Classify the change:71 - author or modify a reusable skill in `wcygan/agent-skills`;72 - advance the dotfiles consumer pin after reviewing the provider change;73 - install, reconcile, or verify the currently pinned catalog;74 - change the consumer integration, collision rules, or recovery behavior;75 - explicitly review stale local skills removed from the provider catalog.764. Make the change only in the owning layer. A provider-source change does not77 belong in dotfiles, and a consumer pin or setup-policy change does not belong78 in the provider repository.795. For a pin advance, use the reviewed provider commit's full SHA, update only80 `agent-skills.lock.toml`, run the explicit installer, then run the read-only81 check. Inspect removed or renamed skills before any cleanup.826. For integration code changes, preserve the root `bootstrap.sh` entry point,83 mutation journal, recovery behavior, and metadata-based verification; add84 focused tests for each changed invariant.8586## Acceptance8788Run the narrow checks first, then the repository gate appropriate to the89change:9091```bash92uv tool run --from skills-ref agentskills validate \93 .agents/skills/agent-skills-integration94make agent-skills-check95make test-pre96git diff --check97git diff --exit-code -- flake.lock uv.lock98git status --short99```100101For a live installation or pin advance, also confirm that `gh skill list --dir`102reports one source, one exact version, `scope=custom`, and `pinned=true` for103the complete expected catalog. For an unchanged rerun, compare the normalized104inventory and installed file contents; do not use the raw tracking-lock digest105as the idempotency oracle. For Python setup or recovery changes, follow the106broader setup validation matrix in `$dotfiles-operations`.107108Report the provider commit, catalog count, actual destination reported by109GitHub CLI, validation evidence, stale-skill review, recovery state, worktree110state, and whether either repository was committed or published.