- This repository stores custom local skills for agentic coding tools and is meant to be consumed with
bunx skills. - Treat
skills/as the distributable source for this repository. - Treat
plugins/as repo-managed local Codex plugin source. - Treat repo-local
.agents/and.claude/as skills/config used while working in this repository, not as the source to distribute or globally install from. - Treat
.agents/plugins/marketplace.jsonas repo-local Codex marketplace metadata, not as a global install target. - Keep shared instructions at the repo root. Add a nested
AGENTS.mdonly when one skill subtree needs different rules.
- Store each skill in
skills/<skill-name>/. - Treat
skills/as a published catalog, not as a list of skills that should all be installed globally. - Do not treat
.agents/skills/or.claude/skills/as the canonical distribution layout for this repo. - When creating a new skill, start from
https://github.com/openai/skills/tree/main/skills/.system/skill-creator. - Keep
SKILL.mdas the entry point for each skill. - Keep OpenAI/Codex-facing metadata in
agents/openai.yaml. - Keep
SKILL.mdfrontmatter portable to the Agent Skills specification; put client-specific interface and invocation policy in that client's metadata file instead of adding custom top-level fields. Use one-line scalar values and, when needed, a one-level string mapping undermetadataso the local dependency-free validator can parse the frontmatter strictly. Quote metadata values and any scalar more complex than a simple word or phrase. - Name bundled directories for what they contain:
workflows/ormodes/for alternate procedures,rubrics/,lenses/, orchecklists/for evaluation criteria,guides/for topic-specific instruction,recipes/for operational examples,cases/for scenario-specific material,templates/for agent-read output shapes, andreferences/for lookup documentation. Keep copied output resources inassets/. - Keep universally required steps and rules in
SKILL.md. Link every bundled agent-read Markdown file directly fromSKILL.mdwith an inline Markdown link, name every other runtime file such as a script or copied asset by its exact relative path, and state when to use it; a directory name alone does not expose its contents. Wrap inline-link destinations containing whitespace or parentheses in angle brackets. Do not use reference-style links for runtime pointers, and avoid link-like examples in fenced code because the dependency-free validator scans inline-link syntax literally. Keep those resources one directory level fromSKILL.mdand avoid resource-to-resource routing. Interface metadata inagents/and test fixtures inevals/do not need runtime pointers. - Keep bundled skill files self-contained; do not use symlinks or links to absolute paths outside the skill directory.
- Keep the directory name and the
name:field inSKILL.mdaligned.
- Treat
skill-registry.jsonas the authoritative classification and install policy for all published repo skills and deliberately recommended external skills. Seedocs/skill-registry.mdfor its contract. - Published means available to install from the GitHub
skills/subpath; it does not imply global installation. - Keep global installs to the small baseline that is useful in most repos for a given agent.
- Install project-scoped skills only when their registry
whencondition matches the target repository. - When checking whether Codex loads skills, verify the intended installed
subset, not every skill present under this repo's
skills/.
- Store repo-local Codex plugins in
plugins/<plugin-name>/. - Keep each plugin manifest at
plugins/<plugin-name>/.codex-plugin/plugin.json. - Keep plugin skills under the plugin's
skills/directory, not the published rootskills/catalog. - Keep plugin lifecycle hooks read-only unless the user explicitly asks for a
mutating hook. The
chezmoi-syncstartup hook must only check and report. - After changing plugin metadata, skills, or hooks, update the Codex cachebuster and reinstall the plugin from the configured repo marketplace before testing.
- Store stable user-facing commands in
bin/. - Treat
bin/as the only directory intended to be added toPATHor symlinked into~/.local/bin. - Store repository maintenance helpers in
scripts/. - Do not put one-off maintenance helpers in
bin/; add a stable wrapper there only when the command is meant to be used across repositories. - Prefer exact command names without extensions for
bin/commands.
- When explicitly invoked, use
$progressto organize, orient to, continue, or hand off repo-local plans and tasks. - Use
$code-reviewafter implementation to run one bounded review pass, apply obvious safe fixes, validate, and include the diet lens when the change adds avoidable complexity. - Inspect project-visible skills for the current working directory with
bunx skills list. bunx skills listis for understanding what this repo exposes locally in the current directory; it is not the command to verify machine-wide installs.- Use
bunx skills list -gto inspect user-level global installs. - Use
skill-registry.jsonas the desired skill registry. - Use
scripts/audit-global-skills --profile <dev|kicpa>to compare exact managed-root state with one selected profile. The default is read-only;--applyinstalls or updates remote Skills CLI entries, while the exact--prune <sha256:digest> --yescommand printed by that audit separately quarantines only the reviewed verified legacy duplicates. - Run the dependency-free registry and reconciler tests with
node --test scripts/lib/skill-registry.test.js scripts/lib/global-skill-state.test.js scripts/audit-global-skills.test.js. - Validate this repo as a local source with
bunx skills add ./skills --list. - Validate one skill directly with
bunx skills add ./skills/<skill-name> --list. - Validate published skill metadata and local links with
scripts/validate-skills. - Validate one Codex plugin with
python3 ~/.codex/skills/.system/plugin-creator/scripts/validate_plugin.py plugins/<plugin-name>. - If that plugin validator reports missing
yaml, run it from a temporary virtualenv withPyYAMLinstalled. - Install this repo's Codex marketplace for ongoing machine use from the remote:
codex plugin marketplace add https://github.com/sjunepark/agent-scripts.git --ref main. - Do not leave this repo's Codex plugin marketplace pointed at
/Users/sejunpark/IT/agent-scriptsor another local working tree unless the user explicitly asks for a temporary local development install. - After changing repo-managed plugins for ongoing use, commit and push first,
then run
codex plugin marketplace upgrade personaland reinstall the affected plugin withcodex plugin add <plugin-name>@personal. - Install or reinstall
chezmoi-syncwithcodex plugin add chezmoi-sync@personal. - Enable the optional Git hook with
git config core.hooksPath hooks; it runsscripts/validate-skills. - For installs on individual machines, use remote GitHub sources so updates can flow across machines without depending on the current working tree.
- For skills, use the GitHub
skills/subpath so installs do not publish repo-local.agents/and.claude/skills. - If a skill change should be synced or reinstalled from the remote URL, commit and push that change first, then run the remote-URL
bunx skills add ...command. Do not reinstall from the remote before the relevant commit is published. - Reconcile a machine only after intended public skill changes are committed,
pushed, and present at the registry's remote source; fetch that ref and verify
each intended skill tree matches the published tree, including after squash
or rebase. Run the read-only profile audit, then
--apply, review the remaining prune plan, and copy its exact digest-bound command only when those verified duplicates should be quarantined. - A first-run stale Skills CLI copy without trusted local-hash provenance is
not an ordinary update. Review the proposed replacement and use
the printed
--replace-unverified <sha256:digest> --yescommand only when its manifest-backed backup and remote reinstall are intended. - Do not use
--allfor scoped installs; in the currentskillsCLI it expands to both--skill '*'and--agent '*', which can override the intended agent restriction and recreate shared~/.agents/skillsinstalls. - The reconciler intentionally keeps selected Codex/Pi-compatible skills in
~/.agents/skillsand selected Claude-compatible skills in~/.claude/skills; it does not create Pi-specific copies. --applyrecords verified local tree hashes in~/.agents/.global-skill-state.json. Exact preexisting copies are adopted; later updates proceed only while installed content still matches the record.- Do not install this repo's skills from the current working tree,
.or./skills, when the goal is to install them for ongoing use on a machine. - Use local-path skill or plugin installs only for local validation, unpublished work, or explicitly requested temporary development testing.
- Use
-gonly when the task is specifically about a global install. Global installs write to user-level directories such as~/.claude/skills,~/.pi/agent/skills, or the shared~/.agents/skillsdepending on agent and install mode. - Do not document
bunx skills add . ...for this repo unless that path is made to work;./skillsis the local validation path that currently works. - Restore quarantined entries only with the manifest-specific command printed by the prune operation; restoration refuses to overwrite an active path.
- Prefer editing an existing skill in place over adding new top-level conventions.
- When a skill's behavior changes, update
SKILL.mdand any referenced files in the same change. - When a plugin's behavior changes, update its manifest, hooks, scripts, and
docs/settings-sync.mdtogether when those docs are affected. Keep plugins skillless unless agent-facing instructions are worth the persistent context. - When the goal is to sync that changed skill onto a machine, tell the user to commit and push first so the GitHub
skills/URL can be used for the install. - Keep skill instructions concise, executable, and tool-facing.
- Prefer exact commands and concrete paths over generic guidance.
- There is no package manifest, CI workflow, or formatter config at the repo root today.
- Dependency-free Node tests cover the registry and global skill reconciler.
- There is a repository-local skill validation script at
scripts/validate-skills. - Do not add build or lint instructions to this file unless those workflows are added to the repository.