diff --git a/.chezmoidata/skills.yaml b/.chezmoidata/skills.yaml new file mode 100644 index 0000000..60f5f02 --- /dev/null +++ b/.chezmoidata/skills.yaml @@ -0,0 +1,177 @@ +# Agent skills, installed by the Skills CLI instead of being vendored in this +# repo. .chezmoiscripts/run_onchange_after_25-skills.sh.tmpl re-runs whenever +# this file changes: it installs every skill below (`skills add -g -y +# -a --skill …`, one call per source) and removes CLI-installed +# skills that are no longer listed. +# +# source: anything `skills add` accepts — owner/repo (default branch), a +# GitHub tree URL (pins a ref or subdirectory), or a well-known endpoint URL. +# Skills that upstream deleted are pinned to the last ref that has them. +# agents: optional; defaults to `agents` below. `universal` is the shared +# ~/.agents/skills library (Codex, Gemini CLI, OpenCode, Zed, …); +# `claude-code` links ~/.claude/skills/. +# +# Not listed (installed by other packages, never touched by the sync): +# omarchy and diagnose-crash (/usr/share/omarchy), terminal-browser. +skills: + cli: skills@1.7.0 + agents: [universal, claude-code] + sources: + - source: affaan-m/everything-claude-code + skills: [rust-testing] + - source: apollographql/skills + skills: [rust-best-practices] + - source: charlietlamb/openlogs + skills: [openlogs-server-logs] + - source: cloudflare/skills + skills: [cloudflare, workers-best-practices, wrangler] + - source: coldteadotai/pr-lens + skills: [eli5, pr-lens] + - source: Dammyjay93/interface-design + skills: [interface-design] + - source: deckardger/tanstack-agent-skills + skills: + - tanstack-integration-best-practices + - tanstack-query-best-practices + - tanstack-router-best-practices + - tanstack-start-best-practices + - source: Doist/todoist-cli + skills: [todoist-cli] + - source: finesssee/linear-cli + skills: [linear-documents] + - source: Forward-Future/loop-library + skills: [loopy] + - source: hardikpandya/stop-slop + skills: [stop-slop] + - source: haydenbleasel/blume + skills: [blume, blume-migrate, blume-update-docs] + - source: jeffallan/claude-skills + skills: [golang-pro] + - source: leonardomso/rust-skills + skills: [rust-skills] + - source: Leonxlnx/taste-skill + skills: + - brandkit + - design-taste-frontend + - gpt-taste + - high-end-visual-design + - imagegen-frontend-web + - minimalist-ui + - redesign-existing-projects + - source: mattpocock/skills + skills: + - codebase-design + - diagnosing-bugs + - domain-modeling + - git-guardrails-claude-code + - grill-me + - grill-with-docs + - grilling + - handoff + - implement + - improve-codebase-architecture + - loop-me + - migrate-to-shoehorn + - prototype + - scaffold-exercises + - setup-matt-pocock-skills + - setup-pre-commit + - tdd + - teach + - triage + - writing-beats + - writing-fragments + - writing-shape + # Removed upstream after v1.1.0 (c66bdee; writing-great-skills became + # writing-for-agents). + - source: https://github.com/mattpocock/skills/tree/v1.1.0 + skills: + - design-an-interface + - obsidian-vault + - qa + - request-refactor-plan + - ubiquitous-language + - writing-great-skills + # Removed upstream in daa01d8; pinned to its parent. + - source: https://github.com/mattpocock/skills/tree/153fc1b93de6584562765cdce299324e1ff9e661 + skills: [resolving-merge-conflicts] + - source: https://mintlify.com/docs + skills: [mintlify, mintlify-api, mintlify-docs] + - source: nextlevelbuilder/ui-ux-pro-max-skill + skills: [ui-ux-pro-max] + - source: openai/skills + skills: [linear] + - source: petergyang/no-ai-slop + skills: [no-ai-slop] + - source: remix-run/remix + skills: [remix, typescript-expert, write-tests] + - source: remotion-dev/skills + skills: + - remotion-best-practices + - remotion-captions + - remotion-create + - remotion-docs + - remotion-interactivity + - remotion-maps + - remotion-markup + - remotion-multimedia + - remotion-render + - remotion-saas + - remotion-studio + - remotion-upgrade + - source: RoleModel/rolemodel-skills + skills: [laws-of-ux] + - source: schpet/linear-cli + skills: [linear-cli] + - source: shadcn-ui/ui + skills: [shadcn] + - source: sickn33/antigravity-awesome-skills + skills: [bun-development] + - source: tanstack-skills/tanstack-skills + skills: [tanstack-form, tanstack-table] + # Retired upstream in dd0d3f2f; pinned to its parent. + - source: https://github.com/terrylica/cc-skills/tree/6d35f84728b05adec50cb74ee45b5517bb954fa8 + skills: [mise-tasks] + - source: TheOrcDev/8bitcn-ui + skills: + - fumadocs-component-docs + - fumadocs-mdx-structure + - fumadocs-registry-integration + - source: vercel-labs/agent-skills + skills: [web-design-guidelines] + - source: vercel-labs/json-render + skills: [core, react, react-email] + - source: vercel-labs/native + skills: [native-sdk] + - source: vercel-labs/skills + skills: [find-skills] + - source: whackur/solidity-agent-toolkit + skills: [solidity-foundry-development] + - source: wshobson/agents + skills: [rust-async-patterns, solidity-security, uv-package-manager] + - source: yeachan-heo/oh-my-claudecode + skills: [deepinit] + + # Claude Code only. + - source: cloudflare/skills + agents: [claude-code] + skills: + - agents-sdk + - cloudflare-email-service + - cloudflare-one + - cloudflare-one-migrations + - durable-objects + - turnstile-spin + - web-perf + # Replaced upstream by sandbox-stable / sandbox-next in f96bff7. + - source: https://github.com/cloudflare/skills/tree/30553f89ae1ef1e3c2917cd09d72dac992bb4e9a + agents: [claude-code] + skills: [sandbox-sdk] + - source: earendil-works/absurd + agents: [claude-code] + skills: [absurd] + # Subdirectory URL: the bare repo's root SKILL.md would install the whole + # repository as the skill. + - source: https://github.com/AvivK5498/Claude-Code-Beads-Orchestration/tree/main/skills/create-beads-orchestration + agents: [claude-code] + skills: [create-beads-orchestration] diff --git a/.chezmoiscripts/run_onchange_after_25-skills.sh.tmpl b/.chezmoiscripts/run_onchange_after_25-skills.sh.tmpl new file mode 100755 index 0000000..087e7e3 --- /dev/null +++ b/.chezmoiscripts/run_onchange_after_25-skills.sh.tmpl @@ -0,0 +1,70 @@ +#!/bin/sh +# Sync agent skills with .chezmoidata/skills.yaml through the Skills CLI: +# install every declared skill (one `skills add` per source), then remove +# skills a previous run installed that are no longer declared. +# skills hash: {{ .skills | toJson | sha256sum }} +set -u + +command -v npx >/dev/null 2>&1 || { echo "warning: npx not found — skipping skills sync" >&2; exit 0; } + +src={{ .chezmoi.sourceDir | quote }} +state=${XDG_STATE_HOME:-$HOME/.local/state}/chezmoi/skills.txt +declared='{{ range .skills.sources }}{{ range .skills }} {{ . }}{{ end }}{{ end }} ' + +skills() { npx -y {{ .skills.cli | quote }} "$@" &2 +fi + +failed='' +log=$(mktemp) +trap 'rm -f "$log"' EXIT +add() { + source=$1 agents=$2 + shift 2 + echo "skills: $source → $*" + # shellcheck disable=SC2086 # agents is a space-separated list + if ! skills add "$source" -g -y -a $agents --skill "$@" >"$log" 2>&1; then + failed="$failed $source" + tail -n 8 "$log" >&2 + fi +} +{{ range .skills.sources -}} +{{ $agents := $.skills.agents -}} +{{ if hasKey . "agents" }}{{ $agents = .agents }}{{ end -}} +add {{ .source | quote }} {{ $agents | join " " | quote }}{{ range .skills }} {{ . | quote }}{{ end }} +{{ end -}} + +mkdir -p "$(dirname "$state")" +printf '%s\n' $declared >"$state" + +if [ -n "$failed" ]; then + # Non-zero keeps the old hash, so the next `chezmoi apply` retries. + echo "error: skills add failed for:$failed" >&2 + exit 1 +fi