docs(docs): clarify skills sync workflow in documentation

This commit is contained in:
Prad Nukala committed 2026-09-30 12:24:35 -04:00
1 parent 2a71906917
commit 9c3539ed83
6 files changed
+225 -170

No files matched your search

+7 -7
View File
@@ -1,9 +1,9 @@
--- ---
title: Claude Code title: Claude Code
description: Claude Code settings, hooks, plugins, slash commands, and skill links managed under ~/.claude. description: Claude Code settings, hooks, plugins, and slash commands managed under ~/.claude, plus the skills installed there.
--- ---
Claude Code is Anthropic's terminal coding agent. The repo manages its user-level settings, hook scripts, custom slash commands, and the skill links it loads. The `claude` binary itself is not installed by chezmoi. Claude Code is Anthropic's terminal coding agent. The repo manages its user-level settings, hook scripts, and custom slash commands. Its skills are installed by the [skills sync](/ai/skills), not stored in the repo. The `claude` binary itself is not installed by chezmoi.
## Files ## Files
@@ -15,8 +15,6 @@ Claude Code is Anthropic's terminal coding agent. The repo manages its user-leve
| `dot_claude/hooks/executable_herdr-agent-state.sh` | `~/.claude/hooks/herdr-agent-state.sh` | Executable, generated by herdr | | `dot_claude/hooks/executable_herdr-agent-state.sh` | `~/.claude/hooks/herdr-agent-state.sh` | Executable, generated by herdr |
| `dot_claude/hooks/gitnexus/gitnexus-hook.cjs` | `~/.claude/hooks/gitnexus/gitnexus-hook.cjs` | Present but not wired in `settings.json` | | `dot_claude/hooks/gitnexus/gitnexus-hook.cjs` | `~/.claude/hooks/gitnexus/gitnexus-hook.cjs` | Present but not wired in `settings.json` |
| `dot_claude/commands/*.md` | `~/.claude/commands/*.md` | User slash commands | | `dot_claude/commands/*.md` | `~/.claude/commands/*.md` | User slash commands |
| `dot_claude/skills/symlink_*` | `~/.claude/skills/*` | Symlinks into `~/.agents/skills` |
| `dot_claude/skills/<dir>/` | `~/.claude/skills/<dir>/` | Claude-only skills kept as real directories |
None of these are role-gated. Hook commands in `settings.json` use absolute `/home/prad/...` paths; on a machine with a different home directory, edit them after cloning. None of these are role-gated. Hook commands in `settings.json` use absolute `/home/prad/...` paths; on a machine with a different home directory, edit them after cloning.
@@ -184,10 +182,12 @@ A Node `PreToolUse` handler that adds GitNexus code-graph context to searches. `
## Skills ## Skills
`~/.claude/skills/` holds two kinds of entries: `~/.claude/skills/` is not in the repo. The `25-skills` apply script installs into it with the Skills CLI from `.chezmoidata/skills.yaml` (see [Skills](/ai/skills)), and it holds two kinds of entries:
- **Symlinks** (`symlink_<name>` in the source). Each file contains a relative target such as `../../.agents/skills/blume`, so `~/.claude/skills/blume` resolves to `~/.agents/skills/blume`. The shared library is documented on the [Skills](/ai/skills) page. - **Symlinks** for every `universal` skill: `~/.claude/skills/blume` → `../../.agents/skills/blume`, so Claude Code reads the shared library.
- **Real directories** for Claude-only skills: `absurd`, `agents-sdk`, `cloudflare`, `cloudflare-email-service`, `cloudflare-one`, `cloudflare-one-migrations`, `create-beads-orchestration`, `durable-objects`, `sandbox-sdk`, `todoist-cli`, `turnstile-spin`, `web-perf`, `workers-best-practices`. See [Claude-only skills](/ai/skills#claude-only-skills). - **Real directories** for entries with `agents: [claude-code]`: `absurd`, `agents-sdk`, `cloudflare-email-service`, `cloudflare-one`, `cloudflare-one-migrations`, `create-beads-orchestration`, `durable-objects`, `sandbox-sdk`, `turnstile-spin`, `web-perf`.
`omarchy`, `diagnose-crash`, and `terminal-browser` are installed by other packages and left alone by the sync.
## Repo-local settings ## Repo-local settings
+3 -7
View File
@@ -15,7 +15,7 @@ The repo manages configuration for two coding agents and a skill library they sh
Config, keybindings, MCP servers, theme, commands, and scheduled research loops under `~/.omp`. Config, keybindings, MCP servers, theme, commands, and scheduled research loops under `~/.omp`.
</Card> </Card>
<Card title="Skills" href="/ai/skills" icon="library"> <Card title="Skills" href="/ai/skills" icon="library">
The `~/.agents/skills` library, its lock file, and the symlinks that expose it to Claude Code. Agent skills declared in `.chezmoidata/skills.yaml` and installed into `~/.agents/skills` and `~/.claude/skills` by an apply script.
</Card> </Card>
</CardGroup> </CardGroup>
@@ -23,9 +23,9 @@ The repo manages configuration for two coding agents and a skill library they sh
| Page | Source in repo | Target in `$HOME` | Covers | | Page | Source in repo | Target in `$HOME` | Covers |
| --- | --- | --- | --- | | --- | --- | --- | --- |
| [Claude Code](/ai/claude-code) | `dot_claude/` | `~/.claude/` | `settings.json`, hook scripts, `/commands`, empty `CLAUDE.md`, skill symlinks | | [Claude Code](/ai/claude-code) | `dot_claude/` | `~/.claude/` | `settings.json`, hook scripts, `/commands`, empty `CLAUDE.md` |
| [omp](/ai/omp) | `dot_omp/` | `~/.omp/` | `agent/config.yml`, `keybindings.yml`, `mcp.json`, cyberdream theme, commands, loops | | [omp](/ai/omp) | `dot_omp/` | `~/.omp/` | `agent/config.yml`, `keybindings.yml`, `mcp.json`, cyberdream theme, commands, loops |
| [Skills](/ai/skills) | `dot_agents/` | `~/.agents/` | `.skill-lock.json` and every skill directory | | [Skills](/ai/skills) | `.chezmoidata/skills.yaml`, `.chezmoiscripts/run_onchange_after_25-skills.sh.tmpl` | `~/.agents/skills/`, `~/.claude/skills/` | Skill list and sources; installed by the Skills CLI, not vendored |
## Layout ## Layout
@@ -39,7 +39,6 @@ The repo manages configuration for two coding agents and a skill library they sh
- executable_cmem-to-obsidian.py - executable_cmem-to-obsidian.py
- executable_herdr-agent-state.sh - executable_herdr-agent-state.sh
- gitnexus/ - gitnexus/
- skills/
- dot_omp/ - dot_omp/
- private_agent/ - private_agent/
- private_config.yml - private_config.yml
@@ -50,9 +49,6 @@ The repo manages configuration for two coding agents and a skill library they sh
- loops/ - loops/
- bin/ - bin/
- goals/ - goals/
- dot_agents/
- dot_skill-lock.json
- skills/
</FileTree> </FileTree>
+190 -146
View File
@@ -1,176 +1,220 @@
--- ---
title: Skills title: Skills
description: The shared agent skill library in ~/.agents/skills, its lock file, and how Claude Code links to it. description: Agent skills declared in .chezmoidata/skills.yaml and installed into ~/.agents/skills and ~/.claude/skills by a chezmoi script.
--- ---
Agent skills are folders with a `SKILL.md` file (frontmatter `name` and `description`, then instructions) that agents load on demand. The repo keeps one shared library in `~/.agents/skills`. Agents that follow the open skills layout read it from there, and Claude Code reaches it through symlinks in `~/.claude/skills`. Agent skills are folders with a `SKILL.md` file (frontmatter `name` and `description`, then instructions) that agents load on demand. The repo does not vendor them. It declares each skill and its source in `.chezmoidata/skills.yaml`, and the `run_onchange_after_25-skills.sh.tmpl` script installs them with the Skills CLI (`npx skills`) on `chezmoi apply`.
## Files ## Files
| Source in repo | Target | Notes | | Source in repo | Target | Notes |
| --- | --- | --- | | --- | --- | --- |
| `dot_agents/skills/<name>/` | `~/.agents/skills/<name>/` | 82 skill directories; in symlink mode each plain file is a symlink into the repo | | `.chezmoidata/skills.yaml` | chezmoi data `.skills` | CLI version, default agents, and one entry per source |
| `dot_agents/dot_skill-lock.json` | `~/.agents/.skill-lock.json` | Install record written by the `skills` CLI | | `.chezmoiscripts/run_onchange_after_25-skills.sh.tmpl` | runs `skills add` / `skills remove` | Re-runs when `.skills` changes; see [Scripts](/chezmoi/scripts#25-skills) |
| `dot_claude/skills/symlink_<name>` | `~/.claude/skills/<name>` | Relative symlink to `../../.agents/skills/<name>` |
Not role-gated; the library is applied on every machine. Not role-gated; the sync runs on every machine. Installed skill files are machine state, not repo files:
| Path | Written by | Contents |
| --- | --- | --- |
| `~/.agents/skills/<name>/` | Skills CLI | Shared library for `universal` installs, read by Codex, Gemini CLI, OpenCode, Zed, … |
| `~/.claude/skills/<name>` | Skills CLI | Relative symlink `../../.agents/skills/<name>` for universal installs; a real copied directory for Claude-only installs |
| `$XDG_STATE_HOME/skills/.skill-lock.json` | Skills CLI | The CLI's own install record (`~/.agents/.skill-lock.json` when `XDG_STATE_HOME` is unset) |
| `${XDG_STATE_HOME:-~/.local/state}/chezmoi/skills.txt` | sync script | Skill names installed by the previous sync, used to remove undeclared ones |
## skills.yaml
```yaml
skills:
cli: skills@1.7.0 # pinned CLI, run via npx -y
agents: [universal, claude-code] # default install targets
sources:
- source: haydenbleasel/blume
skills: [blume, blume-migrate, blume-update-docs]
- source: cloudflare/skills
agents: [claude-code] # Claude Code only
skills: [agents-sdk, durable-objects]
```
| Key | Meaning |
| --- | --- |
| `cli` | npm spec of the Skills CLI, run as `npx -y <cli>` |
| `agents` | Default `-a` targets. `universal` is `~/.agents/skills`; `claude-code` is `~/.claude/skills` |
| `sources[].source` | Anything `skills add` accepts: `owner/repo` (default branch), a GitHub tree URL (pins a ref or subdirectory), or a well-known endpoint URL |
| `sources[].skills` | Skill names to install from that source (`--skill`) |
| `sources[].agents` | Optional override of the default `agents` |
110 skills across 42 source entries. `cloudflare/skills` appears twice: once with the defaults, once with `agents: [claude-code]`.
### Pinned sources
Unpinned sources track the upstream default branch, so skill content updates whenever the sync runs. Skills that upstream deleted or renamed are pinned to the last ref that still has them:
| Source | Skills | Reason |
| --- | --- | --- |
| `https://github.com/mattpocock/skills/tree/v1.1.0` | `design-an-interface`, `obsidian-vault`, `qa`, `request-refactor-plan`, `ubiquitous-language`, `writing-great-skills` | Removed upstream in c66bdee (`writing-great-skills` became `writing-for-agents`) |
| `https://github.com/mattpocock/skills/tree/153fc1b…` | `resolving-merge-conflicts` | Removed upstream in daa01d8 |
| `https://github.com/terrylica/cc-skills/tree/6d35f84…` | `mise-tasks` | Retired upstream in dd0d3f2f |
| `https://github.com/cloudflare/skills/tree/30553f8…` | `sandbox-sdk` | Replaced upstream by `sandbox-stable` / `sandbox-next` in f96bff7 |
`create-beads-orchestration` uses the subdirectory URL `https://github.com/AvivK5498/Claude-Code-Beads-Orchestration/tree/main/skills/create-beads-orchestration`, because the bare repo's root `SKILL.md` would install the whole repository as the skill. The Mintlify skills come from the well-known endpoint `https://mintlify.com/docs`.
### Not managed
`omarchy` and `diagnose-crash` (symlinks into `/usr/share/omarchy`) and `terminal-browser` are installed by other packages. They are not in `skills.yaml`, and the sync never touches them.
## Managing skills ## Managing skills
Skills are installed and updated with the Skills CLI (`npx skills`), which the `find-skills` skill documents: Find a skill's source and name with the CLI, then declare it:
```sh ```sh
npx skills find <query> # search the registry npx skills find <query> # search the registry
npx skills add <owner/repo@skill> -g -y -a universal claude-code # install at user level npx skills add <source> --list # list the skills a source provides
npx skills check # look for updates
npx skills update # update everything
``` ```
Always pass `-a universal claude-code` to `add`. Without an explicit agent list, skills CLI 1.7.0 adds every `.agents/skills` agent to the install targets, including PromptScript, which has no global skills directory. The skill still lands in `~/.agents/skills`, but the run ends with `✗ <skill> → PromptScript: PromptScript does not support global skill installation` (upstream [vercel-labs/skills#1496](https://github.com/vercel-labs/skills/issues/1496)). - **Add**: add the name under its source in `.chezmoidata/skills.yaml` (or a new `source` entry) and run `chezmoi apply`.
- **Remove**: delete the name and run `chezmoi apply`; the sync runs `skills remove` for it.
- **Claude Code only**: put it in an entry with `agents: [claude-code]`.
A skill installed this way lands in `~/.agents/skills/<name>/` as plain files. Add it to the repo with `chezmoi add ~/.agents/skills/<name>`, and commit the updated `.skill-lock.json` alongside it. To expose it to Claude Code, add a `dot_claude/skills/symlink_<name>` file containing `../../.agents/skills/<name>`. Do not `npx skills add` by hand and expect chezmoi to track it; only `skills.yaml` is the record. The script only re-runs when `.skills` changes, so unpinned sources pick up upstream updates on the next sync after an edit to `skills.yaml`.
### .skill-lock.json ## How the sync works
The lock file (`"version": 3`) has one entry per installed skill, keyed by skill name:
| Field | Meaning |
| --- | --- |
| `source` | Where the skill came from: `owner/repo` for GitHub, or a domain for well-known endpoints |
| `sourceType` | `github` (77 entries) or `well-known` (3 entries, all `mintlify.com`) |
| `sourceUrl` | Git clone URL, or the `.well-known/agent-skills/.../skill.md` URL |
| `skillPath` | Path of `SKILL.md` inside the source repo (GitHub sources only) |
| `skillFolderHash` | Hash of the skill folder at the recorded version (empty for well-known sources) |
| `installedAt` / `updatedAt` | ISO timestamps of first install and last update |
A top-level `dismissed` object records dismissed CLI prompts (`findSkillsPrompt: true`).
The lock lists 80 skills. The largest sources are `mattpocock/skills` (23), `vercel-labs/json-render` (16), `Leonxlnx/taste-skill` (7), `haydenbleasel/blume` (3). The lock and the directory do not match exactly:
- In the lock with no directory in the repo: `Technical Writer`, `codegen`, `ethereum-wingman`, `gh-stack`, `image`, `jotai`, `mcp`, `react-email`, `react-native`, `react-pdf`, `redux`, `remotion`, `solid`, `svelte`, `vue`, `xstate`, `zustand`.
- In the directory with no lock entry (added by hand or copied from elsewhere): shown as `untracked` in the table below.
## How Claude Code resolves skills
<Steps> <Steps>
<Step title="Source"> <Step title="Trigger">
`dot_claude/skills/symlink_blume` is a one-line file containing `../../.agents/skills/blume`. The script is `run_onchange_after_`: chezmoi re-runs it after applying files whenever the sha256 of `.skills` (as JSON) changes. If `npx` is missing it warns and skips.
</Step> </Step>
<Step title="Apply"> <Step title="Migrate">
chezmoi's `symlink_` prefix turns it into the symlink `~/.claude/skills/blume`, pointing at `../../.agents/skills/blume`. One-time cleanup of the old vendored layout: deletes any directory in `~/.agents/skills` or `~/.claude/skills` that contains symlinks into the chezmoi source directory, and removes `~/.agents/.skill-lock.json` if it is a symlink into the source directory.
</Step> </Step>
<Step title="Resolve"> <Step title="Remove">
Relative to `~/.claude/skills/`, the target is `~/.agents/skills/blume`, whose files are in turn symlinks into the chezmoi source directory. Edits to a skill in the repo take effect immediately. Skills listed in `skills.txt` (the previous sync) but no longer declared are removed with `skills remove -g -y`.
</Step>
<Step title="Install">
One `skills add <source> -g -y -a <agents> --skill <names…>` per source entry. Output is captured; on failure the last 8 lines are printed.
</Step>
<Step title="Record">
The declared names are written to `skills.txt`. Claude-only (`-a claude-code`) installs are not recorded in the CLI lock, which is why the script keeps its own state file.
</Step>
<Step title="Retry">
If any source failed the script exits 1, so chezmoi keeps the old hash and runs it again on the next apply.
</Step> </Step>
</Steps> </Steps>
Twelve library skills have no Claude link, so only agents that read `~/.agents/skills` directly can see them. They are the three fumadocs skills, five of the six tanstack skills, `interface-design`, `laws-of-ux`, `ui-ux-pro-max`, and `web-design-guidelines` (marked `—` below). Three Claude-side entries (`cloudflare`, `todoist-cli`, `workers-best-practices`) are separate real directories in `dot_claude/skills/` rather than links, so Claude Code reads its own copy (`own copy` below). Every universal skill gets both a `~/.agents/skills` directory and a `~/.claude/skills` link. Claude Code resolves `~/.claude/skills/<name>` → `../../.agents/skills/<name>`, so both read the same files.
## Library ## Library
The Description column is the first sentence of each skill's `SKILL.md` frontmatter `description`. Lock source is the `source` field from `.skill-lock.json`. The Description column is the first sentence of each installed skill's `SKILL.md` frontmatter `description`. Source is the `source` from `skills.yaml` (GitHub URLs shortened to `owner/repo/tree/<ref>`). Agents `claude-code` means the skill is installed as a real directory in `~/.claude/skills` only; see [Claude Code](/ai/claude-code#skills).
| Skill | Lock source | Claude link | Description | | Skill | Source | Agents | Description |
| --- | --- | :-: | --- | | --- | --- | --- | --- |
| `blume` | `haydenbleasel/blume` | symlink | Build and maintain documentation sites with Blume, the markdown-first docs framework on Astro and Vite. | | `absurd` | `earendil-works/absurd` | claude-code | Debug and operate Absurd durable workflows with absurdctl. |
| `blume-migrate` | `haydenbleasel/blume` | symlink | Migrate an existing documentation site (Mintlify, Docusaurus, Fumadocs, Nextra, Starlight, or any docs framework) to Blume, the markdown-first docs framework on Astro. | | `agents-sdk` | `cloudflare/skills` | claude-code | Build, debug, or review Cloudflare Agents SDK applications using the agents package. |
| `blume-update-docs` | `haydenbleasel/blume` | symlink | Keep a Blume docs site in sync with the product it documents. | | `blume` | `haydenbleasel/blume` | universal + claude-code | Build and maintain documentation sites with Blume, the markdown-first docs framework on Astro and Vite. |
| `brandkit` | `Leonxlnx/taste-skill` | symlink | Premium brand-kit image generation skill for creating high-end brand-guidelines boards, logo systems, identity decks, and visual-world presentations. | | `blume-migrate` | `haydenbleasel/blume` | universal + claude-code | Migrate an existing documentation site (Mintlify, Docusaurus, Fumadocs, Nextra, Starlight, or any docs framework) to Blume, the markdown-first docs framework on Astro. |
| `bun-development` | `sickn33/antigravity-awesome-skills` | symlink | Fast, modern JavaScript/TypeScript development with the Bun runtime, inspired by oven-sh/bun. | | `blume-update-docs` | `haydenbleasel/blume` | universal + claude-code | Keep a Blume docs site in sync with the product it documents. |
| `cloudflare` | untracked | own copy | Comprehensive Cloudflare platform skill covering Workers, Pages, storage (KV, D1, R2), AI (Workers AI, Vectorize, Agents SDK), networking (Tunnel, Spectrum), security (WAF, DDoS), and infrastructure-as-code (Terraform, Pulumi). | | `brandkit` | `Leonxlnx/taste-skill` | universal + claude-code | Premium brand-kit image generation skill for creating high-end brand-guidelines boards, logo systems, identity decks, and visual-world presentations. |
| `codebase-design` | `mattpocock/skills` | symlink | Shared vocabulary for designing deep modules. | | `bun-development` | `sickn33/antigravity-awesome-skills` | universal + claude-code | Fast, modern JavaScript/TypeScript development with the Bun runtime, inspired by [oven-sh/bun](https://github.com/oven-sh/bun). |
| `core` | `vercel-labs/json-render` | symlink | Core package for defining schemas, catalogs, and AI prompt generation for json-render. | | `cloudflare` | `cloudflare/skills` | universal + claude-code | Discover and choose Cloudflare products for apps, APIs, AI agents, storage, networking, and security. |
| `deepinit` | `yeachan-heo/oh-my-claudecode` | symlink | Deep codebase initialization with hierarchical AGENTS.md documentation | | `cloudflare-email-service` | `cloudflare/skills` | claude-code | Implement or troubleshoot Cloudflare Email Sending and Email Routing integrations and their delivery configuration. |
| `design-an-interface` | untracked | symlink | Generate multiple radically different interface designs for a module using parallel sub-agents. | | `cloudflare-one` | `cloudflare/skills` | claude-code | Design, configure, troubleshoot, or review Cloudflare One Zero Trust and SASE deployments. |
| `design-taste-frontend` | `Leonxlnx/taste-skill` | symlink | Anti-slop frontend skill for landing pages, portfolios, and redesigns. | | `cloudflare-one-migrations` | `cloudflare/skills` | claude-code | Assess and plan migrations from existing VPN, SWG, or SASE platforms to Cloudflare One, including policy mapping, parity gaps, and rollout. |
| `diagnosing-bugs` | `mattpocock/skills` | symlink | Diagnosis loop for hard bugs and performance regressions. | | `codebase-design` | `mattpocock/skills` | universal + claude-code | Shared vocabulary for designing deep modules. |
| `domain-modeling` | `mattpocock/skills` | symlink | Build and sharpen a project's domain model. | | `core` | `vercel-labs/json-render` | universal + claude-code | Core package for defining schemas, catalogs, and AI prompt generation for json-render. |
| `find-skills` | `vercel-labs/skills` | symlink | Helps users discover and install agent skills when they ask questions like "how do I do X", "find a skill for X", "is there a skill that can...", or express interest in extending capabilities. | | `create-beads-orchestration` | `AvivK5498/Claude-Code-Beads-Orchestration/tree/main/skills/create-beads-orchestration` | claude-code | Bootstrap lean multi-agent orchestration with beads task tracking. |
| `fumadocs-component-docs` | untracked | — | Create component documentation with installation, usage examples, and preview sections. | | `deepinit` | `yeachan-heo/oh-my-claudecode` | universal + claude-code | Deep codebase initialization with hierarchical AGENTS.md documentation |
| `fumadocs-mdx-structure` | untracked | — | Create MDX documentation files with proper frontmatter, imports, and component integration. | | `design-an-interface` | `mattpocock/skills/tree/v1.1.0` | universal + claude-code | Generate multiple radically different interface designs for a module using parallel sub-agents. |
| `fumadocs-registry-integration` | untracked | — | Register 8-bit components in registry.json for shadcn/ui add command. | | `design-taste-frontend` | `Leonxlnx/taste-skill` | universal + claude-code | Anti-slop frontend skill for landing pages, portfolios, and redesigns. |
| `git-guardrails-claude-code` | `mattpocock/skills` | symlink | Set up Claude Code hooks to block dangerous git commands (push, reset --hard, clean, branch -D, etc.) before they execute. | | `diagnosing-bugs` | `mattpocock/skills` | universal + claude-code | Diagnosis loop for hard bugs and performance regressions. |
| `golang-pro` | `jeffallan/claude-skills` | symlink | Implements concurrent Go patterns using goroutines and channels, designs and builds microservices with gRPC or REST, optimizes Go application performance with pprof, and enforces idiomatic Go with generics, interfaces, and robust error handling. | | `domain-modeling` | `mattpocock/skills` | universal + claude-code | Build and sharpen a project's domain model. |
| `gpt-taste` | `Leonxlnx/taste-skill` | symlink | Elite UX/UI & Advanced GSAP Motion Engineer. | | `durable-objects` | `cloudflare/skills` | claude-code | Build, debug, or review Cloudflare Durable Objects code for persistent state and coordination. |
| `grill-me` | `mattpocock/skills` | symlink | A relentless interview to sharpen a plan or design. | | `eli5` | `coldteadotai/pr-lens` | universal + claude-code | Explains a codebase, a folder, a feature, a command or a pull request to someone who knows nothing about it, as a PR Lens canvas whose walkthrough builds the picture one part at a time. |
| `grill-with-docs` | `mattpocock/skills` | symlink | A relentless interview to sharpen a plan or design, which also creates docs (ADR's and glossary) as we go. | | `find-skills` | `vercel-labs/skills` | universal + claude-code | Helps users discover and install agent skills when they ask questions like "how do I do X", "find a skill for X", "is there a skill that can...", or express interest in extending capabilities. |
| `grilling` | `mattpocock/skills` | symlink | Grill the user relentlessly about a plan, decision, or idea. | | `fumadocs-component-docs` | `TheOrcDev/8bitcn-ui` | universal + claude-code | Create component documentation with installation, usage examples, and preview sections. |
| `handoff` | `mattpocock/skills` | symlink | Compact the current conversation into a handoff document for another agent to pick up. | | `fumadocs-mdx-structure` | `TheOrcDev/8bitcn-ui` | universal + claude-code | Create MDX documentation files with proper frontmatter, imports, and component integration. |
| `high-end-visual-design` | `Leonxlnx/taste-skill` | symlink | Teaches the AI to design like a high-end agency. | | `fumadocs-registry-integration` | `TheOrcDev/8bitcn-ui` | universal + claude-code | Register 8-bit components in registry.json for shadcn/ui add command. |
| `imagegen-frontend-web` | `Leonxlnx/taste-skill` | symlink | Elite frontend image-direction skill for generating premium, conversion-aware website design references. | | `git-guardrails-claude-code` | `mattpocock/skills` | universal + claude-code | Set up Claude Code hooks to block dangerous git commands (push, reset --hard, clean, branch -D, etc.) before they execute. |
| `implement` | `mattpocock/skills` | symlink | Implement a piece of work based on a spec or set of tickets. | | `golang-pro` | `jeffallan/claude-skills` | universal + claude-code | Implements concurrent Go patterns using goroutines and channels, designs and builds microservices with gRPC or REST, optimizes Go application performance with pprof, and enforces idiomatic Go with generics, interfaces, and robust error handling. |
| `improve-codebase-architecture` | `mattpocock/skills` | symlink | Scan a codebase for deepening opportunities, present them as a visual HTML report, then grill through whichever one you pick. | | `gpt-taste` | `Leonxlnx/taste-skill` | universal + claude-code | Elite UX/UI & Advanced GSAP Motion Engineer. |
| `interface-design` | untracked | — | This skill is for interface design — dashboards, admin panels, apps, tools, and interactive products. | | `grill-me` | `mattpocock/skills` | universal + claude-code | A relentless interview to sharpen a plan or design. |
| `laws-of-ux` | untracked | — | Review and guide UI implementations using the 21 Laws of UX. | | `grill-with-docs` | `mattpocock/skills` | universal + claude-code | A relentless interview to sharpen a plan or design, which also creates docs (ADR's and glossary) as we go. |
| `linear` | `openai/skills` | symlink | Manage issues, projects & team workflows in Linear. | | `grilling` | `mattpocock/skills` | universal + claude-code | Grill the user relentlessly about a plan, decision, or idea. |
| `linear-cli` | `schpet/linear-cli` | symlink | Manage Linear issues from the command line using the linear cli. | | `handoff` | `mattpocock/skills` | universal + claude-code | Compact the current conversation into a handoff document for another agent to pick up. |
| `linear-documents` | `finesssee/linear-cli` | symlink | Manage Linear documents. | | `high-end-visual-design` | `Leonxlnx/taste-skill` | universal + claude-code | Teaches the AI to design like a high-end agency. |
| `loop-me` | `mattpocock/skills` | symlink | Grill me about specs for the workflows I want to build, within this workspace. | | `imagegen-frontend-web` | `Leonxlnx/taste-skill` | universal + claude-code | Elite frontend image-direction skill for generating premium, conversion-aware website design references. |
| `loopy` | `Forward-Future/loop-library` | symlink | Discover, find, compare, audit, repair, adapt, craft, run, debrief, save, and prepare repeatable AI-agent loops for publication. | | `implement` | `mattpocock/skills` | universal + claude-code | Implement a piece of work based on a spec or set of tickets. |
| `migrate-to-shoehorn` | `mattpocock/skills` | symlink | Migrate test files from `as` type assertions to @total-typescript/shoehorn. | | `improve-codebase-architecture` | `mattpocock/skills` | universal + claude-code | Scan a codebase for deepening opportunities, present them as a visual HTML report, then grill through whichever one you pick. |
| `minimalist-ui` | `Leonxlnx/taste-skill` | symlink | Clean editorial-style interfaces. | | `interface-design` | `Dammyjay93/interface-design` | universal + claude-code | Craft-first interface design for dashboards, admin panels, SaaS apps, tools, settings pages, data interfaces, and interactive products. |
| `mintlify` | `mintlify.com` | symlink | Build and maintain documentation sites with Mintlify. | | `laws-of-ux` | `RoleModel/rolemodel-skills` | universal + claude-code | Review and guide UI implementations using the 21 Laws of UX. |
| `mintlify-api` | `mintlify.com` | symlink | Interact with the Mintlify REST API to manage deployments, trigger builds, and query documentation site metadata programmatically. | | `linear` | `openai/skills` | universal + claude-code | Manage issues, projects & team workflows in Linear. |
| `mintlify-docs` | `mintlify.com` | symlink | Build and maintain documentation sites with Mintlify. | | `linear-cli` | `schpet/linear-cli` | universal + claude-code | Manage Linear issues from the command line using the linear cli. |
| `native-sdk` | `vercel-labs/native` | symlink | Discovery skill for the Native SDK, the complete toolkit for building native desktop applications. | | `linear-documents` | `finesssee/linear-cli` | universal + claude-code | Manage Linear documents. |
| `obsidian-vault` | untracked | symlink | Search, create, and manage notes in the Obsidian vault with wikilinks and index notes. | | `loop-me` | `mattpocock/skills` | universal + claude-code | Grill me about specs for the workflows I want to build, within this workspace. |
| `openlogs-server-logs` | `charlietlamb/openlogs` | symlink | Fetch and inspect recent local server logs in repos that use openlogs or the `ol` CLI. | | `loopy` | `Forward-Future/loop-library` | universal + claude-code | Discover, find, compare, audit, repair, adapt, craft, run, debrief, save, and prepare repeatable AI-agent loops for publication. |
| `prototype` | `mattpocock/skills` | symlink | Build a throwaway prototype to answer a design question. | | `migrate-to-shoehorn` | `mattpocock/skills` | universal + claude-code | Migrate test files from `as` type assertions to @total-typescript/shoehorn. |
| `qa` | untracked | symlink | Interactive QA session where user reports bugs or issues conversationally, and the agent files GitHub issues. | | `minimalist-ui` | `Leonxlnx/taste-skill` | universal + claude-code | Clean editorial-style interfaces. |
| `react` | `vercel-labs/json-render` | symlink | React renderer for json-render that turns JSON specs into React components. | | `mintlify` | `https://mintlify.com/docs` | universal + claude-code | Build and maintain documentation sites with Mintlify. |
| `redesign-existing-projects` | `Leonxlnx/taste-skill` | symlink | Upgrades existing websites and apps to premium quality. | | `mintlify-api` | `https://mintlify.com/docs` | universal + claude-code | Interact with the Mintlify REST API to manage deployments, trigger builds, and query documentation site metadata programmatically. |
| `remix` | `remix-run/remix` | symlink | Build and review Remix 3 applications using the `remix` npm package and subpath imports. | | `mintlify-docs` | `https://mintlify.com/docs` | universal + claude-code | Build and maintain documentation sites with Mintlify. |
| `request-refactor-plan` | untracked | symlink | Create a detailed refactor plan with tiny commits via user interview, then file it as a GitHub issue. | | `mise-tasks` | `terrylica/cc-skills/tree/6d35f84` | universal + claude-code | Orchestrate multi-step project workflows using mise task definitions with dependency management and argument handling. |
| `resolving-merge-conflicts` | `mattpocock/skills` | symlink | Use when you need to resolve an in-progress git merge/rebase conflict. | | `native-sdk` | `vercel-labs/native` | universal + claude-code | Discovery skill for the Native SDK, the complete toolkit for building native desktop applications. |
| `rust-async-patterns` | `wshobson/agents` | symlink | Master Rust async programming with Tokio, async traits, error handling, and concurrent patterns. | | `no-ai-slop` | `petergyang/no-ai-slop` | universal + claude-code | Edit drafts into sharper, more human writing while preserving the writer's personal voice, or detect AI-slop patterns without rewriting. |
| `rust-best-practices` | `apollographql/skills` | symlink | Guide for writing idiomatic Rust code based on Apollo GraphQL's best practices handbook. | | `obsidian-vault` | `mattpocock/skills/tree/v1.1.0` | universal + claude-code | Search, create, and manage notes in the Obsidian vault with wikilinks and index notes. |
| `rust-testing` | `affaan-m/everything-claude-code` | symlink | Rust testing patterns including unit tests, integration tests, async testing, property-based testing, mocking, and coverage. | | `openlogs-server-logs` | `charlietlamb/openlogs` | universal + claude-code | Fetch and inspect recent local server logs in repos that use openlogs or the `ol` CLI. |
| `scaffold-exercises` | `mattpocock/skills` | symlink | Create exercise directory structures with sections, problems, solutions, and explainers that pass linting. | | `pr-lens` | `coldteadotai/pr-lens` | universal + claude-code | Draws a code change or part of a codebase as an animated architecture or data-flow diagram, on its own or in a pull request. |
| `setup-matt-pocock-skills` | `mattpocock/skills` | symlink | Configure this repo for the engineering skills: set up its issue tracker, triage label vocabulary, and domain doc layout. | | `prototype` | `mattpocock/skills` | universal + claude-code | Build a throwaway prototype to answer a design question. |
| `setup-pre-commit` | `mattpocock/skills` | symlink | Set up Husky pre-commit hooks with lint-staged (Prettier), type checking, and tests in the current repo. | | `qa` | `mattpocock/skills/tree/v1.1.0` | universal + claude-code | Interactive QA session where user reports bugs or issues conversationally, and the agent files GitHub issues. |
| `shadcn` | `shadcn-ui/ui` | symlink | Manages shadcn components and projects — adding, searching, fixing, debugging, styling, and composing UI, including chat interfaces. | | `react` | `vercel-labs/json-render` | universal + claude-code | React renderer for json-render that turns JSON specs into React components. |
| `solidity-foundry-development` | `whackur/solidity-agent-toolkit` | symlink | Foundry development workflow for Solidity smart contracts. | | `react-email` | `vercel-labs/json-render` | universal + claude-code | React Email renderer for json-render that turns JSON specs into HTML or plain-text emails using @react-email/components and @react-email/render. |
| `solidity-security` | `wshobson/agents` | symlink | Master smart contract security best practices to prevent common vulnerabilities and implement secure Solidity patterns. | | `redesign-existing-projects` | `Leonxlnx/taste-skill` | universal + claude-code | Upgrades existing websites and apps to premium quality. |
| `stop-slop` | `hardikpandya/stop-slop` | symlink | Remove AI writing patterns from prose. | | `remix` | `remix-run/remix` | universal + claude-code | Builds, reviews, and refactors Remix 3 apps using the remix package and remix/* imports. |
| `tanstack-form` | untracked | — | Headless, performant, and type-safe form state management for TS/JS, React, Vue, Angular, Solid, Lit, and Svelte. | | `remotion-best-practices` | `remotion-dev/skills` | universal + claude-code | Router for all Remotion skills |
| `tanstack-integration-best-practices` | untracked | — | Best practices for integrating TanStack Query with TanStack Router and TanStack Start. | | `remotion-captions` | `remotion-dev/skills` | universal + claude-code | Transcribing, displaying and animating captions |
| `tanstack-query-best-practices` | `deckardger/tanstack-agent-skills` | — | TanStack Query (React Query) best practices for data fetching, caching, mutations, and server state management. | | `remotion-create` | `remotion-dev/skills` | universal + claude-code | Create a new Remotion video |
| `tanstack-router-best-practices` | untracked | — | TanStack Router best practices for type-safe routing, data loading, search params, and navigation. | | `remotion-docs` | `remotion-dev/skills` | universal + claude-code | Search Remotion documentation |
| `tanstack-start-best-practices` | `deckardger/tanstack-agent-skills` | symlink | TanStack Start best practices for full-stack React applications. | | `remotion-interactivity` | `remotion-dev/skills` | universal + claude-code | Structure Remotion markup for interactivity |
| `tanstack-table` | untracked | — | Headless UI for building powerful tables & datagrids for TS/JS, React, Vue, Solid, Svelte, Qwik, Angular, and Lit. | | `remotion-maps` | `remotion-dev/skills` | universal + claude-code | Remotion Map animation knowledge |
| `tdd` | `mattpocock/skills` | symlink | Test-driven development. | | `remotion-markup` | `remotion-dev/skills` | universal + claude-code | Content, animation and effects best practices |
| `teach` | `mattpocock/skills` | symlink | Teach the user a new skill or concept, within this workspace. | | `remotion-multimedia` | `remotion-dev/skills` | universal + claude-code | Interacting with Mediabunny |
| `todoist-cli` | untracked | own copy | Manage Todoist tasks, projects, labels, filters, sections, comments, reminders, and workspaces via the `td` CLI. | | `remotion-render` | `remotion-dev/skills` | universal + claude-code | Export a Remotion video |
| `triage` | `mattpocock/skills` | symlink | Move issues and external PRs through a state machine of triage roles, categorise, verify, grill if needed, and write agent-ready briefs. | | `remotion-saas` | `remotion-dev/skills` | universal + claude-code | Build an app with Remotion |
| `typescript-expert` | `remix-run/remix` | symlink | Write, refactor, or review TypeScript code with strict, precise, maintainable types and without unnecessary `any`, type assertions, or type suppressions. | | `remotion-studio` | `remotion-dev/skills` | universal + claude-code | Preview a Remotion video |
| `ubiquitous-language` | untracked | symlink | Extract a DDD-style ubiquitous language glossary from the current conversation, flagging ambiguities and proposing canonical terms. | | `remotion-upgrade` | `remotion-dev/skills` | universal + claude-code | Upgrade Remotion, and related packages |
| `ui-ux-pro-max` | untracked | — | UI/UX design intelligence for web and mobile. | | `request-refactor-plan` | `mattpocock/skills/tree/v1.1.0` | universal + claude-code | Create a detailed refactor plan with tiny commits via user interview, then file it as a GitHub issue. |
| `uv-package-manager` | `wshobson/agents` | symlink | Master the uv package manager for fast Python dependency management, virtual environments, and modern Python project workflows. | | `resolving-merge-conflicts` | `mattpocock/skills/tree/153fc1b` | universal + claude-code | Use when you need to resolve an in-progress git merge/rebase conflict. |
| `web-design-guidelines` | `vercel-labs/agent-skills` | — | Review UI code for Web Interface Guidelines compliance. | | `rust-async-patterns` | `wshobson/agents` | universal + claude-code | Master Rust async programming with Tokio, async traits, error handling, and concurrent patterns. |
| `workers-best-practices` | untracked | own copy | Reviews and authors Cloudflare Workers code against production best practices. | | `rust-best-practices` | `apollographql/skills` | universal + claude-code | Guide for writing idiomatic Rust code based on Apollo GraphQL's best practices handbook. |
| `wrangler` | `cloudflare/skills` | symlink | Cloudflare Workers CLI for deploying, developing, and managing Workers, KV, R2, D1, Vectorize, Hyperdrive, Workers AI, Containers, Queues, Workflows, Pipelines, and Secrets Store. | | `rust-skills` | `leonardomso/rust-skills` | universal + claude-code | Comprehensive Rust coding guidelines with 265 rules across 26 categories. |
| `write-tests` | `remix-run/remix` | symlink | Write, refactor, or review tests in the Remix repository. | | `rust-testing` | `affaan-m/everything-claude-code` | universal + claude-code | Rust testing patterns including unit tests, integration tests, async testing, property-based testing, mocking, and coverage. |
| `writing-beats` | `mattpocock/skills` | symlink | Writing, exploit; assemble raw material into a journey of beats, grounding each term before a beat leans on it. | | `sandbox-sdk` | `cloudflare/skills/tree/30553f8` | claude-code | Build sandboxed applications for secure code execution. |
| `writing-fragments` | `mattpocock/skills` | symlink | Writing, explore: mine raw fragments, no structure yet. | | `scaffold-exercises` | `mattpocock/skills` | universal + claude-code | Create exercise directory structures with sections, problems, solutions, and explainers that pass linting. |
| `writing-great-skills` | untracked | symlink | Reference for writing and editing skills well — the vocabulary and principles that make a skill predictable. | | `setup-matt-pocock-skills` | `mattpocock/skills` | universal + claude-code | Configure this repo for the engineering skills: set up its issue tracker, triage label vocabulary, and domain doc layout. |
| `writing-shape` | `mattpocock/skills` | symlink | Writing, exploit: shape raw material into an article, paragraph by paragraph. | | `setup-pre-commit` | `mattpocock/skills` | universal + claude-code | Set up Husky pre-commit hooks with lint-staged (Prettier), type checking, and tests in the current repo. |
| `shadcn` | `shadcn-ui/ui` | universal + claude-code | Manages shadcn components and projects — adding, searching, fixing, debugging, styling, and composing UI, including chat interfaces. |
## Claude-only skills | `solidity-foundry-development` | `whackur/solidity-agent-toolkit` | universal + claude-code | Foundry development workflow for Solidity smart contracts. |
| `solidity-security` | `wshobson/agents` | universal + claude-code | Master smart contract security best practices to prevent common vulnerabilities and implement secure Solidity patterns. |
These live as real directories in `dot_claude/skills/` (target `~/.claude/skills/<name>/`) and are not part of the shared library or the lock file. See [Claude Code](/ai/claude-code#skills). | `stop-slop` | `hardikpandya/stop-slop` | universal + claude-code | Remove AI writing patterns from prose. |
| `tanstack-form` | `tanstack-skills/tanstack-skills` | universal + claude-code | Headless, performant, and type-safe form state management for TS/JS, React, Vue, Angular, Solid, Lit, and Svelte. |
| Skill | Description | | `tanstack-integration-best-practices` | `deckardger/tanstack-agent-skills` | universal + claude-code | Best practices for integrating TanStack Query with TanStack Router and TanStack Start. |
| --- | --- | | `tanstack-query-best-practices` | `deckardger/tanstack-agent-skills` | universal + claude-code | TanStack Query (React Query) best practices for data fetching, caching, mutations, and server state management. |
| `absurd` | Debug and operate Absurd durable workflows with absurdctl. | | `tanstack-router-best-practices` | `deckardger/tanstack-agent-skills` | universal + claude-code | TanStack Router best practices for type-safe routing, data loading, search params, and navigation. |
| `agents-sdk` | Build AI agents on Cloudflare Workers using the Agents SDK. | | `tanstack-start-best-practices` | `deckardger/tanstack-agent-skills` | universal + claude-code | TanStack Start best practices for full-stack React applications. |
| `cloudflare` | Comprehensive Cloudflare platform skill covering Workers, Pages, storage (KV, D1, R2), AI (Workers AI, Vectorize, Agents SDK), feature flags (Flagship), networking (Tunnel, Spectrum), security (WAF, DDoS), and infrastructure-as-code (Terraform, Pulumi). | | `tanstack-table` | `tanstack-skills/tanstack-skills` | universal + claude-code | Headless UI for building powerful tables & datagrids for TS/JS, React, Vue, Solid, Svelte, Qwik, Angular, and Lit. |
| `cloudflare-email-service` | Send and receive transactional emails with Cloudflare Email Service (Email Sending + Email Routing). | | `tdd` | `mattpocock/skills` | universal + claude-code | Test-driven development. |
| `cloudflare-one` | Guides Cloudflare One Zero Trust and SASE work across Access, Gateway, WARP, Tunnel, Cloudflare WAN, DLP, CASB, device posture, and identity. | | `teach` | `mattpocock/skills` | universal + claude-code | Teach the user a new skill or concept, within this workspace. |
| `cloudflare-one-migrations` | Plans migrations from Zscaler ZIA/ZPA, Palo Alto, legacy VPN, SWG, or SASE stacks to Cloudflare One. | | `todoist-cli` | `Doist/todoist-cli` | universal + claude-code | Manage Todoist tasks, projects, labels, filters, sections, comments, reminders, and workspaces via the `td` CLI. |
| `create-beads-orchestration` | Bootstrap lean multi-agent orchestration with beads task tracking. | | `triage` | `mattpocock/skills` | universal + claude-code | Move issues and external PRs through a state machine of triage roles, categorise, verify, grill if needed, and write agent-ready briefs. |
| `durable-objects` | Create and review Cloudflare Durable Objects. | | `turnstile-spin` | `cloudflare/skills` | claude-code | Set up, repair, or migrate to Cloudflare Turnstile bot verification in an existing frontend and backend, including server-side Siteverify. |
| `sandbox-sdk` | Build sandboxed applications for secure code execution. | | `typescript-expert` | `remix-run/remix` | universal + claude-code | Write, refactor, or review TypeScript code with strict, precise, maintainable types and without unnecessary `any`, type assertions, or type suppressions. |
| `todoist-cli` | Manage Todoist tasks, projects, labels, filters, sections, comments, reminders, and workspaces via the `td` CLI. | | `ubiquitous-language` | `mattpocock/skills/tree/v1.1.0` | universal + claude-code | Extract a DDD-style ubiquitous language glossary from the current conversation, flagging ambiguities and proposing canonical terms. |
| `turnstile-spin` | Set up Cloudflare Turnstile end-to-end in a project. | | `ui-ux-pro-max` | `nextlevelbuilder/ui-ux-pro-max-skill` | universal + claude-code | UI/UX design intelligence for web, mobile, and desktop. |
| `web-perf` | Analyzes web performance using Chrome DevTools MCP. | | `uv-package-manager` | `wshobson/agents` | universal + claude-code | Master the uv package manager for fast Python dependency management, virtual environments, and modern Python project workflows. |
| `workers-best-practices` | Reviews and authors Cloudflare Workers code against production best practices. | | `web-design-guidelines` | `vercel-labs/agent-skills` | universal + claude-code | Review UI code for Web Interface Guidelines compliance. |
| `web-perf` | `cloudflare/skills` | claude-code | Audit, diagnose, or optimize website loading and interaction performance, Core Web Vitals, and Lighthouse performance scores. |
| `workers-best-practices` | `cloudflare/skills` | universal + claude-code | Cloudflare Workers best practices for production applications. |
| `wrangler` | `cloudflare/skills` | universal + claude-code | Run or troubleshoot Wrangler CLI commands and configure Worker projects for local development, Previews, deployment, and Cloudflare resource management. |
| `write-tests` | `remix-run/remix` | universal + claude-code | Write, refactor, or review tests in the Remix repository. |
| `writing-beats` | `mattpocock/skills` | universal + claude-code | Writing, exploit; assemble raw material into a journey of beats, grounding each term before a beat leans on it. |
| `writing-fragments` | `mattpocock/skills` | universal + claude-code | Writing, explore: mine raw fragments, no structure yet. |
| `writing-great-skills` | `mattpocock/skills/tree/v1.1.0` | universal + claude-code | Reference for writing and editing skills well — the vocabulary and principles that make a skill predictable. |
| `writing-shape` | `mattpocock/skills` | universal + claude-code | Writing, exploit: shape raw material into an article, paragraph by paragraph. |
+5
View File
@@ -9,6 +9,7 @@ Files in `.chezmoidata/` are merged into chezmoi's template data on every run. N
| --- | --- | --- | | --- | --- | --- |
| `.chezmoidata/packages.yaml` | `.packages` | [`run_onchange_before_10-packages.sh.tmpl`](/chezmoi/scripts#10-packages), [`run_onchange_after_20-gh-extensions.sh.tmpl`](/chezmoi/scripts#20-gh-extensions) | | `.chezmoidata/packages.yaml` | `.packages` | [`run_onchange_before_10-packages.sh.tmpl`](/chezmoi/scripts#10-packages), [`run_onchange_after_20-gh-extensions.sh.tmpl`](/chezmoi/scripts#20-gh-extensions) |
| `.chezmoidata/aliases.yaml` | `.aliases` | `dot_config/shell/aliases.sh.tmpl` (bash and zsh) | | `.chezmoidata/aliases.yaml` | `.aliases` | `dot_config/shell/aliases.sh.tmpl` (bash and zsh) |
| `.chezmoidata/skills.yaml` | `.skills` | [`run_onchange_after_25-skills.sh.tmpl`](/chezmoi/scripts#25-skills) |
## packages.yaml [#packagesyaml] ## packages.yaml [#packagesyaml]
@@ -187,3 +188,7 @@ Every other YAML alias (`e`, `e.v`, `hx`, `cdc`, `cdk`, `cdl`, `cds`, `cdw`, and
:::tip :::tip
To add an alias for every shell, add it to `aliases.yaml` for bash/zsh and to `20-aliases.fish` by hand for fish. To add an alias for every shell, add it to `aliases.yaml` for bash/zsh and to `20-aliases.fish` by hand for fish.
::: :::
## skills.yaml [#skillsyaml]
Declares the agent skills installed by the Skills CLI. `skills.cli` is the pinned CLI (`skills@1.7.0`, run with `npx -y`), `skills.agents` the default install targets (`[universal, claude-code]`), and `skills.sources` a list of `{ source, skills, agents? }` entries: 110 skills across 42 entries. The full list, pinned sources, and add/remove workflow are on the [Skills](/ai/skills) page.
+7 -10
View File
@@ -25,11 +25,13 @@ The repo is a [chezmoi](https://chezmoi.io) source directory. It lives at `~/.lo
- .chezmoidata/ - .chezmoidata/
- aliases.yaml - aliases.yaml
- packages.yaml - packages.yaml
- skills.yaml
- .chezmoiexternal.toml - .chezmoiexternal.toml
- .chezmoiignore.tmpl - .chezmoiignore.tmpl
- .chezmoiscripts/ - .chezmoiscripts/
- run_onchange_before_10-packages.sh.tmpl - run_onchange_before_10-packages.sh.tmpl
- run_onchange_after_20-gh-extensions.sh.tmpl - run_onchange_after_20-gh-extensions.sh.tmpl
- run_onchange_after_25-skills.sh.tmpl
- run_once_after_30-user-services.sh.tmpl - run_once_after_30-user-services.sh.tmpl
- run_onchange_after_40-post.sh.tmpl - run_onchange_after_40-post.sh.tmpl
- run_onchange_after_build-bat-cache.sh.tmpl - run_onchange_after_build-bat-cache.sh.tmpl
@@ -67,12 +69,8 @@ The repo is a [chezmoi](https://chezmoi.io) source directory. It lives at `~/.lo
- dot_claude/ - dot_claude/
- commands/ - commands/
- hooks/ - hooks/
- skills/
- settings.json - settings.json
- empty_CLAUDE.md - empty_CLAUDE.md
- dot_agents/
- skills/
- dot_skill-lock.json
- dot_omp/ - dot_omp/
- loops/ - loops/
- private_agent/ - private_agent/
@@ -89,14 +87,13 @@ The repo is a [chezmoi](https://chezmoi.io) source directory. It lives at `~/.lo
| Path | Target | Purpose | | Path | Target | Purpose |
| --- | --- | --- | | --- | --- | --- |
| `.chezmoi.toml.tmpl` | `~/.config/chezmoi/chezmoi.toml` | Config template rendered by `chezmoi init`. See [Config and roles](/chezmoi/config). | | `.chezmoi.toml.tmpl` | `~/.config/chezmoi/chezmoi.toml` | Config template rendered by `chezmoi init`. See [Config and roles](/chezmoi/config). |
| `.chezmoidata/` | — | YAML merged into template data (`.packages`, `.aliases`). See [Packages and aliases](/chezmoi/data). | | `.chezmoidata/` | — | YAML merged into template data (`.packages`, `.aliases`, `.skills`). See [Packages and aliases](/chezmoi/data) and [Skills](/ai/skills). |
| `.chezmoiexternal.toml` | — | Git repos cloned into `$HOME` (nvim config, a bat syntax). | | `.chezmoiexternal.toml` | — | Git repos cloned into `$HOME` (nvim config, a bat syntax). |
| `.chezmoiignore.tmpl` | — | Target paths chezmoi skips; gates the Linux desktop layer by role. | | `.chezmoiignore.tmpl` | — | Target paths chezmoi skips; gates the Linux desktop layer by role. |
| `.chezmoiscripts/`, root `run_*` | — | Install and housekeeping scripts. See [Apply scripts](/chezmoi/scripts). | | `.chezmoiscripts/`, root `run_*` | — | Install and housekeeping scripts. See [Apply scripts](/chezmoi/scripts). |
| `dot_config/` | `~/.config/` | Per-tool config. Documented under [Shell](/shell), [Terminal](/terminal), [Tools](/tools), [Desktop](/desktop). | | `dot_config/` | `~/.config/` | Per-tool config. Documented under [Shell](/shell), [Terminal](/terminal), [Tools](/tools), [Desktop](/desktop). |
| `dot_local/bin/` | `~/.local/bin/` | 33 standalone scripts shared by every shell. | | `dot_local/bin/` | `~/.local/bin/` | 33 standalone scripts shared by every shell. |
| `dot_claude/` | `~/.claude/` | Claude Code settings, commands, hooks, and skill symlinks. See [AI agents](/ai/claude-code). | | `dot_claude/` | `~/.claude/` | Claude Code settings, commands, and hooks. See [AI agents](/ai/claude-code). |
| `dot_agents/` | `~/.agents/` | The shared agent skill library the `~/.claude/skills` symlinks resolve against. |
| `dot_omp/` | `~/.omp/` | omp agent config and loops. | | `dot_omp/` | `~/.omp/` | omp agent config and loops. |
| `dot_leetcode/` | `~/.leetcode/` | leetcode CLI workspace state. | | `dot_leetcode/` | `~/.leetcode/` | leetcode CLI workspace state. |
| `docs/`, `public/`, `blume.config.ts`, `package.json`, `bun.lock`, `README.md` | — | This docs site and the repo README. Listed in `.chezmoiignore.tmpl`, never applied. | | `docs/`, `public/`, `blume.config.ts`, `package.json`, `bun.lock`, `README.md` | — | This docs site and the repo README. Listed in `.chezmoiignore.tmpl`, never applied. |
@@ -109,12 +106,12 @@ chezmoi encodes target names and attributes in source file names. These are the
| Source form | Meaning | Examples here | | Source form | Meaning | Examples here |
| --- | --- | --- | | --- | --- | --- |
| `dot_` | Target name starts with `.` | `dot_config` → `~/.config`, `dot_zshrc` → `~/.zshrc`, `dot_skill-lock.json` → `.skill-lock.json` | | `dot_` | Target name starts with `.` | `dot_config` → `~/.config`, `dot_zshrc` → `~/.zshrc` |
| `private_` | Target has group/world permissions cleared (`0600`/`0700`) | `dot_config/atuin/private_config.toml`, `dot_config/gh/private_config.yml`, `dot_config/hunk/private_state.json`, `dot_omp/private_agent/`, `dot_omp/loops/*/private_loop.md` | | `private_` | Target has group/world permissions cleared (`0600`/`0700`) | `dot_config/atuin/private_config.toml`, `dot_config/gh/private_config.yml`, `dot_config/hunk/private_state.json`, `dot_omp/private_agent/`, `dot_omp/loops/*/private_loop.md` |
| `executable_` | Target gets the executable bit | 49 files: every script in `dot_local/bin/`, `dot_config/niri/scripts/`, `dot_config/tmux/executable_niri-title.sh`, Claude hooks, skill helper scripts | | `executable_` | Target gets the executable bit | 42 files: every script in `dot_local/bin/`, `dot_config/niri/scripts/`, `dot_config/tmux/executable_niri-title.sh`, Claude hooks, `dot_omp/loops/bin/executable_run-loop.sh` |
| `exact_` | Directory is exact: entries in the target that are not in the source are deleted | `dot_config/niri/exact_config.d/` (numbered `10-…kdl` through `95-…kdl` fragments) | | `exact_` | Directory is exact: entries in the target that are not in the source are deleted | `dot_config/niri/exact_config.d/` (numbered `10-…kdl` through `95-…kdl` fragments) |
| `empty_` | File is kept even when empty | `dot_claude/empty_CLAUDE.md`, `dot_config/herdr/empty_dot_plugins.lock` | | `empty_` | File is kept even when empty | `dot_claude/empty_CLAUDE.md`, `dot_config/herdr/empty_dot_plugins.lock` |
| `symlink_` | Target is a symlink; file content is the link destination | 67 entries in `dot_claude/skills/` (each → `../../.agents/skills/<name>`), `dot_config/kitty/symlink_current-theme.conf` (→ `themes/noctalia.conf`) | | `symlink_` | Target is a symlink; file content is the link destination | `dot_config/kitty/symlink_current-theme.conf` (→ `themes/noctalia.conf`), `dot_config/symlink_television.tmpl` |
| `.tmpl` | Rendered with Go templates and chezmoi data | `dot_gitconfig.tmpl`, `dot_config/shell/aliases.sh.tmpl`, `dot_config/yazi/yazi.toml.tmpl`, all scripts, the config and ignore files | | `.tmpl` | Rendered with Go templates and chezmoi data | `dot_gitconfig.tmpl`, `dot_config/shell/aliases.sh.tmpl`, `dot_config/yazi/yazi.toml.tmpl`, all scripts, the config and ignore files |
| `run_once_` / `run_onchange_` + `before_` / `after_` | Script, with run frequency and phase | See [Apply scripts](/chezmoi/scripts) | | `run_once_` / `run_onchange_` + `before_` / `after_` | Script, with run frequency and phase | See [Apply scripts](/chezmoi/scripts) |
+13
View File
@@ -13,6 +13,7 @@ Six scripts run during `chezmoi apply`. Four live in `.chezmoiscripts/`, a direc
<Step title="10-packages (before, onchange)">Install system packages from `packages.yaml`.</Step> <Step title="10-packages (before, onchange)">Install system packages from `packages.yaml`.</Step>
<Step title="Files, symlinks, externals">chezmoi writes the target state.</Step> <Step title="Files, symlinks, externals">chezmoi writes the target state.</Step>
<Step title="20-gh-extensions (after, onchange)">Install gh extensions.</Step> <Step title="20-gh-extensions (after, onchange)">Install gh extensions.</Step>
<Step title="25-skills (after, onchange)">Install and prune agent skills.</Step>
<Step title="30-user-services (after, once)">Enable systemd user units on Linux.</Step> <Step title="30-user-services (after, once)">Enable systemd user units on Linux.</Step>
<Step title="40-post (after, onchange)">tpm clone, bat cache, font cache.</Step> <Step title="40-post (after, onchange)">tpm clone, bat cache, font cache.</Step>
<Step title="build-bat-cache (after, onchange)">Rebuild bat cache when its theme or config changes.</Step> <Step title="build-bat-cache (after, onchange)">Rebuild bat cache when its theme or config changes.</Step>
@@ -23,6 +24,7 @@ Six scripts run during `chezmoi apply`. Four live in `.chezmoiscripts/`, a direc
| --- | --- | --- | --- | | --- | --- | --- | --- |
| `.chezmoiscripts/run_onchange_before_10-packages.sh.tmpl` | before | onchange | sha256 of `.chezmoidata/packages.yaml`; also the role and OS, which change the rendered package list | | `.chezmoiscripts/run_onchange_before_10-packages.sh.tmpl` | before | onchange | sha256 of `.chezmoidata/packages.yaml`; also the role and OS, which change the rendered package list |
| `.chezmoiscripts/run_onchange_after_20-gh-extensions.sh.tmpl` | after | onchange | sha256 of `packages.shared.gh_extensions` as JSON | | `.chezmoiscripts/run_onchange_after_20-gh-extensions.sh.tmpl` | after | onchange | sha256 of `packages.shared.gh_extensions` as JSON |
| `.chezmoiscripts/run_onchange_after_25-skills.sh.tmpl` | after | onchange | sha256 of `.skills` as JSON |
| `.chezmoiscripts/run_once_after_30-user-services.sh.tmpl` | after | once | Runs once per distinct rendered content | | `.chezmoiscripts/run_once_after_30-user-services.sh.tmpl` | after | once | Runs once per distinct rendered content |
| `.chezmoiscripts/run_onchange_after_40-post.sh.tmpl` | after | onchange | Only edits to the script itself (or an OS change) | | `.chezmoiscripts/run_onchange_after_40-post.sh.tmpl` | after | onchange | Only edits to the script itself (or an OS change) |
| `run_onchange_after_build-bat-cache.sh.tmpl` | after | onchange | sha256 of `dot_config/bat/themes/cyberdream.tmTheme` and `dot_config/bat/config` | | `run_onchange_after_build-bat-cache.sh.tmpl` | after | onchange | sha256 of `dot_config/bat/themes/cyberdream.tmTheme` and `dot_config/bat/config` |
@@ -75,6 +77,17 @@ On any other OS the script renders to just the shebang and comments and does not
A skipped run still exits 0, so chezmoi records this content as done and a plain re-apply does not retry it, despite what the warning text says. After `gh auth login`, either run `gh extension install` for each entry by hand, or clear chezmoi's onchange state with `chezmoi state delete-bucket --bucket=entryState` and apply again (this re-runs every `run_onchange_` script). A skipped run still exits 0, so chezmoi records this content as done and a plain re-apply does not retry it, despite what the warning text says. After `gh auth login`, either run `gh extension install` for each entry by hand, or clear chezmoi's onchange state with `chezmoi state delete-bucket --bucket=entryState` and apply again (this re-runs every `run_onchange_` script).
::: :::
## 25-skills [#25-skills]
`.chezmoiscripts/run_onchange_after_25-skills.sh.tmpl` installs the agent skills declared in [`skills.yaml`](/chezmoi/data#skillsyaml) with the Skills CLI (`npx -y skills@1.7.0`). See [Skills](/ai/skills).
- Exits 0 with a warning if `npx` is missing.
- One-time migration: deletes any directory in `~/.agents/skills` or `~/.claude/skills` that contains symlinks into the chezmoi source directory (the old vendored layout), and removes `~/.agents/.skill-lock.json` if it is a symlink into the source directory.
- Removes skills listed in `${XDG_STATE_HOME:-~/.local/state}/chezmoi/skills.txt` that are no longer declared, with `skills remove -g -y`.
- Runs one `skills add <source> -g -y -a <agents> --skill <names…>` per source entry. Output is captured; on failure the last 8 lines are printed.
- Writes the declared names to `skills.txt`. Claude-only installs are not in the CLI's lock, so the script keeps its own record.
- Exits 1 if any source failed, so chezmoi keeps the old hash and retries on the next apply.
## 30-user-services [#30-user-services] ## 30-user-services [#30-user-services]
`.chezmoiscripts/run_once_after_30-user-services.sh.tmpl` enables session-critical systemd user units on Linux. `.chezmoiscripts/run_once_after_30-user-services.sh.tmpl` enables session-critical systemd user units on Linux.