@sebastienrousseau/dotfiles 0.2.502 → 0.2.503

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (412) hide show
  1. package/CHANGELOG.md +83 -9
  2. package/LICENSE +21 -1283
  3. package/README.md +5 -3
  4. package/docs/CONFIG_STRATEGY.md +124 -0
  5. package/docs/COPYRIGHT +1 -1
  6. package/docs/GOVERNANCE.md +98 -0
  7. package/docs/MAINTAINERS.md +41 -0
  8. package/docs/OPENCODE.md +127 -0
  9. package/docs/README.md +2 -0
  10. package/docs/STRUCTURE.md +102 -0
  11. package/docs/adr/ADR-011-nushell-tier3-keep.md +2 -2
  12. package/docs/architecture/AI_COST_OPTIMIZATION.md +143 -0
  13. package/docs/architecture/REPO_LAYOUT.md +8 -8
  14. package/docs/archive/MILESTONE_v0.2.493.md +1 -1
  15. package/docs/index.md +2 -2
  16. package/docs/interop/POWERSHELL.md +1 -1
  17. package/docs/manual/00-introduction.md +1 -1
  18. package/docs/manual/01-concepts/02-trust-model.md +1 -1
  19. package/docs/manual/03-reference/02-config-files.md +2 -2
  20. package/docs/manual/_toc.yml +1 -1
  21. package/docs/manual/command-index.md +72 -59
  22. package/docs/operations/CI_COMPOSITES.md +2 -2
  23. package/docs/operations/COMPLETIONS.md +2 -2
  24. package/docs/operations/COVERAGE.md +5 -5
  25. package/docs/operations/HARD_AUDIT_2026.md +11 -11
  26. package/docs/operations/MAINTENANCE.md +3 -3
  27. package/docs/operations/MANIFEST.md +127 -0
  28. package/docs/operations/RELEASE_PIPELINE.md +130 -0
  29. package/docs/operations/RFC_v0_2_503_reorganization.md +280 -0
  30. package/docs/operations/ROADMAP_2026.md +6 -6
  31. package/docs/operations/ROADMAP_V0_2_503.md +134 -0
  32. package/docs/operations/TESTING.md +17 -0
  33. package/docs/operations/TRACEABILITY.md +6 -3
  34. package/docs/operations/VERSION_SYNC.md +4 -4
  35. package/docs/reference/POWERSHELL_PARITY.md +8 -7
  36. package/docs/schema/dot-env-v1.json +110 -0
  37. package/docs/security/CI_EGRESS_ALLOWLIST.md +1 -1
  38. package/docs/security/CI_PINNING.md +17 -9
  39. package/docs/security/DEPS_DEV_EXCEPTIONS.md +2 -2
  40. package/docs/security/FUZZING.md +114 -0
  41. package/docs/security/INSTALL_VERIFICATION.md +2 -2
  42. package/docs/security/POLICY_RELEASES.md +2 -2
  43. package/docs/security/SCORECARD.md +58 -3
  44. package/docs/security/SHELL_EXEMPTIONS.md +4 -4
  45. package/docs/security/VERIFY_RELEASE.md +201 -0
  46. package/install.sh +27 -5
  47. package/package.json +1 -1
  48. package/scripts/README.md +123 -0
  49. package/scripts/ci/check-copyright-headers.sh +4 -93
  50. package/scripts/ci/check-shell-preamble.sh +4 -103
  51. package/scripts/ci/guard-gitleaks-checkout.sh +4 -54
  52. package/scripts/diagnostics/a2a-conformance.sh +4 -4
  53. package/scripts/diagnostics/alias-governance.sh +1 -1
  54. package/scripts/diagnostics/aliases-cheatsheet.sh +2 -2
  55. package/scripts/diagnostics/benchmark.sh +4 -4
  56. package/scripts/diagnostics/conflicts.sh +2 -2
  57. package/scripts/diagnostics/doctor-unified.sh +2 -2
  58. package/scripts/diagnostics/doctor.sh +10 -10
  59. package/scripts/diagnostics/drift-dashboard.sh +2 -2
  60. package/scripts/diagnostics/health.sh +4 -4
  61. package/scripts/diagnostics/history-analysis.sh +2 -2
  62. package/scripts/diagnostics/mcp-doctor.sh +10 -7
  63. package/scripts/diagnostics/perf.sh +4 -4
  64. package/scripts/diagnostics/scorecard.sh +4 -4
  65. package/scripts/diagnostics/security-score.sh +2 -2
  66. package/scripts/diagnostics/smoke-test.sh +2 -2
  67. package/scripts/diagnostics/snapshot.sh +2 -2
  68. package/scripts/diagnostics/verify.sh +4 -4
  69. package/scripts/diagnostics/version-locks.sh +2 -2
  70. package/scripts/diagnostics/workstation-attestation.sh +14 -14
  71. package/scripts/dot/commands/agent.sh +8 -0
  72. package/scripts/dot/commands/agents.sh +14 -4
  73. package/scripts/dot/commands/ai.sh +144 -25
  74. package/scripts/dot/commands/appearance.sh +2 -2
  75. package/scripts/dot/commands/core.sh +2 -2
  76. package/scripts/dot/commands/diagnostics.sh +5 -5
  77. package/scripts/dot/commands/env-emit.sh +202 -0
  78. package/scripts/dot/commands/fleet.sh +12 -11
  79. package/scripts/dot/commands/init.sh +4 -4
  80. package/scripts/dot/commands/lint.sh +9 -4
  81. package/scripts/dot/commands/manual.sh +3 -3
  82. package/scripts/dot/commands/meta.sh +12 -6
  83. package/scripts/dot/commands/patterns.sh +2 -2
  84. package/scripts/dot/commands/registry.sh +4 -4
  85. package/scripts/dot/commands/restore.sh +4 -4
  86. package/scripts/dot/commands/secrets.sh +4 -3
  87. package/scripts/dot/commands/security.sh +2 -2
  88. package/scripts/dot/commands/tools.sh +13 -3
  89. package/scripts/dot/powershell/Dot.psm1 +199 -0
  90. package/scripts/fonts/install-nerd-fonts.sh +2 -2
  91. package/scripts/git-hooks/pre-commit-audit.sh +2 -2
  92. package/scripts/git-hooks/pre-push +13 -0
  93. package/scripts/ops/ai-setup.sh +1 -1
  94. package/scripts/ops/bundle.sh +2 -2
  95. package/scripts/ops/chaos.sh +2 -2
  96. package/scripts/ops/chezmoi-apply.sh +4 -4
  97. package/scripts/ops/heal.sh +4 -4
  98. package/scripts/ops/post-apply-repair.sh +2 -2
  99. package/scripts/ops/prewarm.sh +2 -2
  100. package/scripts/ops/release.sh +4 -4
  101. package/scripts/ops/rollback.sh +4 -4
  102. package/scripts/ops/setup.sh +2 -2
  103. package/scripts/qa/check-version-consistency.sh +123 -0
  104. package/scripts/qa/coverage-baseline.sh +1 -1
  105. package/scripts/qa/docs-coverage.sh +2 -2
  106. package/scripts/qa/powershell-contract.ps1 +1 -1
  107. package/scripts/qa/scorecard-snapshot.sh +127 -0
  108. package/scripts/security/backup.sh +2 -2
  109. package/scripts/security/dns-doh.sh +4 -4
  110. package/scripts/security/encryption-check.sh +4 -4
  111. package/scripts/security/enforce-policies.sh +2 -2
  112. package/scripts/security/firewall.sh +4 -4
  113. package/scripts/security/lock-screen.sh +4 -4
  114. package/scripts/security/manage-secrets.sh +2 -2
  115. package/scripts/security/ssh-cert.sh +2 -2
  116. package/scripts/security/telemetry-kill.sh +4 -4
  117. package/scripts/security/usb-safety.sh +4 -4
  118. package/scripts/theme/extract-heic-frames.sh +114 -0
  119. package/scripts/theme/rebuild-themes.sh +8 -1
  120. package/scripts/theme/switch.sh +13 -6
  121. package/scripts/theme/wallpaper-sync.sh +297 -93
  122. package/scripts/tuning/linux.sh +2 -2
  123. package/scripts/tuning/macos.sh +2 -2
  124. package/scripts/version-sync.sh +55 -7
  125. package/dot_config/.module-manifest.json +0 -69
  126. package/dot_config/ai/identity.md +0 -23
  127. package/dot_config/ai/patterns/architect.md +0 -16
  128. package/dot_config/ai/patterns/hardener.md +0 -15
  129. package/dot_config/ai/patterns/refactor.md +0 -15
  130. package/dot_config/aider/aider.conf.yml +0 -32
  131. package/dot_config/alacritty/alacritty.toml.tmpl +0 -55
  132. package/dot_config/ansible/ansible.cfg +0 -11
  133. package/dot_config/atuin/config.toml.tmpl +0 -47
  134. package/dot_config/bat/config +0 -23
  135. package/dot_config/brave-flags.conf.tmpl +0 -7
  136. package/dot_config/btop/btop.conf +0 -16
  137. package/dot_config/btop/themes/tokyonight.theme +0 -34
  138. package/dot_config/bun/bunfig.toml.tmpl +0 -33
  139. package/dot_config/claude/mcp_servers.json +0 -20
  140. package/dot_config/containers/containers.conf +0 -14
  141. package/dot_config/curl/dot_curlrc +0 -18
  142. package/dot_config/dlv/config.yml +0 -39
  143. package/dot_config/docker/config.json +0 -15
  144. package/dot_config/dotfiles/agent-card.json +0 -29
  145. package/dot_config/dotfiles/agent-profiles.json +0 -92
  146. package/dot_config/dotfiles/boot/README.md +0 -13
  147. package/dot_config/dotfiles/grub/README.md +0 -13
  148. package/dot_config/dotfiles/lock/README.md +0 -13
  149. package/dot_config/dotfiles/mcp-lock.json +0 -33
  150. package/dot_config/dotfiles/mcp-policy.json +0 -52
  151. package/dot_config/dotfiles/mcp-registry.json +0 -47
  152. package/dot_config/dotfiles/model-registry.json +0 -20
  153. package/dot_config/dotfiles/policy-bundles.json +0 -38
  154. package/dot_config/dotfiles/prompt-registry.json +0 -16
  155. package/dot_config/dotfiles/versions.env +0 -18
  156. package/dot_config/duf/duf.conf +0 -6
  157. package/dot_config/duti/defaults.duti +0 -5
  158. package/dot_config/emoji/emoji.txt +0 -34
  159. package/dot_config/environment.d/50-ssh-agent.conf +0 -2
  160. package/dot_config/environment.d/90-wayland.conf +0 -19
  161. package/dot_config/fastfetch/config.jsonc +0 -28
  162. package/dot_config/firefox/user.js.tmpl +0 -58
  163. package/dot_config/fish/completions/dot-theme-sync.fish.tmpl +0 -9
  164. package/dot_config/fish/completions/dot.fish.tmpl +0 -115
  165. package/dot_config/fish/conf.d/000-perf-cache.fish +0 -56
  166. package/dot_config/fish/conf.d/aliases.fish.tmpl +0 -77
  167. package/dot_config/fish/conf.d/direnv.fish +0 -4
  168. package/dot_config/fish/conf.d/env.fish.tmpl +0 -48
  169. package/dot_config/fish/conf.d/functions.fish.tmpl +0 -22
  170. package/dot_config/fish/conf.d/init.fish.tmpl +0 -172
  171. package/dot_config/fish/conf.d/mise-activate.fish +0 -5
  172. package/dot_config/fish/config.fish.tmpl +0 -44
  173. package/dot_config/fish/fish_plugins +0 -1
  174. package/dot_config/fish/functions/_.fish +0 -3
  175. package/dot_config/fish/functions/_cached_eval.fish +0 -131
  176. package/dot_config/fish/functions/_cached_eval_clear.fish +0 -17
  177. package/dot_config/fish/functions/als.fish +0 -46
  178. package/dot_config/fish/functions/bg-upgrade.fish +0 -7
  179. package/dot_config/fish/functions/c.fish +0 -3
  180. package/dot_config/fish/functions/cat.fish +0 -9
  181. package/dot_config/fish/functions/d.fish +0 -7
  182. package/dot_config/fish/functions/dot.fish +0 -34
  183. package/dot_config/fish/functions/h.fish +0 -3
  184. package/dot_config/fish/functions/l.fish +0 -7
  185. package/dot_config/fish/functions/la.fish +0 -7
  186. package/dot_config/fish/functions/ll.fish +0 -7
  187. package/dot_config/fish/functions/log_error.fish +0 -13
  188. package/dot_config/fish/functions/log_info.fish +0 -13
  189. package/dot_config/fish/functions/lr.fish +0 -7
  190. package/dot_config/fish/functions/lra.fish +0 -7
  191. package/dot_config/fish/functions/ls.fish +0 -7
  192. package/dot_config/fish/functions/lt.fish +0 -7
  193. package/dot_config/fish/functions/lta.fish +0 -7
  194. package/dot_config/fish/functions/notify-run.fish +0 -11
  195. package/dot_config/fish/functions/q.fish +0 -3
  196. package/dot_config/fish/functions/silent-run.fish +0 -7
  197. package/dot_config/fish/functions/yy.fish +0 -8
  198. package/dot_config/flatpak/flatpak.list +0 -4
  199. package/dot_config/fontconfig/fonts.conf.tmpl +0 -57
  200. package/dot_config/foot/foot.ini.tmpl +0 -33
  201. package/dot_config/fuzzel/fuzzel.ini.tmpl +0 -18
  202. package/dot_config/fzf/fzf.zsh +0 -48
  203. package/dot_config/gem/gemrc +0 -9
  204. package/dot_config/gh/config.yml +0 -12
  205. package/dot_config/ghostty/config.tmpl +0 -165
  206. package/dot_config/git/allowed_signers.tmpl +0 -18
  207. package/dot_config/git/attributes +0 -12
  208. package/dot_config/git/commit-template +0 -10
  209. package/dot_config/git/hooks/executable_commit-msg +0 -146
  210. package/dot_config/git/ignore +0 -27
  211. package/dot_config/gnupg/gpg-agent.conf +0 -11
  212. package/dot_config/go/golangci.yml +0 -118
  213. package/dot_config/go/gopls.json +0 -30
  214. package/dot_config/goose/config.yaml +0 -29
  215. package/dot_config/gtk-3.0/gtk.css.tmpl +0 -184
  216. package/dot_config/gtk-3.0/settings.ini.tmpl +0 -27
  217. package/dot_config/gtk-4.0/gtk.css.tmpl +0 -252
  218. package/dot_config/gtk-4.0/settings.ini.tmpl +0 -18
  219. package/dot_config/htop/htoprc +0 -20
  220. package/dot_config/inputrc +0 -2
  221. package/dot_config/ipython/profile_default/ipython_config.py +0 -19
  222. package/dot_config/just/justfile +0 -122
  223. package/dot_config/k9s/config.yaml +0 -65
  224. package/dot_config/k9s/skins/catppuccin-mocha.yaml +0 -116
  225. package/dot_config/kanshi/config.tmpl +0 -22
  226. package/dot_config/karabiner/karabiner.json +0 -14
  227. package/dot_config/kitty/kitty.conf.tmpl +0 -53
  228. package/dot_config/lazydocker/config.yml +0 -186
  229. package/dot_config/lazygit/config.yml +0 -35
  230. package/dot_config/mako/config +0 -47
  231. package/dot_config/mas/masapps.txt +0 -5
  232. package/dot_config/micro/settings.json +0 -3
  233. package/dot_config/mimeapps.list +0 -77
  234. package/dot_config/minikube/config.json +0 -13
  235. package/dot_config/mise/config.toml +0 -99
  236. package/dot_config/mongosh/mongoshrc.js +0 -68
  237. package/dot_config/mpv/input.conf +0 -47
  238. package/dot_config/mpv/mpv.conf +0 -47
  239. package/dot_config/mycli/myclirc +0 -67
  240. package/dot_config/nano/nanorc +0 -28
  241. package/dot_config/ncdu/config +0 -12
  242. package/dot_config/niri/config.kdl.tmpl +0 -327
  243. package/dot_config/nushell/aliases.nu +0 -18
  244. package/dot_config/nushell/cached_eval.nu +0 -80
  245. package/dot_config/nushell/completions.nu.tmpl +0 -52
  246. package/dot_config/nushell/config.nu.tmpl +0 -86
  247. package/dot_config/nushell/env.nu.tmpl +0 -102
  248. package/dot_config/nushell/functions.nu.tmpl +0 -17
  249. package/dot_config/nvim/init.lua +0 -18
  250. package/dot_config/nvim/lazy-lock.json +0 -58
  251. package/dot_config/nvim/lua/config/autocmds.lua +0 -107
  252. package/dot_config/nvim/lua/config/keymaps.lua +0 -92
  253. package/dot_config/nvim/lua/config/lazy.lua +0 -44
  254. package/dot_config/nvim/lua/config/options.lua +0 -49
  255. package/dot_config/nvim/lua/plugins/ai.lua +0 -75
  256. package/dot_config/nvim/lua/plugins/coding.lua +0 -216
  257. package/dot_config/nvim/lua/plugins/completion.lua +0 -60
  258. package/dot_config/nvim/lua/plugins/dap.lua +0 -412
  259. package/dot_config/nvim/lua/plugins/editor.lua +0 -55
  260. package/dot_config/nvim/lua/plugins/git.lua +0 -10
  261. package/dot_config/nvim/lua/plugins/lsp.lua +0 -156
  262. package/dot_config/nvim/lua/plugins/markdown.lua +0 -18
  263. package/dot_config/nvim/lua/plugins/rust.lua +0 -34
  264. package/dot_config/nvim/lua/plugins/sessions.lua +0 -33
  265. package/dot_config/nvim/lua/plugins/ui.lua +0 -509
  266. package/dot_config/paru/paru.conf +0 -10
  267. package/dot_config/pip/pip.conf.tmpl +0 -32
  268. package/dot_config/powershell/Microsoft.PowerShell_profile.ps1.tmpl +0 -81
  269. package/dot_config/pueue/pueue.yml +0 -34
  270. package/dot_config/pypoetry/config.toml +0 -6
  271. package/dot_config/pyrightconfig.json +0 -5
  272. package/dot_config/raycast/README.md +0 -13
  273. package/dot_config/redis/redisclirc +0 -41
  274. package/dot_config/ripgrep/ripgreprc +0 -21
  275. package/dot_config/shell/00-core-paths.sh.tmpl +0 -141
  276. package/dot_config/shell/05-core-safety.sh +0 -48
  277. package/dot_config/shell/10-secrets.sh +0 -41
  278. package/dot_config/shell/40-fzf-defaults.sh.tmpl +0 -17
  279. package/dot_config/shell/40-ls-colors.sh +0 -49
  280. package/dot_config/shell/50-logic-functions-core.sh.tmpl +0 -11
  281. package/dot_config/shell/50-logic-functions.sh.tmpl +0 -11
  282. package/dot_config/shell/51-logic-functions-extra.sh.tmpl +0 -65
  283. package/dot_config/shell/90-ux-aliases.sh.tmpl +0 -121
  284. package/dot_config/shell/91-ux-aliases-lazy.sh.tmpl +0 -55
  285. package/dot_config/shell/Brewfile +0 -207
  286. package/dot_config/shell/Brewfile.cask +0 -92
  287. package/dot_config/shell/Brewfile.cli +0 -127
  288. package/dot_config/shell/README.md +0 -284
  289. package/dot_config/shell/als_data.txt.tmpl +0 -65
  290. package/dot_config/shell/custom/auto_ls.zsh +0 -20
  291. package/dot_config/shell/custom/context_suggest.zsh +0 -68
  292. package/dot_config/shell/custom/error_analysis.zsh +0 -45
  293. package/dot_config/sops/dot_sops.yaml +0 -23
  294. package/dot_config/starship.toml.tmpl +0 -202
  295. package/dot_config/swaylock/config +0 -43
  296. package/dot_config/systemd/user/dotfiles-maintenance.service +0 -8
  297. package/dot_config/systemd/user/dotfiles-maintenance.timer +0 -11
  298. package/dot_config/systemd/user/pueued.service +0 -12
  299. package/dot_config/systemd/user/ssh-agent.service +0 -12
  300. package/dot_config/task/Taskfile.yml +0 -86
  301. package/dot_config/tflint/tflint.hcl +0 -9
  302. package/dot_config/tmux/tmux.conf.tmpl +0 -223
  303. package/dot_config/topgrade.toml.tmpl +0 -54
  304. package/dot_config/user-dirs.dirs +0 -10
  305. package/dot_config/vscode/extensions.txt +0 -11
  306. package/dot_config/vscode/settings.json.tmpl +0 -82
  307. package/dot_config/waybar/config.jsonc.tmpl +0 -90
  308. package/dot_config/waybar/style.css.tmpl +0 -211
  309. package/dot_config/wezterm/wezterm.lua.tmpl +0 -64
  310. package/dot_config/wget/wgetrc +0 -12
  311. package/dot_config/xdg-desktop-portal/niri-portals.conf +0 -5
  312. package/dot_config/yarn/yarnrc.yml +0 -36
  313. package/dot_config/yazi/keymap.toml +0 -67
  314. package/dot_config/yazi/theme.toml +0 -102
  315. package/dot_config/yazi/yazi.toml +0 -40
  316. package/dot_config/zathura/zathurarc +0 -52
  317. package/dot_config/zellij/config.kdl.tmpl +0 -79
  318. package/dot_config/zsh/dot_zprofile +0 -7
  319. package/dot_config/zsh/dot_zshenv +0 -5
  320. package/dot_config/zsh/dot_zshrc.tmpl +0 -688
  321. package/dot_config/zsh/rc.d/00-alias-shims.zsh +0 -99
  322. package/dot_config/zsh/rc.d/05-ssh-agent.zsh +0 -18
  323. package/dot_config/zsh/rc.d/10-env.zsh.tmpl +0 -28
  324. package/dot_config/zsh/rc.d/20-zinit.zsh +0 -65
  325. package/dot_config/zsh/rc.d/30-options.zsh.tmpl +0 -214
  326. package/dot_config/zsh/rc.d/40-bell.zsh +0 -20
  327. package/dot_config/zsh/rc.d/50-login-fortune.zsh +0 -9
  328. package/dot_config/zsh/rc.d/99-alias-wrapper.zsh +0 -32
  329. package/dot_local/bin/executable_ai-update +0 -195
  330. package/dot_local/bin/executable_ai_core +0 -152
  331. package/dot_local/bin/executable_antigravity +0 -11
  332. package/dot_local/bin/executable_b64 +0 -84
  333. package/dot_local/bin/executable_bm +0 -79
  334. package/dot_local/bin/executable_cb +0 -39
  335. package/dot_local/bin/executable_dot +0 -636
  336. package/dot_local/bin/executable_dot-ai +0 -36
  337. package/dot_local/bin/executable_dot-bootstrap +0 -76
  338. package/dot_local/bin/executable_dot-launch-or-focus +0 -52
  339. package/dot_local/bin/executable_dot-load-benchmark +0 -31
  340. package/dot_local/bin/executable_dot-load-benchmark-pty +0 -77
  341. package/dot_local/bin/executable_dot-theme-sync +0 -952
  342. package/dot_local/bin/executable_dot_completion +0 -57
  343. package/dot_local/bin/executable_dtags +0 -28
  344. package/dot_local/bin/executable_epoch +0 -67
  345. package/dot_local/bin/executable_extract +0 -41
  346. package/dot_local/bin/executable_gbd +0 -52
  347. package/dot_local/bin/executable_gd +0 -42
  348. package/dot_local/bin/executable_git-ai-commit +0 -175
  349. package/dot_local/bin/executable_git-ai-diff +0 -169
  350. package/dot_local/bin/executable_gl +0 -101
  351. package/dot_local/bin/executable_hash +0 -161
  352. package/dot_local/bin/executable_hashsum +0 -160
  353. package/dot_local/bin/executable_hex +0 -115
  354. package/dot_local/bin/executable_jsonv +0 -78
  355. package/dot_local/bin/executable_jwt +0 -94
  356. package/dot_local/bin/executable_kill-port +0 -75
  357. package/dot_local/bin/executable_lorem +0 -118
  358. package/dot_local/bin/executable_mkscript +0 -35
  359. package/dot_local/bin/executable_monitor +0 -56
  360. package/dot_local/bin/executable_myip +0 -51
  361. package/dot_local/bin/executable_notify +0 -24
  362. package/dot_local/bin/executable_open +0 -38
  363. package/dot_local/bin/executable_pw +0 -27
  364. package/dot_local/bin/executable_rec-start +0 -46
  365. package/dot_local/bin/executable_rec-stop +0 -35
  366. package/dot_local/bin/executable_regex +0 -132
  367. package/dot_local/bin/executable_start-niri +0 -8
  368. package/dot_local/bin/executable_tmux-sessionizer +0 -314
  369. package/dot_local/bin/executable_tour +0 -177
  370. package/dot_local/bin/executable_up +0 -23
  371. package/dot_local/bin/executable_update +0 -142
  372. package/dot_local/bin/executable_uuid +0 -87
  373. package/dot_local/bin/executable_win +0 -32
  374. package/dot_local/bin/executable_yamlv +0 -57
  375. package/dot_local/share/bash-completion/completions/dot +0 -72
  376. package/dot_local/share/icons/hicolor/128x128/apps/rousseau.png +0 -0
  377. package/dot_local/share/icons/hicolor/16x16/apps/rousseau.png +0 -0
  378. package/dot_local/share/icons/hicolor/24x24/apps/rousseau.png +0 -0
  379. package/dot_local/share/icons/hicolor/256x256/apps/rousseau.png +0 -0
  380. package/dot_local/share/icons/hicolor/32x32/apps/rousseau.png +0 -0
  381. package/dot_local/share/icons/hicolor/48x48/apps/rousseau.png +0 -0
  382. package/dot_local/share/icons/hicolor/512x512/apps/rousseau.png +0 -0
  383. package/dot_local/share/icons/hicolor/64x64/apps/rousseau.png +0 -0
  384. package/dot_local/share/icons/hicolor/96x96/apps/rousseau.png +0 -0
  385. package/dot_local/share/icons/hicolor/scalable/apps/rousseau.png +0 -0
  386. package/dot_local/share/man/man1/dot.1 +0 -149
  387. package/dot_local/share/mise/plugins/kiro-cli/bin/executable_download +0 -64
  388. package/dot_local/share/mise/plugins/kiro-cli/bin/executable_install +0 -18
  389. package/dot_local/share/mise/plugins/kiro-cli/bin/executable_list-all +0 -13
  390. package/dot_local/share/wayland-sessions/niri.desktop.tmpl +0 -6
  391. package/dot_local/share/zsh/completions/.keep +0 -0
  392. package/dot_local/share/zsh/completions/_dot +0 -287
  393. package/scripts/ci/check-dangerous-chmod.sh +0 -19
  394. package/scripts/ci/check-deps-dev.sh +0 -236
  395. package/scripts/ci/check-insecure-tls.sh +0 -61
  396. package/scripts/ci/check-regression-traceability.sh +0 -67
  397. package/scripts/ci/dot-cli-startup-bench.sh +0 -126
  398. package/scripts/ci/install-chezmoi-verified.sh +0 -67
  399. package/scripts/ci/lint-reusable-pins.sh +0 -78
  400. package/scripts/ci/run-coverage.sh +0 -451
  401. package/scripts/ci/validate-chezmoidata.sh +0 -25
  402. package/scripts/ci/validate-ci-config.sh +0 -224
  403. package/scripts/ci/windows-smoke-test.ps1 +0 -136
  404. package/scripts/docs/build-manual.sh +0 -883
  405. package/scripts/docs/check-manual.sh +0 -213
  406. package/scripts/dot/lib/bento.sh +0 -50
  407. package/scripts/dot/lib/log.sh +0 -200
  408. package/scripts/dot/lib/platform.sh +0 -112
  409. package/scripts/dot/lib/ui.sh +0 -650
  410. package/scripts/dot/lib/utils.sh +0 -377
  411. package/scripts/maintenance/check-updates.sh +0 -131
  412. package/scripts/release/package-policy-bundles.sh +0 -125
package/README.md CHANGED
@@ -10,10 +10,12 @@
10
10
 
11
11
  <p align="center">
12
12
  <a href="https://github.com/sebastienrousseau/dotfiles/actions"><img src="https://img.shields.io/github/actions/workflow/status/sebastienrousseau/dotfiles/ci.yml?style=for-the-badge&logo=github" alt="Build" /></a>
13
- <a href="https://github.com/sebastienrousseau/dotfiles/releases/latest"><img src="https://img.shields.io/badge/Version-v0.2.502-blue?style=for-the-badge" alt="Version" /></a>
13
+ <a href="https://github.com/sebastienrousseau/dotfiles/releases/latest"><img src="https://img.shields.io/badge/Version-v0.2.503-blue?style=for-the-badge" alt="Version" /></a>
14
14
  <a href="https://github.com/sebastienrousseau/dotfiles/releases"><img src="https://img.shields.io/github/downloads/sebastienrousseau/dotfiles/total?style=for-the-badge" alt="Downloads" /></a>
15
15
  <a href="https://codespaces.new/sebastienrousseau/dotfiles"><img src="https://img.shields.io/badge/Open%20in-Codespaces-blue?style=for-the-badge&logo=github" alt="Open in GitHub Codespaces" /></a>
16
16
  <a href="https://scorecard.dev/viewer/?uri=github.com/sebastienrousseau/dotfiles"><img src="https://img.shields.io/ossf-scorecard/github.com/sebastienrousseau/dotfiles?style=for-the-badge&label=OpenSSF%20Scorecard" alt="OpenSSF Scorecard" /></a>
17
+ <a href="https://www.bestpractices.dev/projects/new"><img src="https://img.shields.io/badge/OpenSSF%20Best%20Practices-in%20progress-yellow?style=for-the-badge" alt="OpenSSF Best Practices" /></a>
18
+ <a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-green?style=for-the-badge" alt="License: MIT" /></a>
17
19
  </p>
18
20
 
19
21
  ---
@@ -50,7 +52,7 @@
50
52
 
51
53
  ```bash
52
54
  curl -fsSL -o /tmp/dotfiles-install.sh \
53
- https://raw.githubusercontent.com/sebastienrousseau/dotfiles/v0.2.502/install.sh
55
+ https://raw.githubusercontent.com/sebastienrousseau/dotfiles/v0.2.503/install.sh
54
56
  echo "4c0303a2d88d5aed98428ab0da37618c9795af4dae0e6549646c2fce5235c280 /tmp/dotfiles-install.sh" \
55
57
  | shasum -a 256 -c
56
58
  bash /tmp/dotfiles-install.sh
@@ -185,7 +187,7 @@ Over 80 commands grouped by intent. Run `dot help` for the full reference.
185
187
  | `dot fleet apply` | SSH out to every host in `~/.config/dotfiles/fleet.toml` |
186
188
  | `dot registry list` | Browse reusable dotfile modules from the registry |
187
189
 
188
- A [Claude Code skill](dot_claude/skills/dotfiles-bootstrap/SKILL.md) is also shipped — `/skills` discovers `dotfiles-bootstrap` and runs `dot init` with profile-aware safety defaults.
190
+ A [Claude Code skill](defaults/dot_claude/skills/dotfiles-bootstrap/SKILL.md) is also shipped — `/skills` discovers `dotfiles-bootstrap` and runs `dot init` with profile-aware safety defaults.
189
191
 
190
192
  ### Daily Use
191
193
 
@@ -0,0 +1,124 @@
1
+ # Configuration Management Strategy
2
+
3
+ ## Overview
4
+
5
+ This document defines the configuration management approach for this development environment, consolidating multiple systems into a clear hierarchy.
6
+
7
+ ## Configuration Systems
8
+
9
+ ### Primary: Chezmoi
10
+
11
+ **Role:** Source of truth for all managed dotfiles
12
+ **Location:** `~/.dotfiles/` (chezmoi source directory)
13
+ **Managed Files:** 209 files/directories
14
+
15
+ Chezmoi handles:
16
+
17
+ - Shell configurations (.bashrc, .zshrc, .profile, .zshenv, .zprofile)
18
+ - Editor configs (.vimrc, nvim, VS Code settings)
19
+ - Tool configs (.gitconfig, .npmrc, .noderc, etc.)
20
+ - Application configs (~/.config/*)
21
+ - SSH configuration (~/.ssh/config, config.d/)
22
+
23
+
24
+ ### Tertiary: Runtime/Application Data
25
+
26
+ **Role:** Auto-generated, not version controlled
27
+ **Examples:**
28
+
29
+ - `~/.cache/` - Application caches
30
+ - `~/.local/share/` - Application data
31
+ - `~/.cargo/`, `~/.rustup/` - Language toolchains
32
+ - `~/.npm/`, `~/.node_modules/` - Node.js packages
33
+
34
+ ## Decision Matrix
35
+
36
+ | Configuration Type | Manager | Reason |
37
+ |-------------------|---------|--------|
38
+ | Shell dotfiles | Chezmoi | Templated, machine-specific |
39
+ | Editor configs | Chezmoi | Consistent across machines |
40
+ | Git config | Chezmoi | Templated (email, signing key) |
41
+ | SSH config | Chezmoi | Structured with config.d/ |
42
+ | Euxis framework | Git (separate) | Independent lifecycle |
43
+ | Language runtimes | mise | Version management |
44
+ | System packages | apt/snap | OS-level |
45
+ | Application data | None | Auto-generated |
46
+
47
+ ## Chezmoi Configuration
48
+
49
+ ### Data Variables (.chezmoidata.toml)
50
+
51
+ ```toml
52
+ profile = "laptop" # Machine profile
53
+ theme = "tokyonight-night" # Color scheme
54
+ terminal_font_family = "JetBrains Mono"
55
+ terminal_font_size = 12
56
+
57
+ [features]
58
+ zsh = true # Enable zsh configs
59
+ nvim = true # Enable neovim configs
60
+ tmux = true # Enable tmux configs
61
+ gui = true # Enable GUI app configs
62
+ secrets = true # Enable secret management
63
+ ```
64
+
65
+ ### Template Patterns
66
+
67
+ Files ending in `.tmpl` are processed with Go templates:
68
+
69
+ - `dot_gitconfig.tmpl` - Injects name, email, signing key
70
+ - `dot_npmrc.tmpl` - Injects registry tokens
71
+ - `dot_noderc.tmpl` - Injects Node.js settings
72
+
73
+ ### Ignored Patterns (.chezmoiignore.tmpl)
74
+
75
+ Machine-specific exclusions based on profile and features.
76
+
77
+ ## Workflow
78
+
79
+ ### Adding New Configuration
80
+
81
+ 1. **Check if managed:** `chezmoi managed | grep <file>`
82
+ 2. **If not managed:** `chezmoi add <file>`
83
+ 3. **If templating needed:** Rename to `.tmpl`, add template logic
84
+ 4. **Apply changes:** `chezmoi apply`
85
+
86
+ ### Updating Configuration
87
+
88
+ 1. **Edit source:** `chezmoi edit <file>` or edit in `~/.dotfiles/`
89
+ 2. **Preview changes:** `chezmoi diff`
90
+ 3. **Apply:** `chezmoi apply`
91
+ 4. **Commit:** `cd ~/.dotfiles && git add -A && git commit`
92
+
93
+ ### Syncing Across Machines
94
+
95
+ ```bash
96
+ # On new machine
97
+ chezmoi init https://github.com/<user>/dotfiles.git
98
+ chezmoi apply
99
+
100
+ # On existing machine
101
+ chezmoi update
102
+ ```
103
+
104
+ ## Anti-Patterns to Avoid
105
+
106
+ 1. **Manual edits to managed files** - Always edit via chezmoi or re-add after manual changes
107
+ 2. **Duplicate configs** - Don't maintain parallel configs outside chezmoi
108
+ 3. **Hardcoded machine-specific values** - Use templates and data variables
109
+ 4. **Version controlling runtime data** - Keep ~/.cache, ~/.local/share out of version control
110
+
111
+ ## File Ownership
112
+
113
+ | Path | Owner | Notes |
114
+ |------|-------|-------|
115
+ | `~/.dotfiles/` | chezmoi | Source of truth |
116
+ | `~/.*` (dotfiles) | chezmoi-applied | Don't edit directly |
117
+ | `~/.config/*` | Mixed | Check `chezmoi managed` |
118
+ | `~/.local/` | chezmoi (bin) + runtime | Partial management |
119
+
120
+ ## Maintenance Schedule
121
+
122
+ - **Weekly:** `chezmoi update` to sync remote changes
123
+ - **Monthly:** Review `chezmoi unmanaged` for new configs to add
124
+ - **Quarterly:** Audit `.chezmoiignore` patterns
package/docs/COPYRIGHT CHANGED
@@ -1,5 +1,5 @@
1
1
  /*
2
- * 🅳🅾🆃🅵🅸🅻🅴🆂 (v0.2.502) - <https://github.com/sebastienrousseau/dotfiles>
2
+ * 🅳🅾🆃🅵🅸🅻🅴🆂 (v0.2.503) - <https://github.com/sebastienrousseau/dotfiles>
3
3
  * Made With ❤️ in London, United Kingdom
4
4
  * Designed by
5
5
  * Copyright (c) 2015-2026. All rights reserved.
@@ -0,0 +1,98 @@
1
+ # Governance
2
+
3
+ ## Model
4
+
5
+ **Single-maintainer steward.** The project is owned and decided
6
+ by one maintainer (see [`MAINTAINERS.md`](MAINTAINERS.md)). This document exists so
7
+ contributors and downstream consumers understand exactly how
8
+ decisions are made, how to influence them, and what guarantees
9
+ exist.
10
+
11
+ ## Decision-making
12
+
13
+ | Decision class | Process | Veto |
14
+ |---|---|---|
15
+ | Bug fix | Open PR, maintainer reviews + merges. Tests required. | Maintainer |
16
+ | Feature addition | Open issue first to scope. Then PR. Larger changes need an RFC in `docs/operations/`. | Maintainer |
17
+ | Breaking change | RFC in `docs/operations/RFC_<topic>.md` + 2-week comment window + migration script + at least one minor-version deprecation. | Maintainer (with public reasoning) |
18
+ | Security policy | `.github/SECURITY.md` is the canonical reference. Disclosure-key rotation follows `docs/security/KEY_ROTATION.md`. | Maintainer + 30-day public notice |
19
+ | Dependency change | Pre-commit + CI must stay green. New runtime deps require RFC. | Maintainer |
20
+ | Release | Maintainer cuts tags. Convention: signed annotated tag, Cosign-signed SBOM, SLSA L3 provenance. | Maintainer |
21
+
22
+ ## Contribution flow
23
+
24
+ 1. **Issue** for non-trivial work. Confirm scope before coding.
25
+ 2. **Branch** off `master`: `feat/<scope>`, `fix/<scope>`,
26
+ `docs/<scope>`, etc.
27
+ 3. **PR** with description following the template:
28
+ - Summary (1–3 bullets)
29
+ - Test plan (checklist)
30
+ - Trailing Euxis signature block (required by
31
+ `pr-signature.yml`)
32
+ 4. **CI** must pass before merge. Pre-commit hooks must not be
33
+ bypassed (`--no-verify` is rejected by the pre-push hook).
34
+ 5. **Review** by the maintainer. Squash-merge is the project
35
+ default; merge-commit only for release PRs that need history
36
+ preserved (e.g., `feat/v0.X.YYY` aggregate PRs).
37
+ 6. **Commit signing** is mandatory: SSH or GPG. Unsigned commits
38
+ are rejected at push.
39
+
40
+ See `CONTRIBUTING.md` for full code-style + commit-message
41
+ requirements.
42
+
43
+ ## RFC process
44
+
45
+ For breaking changes or substantial new features:
46
+
47
+ 1. Create `docs/operations/RFC_<short-name>.md` with sections:
48
+ - **Summary** (one paragraph)
49
+ - **Motivation** (why now, what's broken without it)
50
+ - **Detailed design** (concrete file paths, API shapes)
51
+ - **Backwards compatibility** (what breaks, migration path)
52
+ - **Alternatives considered** (with reasons rejected)
53
+ - **Unresolved questions**
54
+ 2. Open a PR labelled `rfc` against `master`.
55
+ 3. Comment window: 14 days minimum.
56
+ 4. Maintainer renders a decision (accept / accept-with-changes /
57
+ reject) with public reasoning in the PR.
58
+ 5. Accepted RFCs are merged as-is to `docs/operations/` and become
59
+ the implementation reference.
60
+
61
+ Active and historical RFCs are linked from
62
+ `docs/operations/README.md`.
63
+
64
+ ## Code of conduct
65
+
66
+ Standard expectations: be kind, assume good faith, focus on the
67
+ work. Discriminatory or harassing behaviour is grounds for
68
+ permanent block. Report incidents to the maintainer via the
69
+ security disclosure channel (`security@sebastienrousseau.com`,
70
+ encrypted to the WKD-published GPG key).
71
+
72
+ ## Forking
73
+
74
+ The project is MIT-licensed; fork freely. If your fork diverges
75
+ substantially and gains its own community, please rename it to
76
+ avoid downstream confusion ("dotfiles-X" or similar).
77
+
78
+ ## Sustainability
79
+
80
+ The single-maintainer model has known weaknesses (bus factor,
81
+ review bandwidth, perspective). The project mitigates these by:
82
+
83
+ - **Comprehensive automation**: 75+ CI checks, pre-commit hooks,
84
+ shellcheck/shfmt/typos enforcement.
85
+ - **Documented architecture**: [`STRUCTURE.md`](STRUCTURE.md), `scripts/README.md`,
86
+ `architecture/`, `operations/HARD_AUDIT_2026.md`.
87
+ - **Cryptographic supply chain**: Cosign-signed SBOMs, SLSA L3
88
+ provenance, signed commits, WKD-published disclosure key.
89
+ - **Permissive license**: MIT — anyone can fork and continue.
90
+ - **Active issue triage**: targeted weekly cadence.
91
+
92
+ When the project gains regular contributors, this document will be
93
+ updated to reflect the shared-maintainer model.
94
+
95
+ ## Reference
96
+
97
+ - [OpenSSF Best Practices criteria](https://www.bestpractices.dev/en/criteria/0) — this governance model is designed to satisfy the "passing" tier.
98
+ - [CNCF Project Governance template](https://contribute.cncf.io/maintainers/governance/) — adapted for solo maintainership.
@@ -0,0 +1,41 @@
1
+ # Maintainers
2
+
3
+ This project is maintained by a single primary maintainer with an
4
+ explicit, documented governance model (see [`GOVERNANCE.md`](GOVERNANCE.md)).
5
+
6
+ ## Primary maintainer
7
+
8
+ - **Sebastien Rousseau** — <sebastian.rousseau@gmail.com>
9
+ - GitHub: [@sebastienrousseau](https://github.com/sebastienrousseau)
10
+ - Role: project owner, release manager, security disclosure contact
11
+ - Commit signing: SSH ED25519 (`SHA256:kIOPAavp1TCEauTr1tTIN3cv+tSs6F9m/4lZjuM9tqk`)
12
+ - GPG disclosure key fingerprint: `55AFAD364FD9DB3819E61F0C8D688FAFA9144693` (ed25519 + cv25519, expires 2029-05-15, published via WKD at `security@sebastienrousseau.com`)
13
+
14
+ ## Active contributors
15
+
16
+ This is a solo-maintained project. Contributions are welcomed via
17
+ pull request (see `CONTRIBUTING.md`); the maintainer reviews and
18
+ merges. When the project gains additional regular committers their
19
+ names will land here with role and contact.
20
+
21
+ ## Security contact
22
+
23
+ For coordinated vulnerability disclosure, follow `.github/SECURITY.md`.
24
+ TL;DR: encrypt your report to the WKD-published GPG key above and
25
+ email `security@sebastienrousseau.com`. Acknowledgement SLA: 72 hours.
26
+
27
+ ## Backup / continuity
28
+
29
+ In the event the primary maintainer becomes unable to maintain the
30
+ project, the repository is published under the MIT license and may
31
+ be forked. The `chezmoi`-based architecture means existing user
32
+ installs continue to work indefinitely without upstream activity.
33
+
34
+ ## Releases
35
+
36
+ | Release author | Cadence | Signing |
37
+ |---|---|---|
38
+ | Primary maintainer | ~weekly | Signed annotated git tag + Cosign-signed SBOM + SLSA L3 provenance |
39
+
40
+ See `docs/operations/HARD_AUDIT_2026.md` Part 7 for the
41
+ disclosure-key generation + WKD publication record.
@@ -0,0 +1,127 @@
1
+ <!--
2
+ Role: Repo-scoped instructions for the OpenCode CLI when operating
3
+ inside this repository. Mirrors CLAUDE.md but targets OpenCode's
4
+ conventions/discovery.
5
+ Audience: OpenCode, this repo only.
6
+
7
+ Distinct from:
8
+ - CLAUDE.md — same intent, but for Claude Code.
9
+ - dot_claude/CLAUDE.md — PERSONAL cross-project Claude Code preferences,
10
+ deployed to ~/.claude/CLAUDE.md by chezmoi.
11
+
12
+ Keep CLAUDE.md and OPENCODE.md in sync on repo-level conventions (layout,
13
+ naming, CI, testing). If they drift, CLAUDE.md is the source of truth.
14
+ -->
15
+
16
+ # OPENCODE.md — AI Assistant Guidelines for Dotfiles Repository
17
+
18
+ ## Chezmoi Source Directory Conventions
19
+
20
+ This is a **chezmoi-managed** dotfiles repository. Files here are *source templates*,
21
+ not the deployed config files. Understanding the naming conventions is critical.
22
+
23
+ ### File Naming Rules
24
+
25
+ | Prefix/Suffix | Meaning |
26
+ |------------------|------------------------------------------------------|
27
+ | `dot_` | Deployed with a leading `.` (e.g., `dot_zshrc` -> `.zshrc`) |
28
+ | `executable_` | Deployed with `+x` permission |
29
+ | `private_` | Deployed with `0600` permissions |
30
+ | `.tmpl` | **Go template** — processed by chezmoi before deployment |
31
+ | `run_onchange_` | Script that runs when the target file changes |
32
+ | `encrypted_` | Age-encrypted file, decrypted at deploy time |
33
+
34
+ ### Critical: Template vs Non-Template Files
35
+
36
+ Many shell config files exist **only** as `.tmpl` variants. When reading files:
37
+
38
+ - `dot_config/shell/00-core-paths.sh` does **NOT** exist
39
+ - `dot_config/shell/00-core-paths.sh.tmpl` **DOES** exist (this is the source)
40
+
41
+ **Rule**: If a `.sh` or `.zsh` file is not found, always try appending `.tmpl`.
42
+
43
+ Files that are templates (use Go template syntax like `{{ .variable }}`):
44
+
45
+ - `dot_config/shell/*.sh.tmpl` — all shell layer files
46
+ - `dot_config/zsh/dot_zshrc.tmpl` — main zsh config
47
+ - `dot_config/zsh/rc.d/*.tmpl` — zsh startup modules
48
+ - `dot_gitconfig.tmpl` — git configuration
49
+ - `private_dot_ssh/config.tmpl` — SSH configuration
50
+ - `dot_npmrc.tmpl` — npm configuration
51
+ - `private_dot_netrc.tmpl` — netrc credentials
52
+
53
+ Files that are **NOT** templates (plain files, no `.tmpl` suffix):
54
+
55
+ - `dot_config/shell/00-container-detect.sh` — plain shell script
56
+ - `dot_config/shell/90-theme-switch.sh` — plain shell script
57
+ - `dot_config/zsh/rc.d/00-alias-shims.zsh` — plain zsh
58
+ - `dot_config/zsh/rc.d/05-ssh-agent.zsh` — plain zsh
59
+ - Most files under `dot_config/nvim/`, `dot_config/starship.toml.tmpl`, etc.
60
+
61
+ ### Reading Template Files
62
+
63
+ Template files contain Go template directives like:
64
+
65
+ ```
66
+ {{ if eq .chezmoi.os "darwin" }}
67
+ # macOS-specific config
68
+ {{ end }}
69
+ ```
70
+
71
+ Data variables come from `.chezmoidata.toml` (profiles, features, theme, tools).
72
+ User-specific values (git identity, age keys) come from `~/.config/chezmoi/chezmoi.toml`.
73
+
74
+ ### Repository Layout
75
+
76
+ ```
77
+ .chezmoidata.toml # Feature flags, profiles, version
78
+ .chezmoitemplates/ # Reusable template partials (aliases, functions, paths)
79
+ dot_config/ # XDG configs (~/.config/*) — largest directory
80
+ zsh/ # Zsh configuration
81
+ dot_zshrc.tmpl # Main zsh orchestrator
82
+ rc.d/ # Startup modules (sourced in order)
83
+ shell/ # POSIX shell layers (paths, safety, aliases, functions)
84
+ nvim/ # Neovim configuration (Lua)
85
+ mise/ # mise version manager config
86
+ starship.toml.tmpl # Starship prompt config
87
+ atuin/ # Atuin shell history
88
+ bat/ # bat (cat replacement) config
89
+ ghostty/ # Ghostty terminal config
90
+ kitty/ # Kitty terminal config
91
+ alacritty/ # Alacritty terminal config
92
+ dot_local/bin/ # User scripts (~/.local/bin)
93
+ scripts/ # Repo-only scripts (tests, ops, security, diagnostics)
94
+ docs/ # Documentation (30+ files)
95
+ install.sh # Bootstrap installer
96
+ ```
97
+
98
+ ### Shell Startup Chain
99
+
100
+ ```
101
+ ~/.zshenv (dot_zshenv) → XDG vars, PATH, ZDOTDIR
102
+ ~/.config/zsh/.zshrc (dot_zshrc.tmpl) → Main orchestrator
103
+ → rc.d/00-alias-shims.zsh → Single-letter fallback commands
104
+ → rc.d/05-ssh-agent.zsh → SSH agent + YubiKey
105
+ → rc.d/10-env.zsh.tmpl → Environment variables
106
+ → rc.d/20-zinit.zsh.tmpl → Plugin manager (deferred)
107
+ → rc.d/30-options.zsh.tmpl → History, keybindings, completions
108
+ → rc.d/40-bell.zsh.tmpl → Bell settings
109
+ → rc.d/50-login-fortune.zsh.tmpl → Login greeting
110
+ → shell/00-core-paths.sh.tmpl → Full PATH construction
111
+ → shell/05-core-safety.sh.tmpl → Safety defaults
112
+ → shell/90-ux-aliases.sh.tmpl → Core aliases (eager)
113
+ → [deferred] mise, atuin, starship, zoxide, fzf
114
+ → [lazy] shell/91-ux-aliases-lazy.sh.tmpl → Tool aliases
115
+ ```
116
+
117
+ ### Key Data Files
118
+
119
+ - `.chezmoidata.toml` — All configuration: profiles, feature flags, tool settings
120
+ - `dot_config/mise/config.toml` — mise tool versions (node, python, go, rust, etc.)
121
+ - `dot_config/starship.toml.tmpl` — Prompt configuration
122
+
123
+ ### Testing
124
+
125
+ - Test framework: `tests/framework/`
126
+ - Unit tests: `tests/unit/`
127
+ - Tests execute bash source files directly — they do NOT use Go template syntax
package/docs/README.md CHANGED
@@ -54,6 +54,8 @@ Quick jumps into the Manual:
54
54
  - [Naming conventions](NAMING_CONVENTIONS.md)
55
55
  - [Architecture](architecture/ARCHITECTURE.md)
56
56
  - [Repository layout](architecture/REPO_LAYOUT.md)
57
+ - [AI cost optimization](architecture/AI_COST_OPTIMIZATION.md)
58
+ - [Release pipeline](operations/RELEASE_PIPELINE.md)
57
59
  - [Architecture decisions](adr/README.md)
58
60
 
59
61
  ## Repository map
@@ -0,0 +1,102 @@
1
+ # Repository Structure
2
+
3
+ This document maps every top-level path in the repository to its
4
+ purpose. Skim it once and you should be able to answer:
5
+
6
+ - **Where is the `dot` CLI?** → `bin/dot` (the source-of-truth file). At runtime it lives at `~/.local/bin/dot`.
7
+ - **Why are there 20+ `dot_*` files at root?** → chezmoi convention: a `dot_X` source file deploys to `~/.X` on apply. Same for `executable_*` (gains `+x`), `private_*` (`0600`), `run_onchange_*` (re-runs when source changes).
8
+ - **What's the framework vs. the maintainer's personal config?** → Everything under `scripts/`, `install/`, `tools/`, `lib/`, and `defaults/.chezmoitemplates/` is framework code. Everything under `defaults/dot_config/`, `defaults/dot_warp/`, `defaults/private_dot_ssh/` is user-facing default configuration (chezmoi auto-rebases via `.chezmoiroot`).
9
+
10
+ The Debian/aws-cli-style root layout shipped in **v0.2.503**:
11
+ `bin/` (dispatcher), `lib/` (shared bash libs), `defaults/`
12
+ (all chezmoi-tracked source files, rebased via
13
+ `.chezmoiroot`). Repo root now hosts only project/CI/docs paths.
14
+ See `docs/operations/ROADMAP_V0_2_503.md` for the full history.
15
+
16
+ ---
17
+
18
+ ## Top-level paths
19
+
20
+ | Path | Kind | Purpose |
21
+ |------|------|---------|
22
+ | **CLI + framework** | | |
23
+ | `dot_local/bin/` | framework | `executable_dot` (CLI entrypoint) and helper scripts. Deploys to `~/.local/bin/`. |
24
+ | `dot_local/share/` | framework | Man pages, zsh completions. Deploys to `~/.local/share/`. |
25
+ | `scripts/` | framework | Runtime-invoked scripts (`dot` CLI dispatch + specialised subtrees). See `scripts/README.md`. |
26
+ | `tools/` | repo-ops | Repo-only ops: CI helpers, release, maintenance, docs-generation. Not distributable. See `tools/README.md`. |
27
+ | `lib/dot/` | framework | Shared bash library sourced by every `dot` subcommand and the dispatcher. Reorganised here from `scripts/dot/lib/` per RFC Phase 1. See `lib/dot/README.md`. |
28
+ | `lib/` | framework | Library tree (`lib/dot/` + third-party `lib/wasm-tools/`). |
29
+ | `install/` | framework | Bootstrap logic + distribution-channel manifests (`homebrew/`, `scoop/`, `aur/`). See `install/README.md`. `install/provision/` runs on `chezmoi apply` via `run_onchange_*` triggers. |
30
+ | `install.sh` | framework | Top-level installer. SHA256-verified chezmoi fetch + initial apply. |
31
+ | `.chezmoitemplates/` | framework | Reusable Go-template partials (aliases, functions, paths). Sourced by `dot_*.tmpl` files. |
32
+ | **User-facing defaults** | | |
33
+ | `dot_bashrc`, `dot_zshrc`, `dot_zshenv`, `dot_zprofile`, `dot_profile`, `dot_vimrc`, etc. | defaults | Shell + editor rc files. Deploy to `~/.X`. |
34
+ | `dot_config/` | defaults | XDG config (`~/.config/*`). Largest tree — 80+ tool configs. |
35
+ | `dot_local/` (non-bin/share) | defaults | Per-user state files for tools (`dot_local/state/`, etc.). |
36
+ | `dot_cargo/`, `dot_etc/`, `dot_warp/` | defaults | Tool-specific roots (cargo, system etc, Warp terminal). |
37
+ | `private_dot_ssh/` | defaults | SSH config — chezmoi `private_` prefix forces 0600. Does NOT contain private keys. |
38
+ | `dot_claude/` | defaults | Claude Code per-user skills and config. |
39
+ | **Templates + data** | | |
40
+ | `templates/` | framework | Non-chezmoi templates (e.g. for `dot agents render`). |
41
+ | `.chezmoidata/` | data | Hardware presets (`macbook-t2`, `surface-pro`) read by templates. |
42
+ | `.chezmoidata.toml` | data | Feature flags + version. Single source-of-truth for `dotfiles_version`. |
43
+ | `.chezmoi.toml.tmpl` | framework | Per-host chezmoi config generated on first apply. |
44
+ | `.chezmoiignore` / `.chezmoiignore.tmpl` | framework | Tells chezmoi which paths NOT to deploy. |
45
+ | **Docs + tests** | | |
46
+ | `docs/` | docs | All documentation: `manual/` (user guide), `operations/` (audits, roadmaps), `reference/` (lookup tables), `security/`. |
47
+ | `tests/` | tests | Test suite: `framework/` (runner + assertions + mocks), `unit/`, `integration/`, `regression/`, `fuzz/`, `snapshots/`. |
48
+ | `examples/` | docs | Standalone examples (mise plugin, AI patterns, ops scripts). |
49
+ | **CI + release** | | |
50
+ | `.github/` | ci | GitHub Actions workflows + issue/PR templates + repo-level SECURITY/CODEOWNERS. |
51
+ | `.devcontainer/` | ci | Dev Container spec for reproducible contributor onboarding. |
52
+ | `Dockerfile.test` | ci | Container baseline for the CI test job. |
53
+ | `.pre-commit-config.yaml` → `config/pre-commit-config.yaml` | ci | Pre-commit hooks (shellcheck, shfmt, luacheck, gitleaks, typos, conventional-commits). |
54
+ | `flake.nix` / `flake.lock` | ci | Nix flake for reproducible dev shell. |
55
+ | `mise.toml` / `mise-versions.lock.json` | ci | Pinned tool versions (mise as the package manager). |
56
+ | **Misc + agents** | | |
57
+ | `AGENTS.md` | docs | Cross-harness AI agent context (the standard read by Codex/Cursor/etc.). |
58
+ | `.cursor/`, `.codex/`, `.windsurf/`, `.zed/`, `.roo/`, `.clinerules`, `.aider.conf.yml`, `.continuerc.json`, `.jules/`, `.gemini/` | agents | Per-harness AGENTS.md renderings. Generated by `dot agents render`. Each one points back at `CLAUDE.md` as canonical. |
59
+ | `CLAUDE.md` | docs | Project guidelines (the canonical source — `dot agents render` propagates it). |
60
+ | `CONTRIBUTING.md` | docs | Contributor guide (must stay at root for GitHub auto-discovery). |
61
+ | `docs/CONFIG_STRATEGY.md`, `docs/OPENCODE.md` | docs | Strategy + OpenCode-CLI guidance. Moved out of root for cleanliness in v0.2.503. |
62
+ | `README.md` / `CHANGELOG.md` / `LICENSE` | docs | Standard project files. |
63
+ | `Justfile.tmpl` / `Makefile` | dev | Task runners. |
64
+ | `dist/` | build | Build artefacts directory. |
65
+ | `coverage/`, `nightly-reports/` | build | CI output directories (gitignored). |
66
+ | `nix/` | build | Nix flake source. |
67
+ | `.well-known/` | misc | RFC-compliant `.well-known/` content (currently used for WKD GPG key publication). |
68
+ | `.version-sync-backup/` | misc | Backup directory used by `scripts/version-sync.sh` during release prep. |
69
+
70
+ ## Chezmoi naming contract
71
+
72
+ | Prefix / suffix | Effect on deployment |
73
+ |---|---|
74
+ | `dot_foo` | Deploys as `.foo` (the `dot_` is consumed). |
75
+ | `executable_foo` | Adds `+x` permission. |
76
+ | `private_foo` | Sets `0600` permission. |
77
+ | `run_onchange_foo.sh` | Script re-executes when its hash changes. |
78
+ | `*.tmpl` | Processed as a Go template with chezmoi data before deployment. |
79
+
80
+ **Critical gotcha:** `executable_dot_foo` deploys as `.foo` (not
81
+ `dot_foo`). The `dot_` prefix is consumed by chezmoi after the
82
+ `executable_` prefix. Renaming a deployed file silently can leave
83
+ stale state in `~/.config/chezmoi/`.
84
+
85
+ ## Where to make changes
86
+
87
+ | Goal | File(s) to edit |
88
+ |------|----------------|
89
+ | Add a new `dot <subcommand>` | `scripts/dot/commands/<subcommand>.sh` + dispatch in `bin/dot` + entry in `docs/manual/03-reference/01-dot-cli.md` + entry in `docs/manual/command-index.md`. |
90
+ | Change an alias | `.chezmoitemplates/aliases/<file>.aliases.sh` (sourced by `dot_zshrc.tmpl`, etc.). |
91
+ | Add a feature flag | `[features]` block in `.chezmoidata.toml` + doc entry in `docs/manual/03-reference/05-feature-flags.md`. |
92
+ | Add a new file deployed to `~/.X` | Create `dot_X` at root (or under a chezmoi-managed subtree). |
93
+ | Add a new chezmoi template | `dot_X.tmpl` at root, then use `{{ }}` for chezmoi data. |
94
+ | Add a CI workflow | `.github/workflows/<name>.yml`. |
95
+ | Add a test | `tests/unit/<domain>/test_<name>.sh` or `tests/integration/test_<name>.sh`. |
96
+
97
+ ## See also
98
+
99
+ - `scripts/README.md` — map of the `scripts/` subtree.
100
+ - `CONTRIBUTING.md` — code-style + commit-message + signing requirements.
101
+ - `CLAUDE.md` — AI-assistant guidelines (the canonical source for `dot agents render`).
102
+ - `docs/operations/ROADMAP_V0_2_503.md` — current release scope, including the v0.2.503 reorganisation plan.
@@ -137,8 +137,8 @@ plugin system, bash bridge for aliases) await an actual user request.
137
137
 
138
138
  ## References
139
139
 
140
- - [`dot_config/nushell/cached_eval.nu`](../../dot_config/nushell/cached_eval.nu) — the new module.
141
- - [`dot_config/nushell/env.nu.tmpl`](../../dot_config/nushell/env.nu.tmpl) — adopter.
140
+ - [`dot_config/nushell/cached_eval.nu`](../../defaults/dot_config/nushell/cached_eval.nu) — the new module.
141
+ - [`dot_config/nushell/env.nu.tmpl`](../../defaults/dot_config/nushell/env.nu.tmpl) — adopter.
142
142
  - ADR-007 (Multi-Shell Parity Strategy) — establishes the tier definitions.
143
143
  - ADR-002 (Shell Performance Optimization Strategy) — establishes `_cached_eval` semantics this module ports.
144
144
  - Issue [#880](https://github.com/sebastienrousseau/dotfiles/issues/880).