bash-classify 0.6.0__tar.gz → 0.7.0__tar.gz

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 (202) hide show
  1. {bash_classify-0.6.0 → bash_classify-0.7.0}/.claude-plugin/marketplace.json +1 -1
  2. {bash_classify-0.6.0 → bash_classify-0.7.0}/PKG-INFO +1 -1
  3. {bash_classify-0.6.0 → bash_classify-0.7.0}/coding-agent-plugins/claude-code/.claude-plugin/plugin.json +1 -1
  4. bash_classify-0.7.0/coding-agent-plugins/claude-code/hooks/hook-permission-request.sh +37 -0
  5. bash_classify-0.7.0/coding-agent-plugins/claude-code/hooks/hooks.json +31 -0
  6. {bash_classify-0.6.0 → bash_classify-0.7.0}/docs/classification-guidance.md +8 -2
  7. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/env.yaml +0 -1
  8. bash_classify-0.7.0/src/bash_classify/commands/gog.yaml +983 -0
  9. bash_classify-0.7.0/src/bash_classify/commands/mise.yaml +579 -0
  10. bash_classify-0.7.0/src/bash_classify/commands/pnpm.yaml +343 -0
  11. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/pup.yaml +272 -0
  12. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/xargs.yaml +0 -1
  13. bash_classify-0.6.0/coding-agent-plugins/claude-code/hooks/hooks.json +0 -18
  14. {bash_classify-0.6.0 → bash_classify-0.7.0}/.claude/rules/command-database.md +0 -0
  15. {bash_classify-0.6.0 → bash_classify-0.7.0}/.editorconfig +0 -0
  16. {bash_classify-0.6.0 → bash_classify-0.7.0}/.github/workflows/ci.yml +0 -0
  17. {bash_classify-0.6.0 → bash_classify-0.7.0}/.github/workflows/publish.yml +0 -0
  18. {bash_classify-0.6.0 → bash_classify-0.7.0}/.gitignore +0 -0
  19. {bash_classify-0.6.0 → bash_classify-0.7.0}/.python-version +0 -0
  20. {bash_classify-0.6.0 → bash_classify-0.7.0}/CLAUDE.md +0 -0
  21. {bash_classify-0.6.0 → bash_classify-0.7.0}/LICENSE +0 -0
  22. {bash_classify-0.6.0 → bash_classify-0.7.0}/README.md +0 -0
  23. {bash_classify-0.6.0 → bash_classify-0.7.0}/SPEC.md +0 -0
  24. /bash_classify-0.6.0/coding-agent-plugins/claude-code/hooks/classify-bash.sh → /bash_classify-0.7.0/coding-agent-plugins/claude-code/hooks/hook-pre-tool-use.sh +0 -0
  25. {bash_classify-0.6.0 → bash_classify-0.7.0}/pyproject.toml +0 -0
  26. {bash_classify-0.6.0 → bash_classify-0.7.0}/ruff.toml +0 -0
  27. {bash_classify-0.6.0 → bash_classify-0.7.0}/schemas/command.schema.json +0 -0
  28. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/__init__.py +0 -0
  29. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/__main__.py +0 -0
  30. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/classifier.py +0 -0
  31. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/cli.py +0 -0
  32. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/agent-browser.yaml +0 -0
  33. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/apt.yaml +0 -0
  34. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/awk.yaml +0 -0
  35. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/basename.yaml +0 -0
  36. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/bash-classify.yaml +0 -0
  37. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/bash.yaml +0 -0
  38. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/black.yaml +0 -0
  39. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/brew.yaml +0 -0
  40. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/builtin.yaml +0 -0
  41. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/cargo.yaml +0 -0
  42. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/cat.yaml +0 -0
  43. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/chgrp.yaml +0 -0
  44. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/chmod.yaml +0 -0
  45. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/chown.yaml +0 -0
  46. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/column.yaml +0 -0
  47. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/comm.yaml +0 -0
  48. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/command.yaml +0 -0
  49. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/cp.yaml +0 -0
  50. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/curl.yaml +0 -0
  51. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/cut.yaml +0 -0
  52. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/date.yaml +0 -0
  53. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/df.yaml +0 -0
  54. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/diff.yaml +0 -0
  55. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/dig.yaml +0 -0
  56. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/dirname.yaml +0 -0
  57. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/docker.yaml +0 -0
  58. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/du.yaml +0 -0
  59. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/echo.yaml +0 -0
  60. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/eslint.yaml +0 -0
  61. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/expand.yaml +0 -0
  62. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/false.yaml +0 -0
  63. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/file.yaml +0 -0
  64. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/find.yaml +0 -0
  65. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/fmt.yaml +0 -0
  66. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/fold.yaml +0 -0
  67. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/free.yaml +0 -0
  68. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/gawk.yaml +0 -0
  69. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/gcloud.yaml +0 -0
  70. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/gh.yaml +0 -0
  71. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/git.yaml +0 -0
  72. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/glab-discussion.yaml +0 -0
  73. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/glab.yaml +0 -0
  74. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/go.yaml +0 -0
  75. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/gradle.yaml +0 -0
  76. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/gradlew.yaml +0 -0
  77. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/grep.yaml +0 -0
  78. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/groups.yaml +0 -0
  79. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/gunzip.yaml +0 -0
  80. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/gws.yaml +0 -0
  81. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/gzip.yaml +0 -0
  82. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/hadolint.yaml +0 -0
  83. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/head.yaml +0 -0
  84. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/helm.yaml +0 -0
  85. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/hostname.yaml +0 -0
  86. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/id.yaml +0 -0
  87. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/install.yaml +0 -0
  88. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/isort.yaml +0 -0
  89. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/java.yaml +0 -0
  90. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/javac.yaml +0 -0
  91. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/join.yaml +0 -0
  92. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/journalctl.yaml +0 -0
  93. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/jq.yaml +0 -0
  94. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/kill.yaml +0 -0
  95. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/killall.yaml +0 -0
  96. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/kubectl.yaml +0 -0
  97. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/less.yaml +0 -0
  98. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/ln.yaml +0 -0
  99. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/ls.yaml +0 -0
  100. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/make.yaml +0 -0
  101. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/md5sum.yaml +0 -0
  102. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/mkdir.yaml +0 -0
  103. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/more.yaml +0 -0
  104. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/mv.yaml +0 -0
  105. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/mvn.yaml +0 -0
  106. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/mvnw.yaml +0 -0
  107. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/mypy.yaml +0 -0
  108. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/netstat.yaml +0 -0
  109. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/nice.yaml +0 -0
  110. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/nl.yaml +0 -0
  111. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/node.yaml +0 -0
  112. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/nohup.yaml +0 -0
  113. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/npm.yaml +0 -0
  114. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/npx.yaml +0 -0
  115. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/nslookup.yaml +0 -0
  116. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/paste.yaml +0 -0
  117. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/ping.yaml +0 -0
  118. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/pip.yaml +0 -0
  119. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/pip3.yaml +0 -0
  120. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/pipx.yaml +0 -0
  121. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/pkill.yaml +0 -0
  122. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/poetry.yaml +0 -0
  123. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/prettier.yaml +0 -0
  124. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/printenv.yaml +0 -0
  125. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/printf.yaml +0 -0
  126. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/ps.yaml +0 -0
  127. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/pwd.yaml +0 -0
  128. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/pytest.yaml +0 -0
  129. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/python.yaml +0 -0
  130. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/python3.yaml +0 -0
  131. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/read.yaml +0 -0
  132. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/readlink.yaml +0 -0
  133. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/realpath.yaml +0 -0
  134. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/rev.yaml +0 -0
  135. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/rg.yaml +0 -0
  136. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/rm.yaml +0 -0
  137. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/rsync.yaml +0 -0
  138. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/ruff.yaml +0 -0
  139. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/scp.yaml +0 -0
  140. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/sed.yaml +0 -0
  141. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/seq.yaml +0 -0
  142. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/sh.yaml +0 -0
  143. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/sha1sum.yaml +0 -0
  144. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/sha256sum.yaml +0 -0
  145. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/shellcheck.yaml +0 -0
  146. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/sort.yaml +0 -0
  147. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/ss.yaml +0 -0
  148. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/ssh.yaml +0 -0
  149. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/stat.yaml +0 -0
  150. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/strace.yaml +0 -0
  151. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/sudo.yaml +0 -0
  152. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/systemctl.yaml +0 -0
  153. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/tac.yaml +0 -0
  154. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/tail.yaml +0 -0
  155. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/tar.yaml +0 -0
  156. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/tee.yaml +0 -0
  157. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/terraform.yaml +0 -0
  158. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/test.yaml +0 -0
  159. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/time.yaml +0 -0
  160. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/timeout.yaml +0 -0
  161. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/top.yaml +0 -0
  162. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/touch.yaml +0 -0
  163. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/tr.yaml +0 -0
  164. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/traceroute.yaml +0 -0
  165. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/true.yaml +0 -0
  166. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/tsc.yaml +0 -0
  167. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/type.yaml +0 -0
  168. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/uname.yaml +0 -0
  169. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/unexpand.yaml +0 -0
  170. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/uniq.yaml +0 -0
  171. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/unzip.yaml +0 -0
  172. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/uptime.yaml +0 -0
  173. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/uv.yaml +0 -0
  174. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/wc.yaml +0 -0
  175. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/wget.yaml +0 -0
  176. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/whereis.yaml +0 -0
  177. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/which.yaml +0 -0
  178. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/whoami.yaml +0 -0
  179. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/xmllint.yaml +0 -0
  180. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/yarn.yaml +0 -0
  181. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/yes.yaml +0 -0
  182. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/yq.yaml +0 -0
  183. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/zip.yaml +0 -0
  184. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/commands/zsh.yaml +0 -0
  185. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/database.py +0 -0
  186. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/matcher.py +0 -0
  187. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/models.py +0 -0
  188. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/parser.py +0 -0
  189. {bash_classify-0.6.0 → bash_classify-0.7.0}/src/bash_classify/py.typed +0 -0
  190. {bash_classify-0.6.0 → bash_classify-0.7.0}/tests/__init__.py +0 -0
  191. {bash_classify-0.6.0 → bash_classify-0.7.0}/tests/conftest.py +0 -0
  192. {bash_classify-0.6.0 → bash_classify-0.7.0}/tests/test_classifier.py +0 -0
  193. {bash_classify-0.6.0 → bash_classify-0.7.0}/tests/test_cli.py +0 -0
  194. {bash_classify-0.6.0 → bash_classify-0.7.0}/tests/test_cli_serialization.py +0 -0
  195. {bash_classify-0.6.0 → bash_classify-0.7.0}/tests/test_database.py +0 -0
  196. {bash_classify-0.6.0 → bash_classify-0.7.0}/tests/test_matcher.py +0 -0
  197. {bash_classify-0.6.0 → bash_classify-0.7.0}/tests/test_models.py +0 -0
  198. {bash_classify-0.6.0 → bash_classify-0.7.0}/tests/test_parser.py +0 -0
  199. {bash_classify-0.6.0 → bash_classify-0.7.0}/tests/test_real_world.py +0 -0
  200. {bash_classify-0.6.0 → bash_classify-0.7.0}/tests/test_schema.py +0 -0
  201. {bash_classify-0.6.0 → bash_classify-0.7.0}/tests/test_smoke.py +0 -0
  202. {bash_classify-0.6.0 → bash_classify-0.7.0}/uv.lock +0 -0
@@ -8,7 +8,7 @@
8
8
  {
9
9
  "name": "bash-classify-hook",
10
10
  "description": "Auto-allows low-risk bash commands in Claude Code using bash-classify",
11
- "version": "0.6.0",
11
+ "version": "0.7.0",
12
12
  "author": {
13
13
  "name": "Filip Procházka",
14
14
  "url": "https://github.com/fprochazka"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: bash-classify
3
- Version: 0.6.0
3
+ Version: 0.7.0
4
4
  Summary: Classify bash commands as READONLY, WRITE, DANGEROUS, or UNKNOWN
5
5
  Project-URL: Homepage, https://github.com/fprochazka/bash-classify
6
6
  Project-URL: Repository, https://github.com/fprochazka/bash-classify
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bash-classify-hook",
3
- "version": "0.6.0",
3
+ "version": "0.7.0",
4
4
  "description": "Auto-allows low-risk bash commands in Claude Code using bash-classify",
5
5
  "author": {
6
6
  "name": "Filip Prochazka"
@@ -0,0 +1,37 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+
4
+ # Fallback hook: PreToolUse isn't consistently fired from subagents, so we
5
+ # also classify on PermissionRequest (just before the user sees the dialog)
6
+ # and auto-allow low-risk commands there.
7
+
8
+ BASH_CLASSIFY=""
9
+ if command -v bash-classify &>/dev/null; then
10
+ BASH_CLASSIFY="bash-classify"
11
+ elif [[ -x "$HOME/.local/bin/bash-classify" ]]; then
12
+ BASH_CLASSIFY="$HOME/.local/bin/bash-classify"
13
+ else
14
+ exit 0
15
+ fi
16
+
17
+ input=$(cat)
18
+
19
+ command=$(echo "$input" | jq -r '.tool_input.command // empty')
20
+
21
+ if [[ -z "$command" ]]; then
22
+ exit 0
23
+ fi
24
+
25
+ classification_output=$(echo "$command" | "$BASH_CLASSIFY" 2>/dev/null) || true
26
+
27
+ if [[ -z "$classification_output" ]]; then
28
+ exit 0
29
+ fi
30
+
31
+ risk=$(echo "$classification_output" | jq -r '.risk // empty')
32
+
33
+ if [[ "$risk" == "LOW" ]]; then
34
+ echo '{"hookSpecificOutput":{"hookEventName":"PermissionRequest","decision":{"behavior":"allow"}}}'
35
+ fi
36
+
37
+ exit 0
@@ -0,0 +1,31 @@
1
+ {
2
+ "description": "Auto-allow low-risk bash commands using bash-classify",
3
+ "hooks": {
4
+ "PreToolUse": [
5
+ {
6
+ "matcher": "Bash",
7
+ "hooks": [
8
+ {
9
+ "type": "command",
10
+ "command": "bash ${CLAUDE_PLUGIN_ROOT}/hooks/hook-pre-tool-use.sh",
11
+ "timeout": 10,
12
+ "statusMessage": "Classifying bash command..."
13
+ }
14
+ ]
15
+ }
16
+ ],
17
+ "PermissionRequest": [
18
+ {
19
+ "matcher": "Bash",
20
+ "hooks": [
21
+ {
22
+ "type": "command",
23
+ "command": "bash ${CLAUDE_PLUGIN_ROOT}/hooks/hook-permission-request.sh",
24
+ "timeout": 10,
25
+ "statusMessage": "Classifying bash command..."
26
+ }
27
+ ]
28
+ }
29
+ ]
30
+ }
31
+ }
@@ -236,6 +236,12 @@ subcommands:
236
236
 
237
237
  Some commands do not do work themselves -- they delegate to an inner command. bash-classify models this with `delegates_to`, which tells the matcher how to extract the inner command's argv and classify it recursively.
238
238
 
239
+ ### Pure-wrapper rule of thumb
240
+
241
+ For commands that are pure passthroughs -- they do nothing themselves beyond running the inner command (e.g. `env`, `xargs`, `mise exec`, `pnpm exec`) -- **omit `classification`**. The missing base defaults to `READONLY`, which is the identity element for severity-max against the delegated inner: the inner command's classification is what surfaces. Writing `classification: READONLY` explicitly on a pure wrapper is misleading -- it reads as "this command is safe" when the real intent is "inherit from whatever I wrap."
242
+
243
+ Only set a non-`READONLY` base when the wrapper itself contributes risk regardless of the inner (e.g. `sudo` is `EXTERNAL_EFFECTS` because it elevates privileges) or when the wrapper also has a meaningful standalone behavior that isn't READONLY.
244
+
239
245
  ### `rest_are_argv`
240
246
 
241
247
  All remaining positional args (after the wrapper's own options) form the inner command.
@@ -244,7 +250,7 @@ All remaining positional args (after the wrapper's own options) form the inner c
244
250
 
245
251
  ```yaml
246
252
  command: xargs
247
- classification: READONLY
253
+ # classification omitted -- pure passthrough, inherits from inner
248
254
  delegates_to:
249
255
  mode: rest_are_argv
250
256
  options:
@@ -267,7 +273,7 @@ delegates_to:
267
273
 
268
274
  ```yaml
269
275
  command: env
270
- classification: READONLY
276
+ # classification omitted -- pure passthrough
271
277
  delegates_to:
272
278
  mode: rest_are_argv
273
279
  strip_assignments: true # strip leading KEY=VALUE tokens
@@ -1,7 +1,6 @@
1
1
  # $schema: ../../../schemas/command.schema.json
2
2
  command: env
3
3
  description: "Run a program in a modified environment"
4
- classification: READONLY
5
4
  global_options:
6
5
  --help: {overrides: READONLY}
7
6
  delegates_to: