bash-classify 0.1.2__tar.gz → 0.1.4__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 (172) hide show
  1. {bash_classify-0.1.2 → bash_classify-0.1.4}/.claude-plugin/marketplace.json +5 -5
  2. {bash_classify-0.1.2 → bash_classify-0.1.4}/PKG-INFO +6 -2
  3. {bash_classify-0.1.2 → bash_classify-0.1.4}/README.md +5 -1
  4. {bash_classify-0.1.2 → bash_classify-0.1.4}/coding-agent-plugins/claude-code/.claude-plugin/plugin.json +1 -1
  5. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/git.yaml +7 -0
  6. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/kubectl.yaml +16 -0
  7. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/poetry.yaml +12 -0
  8. bash_classify-0.1.4/src/bash_classify/commands/pytest.yaml +5 -0
  9. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/python.yaml +5 -0
  10. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/python3.yaml +5 -0
  11. bash_classify-0.1.4/src/bash_classify/commands/rg.yaml +5 -0
  12. bash_classify-0.1.4/src/bash_classify/commands/ruff.yaml +25 -0
  13. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/uv.yaml +19 -0
  14. {bash_classify-0.1.2 → bash_classify-0.1.4}/tests/test_real_world.py +4 -4
  15. {bash_classify-0.1.2 → bash_classify-0.1.4}/.claude/rules/command-database.md +0 -0
  16. {bash_classify-0.1.2 → bash_classify-0.1.4}/.editorconfig +0 -0
  17. {bash_classify-0.1.2 → bash_classify-0.1.4}/.github/workflows/ci.yml +0 -0
  18. {bash_classify-0.1.2 → bash_classify-0.1.4}/.github/workflows/publish.yml +0 -0
  19. {bash_classify-0.1.2 → bash_classify-0.1.4}/.gitignore +0 -0
  20. {bash_classify-0.1.2 → bash_classify-0.1.4}/.python-version +0 -0
  21. {bash_classify-0.1.2 → bash_classify-0.1.4}/CLAUDE.md +0 -0
  22. {bash_classify-0.1.2 → bash_classify-0.1.4}/LICENSE +0 -0
  23. {bash_classify-0.1.2 → bash_classify-0.1.4}/SPEC.md +0 -0
  24. {bash_classify-0.1.2 → bash_classify-0.1.4}/coding-agent-plugins/claude-code/hooks/classify-bash.sh +0 -0
  25. {bash_classify-0.1.2 → bash_classify-0.1.4}/coding-agent-plugins/claude-code/hooks/hooks.json +0 -0
  26. {bash_classify-0.1.2 → bash_classify-0.1.4}/docs/classification-guidance.md +0 -0
  27. {bash_classify-0.1.2 → bash_classify-0.1.4}/pyproject.toml +0 -0
  28. {bash_classify-0.1.2 → bash_classify-0.1.4}/ruff.toml +0 -0
  29. {bash_classify-0.1.2 → bash_classify-0.1.4}/schemas/command.schema.json +0 -0
  30. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/__init__.py +0 -0
  31. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/__main__.py +0 -0
  32. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/classifier.py +0 -0
  33. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/cli.py +0 -0
  34. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/apt.yaml +0 -0
  35. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/awk.yaml +0 -0
  36. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/basename.yaml +0 -0
  37. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/bash.yaml +0 -0
  38. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/brew.yaml +0 -0
  39. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/builtin.yaml +0 -0
  40. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/cargo.yaml +0 -0
  41. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/cat.yaml +0 -0
  42. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/chgrp.yaml +0 -0
  43. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/chmod.yaml +0 -0
  44. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/chown.yaml +0 -0
  45. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/column.yaml +0 -0
  46. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/comm.yaml +0 -0
  47. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/command.yaml +0 -0
  48. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/cp.yaml +0 -0
  49. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/curl.yaml +0 -0
  50. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/cut.yaml +0 -0
  51. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/date.yaml +0 -0
  52. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/df.yaml +0 -0
  53. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/diff.yaml +0 -0
  54. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/dig.yaml +0 -0
  55. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/dirname.yaml +0 -0
  56. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/docker.yaml +0 -0
  57. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/du.yaml +0 -0
  58. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/echo.yaml +0 -0
  59. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/env.yaml +0 -0
  60. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/expand.yaml +0 -0
  61. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/false.yaml +0 -0
  62. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/file.yaml +0 -0
  63. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/find.yaml +0 -0
  64. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/fmt.yaml +0 -0
  65. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/fold.yaml +0 -0
  66. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/free.yaml +0 -0
  67. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/gawk.yaml +0 -0
  68. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/go.yaml +0 -0
  69. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/grep.yaml +0 -0
  70. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/groups.yaml +0 -0
  71. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/gunzip.yaml +0 -0
  72. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/gzip.yaml +0 -0
  73. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/head.yaml +0 -0
  74. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/helm.yaml +0 -0
  75. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/hostname.yaml +0 -0
  76. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/id.yaml +0 -0
  77. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/install.yaml +0 -0
  78. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/join.yaml +0 -0
  79. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/journalctl.yaml +0 -0
  80. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/jq.yaml +0 -0
  81. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/kill.yaml +0 -0
  82. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/killall.yaml +0 -0
  83. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/less.yaml +0 -0
  84. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/ln.yaml +0 -0
  85. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/ls.yaml +0 -0
  86. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/make.yaml +0 -0
  87. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/md5sum.yaml +0 -0
  88. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/mkdir.yaml +0 -0
  89. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/more.yaml +0 -0
  90. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/mv.yaml +0 -0
  91. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/netstat.yaml +0 -0
  92. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/nice.yaml +0 -0
  93. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/nl.yaml +0 -0
  94. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/node.yaml +0 -0
  95. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/nohup.yaml +0 -0
  96. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/npm.yaml +0 -0
  97. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/nslookup.yaml +0 -0
  98. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/paste.yaml +0 -0
  99. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/ping.yaml +0 -0
  100. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/pip.yaml +0 -0
  101. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/pip3.yaml +0 -0
  102. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/pkill.yaml +0 -0
  103. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/printenv.yaml +0 -0
  104. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/printf.yaml +0 -0
  105. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/ps.yaml +0 -0
  106. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/pwd.yaml +0 -0
  107. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/read.yaml +0 -0
  108. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/readlink.yaml +0 -0
  109. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/realpath.yaml +0 -0
  110. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/rev.yaml +0 -0
  111. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/rm.yaml +0 -0
  112. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/rsync.yaml +0 -0
  113. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/scp.yaml +0 -0
  114. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/sed.yaml +0 -0
  115. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/seq.yaml +0 -0
  116. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/sh.yaml +0 -0
  117. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/sha1sum.yaml +0 -0
  118. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/sha256sum.yaml +0 -0
  119. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/sort.yaml +0 -0
  120. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/ss.yaml +0 -0
  121. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/ssh.yaml +0 -0
  122. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/stat.yaml +0 -0
  123. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/strace.yaml +0 -0
  124. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/sudo.yaml +0 -0
  125. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/systemctl.yaml +0 -0
  126. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/tac.yaml +0 -0
  127. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/tail.yaml +0 -0
  128. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/tar.yaml +0 -0
  129. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/tee.yaml +0 -0
  130. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/terraform.yaml +0 -0
  131. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/test.yaml +0 -0
  132. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/time.yaml +0 -0
  133. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/timeout.yaml +0 -0
  134. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/top.yaml +0 -0
  135. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/touch.yaml +0 -0
  136. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/tr.yaml +0 -0
  137. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/traceroute.yaml +0 -0
  138. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/true.yaml +0 -0
  139. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/type.yaml +0 -0
  140. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/uname.yaml +0 -0
  141. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/unexpand.yaml +0 -0
  142. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/uniq.yaml +0 -0
  143. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/unzip.yaml +0 -0
  144. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/uptime.yaml +0 -0
  145. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/wc.yaml +0 -0
  146. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/wget.yaml +0 -0
  147. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/whereis.yaml +0 -0
  148. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/which.yaml +0 -0
  149. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/whoami.yaml +0 -0
  150. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/xargs.yaml +0 -0
  151. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/xmllint.yaml +0 -0
  152. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/yes.yaml +0 -0
  153. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/yq.yaml +0 -0
  154. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/zip.yaml +0 -0
  155. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/commands/zsh.yaml +0 -0
  156. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/database.py +0 -0
  157. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/matcher.py +0 -0
  158. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/models.py +0 -0
  159. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/parser.py +0 -0
  160. {bash_classify-0.1.2 → bash_classify-0.1.4}/src/bash_classify/py.typed +0 -0
  161. {bash_classify-0.1.2 → bash_classify-0.1.4}/tests/__init__.py +0 -0
  162. {bash_classify-0.1.2 → bash_classify-0.1.4}/tests/conftest.py +0 -0
  163. {bash_classify-0.1.2 → bash_classify-0.1.4}/tests/test_classifier.py +0 -0
  164. {bash_classify-0.1.2 → bash_classify-0.1.4}/tests/test_cli.py +0 -0
  165. {bash_classify-0.1.2 → bash_classify-0.1.4}/tests/test_cli_serialization.py +0 -0
  166. {bash_classify-0.1.2 → bash_classify-0.1.4}/tests/test_database.py +0 -0
  167. {bash_classify-0.1.2 → bash_classify-0.1.4}/tests/test_matcher.py +0 -0
  168. {bash_classify-0.1.2 → bash_classify-0.1.4}/tests/test_models.py +0 -0
  169. {bash_classify-0.1.2 → bash_classify-0.1.4}/tests/test_parser.py +0 -0
  170. {bash_classify-0.1.2 → bash_classify-0.1.4}/tests/test_schema.py +0 -0
  171. {bash_classify-0.1.2 → bash_classify-0.1.4}/tests/test_smoke.py +0 -0
  172. {bash_classify-0.1.2 → bash_classify-0.1.4}/uv.lock +0 -0
@@ -1,19 +1,19 @@
1
1
  {
2
- "name": "bash-classify",
2
+ "name": "fprochazka-bash-classify",
3
3
  "description": "Bash command classifier with Claude Code plugin for auto-allowing readonly commands",
4
- "metadata": {
5
- "pluginRoot": "./coding-agent-plugins/claude-code"
4
+ "owner": {
5
+ "name": "Filip Procházka"
6
6
  },
7
7
  "plugins": [
8
8
  {
9
9
  "name": "bash-classify-hook",
10
10
  "description": "Auto-allows readonly bash commands in Claude Code using bash-classify",
11
- "version": "0.1.2",
11
+ "version": "0.1.4",
12
12
  "author": {
13
13
  "name": "Filip Procházka",
14
14
  "url": "https://github.com/fprochazka"
15
15
  },
16
- "source": ".",
16
+ "source": "./coding-agent-plugins/claude-code",
17
17
  "category": "security",
18
18
  "homepage": "https://github.com/fprochazka/bash-classify"
19
19
  }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: bash-classify
3
- Version: 0.1.2
3
+ Version: 0.1.4
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
@@ -145,11 +145,15 @@ Before tagging, bump the version in both plugin manifest files:
145
145
  - `coding-agent-plugins/claude-code/.claude-plugin/plugin.json`
146
146
  - `.claude-plugin/marketplace.json`
147
147
 
148
- Then tag and push:
148
+ Wait for CI to pass on master, then tag, push, and create a GitHub release:
149
149
 
150
150
  ```bash
151
+ # Review changes since last release
152
+ git log $(git describe --tags --abbrev=0)..HEAD --oneline
153
+
151
154
  git tag v<version>
152
155
  git push origin v<version>
156
+ gh release create v<version> --title "v<version>" --notes "..."
153
157
  ```
154
158
 
155
159
  The `publish.yml` GitHub Action builds and publishes to PyPI automatically via trusted publishing.
@@ -116,11 +116,15 @@ Before tagging, bump the version in both plugin manifest files:
116
116
  - `coding-agent-plugins/claude-code/.claude-plugin/plugin.json`
117
117
  - `.claude-plugin/marketplace.json`
118
118
 
119
- Then tag and push:
119
+ Wait for CI to pass on master, then tag, push, and create a GitHub release:
120
120
 
121
121
  ```bash
122
+ # Review changes since last release
123
+ git log $(git describe --tags --abbrev=0)..HEAD --oneline
124
+
122
125
  git tag v<version>
123
126
  git push origin v<version>
127
+ gh release create v<version> --title "v<version>" --notes "..."
124
128
  ```
125
129
 
126
130
  The `publish.yml` GitHub Action builds and publishes to PyPI automatically via trusted publishing.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bash-classify-hook",
3
- "version": "0.1.2",
3
+ "version": "0.1.4",
4
4
  "description": "Auto-allows readonly bash commands in Claude Code using bash-classify",
5
5
  "author": {
6
6
  "name": "Filip Prochazka"
@@ -88,6 +88,10 @@ subcommands:
88
88
  branch:
89
89
  classification: WRITE
90
90
  options:
91
+ -a: {}
92
+ --all: {aliases: [-a]}
93
+ -v: {}
94
+ --verbose: {aliases: [-v]}
91
95
  -l: {overrides: READONLY}
92
96
  --list: {overrides: READONLY, aliases: [-l]}
93
97
  -d: {overrides: WRITE}
@@ -104,6 +108,7 @@ subcommands:
104
108
  --unset-upstream: {overrides: WRITE}
105
109
  remote:
106
110
  classification: READONLY
111
+ strict: false
107
112
  subcommands:
108
113
  add:
109
114
  classification: WRITE
@@ -439,3 +444,5 @@ subcommands:
439
444
  fsck:
440
445
  classification: READONLY
441
446
  strict: false
447
+
448
+ # --- Misc ---
@@ -188,3 +188,19 @@ subcommands:
188
188
  classification: DANGEROUS
189
189
  delete-cluster:
190
190
  classification: DANGEROUS
191
+
192
+ diff:
193
+ classification: READONLY
194
+ strict: false
195
+
196
+ kustomize:
197
+ classification: READONLY
198
+ strict: false
199
+
200
+ events:
201
+ classification: READONLY
202
+ strict: false
203
+
204
+ wait:
205
+ classification: READONLY
206
+ strict: false
@@ -66,6 +66,18 @@ subcommands:
66
66
  run:
67
67
  classification: DANGEROUS
68
68
  strict: false
69
+ delegates_to:
70
+ mode: rest_are_argv
71
+ subcommands:
72
+ pytest:
73
+ classification: WRITE
74
+ strict: false
75
+ ruff:
76
+ classification: WRITE
77
+ strict: false
78
+ mypy:
79
+ classification: READONLY
80
+ strict: false
69
81
  self:
70
82
  strict: false
71
83
  subcommands:
@@ -0,0 +1,5 @@
1
+ # $schema: ../../../schemas/command.schema.json
2
+ command: pytest
3
+ description: "Python testing framework"
4
+ classification: WRITE
5
+ strict: false
@@ -3,3 +3,8 @@ command: python
3
3
  description: "Python language interpreter"
4
4
  classification: DANGEROUS
5
5
  strict: false
6
+ options:
7
+ --version: {overrides: READONLY}
8
+ -V: {overrides: READONLY}
9
+ --help: {overrides: READONLY}
10
+ -h: {overrides: READONLY}
@@ -3,3 +3,8 @@ command: python3
3
3
  description: "Python 3 language interpreter"
4
4
  classification: DANGEROUS
5
5
  strict: false
6
+ options:
7
+ --version: {overrides: READONLY}
8
+ -V: {overrides: READONLY}
9
+ --help: {overrides: READONLY}
10
+ -h: {overrides: READONLY}
@@ -0,0 +1,5 @@
1
+ # $schema: ../../../schemas/command.schema.json
2
+ command: rg
3
+ description: "Recursively search directories for a regex pattern"
4
+ classification: READONLY
5
+ strict: false
@@ -0,0 +1,25 @@
1
+ # $schema: ../../../schemas/command.schema.json
2
+ command: ruff
3
+ description: "Fast Python linter and formatter"
4
+ strict: false
5
+ subcommands:
6
+ check:
7
+ classification: READONLY
8
+ strict: false
9
+ options:
10
+ --fix: {overrides: WRITE}
11
+ --fix-only: {overrides: WRITE}
12
+ format:
13
+ classification: WRITE
14
+ strict: false
15
+ options:
16
+ --check: {overrides: READONLY}
17
+ --diff: {overrides: READONLY}
18
+ version:
19
+ classification: READONLY
20
+ rule:
21
+ classification: READONLY
22
+ linter:
23
+ classification: READONLY
24
+ clean:
25
+ classification: WRITE
@@ -6,15 +6,32 @@ subcommands:
6
6
  run:
7
7
  classification: DANGEROUS
8
8
  strict: false
9
+ delegates_to:
10
+ mode: rest_are_argv
11
+ strip_assignments: true
12
+ subcommands:
13
+ pytest:
14
+ classification: WRITE
15
+ strict: false
16
+ ruff:
17
+ classification: WRITE
18
+ strict: false
19
+ mypy:
20
+ classification: READONLY
21
+ strict: false
9
22
  init:
10
23
  classification: WRITE
11
24
  strict: false
12
25
  add:
13
26
  classification: WRITE
14
27
  strict: false
28
+ options:
29
+ --dry-run: {overrides: READONLY}
15
30
  remove:
16
31
  classification: WRITE
17
32
  strict: false
33
+ options:
34
+ --dry-run: {overrides: READONLY}
18
35
  version:
19
36
  classification: READONLY
20
37
  strict: false
@@ -24,6 +41,8 @@ subcommands:
24
41
  lock:
25
42
  classification: WRITE
26
43
  strict: false
44
+ options:
45
+ --check: {overrides: READONLY}
27
46
  export:
28
47
  classification: READONLY
29
48
  strict: false
@@ -107,9 +107,9 @@ class TestBuildAndTest:
107
107
  assert result.classification == Classification.UNKNOWN
108
108
 
109
109
  def test_pytest_verbose(self, database):
110
- # uv run executes arbitrary code -> DANGEROUS
110
+ # uv run pytest is a known safe subcommand -> WRITE
111
111
  result = classify_expression("uv run pytest -v --tb=short", database)
112
- assert result.classification == Classification.DANGEROUS
112
+ assert result.classification == Classification.WRITE
113
113
 
114
114
  def test_npm_test(self, database):
115
115
  result = classify_expression("npm test", database)
@@ -125,8 +125,8 @@ class TestBuildAndTest:
125
125
 
126
126
  def test_ruff_check_and_format(self, database):
127
127
  result = classify_expression("ruff check --fix . && ruff format .", database)
128
- # ruff is not in DB -> UNKNOWN
129
- assert result.classification == Classification.UNKNOWN
128
+ # ruff check --fix is WRITE, ruff format is WRITE -> WRITE
129
+ assert result.classification == Classification.WRITE
130
130
 
131
131
  def test_make_with_target(self, database):
132
132
  result = classify_expression("make build", database)
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes