Commit 66c340eaaf60

Vincent Demeester <vincent@sbr.pm>
2026-02-04 22:21:45
refactor(dots): rename .config to config for visibility
Dropped the leading dot from .config directory so files are visible in normal directory listings. Updated Makefile to use explicit source-to-target mappings (config/ -> ~/.config/, pi/ -> ~/.pi/) for consistency. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent f728950
Changed files (256)
dots
config
agent-skills
aichat
claude
agents
hooks
plugins
session-manager
skills
.archive
Brainstorming
CORE
Createskill
Docker
EmacsLisp
Email
Git
GitHub
golang
Homelab
Jira
Kubernetes
Nix
Nixpkgs
Org
Python
Rust
SystematicDebugging
Tekton
TestDrivenDevelopment
TODOs
UsingGitWorktrees
WritingPlans
copilot-hooks
emacs
gh-news
git
template
lazypr
niri
ntfy
nvim
opencode
xmpp-research-bot
dots/.config/agent-skills/agent-skill-manager → dots/config/agent-skills/agent-skill-manager
File renamed without changes
dots/.config/agent-skills/projects.toml → dots/config/agent-skills/projects.toml
File renamed without changes
dots/.config/agent-skills/README.md → dots/config/agent-skills/README.md
File renamed without changes
dots/.config/aichat/roles/beast-mode.prompt.md → dots/config/aichat/roles/beast-mode.prompt.md
File renamed without changes
dots/.config/aichat/roles/codereview.md → dots/config/aichat/roles/codereview.md
File renamed without changes
dots/.config/aichat/roles/findbug.md → dots/config/aichat/roles/findbug.md
File renamed without changes
dots/.config/aichat/roles/gitbranch.md → dots/config/aichat/roles/gitbranch.md
File renamed without changes
dots/.config/aichat/roles/gitcommit.md → dots/config/aichat/roles/gitcommit.md
File renamed without changes
dots/.config/aichat/roles/jira-release-note.md → dots/config/aichat/roles/jira-release-note.md
File renamed without changes
dots/.config/aichat/roles/jira.md → dots/config/aichat/roles/jira.md
File renamed without changes
dots/.config/aichat/roles/jira.ticket.prompt.md → dots/config/aichat/roles/jira.ticket.prompt.md
File renamed without changes
dots/.config/aichat/roles/jirabug.md → dots/config/aichat/roles/jirabug.md
File renamed without changes
dots/.config/aichat/roles/markdown.md → dots/config/aichat/roles/markdown.md
File renamed without changes
dots/.config/aichat/roles/release.md → dots/config/aichat/roles/release.md
File renamed without changes
dots/.config/aichat/roles/rewrite.md → dots/config/aichat/roles/rewrite.md
File renamed without changes
dots/.config/aichat/roles/spell.md → dots/config/aichat/roles/spell.md
File renamed without changes
dots/.config/aichat/config.yaml.in → dots/config/aichat/config.yaml.in
File renamed without changes
dots/.config/aichat/genconf.py → dots/config/aichat/genconf.py
File renamed without changes
dots/.config/claude/agents/architect.md → dots/config/claude/agents/architect.md
File renamed without changes
dots/.config/claude/agents/claude-researcher.md → dots/config/claude/agents/claude-researcher.md
File renamed without changes
dots/.config/claude/agents/designer.md → dots/config/claude/agents/designer.md
File renamed without changes
dots/.config/claude/agents/engineer.md → dots/config/claude/agents/engineer.md
File renamed without changes
dots/.config/claude/agents/researcher.md → dots/config/claude/agents/researcher.md
File renamed without changes
dots/.config/claude/hooks/.keep → dots/config/claude/hooks/.keep
File renamed without changes
dots/.config/claude/plugins/session-manager/commands/save-session.md → dots/config/claude/plugins/session-manager/commands/save-session.md
File renamed without changes
dots/.config/claude/plugins/session-manager/plugin.json → dots/config/claude/plugins/session-manager/plugin.json
File renamed without changes
dots/.config/claude/skills/.archive/Android/workflows/Build.md → dots/config/claude/skills/.archive/Android/workflows/Build.md
File renamed without changes
dots/.config/claude/skills/.archive/Android/workflows/Debug.md → dots/config/claude/skills/.archive/Android/workflows/Debug.md
File renamed without changes
dots/.config/claude/skills/.archive/Android/workflows/Setup.md → dots/config/claude/skills/.archive/Android/workflows/Setup.md
File renamed without changes
dots/.config/claude/skills/.archive/Android/SKILL.md → dots/config/claude/skills/.archive/Android/SKILL.md
File renamed without changes
dots/.config/claude/skills/.archive/Art/workflows/Mermaid.md → dots/config/claude/skills/.archive/Art/workflows/Mermaid.md
File renamed without changes
dots/.config/claude/skills/.archive/Art/workflows/Visualize.md → dots/config/claude/skills/.archive/Art/workflows/Visualize.md
File renamed without changes
dots/.config/claude/skills/.archive/Art/SKILL.md → dots/config/claude/skills/.archive/Art/SKILL.md
File renamed without changes
dots/.config/claude/skills/.archive/Journal/tools/get-location → dots/config/claude/skills/.archive/Journal/tools/get-location
File renamed without changes
dots/.config/claude/skills/.archive/Journal/tools/get-location-el → dots/config/claude/skills/.archive/Journal/tools/get-location-el
File renamed without changes
dots/.config/claude/skills/.archive/Journal/tools/get-weather → dots/config/claude/skills/.archive/Journal/tools/get-weather
File renamed without changes
dots/.config/claude/skills/.archive/Journal/tools/get-weather-el → dots/config/claude/skills/.archive/Journal/tools/get-weather-el
File renamed without changes
dots/.config/claude/skills/.archive/Journal/tools/journelly-batch-functions.el → dots/config/claude/skills/.archive/Journal/tools/journelly-batch-functions.el
File renamed without changes
dots/.config/claude/skills/.archive/Journal/tools/journelly-location-weather.el → dots/config/claude/skills/.archive/Journal/tools/journelly-location-weather.el
File renamed without changes
dots/.config/claude/skills/.archive/Journal/tools/journelly-manager → dots/config/claude/skills/.archive/Journal/tools/journelly-manager
File renamed without changes
dots/.config/claude/skills/.archive/Journal/README.md → dots/config/claude/skills/.archive/Journal/README.md
File renamed without changes
dots/.config/claude/skills/.archive/Journal/SKILL.md → dots/config/claude/skills/.archive/Journal/SKILL.md
File renamed without changes
dots/.config/claude/skills/.archive/Notes/SKILL.md → dots/config/claude/skills/.archive/Notes/SKILL.md
File renamed without changes
dots/.config/claude/skills/.archive/README.md → dots/config/claude/skills/.archive/README.md
File renamed without changes
dots/.config/claude/skills/Brainstorming/SKILL.md → dots/config/claude/skills/Brainstorming/SKILL.md
File renamed without changes
dots/.config/claude/skills/CORE/CONSTITUTION.md → dots/config/claude/skills/CORE/CONSTITUTION.md
File renamed without changes
dots/.config/claude/skills/CORE/history-system.md → dots/config/claude/skills/CORE/history-system.md
File renamed without changes
dots/.config/claude/skills/CORE/hook-system.md → dots/config/claude/skills/CORE/hook-system.md
File renamed without changes
dots/.config/claude/skills/CORE/prompting.md → dots/config/claude/skills/CORE/prompting.md
File renamed without changes
dots/.config/claude/skills/CORE/SKILL.md → dots/config/claude/skills/CORE/SKILL.md
File renamed without changes
dots/.config/claude/skills/CORE/SKILL.md.backup-20260106 → dots/config/claude/skills/CORE/SKILL.md.backup-20260106
File renamed without changes
dots/.config/claude/skills/CORE/SKILL.md.new → dots/config/claude/skills/CORE/SKILL.md.new
File renamed without changes
dots/.config/claude/skills/CORE/SkillSystem.md → dots/config/claude/skills/CORE/SkillSystem.md
File renamed without changes
dots/.config/claude/skills/Createskill/workflows/CreateSkill.md → dots/config/claude/skills/Createskill/workflows/CreateSkill.md
File renamed without changes
dots/.config/claude/skills/Createskill/workflows/ValidateSkill.md → dots/config/claude/skills/Createskill/workflows/ValidateSkill.md
File renamed without changes
dots/.config/claude/skills/Createskill/SKILL.md → dots/config/claude/skills/Createskill/SKILL.md
File renamed without changes
dots/.config/claude/skills/Docker/tools/DetectRuntime.sh → dots/config/claude/skills/Docker/tools/DetectRuntime.sh
File renamed without changes
dots/.config/claude/skills/Docker/workflows/Build.md → dots/config/claude/skills/Docker/workflows/Build.md
File renamed without changes
dots/.config/claude/skills/Docker/workflows/Infrastructure.md → dots/config/claude/skills/Docker/workflows/Infrastructure.md
File renamed without changes
dots/.config/claude/skills/Docker/workflows/Maintain.md → dots/config/claude/skills/Docker/workflows/Maintain.md
File renamed without changes
dots/.config/claude/skills/Docker/workflows/Run.md → dots/config/claude/skills/Docker/workflows/Run.md
File renamed without changes
dots/.config/claude/skills/Docker/SKILL.md → dots/config/claude/skills/Docker/SKILL.md
File renamed without changes
dots/.config/claude/skills/EmacsLisp/workflows/Configure.md → dots/config/claude/skills/EmacsLisp/workflows/Configure.md
File renamed without changes
dots/.config/claude/skills/EmacsLisp/workflows/Debug.md → dots/config/claude/skills/EmacsLisp/workflows/Debug.md
File renamed without changes
dots/.config/claude/skills/EmacsLisp/workflows/Lint.md → dots/config/claude/skills/EmacsLisp/workflows/Lint.md
File renamed without changes
dots/.config/claude/skills/EmacsLisp/workflows/Script.md → dots/config/claude/skills/EmacsLisp/workflows/Script.md
File renamed without changes
dots/.config/claude/skills/EmacsLisp/workflows/Test.md → dots/config/claude/skills/EmacsLisp/workflows/Test.md
File renamed without changes
dots/.config/claude/skills/EmacsLisp/Advanced.md → dots/config/claude/skills/EmacsLisp/Advanced.md
File renamed without changes
dots/.config/claude/skills/EmacsLisp/SKILL.md → dots/config/claude/skills/EmacsLisp/SKILL.md
File renamed without changes
dots/.config/claude/skills/Email/reference/Alternatives.md → dots/config/claude/skills/Email/reference/Alternatives.md
File renamed without changes
dots/.config/claude/skills/Email/reference/DatabaseLocking.md → dots/config/claude/skills/Email/reference/DatabaseLocking.md
File renamed without changes
dots/.config/claude/skills/Email/tools/archive-emails.sh → dots/config/claude/skills/Email/tools/archive-emails.sh
File renamed without changes
dots/.config/claude/skills/Email/tools/check-mu-lock.sh → dots/config/claude/skills/Email/tools/check-mu-lock.sh
File renamed without changes
dots/.config/claude/skills/Email/tools/ExtractAttachments.sh → dots/config/claude/skills/Email/tools/ExtractAttachments.sh
@@ -1,5 +1,6 @@
 #!/usr/bin/env nix-shell
 #! nix-shell -i bash -p mu jq
+# shellcheck shell=bash
 
 # extract-email-attachments.sh
 # Extract attachments from emails matching a mu query
@@ -24,7 +25,7 @@ mkdir -p "$output_dir"
 
 echo "Searching for emails matching: $query"
 # Count emails with attachments
-count=$(mu find $query attach:* --format=links 2>/dev/null | wc -l)
+count=$(mu find "$query" attach:* --format=links 2>/dev/null | wc -l)
 
 if [ "$count" -eq 0 ]; then
   echo "No emails found matching query with attachments."
@@ -36,7 +37,7 @@ echo "Extracting to: $output_dir"
 echo ""
 
 extracted=0
-mu find $query attach:* --format=links | while read -r email_path; do
+mu find "$query" attach:* --format=links | while read -r email_path; do
   if [ -f "$email_path" ]; then
     echo "Processing: $(basename "$email_path")"
     mu extract --target-dir="$output_dir" "$email_path" 2>/dev/null && extracted=$((extracted + 1))
@@ -46,4 +47,4 @@ done
 echo ""
 echo "Extraction complete. Files saved to: $output_dir"
 echo ""
-ls -lh "$output_dir" | head -20
+find "$output_dir" -maxdepth 1 -type f -printf '%s %f\n' | head -20
dots/.config/claude/skills/Email/tools/review-junk-bin.sh → dots/config/claude/skills/Email/tools/review-junk-bin.sh
File renamed without changes
dots/.config/claude/skills/Email/tools/smart-reindex.sh → dots/config/claude/skills/Email/tools/smart-reindex.sh
File renamed without changes
dots/.config/claude/skills/Email/workflows/Analyze.md → dots/config/claude/skills/Email/workflows/Analyze.md
File renamed without changes
dots/.config/claude/skills/Email/workflows/Extract.md → dots/config/claude/skills/Email/workflows/Extract.md
File renamed without changes
dots/.config/claude/skills/Email/workflows/Search.md → dots/config/claude/skills/Email/workflows/Search.md
File renamed without changes
dots/.config/claude/skills/Email/workflows/View.md → dots/config/claude/skills/Email/workflows/View.md
File renamed without changes
dots/.config/claude/skills/Email/SKILL.md → dots/config/claude/skills/Email/SKILL.md
File renamed without changes
dots/.config/claude/skills/Git/workflows/Branch.md → dots/config/claude/skills/Git/workflows/Branch.md
File renamed without changes
dots/.config/claude/skills/Git/workflows/Commit.md → dots/config/claude/skills/Git/workflows/Commit.md
File renamed without changes
dots/.config/claude/skills/Git/workflows/Merge.md → dots/config/claude/skills/Git/workflows/Merge.md
File renamed without changes
dots/.config/claude/skills/Git/workflows/Rebase.md → dots/config/claude/skills/Git/workflows/Rebase.md
File renamed without changes
dots/.config/claude/skills/Git/Advanced.md → dots/config/claude/skills/Git/Advanced.md
File renamed without changes
dots/.config/claude/skills/Git/SKILL.md → dots/config/claude/skills/Git/SKILL.md
File renamed without changes
dots/.config/claude/skills/GitHub/tools/README.md → dots/config/claude/skills/GitHub/tools/README.md
File renamed without changes
dots/.config/claude/skills/GitHub/workflows/CheckStatus.md → dots/config/claude/skills/GitHub/workflows/CheckStatus.md
File renamed without changes
dots/.config/claude/skills/GitHub/workflows/CreatePR.md → dots/config/claude/skills/GitHub/workflows/CreatePR.md
File renamed without changes
dots/.config/claude/skills/GitHub/workflows/ManageIssues.md → dots/config/claude/skills/GitHub/workflows/ManageIssues.md
File renamed without changes
dots/.config/claude/skills/GitHub/workflows/ResolvePRComments.md → dots/config/claude/skills/GitHub/workflows/ResolvePRComments.md
File renamed without changes
dots/.config/claude/skills/GitHub/workflows/RestartChecks.md → dots/config/claude/skills/GitHub/workflows/RestartChecks.md
File renamed without changes
dots/.config/claude/skills/GitHub/workflows/ReviewPR.md → dots/config/claude/skills/GitHub/workflows/ReviewPR.md
File renamed without changes
dots/.config/claude/skills/GitHub/SKILL.md → dots/config/claude/skills/GitHub/SKILL.md
File renamed without changes
dots/.config/claude/skills/golang/workflows/Build.md → dots/config/claude/skills/golang/workflows/Build.md
File renamed without changes
dots/.config/claude/skills/golang/workflows/Debug.md → dots/config/claude/skills/golang/workflows/Debug.md
File renamed without changes
dots/.config/claude/skills/golang/workflows/Deps.md → dots/config/claude/skills/golang/workflows/Deps.md
File renamed without changes
dots/.config/claude/skills/golang/workflows/Lint.md → dots/config/claude/skills/golang/workflows/Lint.md
File renamed without changes
dots/.config/claude/skills/golang/workflows/Test.md → dots/config/claude/skills/golang/workflows/Test.md
File renamed without changes
dots/.config/claude/skills/golang/Advanced.md → dots/config/claude/skills/golang/Advanced.md
File renamed without changes
dots/.config/claude/skills/golang/nix-integration.md → dots/config/claude/skills/golang/nix-integration.md
File renamed without changes
dots/.config/claude/skills/golang/SKILL.md → dots/config/claude/skills/golang/SKILL.md
File renamed without changes
dots/.config/claude/skills/Homelab/SKILL.md → dots/config/claude/skills/Homelab/SKILL.md
File renamed without changes
dots/.config/claude/skills/Jira/tools/jira-sprint-summary → dots/config/claude/skills/Jira/tools/jira-sprint-summary
File renamed without changes
dots/.config/claude/skills/Jira/tools/jira-to-org → dots/config/claude/skills/Jira/tools/jira-to-org
File renamed without changes
dots/.config/claude/skills/Jira/tools/jira-to-todo → dots/config/claude/skills/Jira/tools/jira-to-todo
File renamed without changes
dots/.config/claude/skills/Jira/workflows/Comment.md → dots/config/claude/skills/Jira/workflows/Comment.md
File renamed without changes
dots/.config/claude/skills/Jira/workflows/Create.md → dots/config/claude/skills/Jira/workflows/Create.md
File renamed without changes
dots/.config/claude/skills/Jira/workflows/LinkToNote.md → dots/config/claude/skills/Jira/workflows/LinkToNote.md
File renamed without changes
dots/.config/claude/skills/Jira/workflows/List.md → dots/config/claude/skills/Jira/workflows/List.md
File renamed without changes
dots/.config/claude/skills/Jira/workflows/Search.md → dots/config/claude/skills/Jira/workflows/Search.md
File renamed without changes
dots/.config/claude/skills/Jira/workflows/Sprint.md → dots/config/claude/skills/Jira/workflows/Sprint.md
File renamed without changes
dots/.config/claude/skills/Jira/workflows/Transition.md → dots/config/claude/skills/Jira/workflows/Transition.md
File renamed without changes
dots/.config/claude/skills/Jira/workflows/Update.md → dots/config/claude/skills/Jira/workflows/Update.md
File renamed without changes
dots/.config/claude/skills/Jira/workflows/View.md → dots/config/claude/skills/Jira/workflows/View.md
File renamed without changes
dots/.config/claude/skills/Jira/INTEGRATION.md → dots/config/claude/skills/Jira/INTEGRATION.md
File renamed without changes
dots/.config/claude/skills/Jira/PROPOSALS.md → dots/config/claude/skills/Jira/PROPOSALS.md
File renamed without changes
dots/.config/claude/skills/Jira/README.md → dots/config/claude/skills/Jira/README.md
File renamed without changes
dots/.config/claude/skills/Jira/SKILL.md → dots/config/claude/skills/Jira/SKILL.md
File renamed without changes
dots/.config/claude/skills/Kubernetes/workflows/Context.md → dots/config/claude/skills/Kubernetes/workflows/Context.md
File renamed without changes
dots/.config/claude/skills/Kubernetes/workflows/Debug.md → dots/config/claude/skills/Kubernetes/workflows/Debug.md
File renamed without changes
dots/.config/claude/skills/Kubernetes/workflows/Deploy.md → dots/config/claude/skills/Kubernetes/workflows/Deploy.md
File renamed without changes
dots/.config/claude/skills/Kubernetes/workflows/Resources.md → dots/config/claude/skills/Kubernetes/workflows/Resources.md
File renamed without changes
dots/.config/claude/skills/Kubernetes/workflows/Scaling.md → dots/config/claude/skills/Kubernetes/workflows/Scaling.md
File renamed without changes
dots/.config/claude/skills/Kubernetes/workflows/Security.md → dots/config/claude/skills/Kubernetes/workflows/Security.md
File renamed without changes
dots/.config/claude/skills/Kubernetes/SKILL.md → dots/config/claude/skills/Kubernetes/SKILL.md
File renamed without changes
dots/.config/claude/skills/Nix/workflows/Build.md → dots/config/claude/skills/Nix/workflows/Build.md
File renamed without changes
dots/.config/claude/skills/Nix/workflows/Deploy.md → dots/config/claude/skills/Nix/workflows/Deploy.md
File renamed without changes
dots/.config/claude/skills/Nix/workflows/Develop.md → dots/config/claude/skills/Nix/workflows/Develop.md
File renamed without changes
dots/.config/claude/skills/Nix/workflows/Flakes.md → dots/config/claude/skills/Nix/workflows/Flakes.md
File renamed without changes
dots/.config/claude/skills/Nix/workflows/Package.md → dots/config/claude/skills/Nix/workflows/Package.md
File renamed without changes
dots/.config/claude/skills/Nix/workflows/Secrets.md → dots/config/claude/skills/Nix/workflows/Secrets.md
File renamed without changes
dots/.config/claude/skills/Nix/Advanced.md → dots/config/claude/skills/Nix/Advanced.md
File renamed without changes
dots/.config/claude/skills/Nix/SKILL.md → dots/config/claude/skills/Nix/SKILL.md
File renamed without changes
dots/.config/claude/skills/Nixpkgs/scripts/auto-merge-pr → dots/config/claude/skills/Nixpkgs/scripts/auto-merge-pr
File renamed without changes
dots/.config/claude/skills/Nixpkgs/workflows/AddPackage.md → dots/config/claude/skills/Nixpkgs/workflows/AddPackage.md
File renamed without changes
dots/.config/claude/skills/Nixpkgs/workflows/FixPackage.md → dots/config/claude/skills/Nixpkgs/workflows/FixPackage.md
File renamed without changes
dots/.config/claude/skills/Nixpkgs/workflows/Maintainer.md → dots/config/claude/skills/Nixpkgs/workflows/Maintainer.md
File renamed without changes
dots/.config/claude/skills/Nixpkgs/workflows/Review.md → dots/config/claude/skills/Nixpkgs/workflows/Review.md
File renamed without changes
dots/.config/claude/skills/Nixpkgs/workflows/UpdatePackage.md → dots/config/claude/skills/Nixpkgs/workflows/UpdatePackage.md
File renamed without changes
dots/.config/claude/skills/Nixpkgs/review-checklist.md → dots/config/claude/skills/Nixpkgs/review-checklist.md
File renamed without changes
dots/.config/claude/skills/Nixpkgs/SKILL.md → dots/config/claude/skills/Nixpkgs/SKILL.md
File renamed without changes
dots/.config/claude/skills/Org/reference/DenoteFormat.md → dots/config/claude/skills/Org/reference/DenoteFormat.md
File renamed without changes
dots/.config/claude/skills/Org/reference/JournellyFormat.md → dots/config/claude/skills/Org/reference/JournellyFormat.md
File renamed without changes
dots/.config/claude/skills/Org/tools/tests/fixtures/test-todos.org → dots/config/claude/skills/Org/tools/tests/fixtures/test-todos.org
File renamed without changes
dots/.config/claude/skills/Org/tools/tests/batch-functions-test.el → dots/config/claude/skills/Org/tools/tests/batch-functions-test.el
File renamed without changes
dots/.config/claude/skills/Org/tools/tests/run-tests.sh → dots/config/claude/skills/Org/tools/tests/run-tests.sh
File renamed without changes
dots/.config/claude/skills/Org/tools/batch-functions.el → dots/config/claude/skills/Org/tools/batch-functions.el
File renamed without changes
dots/.config/claude/skills/Org/tools/denote-batch-functions.el → dots/config/claude/skills/Org/tools/denote-batch-functions.el
File renamed without changes
dots/.config/claude/skills/Org/tools/get-location → dots/config/claude/skills/Org/tools/get-location
File renamed without changes
dots/.config/claude/skills/Org/tools/get-location-el → dots/config/claude/skills/Org/tools/get-location-el
File renamed without changes
dots/.config/claude/skills/Org/tools/get-weather → dots/config/claude/skills/Org/tools/get-weather
File renamed without changes
dots/.config/claude/skills/Org/tools/get-weather-el → dots/config/claude/skills/Org/tools/get-weather-el
File renamed without changes
dots/.config/claude/skills/Org/tools/journelly-batch-functions.el → dots/config/claude/skills/Org/tools/journelly-batch-functions.el
File renamed without changes
dots/.config/claude/skills/Org/tools/journelly-location-weather.el → dots/config/claude/skills/Org/tools/journelly-location-weather.el
File renamed without changes
dots/.config/claude/skills/Org/tools/journelly-manager → dots/config/claude/skills/Org/tools/journelly-manager
File renamed without changes
dots/.config/claude/skills/Org/tools/org-manager → dots/config/claude/skills/Org/tools/org-manager
File renamed without changes
dots/.config/claude/skills/Org/README.md → dots/config/claude/skills/Org/README.md
File renamed without changes
dots/.config/claude/skills/Org/SKILL.md → dots/config/claude/skills/Org/SKILL.md
File renamed without changes
dots/.config/claude/skills/Org/SKILL.md.backup-20260106 → dots/config/claude/skills/Org/SKILL.md.backup-20260106
File renamed without changes
dots/.config/claude/skills/Python/tools/python-check → dots/config/claude/skills/Python/tools/python-check
File renamed without changes
dots/.config/claude/skills/Python/tools/python-lint → dots/config/claude/skills/Python/tools/python-lint
File renamed without changes
dots/.config/claude/skills/Python/workflows/Deps.md → dots/config/claude/skills/Python/workflows/Deps.md
File renamed without changes
dots/.config/claude/skills/Python/workflows/Lint.md → dots/config/claude/skills/Python/workflows/Lint.md
File renamed without changes
dots/.config/claude/skills/Python/workflows/Project.md → dots/config/claude/skills/Python/workflows/Project.md
File renamed without changes
dots/.config/claude/skills/Python/workflows/Test.md → dots/config/claude/skills/Python/workflows/Test.md
File renamed without changes
dots/.config/claude/skills/Python/workflows/Type.md → dots/config/claude/skills/Python/workflows/Type.md
File renamed without changes
dots/.config/claude/skills/Python/Advanced.md → dots/config/claude/skills/Python/Advanced.md
File renamed without changes
dots/.config/claude/skills/Python/README.md → dots/config/claude/skills/Python/README.md
File renamed without changes
dots/.config/claude/skills/Python/SKILL.md → dots/config/claude/skills/Python/SKILL.md
File renamed without changes
dots/.config/claude/skills/Rust/workflows/Build.md → dots/config/claude/skills/Rust/workflows/Build.md
File renamed without changes
dots/.config/claude/skills/Rust/workflows/Deps.md → dots/config/claude/skills/Rust/workflows/Deps.md
File renamed without changes
dots/.config/claude/skills/Rust/workflows/Error.md → dots/config/claude/skills/Rust/workflows/Error.md
File renamed without changes
dots/.config/claude/skills/Rust/workflows/Lint.md → dots/config/claude/skills/Rust/workflows/Lint.md
File renamed without changes
dots/.config/claude/skills/Rust/workflows/Test.md → dots/config/claude/skills/Rust/workflows/Test.md
File renamed without changes
dots/.config/claude/skills/Rust/Advanced.md → dots/config/claude/skills/Rust/Advanced.md
File renamed without changes
dots/.config/claude/skills/Rust/README.md → dots/config/claude/skills/Rust/README.md
File renamed without changes
dots/.config/claude/skills/Rust/SKILL.md → dots/config/claude/skills/Rust/SKILL.md
File renamed without changes
dots/.config/claude/skills/SystematicDebugging/SKILL.md → dots/config/claude/skills/SystematicDebugging/SKILL.md
File renamed without changes
dots/.config/claude/skills/Tekton/workflows/Build.md → dots/config/claude/skills/Tekton/workflows/Build.md
File renamed without changes
dots/.config/claude/skills/Tekton/workflows/Pipelines.md → dots/config/claude/skills/Tekton/workflows/Pipelines.md
File renamed without changes
dots/.config/claude/skills/Tekton/workflows/Tasks.md → dots/config/claude/skills/Tekton/workflows/Tasks.md
File renamed without changes
dots/.config/claude/skills/Tekton/workflows/TknCli.md → dots/config/claude/skills/Tekton/workflows/TknCli.md
File renamed without changes
dots/.config/claude/skills/Tekton/workflows/Triggers.md → dots/config/claude/skills/Tekton/workflows/Triggers.md
File renamed without changes
dots/.config/claude/skills/Tekton/Advanced.md → dots/config/claude/skills/Tekton/Advanced.md
File renamed without changes
dots/.config/claude/skills/Tekton/SKILL.md → dots/config/claude/skills/Tekton/SKILL.md
File renamed without changes
dots/.config/claude/skills/TestDrivenDevelopment/SKILL.md → dots/config/claude/skills/TestDrivenDevelopment/SKILL.md
File renamed without changes
dots/.config/claude/skills/TODOs/tools/org-manager → dots/config/claude/skills/TODOs/tools/org-manager
File renamed without changes
dots/.config/claude/skills/TODOs/workflows/Add.md → dots/config/claude/skills/TODOs/workflows/Add.md
File renamed without changes
dots/.config/claude/skills/TODOs/workflows/Project.md → dots/config/claude/skills/TODOs/workflows/Project.md
File renamed without changes
dots/.config/claude/skills/TODOs/workflows/Recurring.md → dots/config/claude/skills/TODOs/workflows/Recurring.md
File renamed without changes
dots/.config/claude/skills/TODOs/workflows/Review.md → dots/config/claude/skills/TODOs/workflows/Review.md
File renamed without changes
dots/.config/claude/skills/TODOs/workflows/Update.md → dots/config/claude/skills/TODOs/workflows/Update.md
File renamed without changes
dots/.config/claude/skills/TODOs/workflows/View.md → dots/config/claude/skills/TODOs/workflows/View.md
File renamed without changes
dots/.config/claude/skills/TODOs/Advanced.md → dots/config/claude/skills/TODOs/Advanced.md
File renamed without changes
dots/.config/claude/skills/TODOs/README.md → dots/config/claude/skills/TODOs/README.md
File renamed without changes
dots/.config/claude/skills/TODOs/SKILL.md → dots/config/claude/skills/TODOs/SKILL.md
File renamed without changes
dots/.config/claude/skills/UsingGitWorktrees/SKILL.md → dots/config/claude/skills/UsingGitWorktrees/SKILL.md
File renamed without changes
dots/.config/claude/skills/WritingPlans/SKILL.md → dots/config/claude/skills/WritingPlans/SKILL.md
File renamed without changes
dots/.config/claude/README.org → dots/config/claude/README.org
File renamed without changes
dots/.config/claude/settings.json → dots/config/claude/settings.json
File renamed without changes
dots/.config/claude/statusline.sh → dots/config/claude/statusline.sh
File renamed without changes
dots/.config/copilot-hooks/claude-hooks.json → dots/config/copilot-hooks/claude-hooks.json
File renamed without changes
dots/.config/copilot-hooks/copilot-to-claude.sh → dots/config/copilot-hooks/copilot-to-claude.sh
File renamed without changes
dots/.config/emacs/eshell/alias → dots/config/emacs/eshell/alias
File renamed without changes
dots/.config/emacs/eshell/lastdir → dots/config/emacs/eshell/lastdir
File renamed without changes
dots/.config/emacs/site-lisp/corfu-terminal.el → dots/config/emacs/site-lisp/corfu-terminal.el
File renamed without changes
dots/.config/emacs/site-lisp/denote-batch-functions.el → dots/config/emacs/site-lisp/denote-batch-functions.el
File renamed without changes
dots/.config/emacs/site-lisp/ext-whisper.el → dots/config/emacs/site-lisp/ext-whisper.el
File renamed without changes
dots/.config/emacs/site-lisp/goose.el → dots/config/emacs/site-lisp/goose.el
File renamed without changes
dots/.config/emacs/site-lisp/init-func.el → dots/config/emacs/site-lisp/init-func.el
File renamed without changes
dots/.config/emacs/site-lisp/journelly-batch-functions.el → dots/config/emacs/site-lisp/journelly-batch-functions.el
File renamed without changes
dots/.config/emacs/site-lisp/journelly-location-weather.el → dots/config/emacs/site-lisp/journelly-location-weather.el
File renamed without changes
dots/.config/emacs/site-lisp/journelly-manager → dots/config/emacs/site-lisp/journelly-manager
File renamed without changes
dots/.config/emacs/site-lisp/journelly.el → dots/config/emacs/site-lisp/journelly.el
File renamed without changes
dots/.config/emacs/site-lisp/kanata-kbd-mode.el → dots/config/emacs/site-lisp/kanata-kbd-mode.el
File renamed without changes
dots/.config/emacs/site-lisp/org-batch-functions-test.el → dots/config/emacs/site-lisp/org-batch-functions-test.el
File renamed without changes
dots/.config/emacs/site-lisp/org-batch-functions.el → dots/config/emacs/site-lisp/org-batch-functions.el
File renamed without changes
dots/.config/emacs/site-lisp/org-ql-batch-functions.el → dots/config/emacs/site-lisp/org-ql-batch-functions.el
File renamed without changes
dots/.config/emacs/site-lisp/passage.el → dots/config/emacs/site-lisp/passage.el
File renamed without changes
dots/.config/emacs/site-lisp/project-func.el → dots/config/emacs/site-lisp/project-func.el
File renamed without changes
dots/.config/emacs/site-lisp/terraform-ts-mode.el → dots/config/emacs/site-lisp/terraform-ts-mode.el
File renamed without changes
dots/.config/emacs/site-lisp/tonski-modus-theme.el → dots/config/emacs/site-lisp/tonski-modus-theme.el
File renamed without changes
dots/.config/emacs/site-lisp/vde-buffers.el → dots/config/emacs/site-lisp/vde-buffers.el
File renamed without changes
dots/.config/emacs/site-lisp/vde-vcs.el → dots/config/emacs/site-lisp/vde-vcs.el
File renamed without changes
dots/.config/emacs/site-lisp/vde-windows.el → dots/config/emacs/site-lisp/vde-windows.el
File renamed without changes
dots/.config/emacs/site-lisp/whisper.el → dots/config/emacs/site-lisp/whisper.el
File renamed without changes
dots/.config/emacs/.gitattributes → dots/config/emacs/.gitattributes
File renamed without changes
dots/.config/emacs/.gitignore → dots/config/emacs/.gitignore
File renamed without changes
dots/.config/emacs/.ignore → dots/config/emacs/.ignore
File renamed without changes
dots/.config/emacs/.org-id-locations → dots/config/emacs/.org-id-locations
File renamed without changes
dots/.config/emacs/early-init.el → dots/config/emacs/early-init.el
File renamed without changes
dots/.config/emacs/init.el → dots/config/emacs/init.el
File renamed without changes
dots/.config/emacs/README.org → dots/config/emacs/README.org
File renamed without changes
dots/.config/emacs/templates → dots/config/emacs/templates
File renamed without changes
dots/.config/gh-news/config.toml → dots/config/gh-news/config.toml
File renamed without changes
dots/.config/git/template/hooks/post-checkout → dots/config/git/template/hooks/post-checkout
File renamed without changes
dots/.config/lazypr/config.toml → dots/config/lazypr/config.toml
File renamed without changes
dots/.config/niri/config.kdl → dots/config/niri/config.kdl
File renamed without changes
dots/.config/ntfy/acknowledge-notification.sh → dots/config/ntfy/acknowledge-notification.sh
File renamed without changes
dots/.config/ntfy/client.yml.in → dots/config/ntfy/client.yml.in
File renamed without changes
dots/.config/ntfy/handle-notification.sh → dots/config/ntfy/handle-notification.sh
File renamed without changes
dots/.config/ntfy/ntfy-update-config → dots/config/ntfy/ntfy-update-config
File renamed without changes
dots/.config/nvim/lua/config/autocmds.lua → dots/config/nvim/lua/config/autocmds.lua
File renamed without changes
dots/.config/nvim/lua/config/keymaps.lua → dots/config/nvim/lua/config/keymaps.lua
File renamed without changes
dots/.config/nvim/lua/config/options.lua → dots/config/nvim/lua/config/options.lua
File renamed without changes
dots/.config/nvim/lua/plugins/bepo.lua → dots/config/nvim/lua/plugins/bepo.lua
File renamed without changes
dots/.config/nvim/lua/plugins/extras.lua → dots/config/nvim/lua/plugins/extras.lua
File renamed without changes
dots/.config/nvim/init.lua → dots/config/nvim/init.lua
File renamed without changes
dots/.config/nvim/lazy-lock.json → dots/config/nvim/lazy-lock.json
File renamed without changes
dots/.config/nvim/lazyvim.json → dots/config/nvim/lazyvim.json
File renamed without changes
dots/.config/opencode/plugin/claude-hooks.ts → dots/config/opencode/plugin/claude-hooks.ts
File renamed without changes
dots/.config/xmpp-research-bot/commands.yaml → dots/config/xmpp-research-bot/commands.yaml
File renamed without changes
dots/Makefile
@@ -1,8 +1,6 @@
 makefile := $(abspath $(lastword $(MAKEFILE_LIST)))
 dotfiles := $(abspath $(dir $(makefile)))
 
-~ := $(abspath $(dotfiles))
-
 force:
 
 define rule.template
@@ -14,7 +12,10 @@ endef
 
 rule.define = $(eval $(call rule.template,$(1),$(2)))
 
-$(call rule.define,~,$(~))
+# Map source directories to target directories
+$(call rule.define,~/.config,$(dotfiles)/config)
+$(call rule.define,~/.pi,$(dotfiles)/pi)
+$(call rule.define,~/bin,$(dotfiles)/bin)
 
 all += niri
 niri : ~/.config/niri/config.kdl
@@ -62,10 +63,10 @@ agent-skills : ~/.config/agent-skills
 agent-skill-manager-bin : ~/bin/agent-skill-manager
 
 # Agent skill manager tool
-~/bin/agent-skill-manager : $(dotfiles)/.config/agent-skills/agent-skill-manager force
-	@echo "📋 Linking $(dotfiles)/.config/agent-skills/agent-skill-manager → ~/bin/agent-skill-manager"
+~/bin/agent-skill-manager : $(dotfiles)/config/agent-skills/agent-skill-manager force
+	@echo "📋 Linking $(dotfiles)/config/agent-skills/agent-skill-manager → ~/bin/agent-skill-manager"
 	@mkdir -p ~/bin
-	@ln -snf $(dotfiles)/.config/agent-skills/agent-skill-manager ~/bin/agent-skill-manager
+	@ln -snf $(dotfiles)/config/agent-skills/agent-skill-manager ~/bin/agent-skill-manager
 
 # Backward compatibility: symlink ~/.claude to ~/.config/claude
 ~/.claude : force
@@ -92,14 +93,14 @@ agent-skill-manager-bin : ~/bin/agent-skill-manager
 	@ln -snf $(dotfiles)/pi/agent/README.md ~/.pi/agent/README.md
 
 # Generate ntfy client.yml from template with passage secrets injected
-~/.config/ntfy/client.yml : $(dotfiles)/.config/ntfy/client.yml.in $(dotfiles)/.config/ntfy/ntfy-update-config force
+~/.config/ntfy/client.yml : $(dotfiles)/config/ntfy/client.yml.in $(dotfiles)/config/ntfy/ntfy-update-config force
 	@echo "⚙️  Generating $$@ from template with passage secrets"
-	@$(dotfiles)/.config/ntfy/ntfy-update-config
+	@$(dotfiles)/config/ntfy/ntfy-update-config
 
 # Generate aichat config.yaml from template with dynamic model fetching
-~/.config/aichat/config.yaml : $(dotfiles)/.config/aichat/config.yaml.in $(dotfiles)/.config/aichat/genconf.py force
+~/.config/aichat/config.yaml : $(dotfiles)/config/aichat/config.yaml.in $(dotfiles)/config/aichat/genconf.py force
 	@echo "⚙️  Generating ~/.config/aichat/config.yaml with dynamic models and passage secrets"
-	@$(dotfiles)/.config/aichat/genconf.py > ~/.config/aichat/config.yaml 2>/dev/null
+	@$(dotfiles)/config/aichat/genconf.py > ~/.config/aichat/config.yaml 2>/dev/null
 
 all : $(all)
 	@echo "✅ All dotfiles installed!"