bash-classify 0.7.0__tar.gz → 0.9.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 (207) hide show
  1. {bash_classify-0.7.0 → bash_classify-0.9.0}/.claude-plugin/marketplace.json +1 -1
  2. {bash_classify-0.7.0 → bash_classify-0.9.0}/PKG-INFO +1 -1
  3. {bash_classify-0.7.0 → bash_classify-0.9.0}/SPEC.md +9 -4
  4. {bash_classify-0.7.0 → bash_classify-0.9.0}/coding-agent-plugins/claude-code/.claude-plugin/plugin.json +1 -1
  5. {bash_classify-0.7.0 → bash_classify-0.9.0}/schemas/command.schema.json +6 -0
  6. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/gcloud.yaml +325 -0
  7. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/kubectl.yaml +1 -0
  8. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/nohup.yaml +1 -0
  9. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/pnpm.yaml +3 -0
  10. bash_classify-0.9.0/src/bash_classify/commands/rtk.yaml +140 -0
  11. bash_classify-0.9.0/src/bash_classify/commands/slack.yaml +113 -0
  12. bash_classify-0.9.0/src/bash_classify/commands/sleep.yaml +8 -0
  13. bash_classify-0.9.0/src/bash_classify/commands/stdbuf.yaml +15 -0
  14. bash_classify-0.9.0/src/bash_classify/commands/strings.yaml +11 -0
  15. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/timeout.yaml +1 -0
  16. bash_classify-0.9.0/src/bash_classify/commands/wait.yaml +11 -0
  17. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/database.py +1 -0
  18. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/matcher.py +26 -9
  19. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/models.py +1 -0
  20. {bash_classify-0.7.0 → bash_classify-0.9.0}/tests/test_classifier.py +12 -4
  21. {bash_classify-0.7.0 → bash_classify-0.9.0}/tests/test_matcher.py +177 -0
  22. {bash_classify-0.7.0 → bash_classify-0.9.0}/.claude/rules/command-database.md +0 -0
  23. {bash_classify-0.7.0 → bash_classify-0.9.0}/.editorconfig +0 -0
  24. {bash_classify-0.7.0 → bash_classify-0.9.0}/.github/workflows/ci.yml +0 -0
  25. {bash_classify-0.7.0 → bash_classify-0.9.0}/.github/workflows/publish.yml +0 -0
  26. {bash_classify-0.7.0 → bash_classify-0.9.0}/.gitignore +0 -0
  27. {bash_classify-0.7.0 → bash_classify-0.9.0}/.python-version +0 -0
  28. {bash_classify-0.7.0 → bash_classify-0.9.0}/CLAUDE.md +0 -0
  29. {bash_classify-0.7.0 → bash_classify-0.9.0}/LICENSE +0 -0
  30. {bash_classify-0.7.0 → bash_classify-0.9.0}/README.md +0 -0
  31. {bash_classify-0.7.0 → bash_classify-0.9.0}/coding-agent-plugins/claude-code/hooks/hook-permission-request.sh +0 -0
  32. {bash_classify-0.7.0 → bash_classify-0.9.0}/coding-agent-plugins/claude-code/hooks/hook-pre-tool-use.sh +0 -0
  33. {bash_classify-0.7.0 → bash_classify-0.9.0}/coding-agent-plugins/claude-code/hooks/hooks.json +0 -0
  34. {bash_classify-0.7.0 → bash_classify-0.9.0}/docs/classification-guidance.md +0 -0
  35. {bash_classify-0.7.0 → bash_classify-0.9.0}/pyproject.toml +0 -0
  36. {bash_classify-0.7.0 → bash_classify-0.9.0}/ruff.toml +0 -0
  37. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/__init__.py +0 -0
  38. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/__main__.py +0 -0
  39. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/classifier.py +0 -0
  40. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/cli.py +0 -0
  41. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/agent-browser.yaml +0 -0
  42. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/apt.yaml +0 -0
  43. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/awk.yaml +0 -0
  44. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/basename.yaml +0 -0
  45. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/bash-classify.yaml +0 -0
  46. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/bash.yaml +0 -0
  47. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/black.yaml +0 -0
  48. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/brew.yaml +0 -0
  49. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/builtin.yaml +0 -0
  50. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/cargo.yaml +0 -0
  51. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/cat.yaml +0 -0
  52. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/chgrp.yaml +0 -0
  53. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/chmod.yaml +0 -0
  54. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/chown.yaml +0 -0
  55. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/column.yaml +0 -0
  56. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/comm.yaml +0 -0
  57. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/command.yaml +0 -0
  58. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/cp.yaml +0 -0
  59. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/curl.yaml +0 -0
  60. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/cut.yaml +0 -0
  61. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/date.yaml +0 -0
  62. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/df.yaml +0 -0
  63. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/diff.yaml +0 -0
  64. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/dig.yaml +0 -0
  65. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/dirname.yaml +0 -0
  66. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/docker.yaml +0 -0
  67. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/du.yaml +0 -0
  68. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/echo.yaml +0 -0
  69. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/env.yaml +0 -0
  70. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/eslint.yaml +0 -0
  71. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/expand.yaml +0 -0
  72. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/false.yaml +0 -0
  73. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/file.yaml +0 -0
  74. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/find.yaml +0 -0
  75. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/fmt.yaml +0 -0
  76. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/fold.yaml +0 -0
  77. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/free.yaml +0 -0
  78. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/gawk.yaml +0 -0
  79. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/gh.yaml +0 -0
  80. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/git.yaml +0 -0
  81. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/glab-discussion.yaml +0 -0
  82. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/glab.yaml +0 -0
  83. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/go.yaml +0 -0
  84. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/gog.yaml +0 -0
  85. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/gradle.yaml +0 -0
  86. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/gradlew.yaml +0 -0
  87. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/grep.yaml +0 -0
  88. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/groups.yaml +0 -0
  89. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/gunzip.yaml +0 -0
  90. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/gws.yaml +0 -0
  91. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/gzip.yaml +0 -0
  92. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/hadolint.yaml +0 -0
  93. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/head.yaml +0 -0
  94. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/helm.yaml +0 -0
  95. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/hostname.yaml +0 -0
  96. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/id.yaml +0 -0
  97. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/install.yaml +0 -0
  98. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/isort.yaml +0 -0
  99. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/java.yaml +0 -0
  100. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/javac.yaml +0 -0
  101. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/join.yaml +0 -0
  102. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/journalctl.yaml +0 -0
  103. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/jq.yaml +0 -0
  104. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/kill.yaml +0 -0
  105. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/killall.yaml +0 -0
  106. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/less.yaml +0 -0
  107. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/ln.yaml +0 -0
  108. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/ls.yaml +0 -0
  109. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/make.yaml +0 -0
  110. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/md5sum.yaml +0 -0
  111. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/mise.yaml +0 -0
  112. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/mkdir.yaml +0 -0
  113. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/more.yaml +0 -0
  114. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/mv.yaml +0 -0
  115. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/mvn.yaml +0 -0
  116. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/mvnw.yaml +0 -0
  117. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/mypy.yaml +0 -0
  118. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/netstat.yaml +0 -0
  119. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/nice.yaml +0 -0
  120. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/nl.yaml +0 -0
  121. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/node.yaml +0 -0
  122. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/npm.yaml +0 -0
  123. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/npx.yaml +0 -0
  124. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/nslookup.yaml +0 -0
  125. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/paste.yaml +0 -0
  126. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/ping.yaml +0 -0
  127. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/pip.yaml +0 -0
  128. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/pip3.yaml +0 -0
  129. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/pipx.yaml +0 -0
  130. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/pkill.yaml +0 -0
  131. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/poetry.yaml +0 -0
  132. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/prettier.yaml +0 -0
  133. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/printenv.yaml +0 -0
  134. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/printf.yaml +0 -0
  135. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/ps.yaml +0 -0
  136. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/pup.yaml +0 -0
  137. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/pwd.yaml +0 -0
  138. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/pytest.yaml +0 -0
  139. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/python.yaml +0 -0
  140. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/python3.yaml +0 -0
  141. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/read.yaml +0 -0
  142. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/readlink.yaml +0 -0
  143. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/realpath.yaml +0 -0
  144. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/rev.yaml +0 -0
  145. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/rg.yaml +0 -0
  146. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/rm.yaml +0 -0
  147. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/rsync.yaml +0 -0
  148. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/ruff.yaml +0 -0
  149. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/scp.yaml +0 -0
  150. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/sed.yaml +0 -0
  151. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/seq.yaml +0 -0
  152. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/sh.yaml +0 -0
  153. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/sha1sum.yaml +0 -0
  154. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/sha256sum.yaml +0 -0
  155. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/shellcheck.yaml +0 -0
  156. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/sort.yaml +0 -0
  157. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/ss.yaml +0 -0
  158. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/ssh.yaml +0 -0
  159. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/stat.yaml +0 -0
  160. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/strace.yaml +0 -0
  161. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/sudo.yaml +0 -0
  162. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/systemctl.yaml +0 -0
  163. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/tac.yaml +0 -0
  164. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/tail.yaml +0 -0
  165. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/tar.yaml +0 -0
  166. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/tee.yaml +0 -0
  167. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/terraform.yaml +0 -0
  168. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/test.yaml +0 -0
  169. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/time.yaml +0 -0
  170. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/top.yaml +0 -0
  171. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/touch.yaml +0 -0
  172. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/tr.yaml +0 -0
  173. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/traceroute.yaml +0 -0
  174. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/true.yaml +0 -0
  175. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/tsc.yaml +0 -0
  176. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/type.yaml +0 -0
  177. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/uname.yaml +0 -0
  178. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/unexpand.yaml +0 -0
  179. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/uniq.yaml +0 -0
  180. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/unzip.yaml +0 -0
  181. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/uptime.yaml +0 -0
  182. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/uv.yaml +0 -0
  183. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/wc.yaml +0 -0
  184. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/wget.yaml +0 -0
  185. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/whereis.yaml +0 -0
  186. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/which.yaml +0 -0
  187. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/whoami.yaml +0 -0
  188. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/xargs.yaml +0 -0
  189. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/xmllint.yaml +0 -0
  190. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/yarn.yaml +0 -0
  191. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/yes.yaml +0 -0
  192. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/yq.yaml +0 -0
  193. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/zip.yaml +0 -0
  194. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/commands/zsh.yaml +0 -0
  195. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/parser.py +0 -0
  196. {bash_classify-0.7.0 → bash_classify-0.9.0}/src/bash_classify/py.typed +0 -0
  197. {bash_classify-0.7.0 → bash_classify-0.9.0}/tests/__init__.py +0 -0
  198. {bash_classify-0.7.0 → bash_classify-0.9.0}/tests/conftest.py +0 -0
  199. {bash_classify-0.7.0 → bash_classify-0.9.0}/tests/test_cli.py +0 -0
  200. {bash_classify-0.7.0 → bash_classify-0.9.0}/tests/test_cli_serialization.py +0 -0
  201. {bash_classify-0.7.0 → bash_classify-0.9.0}/tests/test_database.py +0 -0
  202. {bash_classify-0.7.0 → bash_classify-0.9.0}/tests/test_models.py +0 -0
  203. {bash_classify-0.7.0 → bash_classify-0.9.0}/tests/test_parser.py +0 -0
  204. {bash_classify-0.7.0 → bash_classify-0.9.0}/tests/test_real_world.py +0 -0
  205. {bash_classify-0.7.0 → bash_classify-0.9.0}/tests/test_schema.py +0 -0
  206. {bash_classify-0.7.0 → bash_classify-0.9.0}/tests/test_smoke.py +0 -0
  207. {bash_classify-0.7.0 → bash_classify-0.9.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.7.0",
11
+ "version": "0.9.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.7.0
3
+ Version: 0.9.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
@@ -132,7 +132,7 @@ $ echo 'kubectl exec -it my-pod -- cat /etc/config' | bash-classify
132
132
  "delegation_source": "--",
133
133
  "command": ["cat"],
134
134
  "argv": ["cat", "/etc/config"],
135
- "classification": "READONLY",
135
+ "classification": "EXTERNAL_EFFECTS",
136
136
  "matched_rule": "cat",
137
137
  "inner_commands": []
138
138
  }
@@ -142,6 +142,8 @@ $ echo 'kubectl exec -it my-pod -- cat /etc/config' | bash-classify
142
142
  }
143
143
  ```
144
144
 
145
+ Note: the `cat` inner is floored to `EXTERNAL_EFFECTS` by `kubectl exec`'s `min_classification`, and the parent expression is then escalated to `DANGEROUS` by the system-path elevation rule (touching `/etc/config`).
146
+
145
147
  ### Nested delegation (sh -c with full expression parsing)
146
148
 
147
149
  ```
@@ -151,13 +153,13 @@ $ echo 'sh -c "ls /tmp | grep log"' | bash-classify
151
153
  ```json
152
154
  {
153
155
  "expression": "sh -c \"ls /tmp | grep log\"",
154
- "classification": "DANGEROUS",
156
+ "classification": "READONLY",
155
157
  "directories": ["/tmp"],
156
158
  "commands": [
157
159
  {
158
160
  "command": ["sh"],
159
161
  "argv": ["sh", "-c", "ls /tmp | grep log"],
160
- "classification": "DANGEROUS",
162
+ "classification": "READONLY",
161
163
  "matched_rule": "sh",
162
164
  "inner_commands": [
163
165
  {
@@ -849,7 +851,10 @@ The `delegates_to` field defines how a command (or option like `find -exec`) han
849
851
  | `terminator` | `string` | For `terminated_argv`: the token that ends the inner argv |
850
852
  | `flag` | `string` | For `flag_value_is_expression`: which flag's value to parse |
851
853
  | `strip_assignments` | `bool` | For `rest_are_argv`: strip leading `KEY=VALUE` tokens before the inner command |
852
- | `min_classification` | `enum` | Floor classification for the inner command (e.g. `sudo` forces at least `EXTERNAL_EFFECTS`) |
854
+ | `skip_leading_positionals` | `int` | For `rest_are_argv`: number of positional tokens that belong to the wrapper itself before the inner command starts (e.g. `timeout DURATION COMMAND...` uses `1`). Default `0`. |
855
+ | `min_classification` | `enum` | Floor classification for the inner command (e.g. `sudo` forces at least `DANGEROUS`, `nohup` and `kubectl exec` force at least `EXTERNAL_EFFECTS`) |
856
+
857
+ When command-level delegation resolves at least one inner command (and no option override or strict-mode escalation is active), the wrapper's own `classification`/`risk` are ignored — the result is determined by the inner alone, with `min_classification` available to express genuine wrapper-level side-effects (e.g., `nohup` detaches a process, `kubectl exec` runs cluster-side, `sudo` enforces a security floor). The wrapper's declared base classification still applies when delegation does not resolve (e.g., `sh` invoked without `-c`, or a delegation that produces no inner command).
853
858
 
854
859
  ### Database field reference
855
860
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bash-classify-hook",
3
- "version": "0.7.0",
3
+ "version": "0.9.0",
4
4
  "description": "Auto-allows low-risk bash commands in Claude Code using bash-classify",
5
5
  "author": {
6
6
  "name": "Filip Prochazka"
@@ -113,6 +113,12 @@
113
113
  "type": "boolean",
114
114
  "description": "For rest_are_argv mode: strip leading KEY=VALUE tokens before the inner command"
115
115
  },
116
+ "skip_leading_positionals": {
117
+ "type": "integer",
118
+ "minimum": 0,
119
+ "default": 0,
120
+ "description": "For rest_are_argv mode: number of positional tokens that belong to the wrapper itself before the inner command starts. Used by commands like `timeout` whose syntax is `timeout DURATION COMMAND...`."
121
+ },
116
122
  "min_classification": {
117
123
  "$ref": "#/$defs/Classification",
118
124
  "description": "Floor classification for the inner command"
@@ -25,6 +25,331 @@ global_options:
25
25
  --no-user-output-enabled: {}
26
26
 
27
27
  subcommands:
28
+ # artifacts
29
+ artifacts:
30
+ classification: EXTERNAL_EFFECTS
31
+ strict: false
32
+ subcommands:
33
+ apt:
34
+ classification: EXTERNAL_EFFECTS
35
+ strict: false
36
+ subcommands:
37
+ import:
38
+ classification: EXTERNAL_EFFECTS
39
+ strict: false
40
+ upload:
41
+ classification: EXTERNAL_EFFECTS
42
+ strict: false
43
+ attachments:
44
+ classification: EXTERNAL_EFFECTS
45
+ strict: false
46
+ subcommands:
47
+ list:
48
+ classification: READONLY
49
+ strict: false
50
+ describe:
51
+ classification: READONLY
52
+ strict: false
53
+ download:
54
+ classification: EXTERNAL_EFFECTS
55
+ strict: false
56
+ create:
57
+ classification: EXTERNAL_EFFECTS
58
+ strict: false
59
+ delete:
60
+ classification: DANGEROUS
61
+ strict: false
62
+ docker:
63
+ classification: EXTERNAL_EFFECTS
64
+ strict: false
65
+ subcommands:
66
+ images:
67
+ classification: EXTERNAL_EFFECTS
68
+ strict: false
69
+ subcommands:
70
+ list:
71
+ classification: READONLY
72
+ strict: false
73
+ describe:
74
+ classification: READONLY
75
+ strict: false
76
+ get-operation:
77
+ classification: READONLY
78
+ strict: false
79
+ list-vulnerabilities:
80
+ classification: READONLY
81
+ strict: false
82
+ scan:
83
+ classification: EXTERNAL_EFFECTS
84
+ strict: false
85
+ delete:
86
+ classification: DANGEROUS
87
+ strict: false
88
+ tags:
89
+ classification: EXTERNAL_EFFECTS
90
+ strict: false
91
+ subcommands:
92
+ list:
93
+ classification: READONLY
94
+ strict: false
95
+ add:
96
+ classification: EXTERNAL_EFFECTS
97
+ strict: false
98
+ delete:
99
+ classification: DANGEROUS
100
+ strict: false
101
+ upgrade:
102
+ classification: EXTERNAL_EFFECTS
103
+ strict: false
104
+ subcommands:
105
+ print-iam-policy:
106
+ classification: READONLY
107
+ strict: false
108
+ migrate:
109
+ classification: EXTERNAL_EFFECTS
110
+ strict: false
111
+ files:
112
+ classification: EXTERNAL_EFFECTS
113
+ strict: false
114
+ subcommands:
115
+ list:
116
+ classification: READONLY
117
+ strict: false
118
+ describe:
119
+ classification: READONLY
120
+ strict: false
121
+ download:
122
+ classification: EXTERNAL_EFFECTS
123
+ strict: false
124
+ update:
125
+ classification: EXTERNAL_EFFECTS
126
+ strict: false
127
+ delete:
128
+ classification: DANGEROUS
129
+ strict: false
130
+ generic:
131
+ classification: EXTERNAL_EFFECTS
132
+ strict: false
133
+ subcommands:
134
+ download:
135
+ classification: EXTERNAL_EFFECTS
136
+ strict: false
137
+ upload:
138
+ classification: EXTERNAL_EFFECTS
139
+ strict: false
140
+ go:
141
+ classification: EXTERNAL_EFFECTS
142
+ strict: false
143
+ subcommands:
144
+ auth:
145
+ classification: EXTERNAL_EFFECTS
146
+ strict: false
147
+ upload:
148
+ classification: EXTERNAL_EFFECTS
149
+ strict: false
150
+ locations:
151
+ classification: READONLY
152
+ strict: false
153
+ subcommands:
154
+ list:
155
+ classification: READONLY
156
+ strict: false
157
+ operations:
158
+ classification: READONLY
159
+ strict: false
160
+ subcommands:
161
+ describe:
162
+ classification: READONLY
163
+ strict: false
164
+ packages:
165
+ classification: EXTERNAL_EFFECTS
166
+ strict: false
167
+ subcommands:
168
+ list:
169
+ classification: READONLY
170
+ strict: false
171
+ describe:
172
+ classification: READONLY
173
+ strict: false
174
+ update:
175
+ classification: EXTERNAL_EFFECTS
176
+ strict: false
177
+ delete:
178
+ classification: DANGEROUS
179
+ strict: false
180
+ print-settings:
181
+ classification: READONLY
182
+ strict: false
183
+ subcommands:
184
+ gradle:
185
+ classification: READONLY
186
+ strict: false
187
+ mvn:
188
+ classification: READONLY
189
+ strict: false
190
+ npm:
191
+ classification: READONLY
192
+ strict: false
193
+ python:
194
+ classification: READONLY
195
+ strict: false
196
+ repositories:
197
+ classification: EXTERNAL_EFFECTS
198
+ strict: false
199
+ subcommands:
200
+ list:
201
+ classification: READONLY
202
+ strict: false
203
+ describe:
204
+ classification: READONLY
205
+ strict: false
206
+ get-iam-policy:
207
+ classification: READONLY
208
+ strict: false
209
+ list-cleanup-policies:
210
+ classification: READONLY
211
+ strict: false
212
+ create:
213
+ classification: EXTERNAL_EFFECTS
214
+ strict: false
215
+ update:
216
+ classification: EXTERNAL_EFFECTS
217
+ strict: false
218
+ add-iam-policy-binding:
219
+ classification: EXTERNAL_EFFECTS
220
+ strict: false
221
+ remove-iam-policy-binding:
222
+ classification: EXTERNAL_EFFECTS
223
+ strict: false
224
+ set-iam-policy:
225
+ classification: EXTERNAL_EFFECTS
226
+ strict: false
227
+ set-cleanup-policies:
228
+ classification: EXTERNAL_EFFECTS
229
+ strict: false
230
+ delete:
231
+ classification: DANGEROUS
232
+ strict: false
233
+ delete-cleanup-policies:
234
+ classification: DANGEROUS
235
+ strict: false
236
+ rules:
237
+ classification: EXTERNAL_EFFECTS
238
+ strict: false
239
+ subcommands:
240
+ list:
241
+ classification: READONLY
242
+ strict: false
243
+ describe:
244
+ classification: READONLY
245
+ strict: false
246
+ create:
247
+ classification: EXTERNAL_EFFECTS
248
+ strict: false
249
+ update:
250
+ classification: EXTERNAL_EFFECTS
251
+ strict: false
252
+ delete:
253
+ classification: DANGEROUS
254
+ strict: false
255
+ sbom:
256
+ classification: EXTERNAL_EFFECTS
257
+ strict: false
258
+ subcommands:
259
+ list:
260
+ classification: READONLY
261
+ strict: false
262
+ export:
263
+ classification: EXTERNAL_EFFECTS
264
+ strict: false
265
+ load:
266
+ classification: EXTERNAL_EFFECTS
267
+ strict: false
268
+ settings:
269
+ classification: EXTERNAL_EFFECTS
270
+ strict: false
271
+ subcommands:
272
+ describe:
273
+ classification: READONLY
274
+ strict: false
275
+ enable-upgrade-redirection:
276
+ classification: EXTERNAL_EFFECTS
277
+ strict: false
278
+ disable-upgrade-redirection:
279
+ classification: EXTERNAL_EFFECTS
280
+ strict: false
281
+ tags:
282
+ classification: EXTERNAL_EFFECTS
283
+ strict: false
284
+ subcommands:
285
+ list:
286
+ classification: READONLY
287
+ strict: false
288
+ create:
289
+ classification: EXTERNAL_EFFECTS
290
+ strict: false
291
+ update:
292
+ classification: EXTERNAL_EFFECTS
293
+ strict: false
294
+ export:
295
+ classification: EXTERNAL_EFFECTS
296
+ strict: false
297
+ delete:
298
+ classification: DANGEROUS
299
+ strict: false
300
+ versions:
301
+ classification: EXTERNAL_EFFECTS
302
+ strict: false
303
+ subcommands:
304
+ list:
305
+ classification: READONLY
306
+ strict: false
307
+ describe:
308
+ classification: READONLY
309
+ strict: false
310
+ export:
311
+ classification: EXTERNAL_EFFECTS
312
+ strict: false
313
+ update:
314
+ classification: EXTERNAL_EFFECTS
315
+ strict: false
316
+ delete:
317
+ classification: DANGEROUS
318
+ strict: false
319
+ vpcsc-config:
320
+ classification: EXTERNAL_EFFECTS
321
+ strict: false
322
+ subcommands:
323
+ describe:
324
+ classification: READONLY
325
+ strict: false
326
+ allow:
327
+ classification: EXTERNAL_EFFECTS
328
+ strict: false
329
+ deny:
330
+ classification: EXTERNAL_EFFECTS
331
+ strict: false
332
+ vulnerabilities:
333
+ classification: READONLY
334
+ strict: false
335
+ subcommands:
336
+ list:
337
+ classification: READONLY
338
+ strict: false
339
+ load-vex:
340
+ classification: EXTERNAL_EFFECTS
341
+ strict: false
342
+ yum:
343
+ classification: EXTERNAL_EFFECTS
344
+ strict: false
345
+ subcommands:
346
+ import:
347
+ classification: EXTERNAL_EFFECTS
348
+ strict: false
349
+ upload:
350
+ classification: EXTERNAL_EFFECTS
351
+ strict: false
352
+
28
353
  # compute
29
354
  compute:
30
355
  classification: EXTERNAL_EFFECTS
@@ -124,6 +124,7 @@ subcommands:
124
124
  delegates_to:
125
125
  mode: after_separator
126
126
  separator: "--"
127
+ min_classification: EXTERNAL_EFFECTS
127
128
  options:
128
129
  -it: {}
129
130
  -i: {}
@@ -6,3 +6,4 @@ global_options:
6
6
  --help: {overrides: READONLY}
7
7
  delegates_to:
8
8
  mode: rest_are_argv
9
+ min_classification: EXTERNAL_EFFECTS
@@ -234,6 +234,9 @@ subcommands:
234
234
  classification: EXTERNAL_EFFECTS
235
235
  risk: HIGH
236
236
  strict: false
237
+ delegates_to:
238
+ mode: rest_are_argv
239
+ min_classification: EXTERNAL_EFFECTS
237
240
 
238
241
  # --- Version bump (writes package.json, creates git commit/tag) ---
239
242
  version:
@@ -0,0 +1,140 @@
1
+ # $schema: ../../../schemas/command.schema.json
2
+ command: rtk
3
+ description: "CLI proxy that filters/summarizes command output for LLM context"
4
+ classification: READONLY
5
+ strict: false
6
+ global_options:
7
+ --help: {overrides: READONLY}
8
+ -h: {overrides: READONLY, aliases: [--help]}
9
+ --version: {overrides: READONLY}
10
+ -V: {overrides: READONLY, aliases: [--version]}
11
+ -v: {}
12
+ --verbose: {aliases: [-v]}
13
+ --ultra-compact: {}
14
+ --skip-env: {}
15
+ # Most rtk subcommands are thin passthroughs: `rtk <tool> <args>` runs `<tool> <args>`
16
+ # and only filters stdout. Risk profile is identical to the inner command, so by default
17
+ # delegate to the rest of argv. Only rtk-native subcommands (config, gain, run, etc.)
18
+ # are enumerated below.
19
+ delegates_to:
20
+ mode: rest_are_argv
21
+ subcommands:
22
+ # --- rtk-native readonly inspectors / filters ---
23
+ read:
24
+ classification: READONLY
25
+ strict: false
26
+ smart:
27
+ classification: READONLY
28
+ strict: false
29
+ pipe:
30
+ classification: READONLY
31
+ strict: false
32
+ json:
33
+ classification: READONLY
34
+ strict: false
35
+ log:
36
+ classification: READONLY
37
+ strict: false
38
+ deps:
39
+ classification: READONLY
40
+ strict: false
41
+ rewrite:
42
+ classification: READONLY
43
+ strict: false
44
+ hook:
45
+ classification: READONLY
46
+ strict: false
47
+ hook-audit:
48
+ classification: READONLY
49
+ strict: false
50
+ verify:
51
+ classification: READONLY
52
+ strict: false
53
+ discover:
54
+ classification: READONLY
55
+ strict: false
56
+ session:
57
+ classification: READONLY
58
+ strict: false
59
+ cc-economics:
60
+ classification: READONLY
61
+ strict: false
62
+ gain:
63
+ classification: READONLY
64
+ strict: false
65
+ options:
66
+ --reset: {overrides: LOCAL_EFFECTS}
67
+ config:
68
+ classification: READONLY
69
+ strict: false
70
+ options:
71
+ --create: {overrides: LOCAL_EFFECTS}
72
+ learn:
73
+ classification: READONLY
74
+ strict: false
75
+ options:
76
+ -w: {overrides: LOCAL_EFFECTS}
77
+ --write-rules: {overrides: LOCAL_EFFECTS, aliases: [-w]}
78
+ telemetry:
79
+ classification: READONLY
80
+ strict: false
81
+ subcommands:
82
+ status:
83
+ classification: READONLY
84
+ enable:
85
+ classification: LOCAL_EFFECTS
86
+ disable:
87
+ classification: LOCAL_EFFECTS
88
+ forget:
89
+ classification: LOCAL_EFFECTS
90
+
91
+ # --- rtk-native local-effects ---
92
+ init:
93
+ classification: LOCAL_EFFECTS
94
+ strict: false
95
+ trust:
96
+ classification: LOCAL_EFFECTS
97
+ strict: false
98
+ options:
99
+ --list: {overrides: READONLY}
100
+ untrust:
101
+ classification: LOCAL_EFFECTS
102
+ strict: false
103
+
104
+ # --- rtk-native delegating runners (inner command is arbitrary) ---
105
+ # `rtk run -c "<sh>"` executes a raw shell expression; `rtk run <argv>` runs argv.
106
+ run:
107
+ classification: DANGEROUS
108
+ strict: false
109
+ options:
110
+ -c: {takes_value: true}
111
+ delegates_to:
112
+ mode: flag_value_is_expression
113
+ flag: -c
114
+ proxy:
115
+ strict: false
116
+ delegates_to:
117
+ mode: rest_are_argv
118
+ err:
119
+ strict: false
120
+ delegates_to:
121
+ mode: rest_are_argv
122
+ test:
123
+ strict: false
124
+ delegates_to:
125
+ mode: rest_are_argv
126
+ summary:
127
+ strict: false
128
+ delegates_to:
129
+ mode: rest_are_argv
130
+
131
+ # --- rtk-aliased filters (rtk subcommand name doesn't match a real tool) ---
132
+ # `rtk lint` runs eslint; `rtk format` is a universal format checker.
133
+ lint:
134
+ classification: READONLY
135
+ strict: false
136
+ options:
137
+ --fix: {overrides: LOCAL_EFFECTS}
138
+ format:
139
+ classification: READONLY
140
+ strict: false
@@ -0,0 +1,113 @@
1
+ # $schema: ../../../schemas/command.schema.json
2
+ command: slack
3
+ description: "Slack CLI (https://github.com/fprochazka/slackcli) — interact with Slack workspaces"
4
+ strict: false
5
+ global_options:
6
+ --help: {overrides: READONLY}
7
+ -o: {takes_value: true}
8
+ --org: {takes_value: true, aliases: [-o]}
9
+ -c: {takes_value: true}
10
+ --config: {takes_value: true, aliases: [-c]}
11
+ -v: {}
12
+ --verbose: {}
13
+
14
+ subcommands:
15
+ # ── Resolve ───────────────────────────────────────────────────────
16
+ resolve:
17
+ classification: READONLY
18
+ strict: false
19
+
20
+ # ── Config ────────────────────────────────────────────────────────
21
+ config:
22
+ classification: READONLY
23
+ strict: false
24
+
25
+ # ── Conversations ─────────────────────────────────────────────────
26
+ conversations:
27
+ subcommands:
28
+ list:
29
+ classification: READONLY
30
+ strict: false
31
+
32
+ # ── Messages ──────────────────────────────────────────────────────
33
+ messages:
34
+ subcommands:
35
+ list:
36
+ classification: READONLY
37
+ strict: false
38
+ send:
39
+ classification: EXTERNAL_EFFECTS
40
+ strict: false
41
+ edit:
42
+ classification: EXTERNAL_EFFECTS
43
+ strict: false
44
+ delete:
45
+ classification: DANGEROUS
46
+ strict: false
47
+
48
+ # ── Reactions ─────────────────────────────────────────────────────
49
+ reactions:
50
+ subcommands:
51
+ add:
52
+ classification: EXTERNAL_EFFECTS
53
+ strict: false
54
+ remove:
55
+ classification: EXTERNAL_EFFECTS
56
+ strict: false
57
+
58
+ # ── Pins ──────────────────────────────────────────────────────────
59
+ pins:
60
+ subcommands:
61
+ list:
62
+ classification: READONLY
63
+ strict: false
64
+ add:
65
+ classification: EXTERNAL_EFFECTS
66
+ strict: false
67
+ remove:
68
+ classification: EXTERNAL_EFFECTS
69
+ strict: false
70
+
71
+ # ── Scheduled ─────────────────────────────────────────────────────
72
+ scheduled:
73
+ subcommands:
74
+ list:
75
+ classification: READONLY
76
+ strict: false
77
+ create:
78
+ classification: EXTERNAL_EFFECTS
79
+ strict: false
80
+ delete:
81
+ classification: DANGEROUS
82
+ strict: false
83
+
84
+ # ── Search ────────────────────────────────────────────────────────
85
+ search:
86
+ subcommands:
87
+ messages:
88
+ classification: READONLY
89
+ strict: false
90
+ files:
91
+ classification: READONLY
92
+ strict: false
93
+
94
+ # ── Users ─────────────────────────────────────────────────────────
95
+ users:
96
+ subcommands:
97
+ list:
98
+ classification: READONLY
99
+ strict: false
100
+ search:
101
+ classification: READONLY
102
+ strict: false
103
+ get:
104
+ classification: READONLY
105
+ strict: false
106
+
107
+ # ── Files ─────────────────────────────────────────────────────────
108
+ files:
109
+ subcommands:
110
+ download:
111
+ classification: LOCAL_EFFECTS
112
+ risk: LOW
113
+ strict: false