@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
@@ -1,57 +0,0 @@
1
- #!/usr/bin/env zsh
2
- # shellcheck shell=bash disable=SC2034
3
- #compdef dot
4
-
5
- # Zsh completion for the dot CLI
6
- # Source this file or place in a directory in $fpath
7
-
8
- _dot() {
9
- local -a commands
10
- commands=(
11
- 'apply:Apply dotfiles (chezmoi apply)'
12
- 'sync:Apply dotfiles (alias of apply)'
13
- 'update:Pull latest changes and apply'
14
- 'add:Add a file to chezmoi source'
15
- 'diff:Show chezmoi diff with exclusions'
16
- 'status:Show configuration drift'
17
- 'remove:Safely remove a managed file'
18
- 'cd:Print source directory path'
19
- 'drift:Drift dashboard (detailed chezmoi status)'
20
- 'history:Shell history analysis'
21
- 'doctor:Check system health and configuration'
22
- 'heal:Auto-repair common dotfiles issues'
23
- 'health:Run comprehensive health check'
24
- 'rollback:Rollback dotfiles to a previous state'
25
- 'keys:Show keybindings catalog'
26
- 'tools:Show or install nix packages'
27
- 'sandbox:Launch a safe sandbox preview'
28
- 'benchmark:Run shell startup benchmark'
29
- 'tune:Apply OS tuning (opt-in)'
30
- 'secrets:Edit encrypted secrets (age)'
31
- 'secrets-init:Initialize age key for secrets'
32
- 'secrets-create:Create an encrypted secrets file'
33
- 'ssh-key:Encrypt an SSH key locally with age'
34
- 'firewall:Apply firewall hardening (opt-in)'
35
- 'telemetry:Disable OS telemetry (opt-in)'
36
- 'dns-doh:Enable DNS-over-HTTPS (opt-in)'
37
- 'encrypt-check:Check disk encryption status'
38
- 'backup:Create a compressed backup of your home'
39
- 'lock-screen:Enforce lock screen idle settings'
40
- 'usb-safety:Disable automount for removable media'
41
- 'fonts:Install Nerd Fonts'
42
- 'wallpaper:Apply a wallpaper from your library'
43
- 'theme:Switch terminal theme (dark/light)'
44
- 'packages:List installed packages and package managers'
45
- 'upgrade:Update flake, plugins, and dotfiles'
46
- 'edit:Open chezmoi source in editor'
47
- 'docs:Show repo README'
48
- 'new:Create a new project from a template'
49
- 'log-rotate:Rotate ~/.local/share/dotfiles.log'
50
- 'learn:Start the interactive tour'
51
- '--version:Show version information'
52
- 'help:Show this help message'
53
- )
54
- _describe 'command' commands
55
- }
56
-
57
- _dot "$@"
@@ -1,28 +0,0 @@
1
- #!/usr/bin/env bash
2
- # Copyright (c) 2015-2026 Dotfiles. All rights reserved.
3
- ## dtags — List sorted tags for a Docker Hub image.
4
- ##
5
- ## # Usage
6
- ## dtags python
7
- ## dtags node
8
- ## dtags ubuntu
9
-
10
- set -euo pipefail
11
-
12
- for cmd in curl jq; do
13
- if ! command -v "$cmd" &>/dev/null; then
14
- echo "dtags requires $cmd" >&2
15
- exit 1
16
- fi
17
- done
18
-
19
- image="${1:-}"
20
-
21
- if [[ -z "${image}" ]]; then
22
- echo "Usage: dtags <image>" >&2
23
- exit 1
24
- fi
25
-
26
- curl --silent \
27
- "https://registry.hub.docker.com/v2/repositories/library/${image}/tags?page_size=1000" |
28
- jq -r ".results[].name" | sort -V 2>/dev/null || sort -t. -k1,1n -k2,2n -k3,3n
@@ -1,67 +0,0 @@
1
- #!/usr/bin/env bash
2
- # shellcheck disable=SC2034
3
- ## Epoch Converter — Convert between Unix timestamps and human-readable dates.
4
- ##
5
- ## Bidirectional conversion between epoch timestamps and date strings.
6
- ## Supports both seconds and milliseconds precision.
7
- ##
8
- ## # Requirements
9
- ## - date: Core utility (coreutils or macOS built-in)
10
- ##
11
- ## # Usage
12
- ## epoch # Show current epoch time
13
- ## epoch -m # Show current epoch in milliseconds
14
- ## epoch 1234567890 # Convert epoch to date
15
- ## epoch -r "2024-01-15" # Convert date string to epoch
16
- ##
17
- ## # Platform Notes
18
- ## - Linux: Uses date -d for parsing
19
- ## - macOS: Uses date -j -f for parsing
20
-
21
- set -euo pipefail
22
-
23
- # --- UI Theme ---
24
- PURPLE='\033[38;5;141m'
25
- CYAN='\033[38;5;86m'
26
- GRAY='\033[38;5;244m'
27
- NC='\033[0m'
28
-
29
- REVERSE=false
30
- MILLIS=false
31
-
32
- while [[ $# -gt 0 ]]; do
33
- case "$1" in
34
- -r | --reverse)
35
- REVERSE=true
36
- shift
37
- ;;
38
- -m | --millis)
39
- MILLIS=true
40
- shift
41
- ;;
42
- -h | --help)
43
- printf '%b\n' "${PURPLE}epoch${NC} ${GRAY}convert to/from unix time${NC}"
44
- echo "Usage: epoch [options] [value]"
45
- echo " -r, --reverse Convert date string to epoch"
46
- echo " -m, --millis Use milliseconds"
47
- exit 0
48
- ;;
49
- *) break ;;
50
- esac
51
- done
52
-
53
- if $REVERSE; then
54
- STR="${1:-}"
55
- [[ -z "$STR" ]] && exit 1
56
- date -d "$STR" +%s 2>/dev/null || date -j -f "%Y-%m-%d" "$STR" +%s 2>/dev/null
57
- elif [[ $# -gt 0 ]]; then
58
- EPOCH="$1"
59
- [[ ${#EPOCH} -gt 10 ]] && EPOCH=$((EPOCH / 1000))
60
- date -d "@$EPOCH" 2>/dev/null || date -r "$EPOCH" 2>/dev/null
61
- else
62
- if $MILLIS; then
63
- date +%s%3N
64
- else
65
- date +%s
66
- fi
67
- fi
@@ -1,41 +0,0 @@
1
- #!/bin/sh
2
- # Copyright (c) 2015-2026 Dotfiles. All rights reserved.
3
- # Universal archive extractor with UI (gum) and self-healing (nix) fallback.
4
-
5
- set -eu
6
-
7
- # R5: validate input
8
- if [ -z "${1:-}" ]; then
9
- echo "Usage: extract <archive>" >&2
10
- exit 1
11
- fi
12
-
13
- # If tool is missing, use Nix to run it.
14
- run_if_not_found() {
15
- local cmd="$1"
16
- local pkg="$2"
17
- shift 2
18
- if command -v "$cmd" >/dev/null 2>&1; then
19
- "$cmd" "$@"
20
- elif command -v nix >/dev/null 2>&1; then
21
- echo " Tool '$cmd' missing. Using Nix fallback..." >&2
22
- nix shell "nixpkgs#$pkg" -c "$cmd" "$@"
23
- else
24
- echo "Error: Tool '$cmd' not found and Nix not available." >&2
25
- exit 1
26
- fi
27
- }
28
-
29
- case "$1" in
30
- *.tar.bz2) run_if_not_found tar gnutar xvjf "$1" ;;
31
- *.tar.gz) run_if_not_found tar gnutar xvzf "$1" ;;
32
- *.zip) run_if_not_found unzip unzip "$1" ;;
33
- *.rar) run_if_not_found unrar unrar x "$1" ;;
34
- *.7z) run_if_not_found 7z p7zip a "$1" ;;
35
- *.tar.xz) run_if_not_found tar gnutar xvf "$1" ;;
36
- *.tar.zst) run_if_not_found tar gnutar xvf "$1" ;;
37
- *)
38
- echo "'$1' cannot be extracted via extract" >&2
39
- exit 1
40
- ;;
41
- esac
@@ -1,52 +0,0 @@
1
- #!/usr/bin/env bash
2
- # Copyright (c) 2015-2026 Dotfiles. All rights reserved.
3
- ## gbd — Bulk delete local branches except main/master.
4
- ##
5
- ## # Usage
6
- ## gbd # Delete all except main/master
7
- ## gbd --dry-run # Show what would be deleted
8
- ## gbd "(main|master|develop)" # Custom whitelist pattern
9
- ## gbd "(main|dev)" --dry-run # Custom whitelist + dry run
10
-
11
- set -euo pipefail
12
-
13
- if ! command -v git &>/dev/null; then
14
- echo "gbd requires git" >&2
15
- exit 1
16
- fi
17
-
18
- # R5: validate git repository
19
- if ! git rev-parse --is-inside-work-tree &>/dev/null; then
20
- echo "gbd: not a git repository" >&2
21
- exit 1
22
- fi
23
-
24
- default_whitelist="(main|master)"
25
- skip_branches="${1:-"${default_whitelist}"}"
26
- dry_run="${2:-}"
27
-
28
- # Handle --dry-run as first arg
29
- if [[ "${skip_branches}" == "--dry-run" ]]; then
30
- skip_branches="${default_whitelist}"
31
- dry_run="--dry-run"
32
- fi
33
-
34
- # R5: validate regex pattern before use
35
- if ! echo "" | grep -wEv "${skip_branches}" &>/dev/null; then
36
- echo "Invalid whitelist pattern: ${skip_branches}" >&2
37
- exit 1
38
- fi
39
-
40
- branches="$(git branch | grep -wEv "${skip_branches}" | grep -wv "$(git branch --show-current)" || true)"
41
-
42
- if [[ -z "${branches}" ]]; then
43
- echo "No branches to delete."
44
- exit 0
45
- fi
46
-
47
- if [[ -n "${dry_run}" ]]; then
48
- echo "Would delete:"
49
- echo "${branches}" | sed 's/^/ /'
50
- else
51
- echo "${branches}" | xargs git branch -D
52
- fi
@@ -1,42 +0,0 @@
1
- #!/usr/bin/env bash
2
- # Copyright (c) 2015-2026 Dotfiles. All rights reserved.
3
- ## gd — Interactive git diff browser with fzf + delta.
4
- ##
5
- ## # Usage
6
- ## gd # Browse unstaged diffs
7
- ## gd --staged # Browse staged diffs
8
- ## gd --side # Side-by-side delta mode
9
- ## gd [git diff flags] # Pass any git diff flags through
10
-
11
- set -euo pipefail
12
-
13
- for cmd in fzf delta git; do
14
- if ! command -v "$cmd" &>/dev/null; then
15
- echo "gd requires $cmd" >&2
16
- exit 1
17
- fi
18
- done
19
-
20
- # R5: validate git repository
21
- if ! git rev-parse --is-inside-work-tree &>/dev/null; then
22
- echo "gd: not a git repository" >&2
23
- exit 1
24
- fi
25
-
26
- GIT_ARGS=()
27
-
28
- for arg in "$@"; do
29
- if [[ "${arg}" == "--side" ]]; then
30
- export DELTA_FEATURES="${DELTA_FEATURES:-} side-by-side"
31
- else
32
- GIT_ARGS+=("${arg}")
33
- fi
34
- done
35
-
36
- GIT_ARGS+=("--color=always")
37
-
38
- # shellcheck disable=SC2086,SC2068
39
- git diff ${GIT_ARGS[@]:-} --name-only |
40
- fzf \
41
- --preview "git diff ${GIT_ARGS[*]:-} -- {-1} | delta --width=\${FZF_PREVIEW_COLUMNS}" \
42
- --preview-window="right,75%" || true
@@ -1,175 +0,0 @@
1
- #!/usr/bin/env bash
2
- ## Git AI Commit — Generate commit messages using AI.
3
- ##
4
- ## Analyzes staged changes and generates conventional commit messages
5
- ## using various AI providers. Supports interactive editing.
6
- ##
7
- ## # Requirements
8
- ## - git: Version control
9
- ## - One of: claude, gemini, sgpt, aider, ollama
10
- ##
11
- ## # Usage
12
- ## git ai-commit # Auto-detect provider
13
- ## git ai-commit --provider claude # Use Claude
14
- ## git ai-commit --edit # Edit before committing
15
- ## git ai-commit -p ollama -e # Ollama with edit
16
- ##
17
- ## # Configuration
18
- ## Set GIT_AI_PROVIDER to set default provider
19
- ## Set OLLAMA_MODEL for custom Ollama model (default: llama3.2)
20
- ##
21
- ## # Platform Notes
22
- ## - All platforms: Requires git and an AI CLI tool
23
-
24
- set -euo pipefail
25
-
26
- # Colors
27
- RED='\033[0;31m'
28
- GREEN='\033[0;32m'
29
- YELLOW='\033[1;33m'
30
- BLUE='\033[0;34m'
31
- NC='\033[0m'
32
-
33
- EDIT_MODE=false
34
- PROVIDER=""
35
-
36
- # Parse arguments
37
- while [[ $# -gt 0 ]]; do
38
- case $1 in
39
- --provider | -p)
40
- PROVIDER="$2"
41
- shift 2
42
- ;;
43
- --edit | -e)
44
- EDIT_MODE=true
45
- shift
46
- ;;
47
- --help | -h)
48
- echo "Usage: git ai-commit [--provider <provider>] [--edit]"
49
- echo ""
50
- echo "Options:"
51
- echo " --provider, -p AI provider: claude, gemini, sgpt, ollama, aider"
52
- echo " --edit, -e Open editor to modify generated message"
53
- echo ""
54
- echo "Environment:"
55
- echo " GIT_AI_PROVIDER Default AI provider"
56
- exit 0
57
- ;;
58
- *)
59
- printf '%b\n' "${RED}Unknown option: $1${NC}"
60
- exit 1
61
- ;;
62
- esac
63
- done
64
-
65
- # Auto-detect provider if not specified
66
- detect_provider() {
67
- if [[ -n "${GIT_AI_PROVIDER:-}" ]]; then
68
- echo "$GIT_AI_PROVIDER"
69
- elif command -v claude >/dev/null 2>&1; then
70
- echo "claude"
71
- elif command -v aider >/dev/null 2>&1; then
72
- echo "aider"
73
- elif command -v gemini >/dev/null 2>&1; then
74
- echo "gemini"
75
- elif command -v sgpt >/dev/null 2>&1; then
76
- echo "sgpt"
77
- elif command -v ollama >/dev/null 2>&1; then
78
- echo "ollama"
79
- else
80
- echo ""
81
- fi
82
- }
83
-
84
- PROVIDER="${PROVIDER:-$(detect_provider)}"
85
-
86
- if [[ -z "$PROVIDER" ]]; then
87
- printf '%b\n' "${RED}Error: No AI provider found. Install claude, gemini, sgpt, aider, or ollama.${NC}"
88
- exit 1
89
- fi
90
-
91
- # Check if there are staged changes
92
- if ! git diff --cached --quiet; then
93
- DIFF=$(git diff --cached --stat)
94
- DIFF_CONTENT=$(git diff --cached)
95
- else
96
- printf '%b\n' "${YELLOW}No staged changes. Stage changes with 'git add' first.${NC}"
97
- exit 1
98
- fi
99
-
100
- printf '%b\n' "${BLUE}Generating commit message using ${PROVIDER}...${NC}"
101
-
102
- # Prompt for commit message generation
103
- PROMPT="Generate a concise, conventional commit message for the following git diff.
104
-
105
- Rules:
106
- 1. Use conventional commits format: type(scope): description
107
- 2. Types: feat, fix, docs, style, refactor, perf, test, build, ci, chore
108
- 3. Keep the first line under 72 characters
109
- 4. Add a blank line and bullet points for details if needed
110
- 5. Focus on WHAT changed and WHY, not HOW
111
-
112
- Diff summary:
113
- $DIFF
114
-
115
- Diff content:
116
- $DIFF_CONTENT
117
-
118
- Return ONLY the commit message, no explanations or markdown formatting."
119
-
120
- # Generate message based on provider
121
- case "$PROVIDER" in
122
- claude)
123
- MESSAGE=$(echo "$PROMPT" | claude --print 2>/dev/null || echo "")
124
- ;;
125
- aider)
126
- MESSAGE=$(echo "$PROMPT" | aider --message "$PROMPT" --no-git --yes 2>/dev/null | tail -20 || echo "")
127
- ;;
128
- gemini)
129
- MESSAGE=$(echo "$PROMPT" | gemini 2>/dev/null || echo "")
130
- ;;
131
- sgpt)
132
- MESSAGE=$(sgpt "$PROMPT" 2>/dev/null || echo "")
133
- ;;
134
- ollama)
135
- MODEL="${OLLAMA_MODEL:-llama3.2}"
136
- MESSAGE=$(echo "$PROMPT" | ollama run "$MODEL" 2>/dev/null || echo "")
137
- ;;
138
- *)
139
- printf '%b\n' "${RED}Unknown provider: $PROVIDER${NC}"
140
- exit 1
141
- ;;
142
- esac
143
-
144
- # Clean up the message
145
- MESSAGE=$(echo "$MESSAGE" | sed 's/^```[a-z]*//g' | sed 's/```$//g' | sed '/^$/d' | head -20)
146
-
147
- if [[ -z "$MESSAGE" ]]; then
148
- printf '%b\n' "${RED}Failed to generate commit message.${NC}"
149
- exit 1
150
- fi
151
-
152
- printf '%b\n' "${GREEN}Generated commit message:${NC}"
153
- echo "---"
154
- echo "$MESSAGE"
155
- echo "---"
156
-
157
- if [[ "$EDIT_MODE" == "true" ]]; then
158
- # Create temp file for editing
159
- TMPFILE=$(umask 077 && mktemp)
160
- echo "$MESSAGE" >"$TMPFILE"
161
- ${EDITOR:-vim} "$TMPFILE"
162
- MESSAGE=$(cat "$TMPFILE")
163
- rm -f "$TMPFILE"
164
- fi
165
-
166
- # Confirm and commit
167
- echo ""
168
- read -p "Commit with this message? [Y/n] " -n 1 -r
169
- echo
170
- if [[ $REPLY =~ ^[Yy]$ ]] || [[ -z $REPLY ]]; then
171
- git commit -m "$MESSAGE"
172
- printf '%b\n' "${GREEN}Committed successfully!${NC}"
173
- else
174
- printf '%b\n' "${YELLOW}Commit cancelled.${NC}"
175
- fi
@@ -1,169 +0,0 @@
1
- #!/usr/bin/env bash
2
- ## Git AI Diff — AI-powered diff analysis and code review.
3
- ##
4
- ## Analyzes git diffs using AI to provide summaries, identify issues,
5
- ## and suggest improvements. Supports multiple AI providers.
6
- ##
7
- ## # Requirements
8
- ## - git: Version control
9
- ## - One of: claude, gemini, sgpt, aider, ollama
10
- ##
11
- ## # Usage
12
- ## git ai-diff # Review working changes vs HEAD
13
- ## git ai-diff HEAD~3 # Compare against 3 commits ago
14
- ## git ai-diff --staged # Review staged changes only
15
- ## git ai-diff --provider claude # Use specific provider
16
- ##
17
- ## # Configuration
18
- ## Set GIT_AI_PROVIDER to set default provider
19
- ## Set OLLAMA_MODEL for custom Ollama model (default: llama3.2)
20
- ##
21
- ## # Platform Notes
22
- ## - All platforms: Requires git and an AI CLI tool
23
-
24
- set -euo pipefail
25
-
26
- # Colors
27
- RED='\033[0;31m'
28
- GREEN='\033[0;32m'
29
- YELLOW='\033[1;33m'
30
- BLUE='\033[0;34m'
31
- CYAN='\033[0;36m'
32
- NC='\033[0m'
33
-
34
- PROVIDER=""
35
- TARGET="HEAD"
36
- STAGED_ONLY=false
37
-
38
- # Parse arguments
39
- while [[ $# -gt 0 ]]; do
40
- case $1 in
41
- --provider | -p)
42
- PROVIDER="$2"
43
- shift 2
44
- ;;
45
- --staged | -s)
46
- STAGED_ONLY=true
47
- shift
48
- ;;
49
- --help | -h)
50
- echo "Usage: git ai-diff [<commit>] [--provider <provider>] [--staged]"
51
- echo ""
52
- echo "Options:"
53
- echo " <commit> Compare against this commit (default: HEAD)"
54
- echo " --provider, -p AI provider: claude, gemini, sgpt, ollama, aider"
55
- echo " --staged, -s Review only staged changes"
56
- echo ""
57
- echo "Environment:"
58
- echo " GIT_AI_PROVIDER Default AI provider"
59
- exit 0
60
- ;;
61
- -*)
62
- printf '%b\n' "${RED}Unknown option: $1${NC}"
63
- exit 1
64
- ;;
65
- *)
66
- TARGET="$1"
67
- shift
68
- ;;
69
- esac
70
- done
71
-
72
- # Auto-detect provider if not specified
73
- detect_provider() {
74
- if [[ -n "${GIT_AI_PROVIDER:-}" ]]; then
75
- echo "$GIT_AI_PROVIDER"
76
- elif command -v claude >/dev/null 2>&1; then
77
- echo "claude"
78
- elif command -v aider >/dev/null 2>&1; then
79
- echo "aider"
80
- elif command -v gemini >/dev/null 2>&1; then
81
- echo "gemini"
82
- elif command -v sgpt >/dev/null 2>&1; then
83
- echo "sgpt"
84
- elif command -v ollama >/dev/null 2>&1; then
85
- echo "ollama"
86
- else
87
- echo ""
88
- fi
89
- }
90
-
91
- PROVIDER="${PROVIDER:-$(detect_provider)}"
92
-
93
- if [[ -z "$PROVIDER" ]]; then
94
- printf '%b\n' "${RED}Error: No AI provider found. Install claude, gemini, sgpt, aider, or ollama.${NC}"
95
- exit 1
96
- fi
97
-
98
- # Get the diff
99
- if [[ "$STAGED_ONLY" == "true" ]]; then
100
- DIFF=$(git diff --cached)
101
- DIFF_STAT=$(git diff --cached --stat)
102
- CONTEXT="staged changes"
103
- else
104
- DIFF=$(git diff "$TARGET")
105
- DIFF_STAT=$(git diff "$TARGET" --stat)
106
- CONTEXT="changes compared to $TARGET"
107
- fi
108
-
109
- if [[ -z "$DIFF" ]]; then
110
- printf '%b\n' "${YELLOW}No changes to review.${NC}"
111
- exit 0
112
- fi
113
-
114
- printf '%b\n' "${BLUE}Analyzing ${CONTEXT} using ${PROVIDER}...${NC}"
115
- echo ""
116
- printf '%b\n' "${CYAN}Changed files:${NC}"
117
- echo "$DIFF_STAT"
118
- echo ""
119
-
120
- # Prompt for diff analysis
121
- PROMPT="You are an expert code reviewer. Analyze the following git diff and provide:
122
-
123
- 1. **Summary**: Brief overview of what changed (2-3 sentences)
124
- 2. **Key Changes**: Bullet points of important modifications
125
- 3. **Potential Issues**: Any bugs, security issues, or code smells you notice
126
- 4. **Suggestions**: Improvements or best practices to consider
127
- 5. **Risk Level**: Low/Medium/High with brief justification
128
-
129
- Be concise but thorough. Focus on actionable feedback.
130
-
131
- Diff:
132
- \`\`\`diff
133
- $DIFF
134
- \`\`\`"
135
-
136
- # Generate analysis based on provider
137
- case "$PROVIDER" in
138
- claude)
139
- ANALYSIS=$(echo "$PROMPT" | claude --print 2>/dev/null || echo "")
140
- ;;
141
- aider)
142
- ANALYSIS=$(aider --message "$PROMPT" --no-git --yes 2>/dev/null | tail -50 || echo "")
143
- ;;
144
- gemini)
145
- ANALYSIS=$(echo "$PROMPT" | gemini 2>/dev/null || echo "")
146
- ;;
147
- sgpt)
148
- ANALYSIS=$(sgpt "$PROMPT" 2>/dev/null || echo "")
149
- ;;
150
- ollama)
151
- MODEL="${OLLAMA_MODEL:-llama3.2}"
152
- ANALYSIS=$(echo "$PROMPT" | ollama run "$MODEL" 2>/dev/null || echo "")
153
- ;;
154
- *)
155
- printf '%b\n' "${RED}Unknown provider: $PROVIDER${NC}"
156
- exit 1
157
- ;;
158
- esac
159
-
160
- if [[ -z "$ANALYSIS" ]]; then
161
- printf '%b\n' "${RED}Failed to analyze diff.${NC}"
162
- exit 1
163
- fi
164
-
165
- printf '%b\n' "${GREEN}=== AI Code Review ===${NC}"
166
- echo ""
167
- echo "$ANALYSIS"
168
- echo ""
169
- printf '%b\n' "${GREEN}=== End Review ===${NC}"