Commit fa3d6032c594

Vincent Demeester <vincent@sbr.pm>
2026-05-27 11:07:13
dots: centralize skills in dots/agents/skills/
Move all skill content from dots/config/claude/skills/ to dots/agents/skills/ as the single source of truth. The Makefile now: - agent-skills-link: symlinks each skill from dots/agents/skills/ into ~/.config/claude/skills/, ~/.agents/skills/, and ~/.pi/agent/skills/ - Also cross-links skills installed by `skills` CLI (in ~/.agents/skills/) into claude and pi directories - Removes the old dir-level symlink for ~/.config/claude/skills This fixes broken relative symlinks that occurred because ~/.config/claude/skills was a dir-symlink to dots, causing the skills CLI's relative paths to resolve incorrectly.
1 parent e813df9
Changed files (177)
dots
agents
skills
backlog-triage
code-review
core
create-skill
doc-coauthoring
docker
docs-drift-review
emacs-lisp
email
gh-fix-ci
gh-review-bot-comments
git
github
github-triage
golang
google-workspace
handoff
homelab
jira
journal
kubernetes
nix
nixpkgs
org
pi-share
python
quarterly-report
rust
slack
tekton
todos
config
dots/config/claude/skills/backlog-triage/workflows/Analyze.md → dots/agents/skills/backlog-triage/workflows/Analyze.md
File renamed without changes
dots/config/claude/skills/backlog-triage/workflows/Fetch.md → dots/agents/skills/backlog-triage/workflows/Fetch.md
File renamed without changes
dots/config/claude/skills/backlog-triage/workflows/FullPipeline.md → dots/agents/skills/backlog-triage/workflows/FullPipeline.md
File renamed without changes
dots/config/claude/skills/backlog-triage/workflows/Report.md → dots/agents/skills/backlog-triage/workflows/Report.md
File renamed without changes
dots/config/claude/skills/backlog-triage/SKILL.md → dots/agents/skills/backlog-triage/SKILL.md
File renamed without changes
dots/config/claude/skills/code-review/workflows/FocusedReview.md → dots/agents/skills/code-review/workflows/FocusedReview.md
File renamed without changes
dots/config/claude/skills/code-review/workflows/FullReview.md → dots/agents/skills/code-review/workflows/FullReview.md
File renamed without changes
dots/config/claude/skills/code-review/rubric.md → dots/agents/skills/code-review/rubric.md
File renamed without changes
dots/config/claude/skills/code-review/SKILL.md → dots/agents/skills/code-review/SKILL.md
File renamed without changes
dots/config/claude/skills/core/CONSTITUTION.md → dots/agents/skills/core/CONSTITUTION.md
File renamed without changes
dots/config/claude/skills/core/history-system.md → dots/agents/skills/core/history-system.md
File renamed without changes
dots/config/claude/skills/core/hook-system.md → dots/agents/skills/core/hook-system.md
File renamed without changes
dots/config/claude/skills/core/prompting.md → dots/agents/skills/core/prompting.md
File renamed without changes
dots/config/claude/skills/core/SKILL.md → dots/agents/skills/core/SKILL.md
File renamed without changes
dots/config/claude/skills/core/SkillSystem.md → dots/agents/skills/core/SkillSystem.md
File renamed without changes
dots/config/claude/skills/create-skill/workflows/CreateSkill.md → dots/agents/skills/create-skill/workflows/CreateSkill.md
File renamed without changes
dots/config/claude/skills/create-skill/workflows/ValidateSkill.md → dots/agents/skills/create-skill/workflows/ValidateSkill.md
File renamed without changes
dots/config/claude/skills/create-skill/SKILL.md → dots/agents/skills/create-skill/SKILL.md
File renamed without changes
dots/config/claude/skills/doc-coauthoring/SKILL.md → dots/agents/skills/doc-coauthoring/SKILL.md
File renamed without changes
dots/config/claude/skills/docker/tools/detect-runtime.sh → dots/agents/skills/docker/tools/detect-runtime.sh
File renamed without changes
dots/config/claude/skills/docker/workflows/Build.md → dots/agents/skills/docker/workflows/Build.md
File renamed without changes
dots/config/claude/skills/docker/workflows/Infrastructure.md → dots/agents/skills/docker/workflows/Infrastructure.md
File renamed without changes
dots/config/claude/skills/docker/workflows/Maintain.md → dots/agents/skills/docker/workflows/Maintain.md
File renamed without changes
dots/config/claude/skills/docker/workflows/Run.md → dots/agents/skills/docker/workflows/Run.md
File renamed without changes
dots/config/claude/skills/docker/SKILL.md → dots/agents/skills/docker/SKILL.md
File renamed without changes
dots/config/claude/skills/docs-drift-review/scripts/collect-code-files.sh → dots/agents/skills/docs-drift-review/scripts/collect-code-files.sh
File renamed without changes
dots/config/claude/skills/docs-drift-review/scripts/collect-doc-files.sh → dots/agents/skills/docs-drift-review/scripts/collect-doc-files.sh
File renamed without changes
dots/config/claude/skills/docs-drift-review/templates/report-template.md → dots/agents/skills/docs-drift-review/templates/report-template.md
File renamed without changes
dots/config/claude/skills/docs-drift-review/SKILL.md → dots/agents/skills/docs-drift-review/SKILL.md
File renamed without changes
dots/config/claude/skills/emacs-lisp/workflows/Configure.md → dots/agents/skills/emacs-lisp/workflows/Configure.md
File renamed without changes
dots/config/claude/skills/emacs-lisp/workflows/Debug.md → dots/agents/skills/emacs-lisp/workflows/Debug.md
File renamed without changes
dots/config/claude/skills/emacs-lisp/workflows/Lint.md → dots/agents/skills/emacs-lisp/workflows/Lint.md
File renamed without changes
dots/config/claude/skills/emacs-lisp/workflows/Script.md → dots/agents/skills/emacs-lisp/workflows/Script.md
File renamed without changes
dots/config/claude/skills/emacs-lisp/workflows/Test.md → dots/agents/skills/emacs-lisp/workflows/Test.md
File renamed without changes
dots/config/claude/skills/emacs-lisp/Advanced.md → dots/agents/skills/emacs-lisp/Advanced.md
File renamed without changes
dots/config/claude/skills/emacs-lisp/SKILL.md → dots/agents/skills/emacs-lisp/SKILL.md
File renamed without changes
dots/config/claude/skills/email/reference/Alternatives.md → dots/agents/skills/email/reference/Alternatives.md
File renamed without changes
dots/config/claude/skills/email/reference/DatabaseLocking.md → dots/agents/skills/email/reference/DatabaseLocking.md
File renamed without changes
dots/config/claude/skills/email/tools/archive-emails.sh → dots/agents/skills/email/tools/archive-emails.sh
File renamed without changes
dots/config/claude/skills/email/tools/check-mu-lock.sh → dots/agents/skills/email/tools/check-mu-lock.sh
File renamed without changes
dots/config/claude/skills/email/tools/extract-attachments.sh → dots/agents/skills/email/tools/extract-attachments.sh
File renamed without changes
dots/config/claude/skills/email/tools/review-junk-bin.sh → dots/agents/skills/email/tools/review-junk-bin.sh
File renamed without changes
dots/config/claude/skills/email/tools/smart-reindex.sh → dots/agents/skills/email/tools/smart-reindex.sh
File renamed without changes
dots/config/claude/skills/email/workflows/Analyze.md → dots/agents/skills/email/workflows/Analyze.md
File renamed without changes
dots/config/claude/skills/email/workflows/Extract.md → dots/agents/skills/email/workflows/Extract.md
File renamed without changes
dots/config/claude/skills/email/workflows/Search.md → dots/agents/skills/email/workflows/Search.md
File renamed without changes
dots/config/claude/skills/email/workflows/View.md → dots/agents/skills/email/workflows/View.md
File renamed without changes
dots/config/claude/skills/email/SKILL.md → dots/agents/skills/email/SKILL.md
File renamed without changes
dots/config/claude/skills/gh-fix-ci/scripts/inspect_pr_checks.py → dots/agents/skills/gh-fix-ci/scripts/inspect_pr_checks.py
File renamed without changes
dots/config/claude/skills/gh-fix-ci/workflows/FixCI.md → dots/agents/skills/gh-fix-ci/workflows/FixCI.md
File renamed without changes
dots/config/claude/skills/gh-fix-ci/SKILL.md → dots/agents/skills/gh-fix-ci/SKILL.md
File renamed without changes
dots/config/claude/skills/gh-review-bot-comments/scripts/fetch_bot_reviews.py → dots/agents/skills/gh-review-bot-comments/scripts/fetch_bot_reviews.py
File renamed without changes
dots/config/claude/skills/gh-review-bot-comments/workflows/TriageBotComments.md → dots/agents/skills/gh-review-bot-comments/workflows/TriageBotComments.md
File renamed without changes
dots/config/claude/skills/gh-review-bot-comments/SKILL.md → dots/agents/skills/gh-review-bot-comments/SKILL.md
File renamed without changes
dots/config/claude/skills/git/workflows/Branch.md → dots/agents/skills/git/workflows/Branch.md
File renamed without changes
dots/config/claude/skills/git/workflows/Commit.md → dots/agents/skills/git/workflows/Commit.md
File renamed without changes
dots/config/claude/skills/git/workflows/Merge.md → dots/agents/skills/git/workflows/Merge.md
File renamed without changes
dots/config/claude/skills/git/workflows/Rebase.md → dots/agents/skills/git/workflows/Rebase.md
File renamed without changes
dots/config/claude/skills/git/Advanced.md → dots/agents/skills/git/Advanced.md
File renamed without changes
dots/config/claude/skills/git/SKILL.md → dots/agents/skills/git/SKILL.md
File renamed without changes
dots/config/claude/skills/github/tools/README.md → dots/agents/skills/github/tools/README.md
File renamed without changes
dots/config/claude/skills/github/workflows/CheckStatus.md → dots/agents/skills/github/workflows/CheckStatus.md
File renamed without changes
dots/config/claude/skills/github/workflows/CreatePR.md → dots/agents/skills/github/workflows/CreatePR.md
File renamed without changes
dots/config/claude/skills/github/workflows/ManageIssues.md → dots/agents/skills/github/workflows/ManageIssues.md
File renamed without changes
dots/config/claude/skills/github/workflows/ResolvePRComments.md → dots/agents/skills/github/workflows/ResolvePRComments.md
File renamed without changes
dots/config/claude/skills/github/workflows/RestartChecks.md → dots/agents/skills/github/workflows/RestartChecks.md
File renamed without changes
dots/config/claude/skills/github/workflows/ReviewPR.md → dots/agents/skills/github/workflows/ReviewPR.md
File renamed without changes
dots/config/claude/skills/github/SKILL.md → dots/agents/skills/github/SKILL.md
File renamed without changes
dots/config/claude/skills/github-triage/workflows/SingleIssue.md → dots/agents/skills/github-triage/workflows/SingleIssue.md
File renamed without changes
dots/config/claude/skills/github-triage/workflows/Triage.md → dots/agents/skills/github-triage/workflows/Triage.md
File renamed without changes
dots/config/claude/skills/github-triage/SKILL.md → dots/agents/skills/github-triage/SKILL.md
File renamed without changes
dots/config/claude/skills/golang/workflows/Build.md → dots/agents/skills/golang/workflows/Build.md
File renamed without changes
dots/config/claude/skills/golang/workflows/Debug.md → dots/agents/skills/golang/workflows/Debug.md
File renamed without changes
dots/config/claude/skills/golang/workflows/Deps.md → dots/agents/skills/golang/workflows/Deps.md
File renamed without changes
dots/config/claude/skills/golang/workflows/Lint.md → dots/agents/skills/golang/workflows/Lint.md
File renamed without changes
dots/config/claude/skills/golang/workflows/Test.md → dots/agents/skills/golang/workflows/Test.md
File renamed without changes
dots/config/claude/skills/golang/Advanced.md → dots/agents/skills/golang/Advanced.md
File renamed without changes
dots/config/claude/skills/golang/nix-integration.md → dots/agents/skills/golang/nix-integration.md
File renamed without changes
dots/config/claude/skills/golang/SKILL.md → dots/agents/skills/golang/SKILL.md
File renamed without changes
dots/config/claude/skills/google-workspace/scripts/.gitignore → dots/agents/skills/google-workspace/scripts/.gitignore
File renamed without changes
dots/config/claude/skills/google-workspace/scripts/auth.js → dots/agents/skills/google-workspace/scripts/auth.js
File renamed without changes
dots/config/claude/skills/google-workspace/scripts/common.js → dots/agents/skills/google-workspace/scripts/common.js
File renamed without changes
dots/config/claude/skills/google-workspace/scripts/package.json → dots/agents/skills/google-workspace/scripts/package.json
File renamed without changes
dots/config/claude/skills/google-workspace/scripts/workspace.js → dots/agents/skills/google-workspace/scripts/workspace.js
File renamed without changes
dots/config/claude/skills/google-workspace/SKILL.md → dots/agents/skills/google-workspace/SKILL.md
File renamed without changes
dots/config/claude/skills/handoff/scripts/create_handoff.py → dots/agents/skills/handoff/scripts/create_handoff.py
File renamed without changes
dots/config/claude/skills/handoff/SKILL.md → dots/agents/skills/handoff/SKILL.md
File renamed without changes
dots/config/claude/skills/homelab/SKILL.md → dots/agents/skills/homelab/SKILL.md
File renamed without changes
dots/config/claude/skills/jira/tools/jira-sprint-summary → dots/agents/skills/jira/tools/jira-sprint-summary
File renamed without changes
dots/config/claude/skills/jira/tools/jira-to-todo → dots/agents/skills/jira/tools/jira-to-todo
File renamed without changes
dots/config/claude/skills/jira/workflows/Comment.md → dots/agents/skills/jira/workflows/Comment.md
File renamed without changes
dots/config/claude/skills/jira/workflows/Create.md → dots/agents/skills/jira/workflows/Create.md
File renamed without changes
dots/config/claude/skills/jira/workflows/List.md → dots/agents/skills/jira/workflows/List.md
File renamed without changes
dots/config/claude/skills/jira/workflows/Search.md → dots/agents/skills/jira/workflows/Search.md
File renamed without changes
dots/config/claude/skills/jira/workflows/Sprint.md → dots/agents/skills/jira/workflows/Sprint.md
File renamed without changes
dots/config/claude/skills/jira/workflows/Transition.md → dots/agents/skills/jira/workflows/Transition.md
File renamed without changes
dots/config/claude/skills/jira/workflows/Update.md → dots/agents/skills/jira/workflows/Update.md
File renamed without changes
dots/config/claude/skills/jira/workflows/View.md → dots/agents/skills/jira/workflows/View.md
File renamed without changes
dots/config/claude/skills/jira/PROPOSALS.md → dots/agents/skills/jira/PROPOSALS.md
File renamed without changes
dots/config/claude/skills/jira/README.md → dots/agents/skills/jira/README.md
File renamed without changes
dots/config/claude/skills/jira/SKILL.md → dots/agents/skills/jira/SKILL.md
File renamed without changes
dots/config/claude/skills/journal/README.md → dots/agents/skills/journal/README.md
File renamed without changes
dots/config/claude/skills/kubernetes/workflows/Context.md → dots/agents/skills/kubernetes/workflows/Context.md
File renamed without changes
dots/config/claude/skills/kubernetes/workflows/Debug.md → dots/agents/skills/kubernetes/workflows/Debug.md
File renamed without changes
dots/config/claude/skills/kubernetes/workflows/Deploy.md → dots/agents/skills/kubernetes/workflows/Deploy.md
File renamed without changes
dots/config/claude/skills/kubernetes/workflows/Resources.md → dots/agents/skills/kubernetes/workflows/Resources.md
File renamed without changes
dots/config/claude/skills/kubernetes/workflows/Scaling.md → dots/agents/skills/kubernetes/workflows/Scaling.md
File renamed without changes
dots/config/claude/skills/kubernetes/workflows/Security.md → dots/agents/skills/kubernetes/workflows/Security.md
File renamed without changes
dots/config/claude/skills/kubernetes/SKILL.md → dots/agents/skills/kubernetes/SKILL.md
File renamed without changes
dots/config/claude/skills/nix/workflows/Build.md → dots/agents/skills/nix/workflows/Build.md
File renamed without changes
dots/config/claude/skills/nix/workflows/Deploy.md → dots/agents/skills/nix/workflows/Deploy.md
File renamed without changes
dots/config/claude/skills/nix/workflows/Develop.md → dots/agents/skills/nix/workflows/Develop.md
File renamed without changes
dots/config/claude/skills/nix/workflows/Flakes.md → dots/agents/skills/nix/workflows/Flakes.md
File renamed without changes
dots/config/claude/skills/nix/workflows/Package.md → dots/agents/skills/nix/workflows/Package.md
File renamed without changes
dots/config/claude/skills/nix/workflows/Secrets.md → dots/agents/skills/nix/workflows/Secrets.md
File renamed without changes
dots/config/claude/skills/nix/Advanced.md → dots/agents/skills/nix/Advanced.md
File renamed without changes
dots/config/claude/skills/nix/SKILL.md → dots/agents/skills/nix/SKILL.md
File renamed without changes
dots/config/claude/skills/nixpkgs/scripts/auto-merge-pr → dots/agents/skills/nixpkgs/scripts/auto-merge-pr
File renamed without changes
dots/config/claude/skills/nixpkgs/workflows/AddPackage.md → dots/agents/skills/nixpkgs/workflows/AddPackage.md
File renamed without changes
dots/config/claude/skills/nixpkgs/workflows/FixPackage.md → dots/agents/skills/nixpkgs/workflows/FixPackage.md
File renamed without changes
dots/config/claude/skills/nixpkgs/workflows/Maintainer.md → dots/agents/skills/nixpkgs/workflows/Maintainer.md
File renamed without changes
dots/config/claude/skills/nixpkgs/workflows/Review.md → dots/agents/skills/nixpkgs/workflows/Review.md
File renamed without changes
dots/config/claude/skills/nixpkgs/workflows/UpdatePackage.md → dots/agents/skills/nixpkgs/workflows/UpdatePackage.md
File renamed without changes
dots/config/claude/skills/nixpkgs/review-checklist.md → dots/agents/skills/nixpkgs/review-checklist.md
File renamed without changes
dots/config/claude/skills/nixpkgs/SKILL.md → dots/agents/skills/nixpkgs/SKILL.md
File renamed without changes
dots/config/claude/skills/org/tools/tests/fixtures/test-todos.org → dots/agents/skills/org/tools/tests/fixtures/test-todos.org
File renamed without changes
dots/config/claude/skills/org/tools/tests/batch-functions-test.el → dots/agents/skills/org/tools/tests/batch-functions-test.el
File renamed without changes
dots/config/claude/skills/org/tools/tests/run-tests.sh → dots/agents/skills/org/tools/tests/run-tests.sh
File renamed without changes
dots/config/claude/skills/org/tools/batch-functions.el → dots/agents/skills/org/tools/batch-functions.el
File renamed without changes
dots/config/claude/skills/org/tools/org-manager → dots/agents/skills/org/tools/org-manager
File renamed without changes
dots/config/claude/skills/org/SKILL.md → dots/agents/skills/org/SKILL.md
File renamed without changes
dots/config/claude/skills/pi-share/fetch-session.mjs → dots/agents/skills/pi-share/fetch-session.mjs
File renamed without changes
dots/config/claude/skills/pi-share/SKILL.md → dots/agents/skills/pi-share/SKILL.md
File renamed without changes
dots/config/claude/skills/python/tools/python-check → dots/agents/skills/python/tools/python-check
File renamed without changes
dots/config/claude/skills/python/tools/python-lint → dots/agents/skills/python/tools/python-lint
File renamed without changes
dots/config/claude/skills/python/workflows/Deps.md → dots/agents/skills/python/workflows/Deps.md
File renamed without changes
dots/config/claude/skills/python/workflows/Lint.md → dots/agents/skills/python/workflows/Lint.md
File renamed without changes
dots/config/claude/skills/python/workflows/Project.md → dots/agents/skills/python/workflows/Project.md
File renamed without changes
dots/config/claude/skills/python/workflows/Test.md → dots/agents/skills/python/workflows/Test.md
File renamed without changes
dots/config/claude/skills/python/workflows/Type.md → dots/agents/skills/python/workflows/Type.md
File renamed without changes
dots/config/claude/skills/python/Advanced.md → dots/agents/skills/python/Advanced.md
File renamed without changes
dots/config/claude/skills/python/README.md → dots/agents/skills/python/README.md
File renamed without changes
dots/config/claude/skills/python/SKILL.md → dots/agents/skills/python/SKILL.md
File renamed without changes
dots/config/claude/skills/quarterly-report/reference/Template.html → dots/agents/skills/quarterly-report/reference/Template.html
File renamed without changes
dots/config/claude/skills/quarterly-report/workflows/Generate.md → dots/agents/skills/quarterly-report/workflows/Generate.md
File renamed without changes
dots/config/claude/skills/quarterly-report/SKILL.md → dots/agents/skills/quarterly-report/SKILL.md
File renamed without changes
dots/config/claude/skills/rust/workflows/Build.md → dots/agents/skills/rust/workflows/Build.md
File renamed without changes
dots/config/claude/skills/rust/workflows/Deps.md → dots/agents/skills/rust/workflows/Deps.md
File renamed without changes
dots/config/claude/skills/rust/workflows/Error.md → dots/agents/skills/rust/workflows/Error.md
File renamed without changes
dots/config/claude/skills/rust/workflows/Lint.md → dots/agents/skills/rust/workflows/Lint.md
File renamed without changes
dots/config/claude/skills/rust/workflows/Test.md → dots/agents/skills/rust/workflows/Test.md
File renamed without changes
dots/config/claude/skills/rust/Advanced.md → dots/agents/skills/rust/Advanced.md
File renamed without changes
dots/config/claude/skills/rust/README.md → dots/agents/skills/rust/README.md
File renamed without changes
dots/config/claude/skills/rust/SKILL.md → dots/agents/skills/rust/SKILL.md
File renamed without changes
dots/config/claude/skills/slack/tools/slack-read.sh → dots/agents/skills/slack/tools/slack-read.sh
File renamed without changes
dots/config/claude/skills/slack/SKILL.md → dots/agents/skills/slack/SKILL.md
File renamed without changes
dots/config/claude/skills/tekton/workflows/Build.md → dots/agents/skills/tekton/workflows/Build.md
File renamed without changes
dots/config/claude/skills/tekton/workflows/Pipelines.md → dots/agents/skills/tekton/workflows/Pipelines.md
File renamed without changes
dots/config/claude/skills/tekton/workflows/Tasks.md → dots/agents/skills/tekton/workflows/Tasks.md
File renamed without changes
dots/config/claude/skills/tekton/workflows/TknCli.md → dots/agents/skills/tekton/workflows/TknCli.md
File renamed without changes
dots/config/claude/skills/tekton/workflows/Triggers.md → dots/agents/skills/tekton/workflows/Triggers.md
File renamed without changes
dots/config/claude/skills/tekton/Advanced.md → dots/agents/skills/tekton/Advanced.md
File renamed without changes
dots/config/claude/skills/tekton/SKILL.md → dots/agents/skills/tekton/SKILL.md
File renamed without changes
dots/config/claude/skills/todos/tools/org-manager → dots/agents/skills/todos/tools/org-manager
File renamed without changes
dots/config/claude/skills/todos/workflows/Add.md → dots/agents/skills/todos/workflows/Add.md
File renamed without changes
dots/config/claude/skills/todos/workflows/Project.md → dots/agents/skills/todos/workflows/Project.md
File renamed without changes
dots/config/claude/skills/todos/workflows/Recurring.md → dots/agents/skills/todos/workflows/Recurring.md
File renamed without changes
dots/config/claude/skills/todos/workflows/Review.md → dots/agents/skills/todos/workflows/Review.md
File renamed without changes
dots/config/claude/skills/todos/workflows/Update.md → dots/agents/skills/todos/workflows/Update.md
File renamed without changes
dots/config/claude/skills/todos/workflows/View.md → dots/agents/skills/todos/workflows/View.md
File renamed without changes
dots/config/claude/skills/todos/Advanced.md → dots/agents/skills/todos/Advanced.md
File renamed without changes
dots/config/claude/skills/todos/README.md → dots/agents/skills/todos/README.md
File renamed without changes
dots/config/claude/skills/todos/SKILL.md → dots/agents/skills/todos/SKILL.md
File renamed without changes
dots/config/claude/skills/.gitignore
@@ -1,12 +0,0 @@
-# emacs-skills (managed by `make emacs-skills`, cloned to ~/.local/share/emacs-skills)
-d2
-describe
-dired
-emacsclient
-file-links
-gnuplot
-highlight
-mermaid
-open
-plantuml
-select
dots/config/claude/skills/review-pr-critically
@@ -1,1 +0,0 @@
-../../../agents/skills/review-pr-critically
\ No newline at end of file
dots/Makefile
@@ -31,8 +31,7 @@ nvim : ~/.config/nvim
 
 ##@ Claude Code
 
-all += claude-skills claude-agents claude-settings claude-hooks claude-plugins claude-statusline claude-compat
-claude-skills : ~/.config/claude/skills
+all += claude-agents claude-settings claude-hooks claude-plugins claude-statusline claude-compat
 claude-agents : ~/.config/claude/agents
 claude-settings : ~/.config/claude/settings.json
 claude-hooks : ~/.config/claude/hooks
@@ -75,7 +74,7 @@ EMACS_SKILLS_DIR := $(HOME)/.local/share/emacs-skills
 EMACS_SKILLS := d2 describe dired emacsclient file-links gnuplot highlight mermaid open plantuml select
 
 all += emacs-skills
-emacs-skills : claude-skills
+emacs-skills : agent-skills-link
 	@if [ ! -d "$(EMACS_SKILLS_DIR)/.git" ]; then \
 		echo "📦 Cloning emacs-skills..."; \
 		git clone --quiet $(EMACS_SKILLS_REPO) $(EMACS_SKILLS_DIR); \
@@ -86,7 +85,7 @@ emacs-skills : claude-skills
 	fi
 	@for skill in $(EMACS_SKILLS); do \
 		if [ -d "$(EMACS_SKILLS_DIR)/skills/$$skill" ]; then \
-			ln -snf "$(EMACS_SKILLS_DIR)/skills/$$skill" "$(dotfiles)/config/claude/skills/$$skill"; \
+			ln -snf "$(EMACS_SKILLS_DIR)/skills/$$skill" ~/.config/claude/skills/$$skill; \
 			echo "  → $$skill"; \
 		fi; \
 	done
@@ -94,16 +93,44 @@ emacs-skills : claude-skills
 
 ##@ AI Shared Config
 
-all += agent-skills agent-skill-manager-bin ai-config shared-agent-skills skills-install
+all += agent-skills agent-skill-manager-bin ai-config agent-skills-link skills-install
 agent-skills : ~/.config/agent-skills
-shared-agent-skills : ~/.agents/skills/review-pr-critically
+
+# Symlink each skill from dots/agents/skills/ into all agent skill directories.
+# This is the single source of truth for our own skills.
+AGENT_SKILL_DIRS := ~/.config/claude/skills ~/.agents/skills ~/.pi/agent/skills
+
+agent-skills-link:
+	@for dir in $(AGENT_SKILL_DIRS); do \
+		mkdir -p $$dir; \
+	done
+	@for skill in $(dotfiles)/agents/skills/*/; do \
+		name=$$(basename $$skill); \
+		for dir in $(AGENT_SKILL_DIRS); do \
+			if [ ! -e "$$dir/$$name" ]; then \
+				ln -snf "$$skill" "$$dir/$$name"; \
+				echo "  → $$name -> $$dir"; \
+			fi; \
+		done; \
+	done
+	@for skill in $(HOME)/.agents/skills/*/; do \
+		name=$$(basename $$skill); \
+		for dir in $(AGENT_SKILL_DIRS); do \
+			case "$$dir" in */.agents/skills) continue;; esac; \
+			if [ ! -e "$$dir/$$name" ]; then \
+				ln -snf "$$skill" "$$dir/$$name"; \
+				echo "  → $$name -> $$dir (from ~/.agents)"; \
+			fi; \
+		done; \
+	done
+	@echo "✅ Agent skills linked!"
 
 # Declarative skill packages — installed via `skills` CLI if not present.
 # Format: sentinel-skill=package (sentinel is any skill name from the package)
 # Installed to ~/.agents/skills/ and auto-linked to Claude, Pi, etc.
 SKILL_PACKAGES := brainstorming=obra/superpowers make-interfaces-feel-better=jakubkrehel/make-interfaces-feel-better
 
-skills-install:
+skills-install: agent-skills-link
 	@for entry in $(SKILL_PACKAGES); do \
 		sentinel=$${entry%%=*}; \
 		pkg=$${entry#*=}; \
@@ -119,6 +146,7 @@ skills-update:
 	@echo "🔄 Updating all installed skills..."
 	@skills update -g -y
 	@echo "✅ Skills updated!"
+
 ai-config : ~/.config/ai/skills ~/.config/ai/path-policies.json
 
 # Skills shared with claude via cross-link