nerftools 2.0.0__tar.gz → 2.1.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 (612) hide show
  1. {nerftools-2.0.0 → nerftools-2.1.0}/.claude/agents/nerftool-manifest-reviewer.md +25 -32
  2. nerftools-2.1.0/.cspell-version +1 -0
  3. {nerftools-2.0.0 → nerftools-2.1.0}/.cspell.json +9 -18
  4. {nerftools-2.0.0 → nerftools-2.1.0}/.github/agents/nerftool-manifest-reviewer.md +25 -32
  5. nerftools-2.1.0/.github/dependabot.yml +53 -0
  6. nerftools-2.1.0/.github/workflows/ci.yml +121 -0
  7. {nerftools-2.0.0 → nerftools-2.1.0}/.github/workflows/release-please.yml +26 -13
  8. {nerftools-2.0.0 → nerftools-2.1.0}/.github/workflows/release.yml +1 -1
  9. {nerftools-2.0.0 → nerftools-2.1.0}/.gitignore +5 -0
  10. nerftools-2.1.0/.markdownlint-cli2-version +1 -0
  11. nerftools-2.1.0/.markdownlint-cli2.jsonc +16 -0
  12. nerftools-2.1.0/.node-version +1 -0
  13. nerftools-2.1.0/.prettier-version +1 -0
  14. nerftools-2.1.0/.prettierignore +17 -0
  15. nerftools-2.1.0/.release-please-manifest.json +3 -0
  16. {nerftools-2.0.0 → nerftools-2.1.0}/.rulesync/subagents/nerftool-manifest-reviewer.md +25 -32
  17. {nerftools-2.0.0 → nerftools-2.1.0}/CHANGELOG.md +41 -0
  18. {nerftools-2.0.0 → nerftools-2.1.0}/CONTRIBUTING.md +46 -25
  19. {nerftools-2.0.0 → nerftools-2.1.0}/PKG-INFO +1 -1
  20. {nerftools-2.0.0 → nerftools-2.1.0}/README.md +2 -2
  21. {nerftools-2.0.0 → nerftools-2.1.0}/docs/nerf-manifest.md +81 -53
  22. {nerftools-2.0.0 → nerftools-2.1.0}/docs/sdd/2026-04-04-nerf-refactor/frd.md +1 -2
  23. {nerftools-2.0.0 → nerftools-2.1.0}/docs/sdd/2026-04-04-nerf-refactor/hla.md +23 -23
  24. {nerftools-2.0.0 → nerftools-2.1.0}/docs/sdd/2026-04-04-nerf-refactor/manifest-spec.md +223 -245
  25. {nerftools-2.0.0 → nerftools-2.1.0}/docs/sdd/2026-04-04-nerf-refactor/plan.md +19 -18
  26. nerftools-2.1.0/nerf.yaml +25 -0
  27. nerftools-2.1.0/nerftools/__init__.py +82 -0
  28. {nerftools-2.0.0 → nerftools-2.1.0}/nerftools/builder.py +8 -5
  29. {nerftools-2.0.0 → nerftools-2.1.0}/nerftools/cli.py +87 -48
  30. {nerftools-2.0.0 → nerftools-2.1.0}/nerftools/default_manifests/README.md +4 -4
  31. nerftools-2.1.0/nerftools/default_manifests/az-account.yaml +50 -0
  32. nerftools-2.1.0/nerftools/default_manifests/az-aks.yaml +295 -0
  33. nerftools-2.1.0/nerftools/default_manifests/az-boards.yaml +683 -0
  34. nerftools-2.1.0/nerftools/default_manifests/az-cosmosdb.yaml +135 -0
  35. nerftools-2.1.0/nerftools/default_manifests/az-devops.yaml +35 -0
  36. nerftools-2.1.0/nerftools/default_manifests/az-keyvault.yaml +173 -0
  37. nerftools-2.1.0/nerftools/default_manifests/az-monitor.yaml +154 -0
  38. nerftools-2.1.0/nerftools/default_manifests/az-network.yaml +604 -0
  39. nerftools-2.1.0/nerftools/default_manifests/az-pipelines.yaml +410 -0
  40. nerftools-2.1.0/nerftools/default_manifests/az-postgres.yaml +105 -0
  41. nerftools-2.1.0/nerftools/default_manifests/az-repos.yaml +473 -0
  42. nerftools-2.1.0/nerftools/default_manifests/az-resource.yaml +113 -0
  43. nerftools-2.1.0/nerftools/default_manifests/az-role.yaml +121 -0
  44. nerftools-2.1.0/nerftools/default_manifests/az-storage.yaml +104 -0
  45. nerftools-2.1.0/nerftools/default_manifests/gh.yaml +535 -0
  46. nerftools-2.1.0/nerftools/default_manifests/git.yaml +1165 -0
  47. nerftools-2.1.0/nerftools/default_manifests/kubectl.yaml +451 -0
  48. nerftools-2.1.0/nerftools/default_manifests/nx.yaml +90 -0
  49. nerftools-2.1.0/nerftools/default_manifests/pkgrun.yaml +62 -0
  50. nerftools-2.1.0/nerftools/default_manifests/stdutils.yaml +158 -0
  51. nerftools-2.1.0/nerftools/default_manifests/tf.yaml +68 -0
  52. nerftools-2.1.0/nerftools/default_manifests/tg.yaml +159 -0
  53. nerftools-2.1.0/nerftools/default_manifests/uv.yaml +70 -0
  54. {nerftools-2.0.0 → nerftools-2.1.0}/nerftools/formats.py +133 -23
  55. {nerftools-2.0.0 → nerftools-2.1.0}/nerftools/manifest.py +20 -2
  56. nerftools-2.1.0/nerftools/nerf_report/script.sh +109 -0
  57. nerftools-2.1.0/nerftools/outdir.py +118 -0
  58. {nerftools-2.0.0 → nerftools-2.1.0}/nerftools/skill.py +9 -7
  59. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/.claude-plugin/plugin.json +1 -1
  60. nerftools-2.1.0/out/claude-plugin/.nerf-build-manifest +1 -0
  61. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/hooks/nerf-bash-hint +3 -1
  62. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-account/SKILL.md +2 -0
  63. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-aks/SKILL.md +2 -0
  64. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-boards/SKILL.md +32 -16
  65. nerftools-2.1.0/out/claude-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-area-list +163 -0
  66. nerftools-2.1.0/out/claude-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-mywi-comment +245 -0
  67. nerftools-2.1.0/out/claude-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-mywi-list +159 -0
  68. nerftools-2.1.0/out/claude-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-mywi-show +221 -0
  69. nerftools-2.1.0/out/claude-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-mywi-update +236 -0
  70. nerftools-2.1.0/out/claude-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-wi-add-parent +235 -0
  71. nerftools-2.1.0/out/claude-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-wi-comment +225 -0
  72. {nerftools-2.0.0/out/codex-plugin → nerftools-2.1.0/out/claude-plugin}/skills/nerf-az-boards/scripts/nerf-az-boards-wi-create +111 -1
  73. nerftools-2.1.0/out/claude-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-wi-list +193 -0
  74. nerftools-2.1.0/out/claude-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-wi-show +203 -0
  75. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-wi-update +111 -1
  76. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-cosmosdb/SKILL.md +2 -0
  77. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-devops/SKILL.md +2 -0
  78. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-keyvault/SKILL.md +2 -0
  79. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-monitor/SKILL.md +2 -0
  80. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-network/SKILL.md +2 -0
  81. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-pipelines/SKILL.md +26 -15
  82. nerftools-2.1.0/out/claude-plugin/skills/nerf-az-pipelines/scripts/nerf-az-pipelines-check +203 -0
  83. nerftools-2.1.0/out/claude-plugin/skills/nerf-az-pipelines/scripts/nerf-az-pipelines-list +163 -0
  84. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-pipelines/scripts/nerf-az-pipelines-run-log +111 -3
  85. nerftools-2.1.0/out/claude-plugin/skills/nerf-az-pipelines/scripts/nerf-az-pipelines-run-show +203 -0
  86. nerftools-2.1.0/out/claude-plugin/skills/nerf-az-pipelines/scripts/nerf-az-pipelines-run-timeline +256 -0
  87. nerftools-2.1.0/out/claude-plugin/skills/nerf-az-pipelines/scripts/nerf-az-pipelines-runs +163 -0
  88. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-postgres/SKILL.md +2 -0
  89. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-repos/SKILL.md +36 -20
  90. nerftools-2.1.0/out/claude-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-comments +223 -0
  91. nerftools-2.1.0/out/claude-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-create +279 -0
  92. nerftools-2.1.0/out/claude-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-edit +229 -0
  93. nerftools-2.1.0/out/claude-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-list +202 -0
  94. nerftools-2.1.0/out/claude-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-set-status +234 -0
  95. nerftools-2.1.0/out/claude-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-show +203 -0
  96. nerftools-2.1.0/out/claude-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-vote +234 -0
  97. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-resource/SKILL.md +2 -0
  98. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-role/SKILL.md +2 -0
  99. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-storage/SKILL.md +2 -0
  100. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-gh/SKILL.md +51 -3
  101. nerftools-2.1.0/out/claude-plugin/skills/nerf-gh/scripts/nerf-gh-pr-copilot-review-status +101 -0
  102. nerftools-2.1.0/out/claude-plugin/skills/nerf-gh/scripts/nerf-gh-pr-ready +82 -0
  103. nerftools-2.1.0/out/claude-plugin/skills/nerf-gh/scripts/nerf-gh-pr-request-copilot-review +75 -0
  104. {nerftools-2.0.0/out/codex-plugin → nerftools-2.1.0/out/claude-plugin}/skills/nerf-gh/scripts/nerf-gh-run-view +13 -6
  105. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/SKILL.md +2 -0
  106. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-kubectl/SKILL.md +2 -0
  107. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-nx/SKILL.md +2 -0
  108. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-pkgrun/SKILL.md +2 -0
  109. nerftools-2.1.0/out/claude-plugin/skills/nerf-report/SKILL.md +49 -0
  110. nerftools-2.1.0/out/claude-plugin/skills/nerf-report/scripts/nerf-report +109 -0
  111. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-stdutils/SKILL.md +2 -0
  112. nerftools-2.1.0/out/claude-plugin/skills/nerf-tf/SKILL.md +49 -0
  113. nerftools-2.1.0/out/claude-plugin/skills/nerf-tf/scripts/nerf-tf-validate +56 -0
  114. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-tg/SKILL.md +33 -11
  115. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-tg/scripts/nerf-tg-fmt +10 -6
  116. nerftools-2.1.0/out/claude-plugin/skills/nerf-tg/scripts/nerf-tg-fmt-all +56 -0
  117. nerftools-2.1.0/out/claude-plugin/skills/nerf-tg/scripts/nerf-tg-hcl-validate +60 -0
  118. {nerftools-2.0.0/out/codex-plugin → nerftools-2.1.0/out/claude-plugin}/skills/nerf-tg/scripts/nerf-tg-init-all +3 -3
  119. {nerftools-2.0.0/out/codex-plugin → nerftools-2.1.0/out/claude-plugin}/skills/nerf-tg/scripts/nerf-tg-output-all +3 -3
  120. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-tg/scripts/nerf-tg-plan-all +3 -3
  121. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-tg/scripts/nerf-tg-validate-all +3 -3
  122. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-uv/SKILL.md +2 -0
  123. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerftools/SKILL.md +5 -1
  124. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/.codex-plugin/plugin.json +1 -1
  125. nerftools-2.1.0/out/codex-plugin/.nerf-build-manifest +1 -0
  126. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-account/SKILL.md +2 -0
  127. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-aks/SKILL.md +2 -0
  128. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-boards/SKILL.md +32 -16
  129. nerftools-2.1.0/out/codex-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-area-list +163 -0
  130. nerftools-2.1.0/out/codex-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-mywi-comment +245 -0
  131. nerftools-2.1.0/out/codex-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-mywi-list +159 -0
  132. nerftools-2.1.0/out/codex-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-mywi-show +221 -0
  133. nerftools-2.1.0/out/codex-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-mywi-update +236 -0
  134. nerftools-2.1.0/out/codex-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-wi-add-parent +235 -0
  135. nerftools-2.1.0/out/codex-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-wi-comment +225 -0
  136. {nerftools-2.0.0/out/claude-plugin → nerftools-2.1.0/out/codex-plugin}/skills/nerf-az-boards/scripts/nerf-az-boards-wi-create +111 -1
  137. nerftools-2.1.0/out/codex-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-wi-list +193 -0
  138. nerftools-2.1.0/out/codex-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-wi-show +203 -0
  139. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-wi-update +111 -1
  140. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-cosmosdb/SKILL.md +2 -0
  141. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-devops/SKILL.md +2 -0
  142. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-keyvault/SKILL.md +2 -0
  143. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-monitor/SKILL.md +2 -0
  144. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-network/SKILL.md +2 -0
  145. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-pipelines/SKILL.md +26 -15
  146. nerftools-2.1.0/out/codex-plugin/skills/nerf-az-pipelines/scripts/nerf-az-pipelines-check +203 -0
  147. nerftools-2.1.0/out/codex-plugin/skills/nerf-az-pipelines/scripts/nerf-az-pipelines-list +163 -0
  148. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-pipelines/scripts/nerf-az-pipelines-run-log +111 -3
  149. nerftools-2.1.0/out/codex-plugin/skills/nerf-az-pipelines/scripts/nerf-az-pipelines-run-show +203 -0
  150. nerftools-2.1.0/out/codex-plugin/skills/nerf-az-pipelines/scripts/nerf-az-pipelines-run-timeline +256 -0
  151. nerftools-2.1.0/out/codex-plugin/skills/nerf-az-pipelines/scripts/nerf-az-pipelines-runs +163 -0
  152. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-postgres/SKILL.md +2 -0
  153. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-repos/SKILL.md +36 -20
  154. nerftools-2.1.0/out/codex-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-comments +223 -0
  155. nerftools-2.1.0/out/codex-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-create +279 -0
  156. nerftools-2.1.0/out/codex-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-edit +229 -0
  157. nerftools-2.1.0/out/codex-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-list +202 -0
  158. nerftools-2.1.0/out/codex-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-set-status +234 -0
  159. nerftools-2.1.0/out/codex-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-show +203 -0
  160. nerftools-2.1.0/out/codex-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-vote +234 -0
  161. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-resource/SKILL.md +2 -0
  162. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-role/SKILL.md +2 -0
  163. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-storage/SKILL.md +2 -0
  164. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-gh/SKILL.md +51 -3
  165. nerftools-2.1.0/out/codex-plugin/skills/nerf-gh/scripts/nerf-gh-pr-copilot-review-status +101 -0
  166. nerftools-2.1.0/out/codex-plugin/skills/nerf-gh/scripts/nerf-gh-pr-ready +82 -0
  167. nerftools-2.1.0/out/codex-plugin/skills/nerf-gh/scripts/nerf-gh-pr-request-copilot-review +75 -0
  168. {nerftools-2.0.0/out/claude-plugin → nerftools-2.1.0/out/codex-plugin}/skills/nerf-gh/scripts/nerf-gh-run-view +13 -6
  169. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/SKILL.md +2 -0
  170. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-kubectl/SKILL.md +2 -0
  171. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-nx/SKILL.md +2 -0
  172. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-pkgrun/SKILL.md +2 -0
  173. nerftools-2.1.0/out/codex-plugin/skills/nerf-report/SKILL.md +49 -0
  174. nerftools-2.1.0/out/codex-plugin/skills/nerf-report/scripts/nerf-report +109 -0
  175. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-stdutils/SKILL.md +2 -0
  176. nerftools-2.1.0/out/codex-plugin/skills/nerf-tf/SKILL.md +49 -0
  177. nerftools-2.1.0/out/codex-plugin/skills/nerf-tf/scripts/nerf-tf-validate +56 -0
  178. nerftools-2.1.0/out/codex-plugin/skills/nerf-tg/SKILL.md +155 -0
  179. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-tg/scripts/nerf-tg-fmt +10 -6
  180. nerftools-2.1.0/out/codex-plugin/skills/nerf-tg/scripts/nerf-tg-fmt-all +56 -0
  181. nerftools-2.1.0/out/codex-plugin/skills/nerf-tg/scripts/nerf-tg-hcl-validate +60 -0
  182. {nerftools-2.0.0/out/claude-plugin → nerftools-2.1.0/out/codex-plugin}/skills/nerf-tg/scripts/nerf-tg-init-all +3 -3
  183. {nerftools-2.0.0/out/claude-plugin → nerftools-2.1.0/out/codex-plugin}/skills/nerf-tg/scripts/nerf-tg-output-all +3 -3
  184. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-tg/scripts/nerf-tg-plan-all +3 -3
  185. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-tg/scripts/nerf-tg-validate-all +3 -3
  186. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-uv/SKILL.md +2 -0
  187. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerftools/SKILL.md +5 -1
  188. {nerftools-2.0.0 → nerftools-2.1.0}/pyproject.toml +1 -1
  189. nerftools-2.1.0/rulesync.jsonc +11 -0
  190. nerftools-2.1.0/scripts/_common.sh +75 -0
  191. nerftools-2.1.0/scripts/generate-plugins.sh +61 -0
  192. nerftools-2.1.0/scripts/lint-files.sh +140 -0
  193. nerftools-2.0.0/scripts/rulesync-upgen.bash → nerftools-2.1.0/scripts/rulesync-upgen.sh +1 -1
  194. nerftools-2.1.0/tests/__init__.py +0 -0
  195. {nerftools-2.0.0 → nerftools-2.1.0}/tests/test_builder.py +106 -0
  196. {nerftools-2.0.0 → nerftools-2.1.0}/tests/test_formats.py +36 -3
  197. {nerftools-2.0.0 → nerftools-2.1.0}/tests/test_manifest.py +43 -0
  198. nerftools-2.1.0/tests/test_nerf_report.py +251 -0
  199. {nerftools-2.0.0 → nerftools-2.1.0}/tests/test_skill.py +1 -0
  200. {nerftools-2.0.0 → nerftools-2.1.0}/uv.lock +1 -1
  201. nerftools-2.0.0/.github/workflows/ci.yml +0 -91
  202. nerftools-2.0.0/.markdownlint-cli2.jsonc +0 -16
  203. nerftools-2.0.0/.release-please-manifest.json +0 -3
  204. nerftools-2.0.0/nerf.yaml +0 -25
  205. nerftools-2.0.0/nerftools/__init__.py +0 -35
  206. nerftools-2.0.0/nerftools/default_manifests/az-account.yaml +0 -50
  207. nerftools-2.0.0/nerftools/default_manifests/az-aks.yaml +0 -295
  208. nerftools-2.0.0/nerftools/default_manifests/az-boards.yaml +0 -480
  209. nerftools-2.0.0/nerftools/default_manifests/az-cosmosdb.yaml +0 -135
  210. nerftools-2.0.0/nerftools/default_manifests/az-devops.yaml +0 -35
  211. nerftools-2.0.0/nerftools/default_manifests/az-keyvault.yaml +0 -173
  212. nerftools-2.0.0/nerftools/default_manifests/az-monitor.yaml +0 -154
  213. nerftools-2.0.0/nerftools/default_manifests/az-network.yaml +0 -604
  214. nerftools-2.0.0/nerftools/default_manifests/az-pipelines.yaml +0 -297
  215. nerftools-2.0.0/nerftools/default_manifests/az-postgres.yaml +0 -105
  216. nerftools-2.0.0/nerftools/default_manifests/az-repos.yaml +0 -301
  217. nerftools-2.0.0/nerftools/default_manifests/az-resource.yaml +0 -113
  218. nerftools-2.0.0/nerftools/default_manifests/az-role.yaml +0 -121
  219. nerftools-2.0.0/nerftools/default_manifests/az-storage.yaml +0 -104
  220. nerftools-2.0.0/nerftools/default_manifests/gh.yaml +0 -417
  221. nerftools-2.0.0/nerftools/default_manifests/git.yaml +0 -1156
  222. nerftools-2.0.0/nerftools/default_manifests/kubectl.yaml +0 -451
  223. nerftools-2.0.0/nerftools/default_manifests/nx.yaml +0 -90
  224. nerftools-2.0.0/nerftools/default_manifests/pkgrun.yaml +0 -62
  225. nerftools-2.0.0/nerftools/default_manifests/stdutils.yaml +0 -158
  226. nerftools-2.0.0/nerftools/default_manifests/tf.yaml +0 -40
  227. nerftools-2.0.0/nerftools/default_manifests/tg.yaml +0 -109
  228. nerftools-2.0.0/nerftools/default_manifests/uv.yaml +0 -70
  229. nerftools-2.0.0/out/claude-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-area-list +0 -53
  230. nerftools-2.0.0/out/claude-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-mywi-comment +0 -137
  231. nerftools-2.0.0/out/claude-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-mywi-list +0 -51
  232. nerftools-2.0.0/out/claude-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-mywi-show +0 -113
  233. nerftools-2.0.0/out/claude-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-mywi-update +0 -131
  234. nerftools-2.0.0/out/claude-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-wi-add-parent +0 -125
  235. nerftools-2.0.0/out/claude-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-wi-comment +0 -115
  236. nerftools-2.0.0/out/claude-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-wi-list +0 -83
  237. nerftools-2.0.0/out/claude-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-wi-show +0 -93
  238. nerftools-2.0.0/out/claude-plugin/skills/nerf-az-pipelines/scripts/nerf-az-pipelines-check +0 -93
  239. nerftools-2.0.0/out/claude-plugin/skills/nerf-az-pipelines/scripts/nerf-az-pipelines-list +0 -53
  240. nerftools-2.0.0/out/claude-plugin/skills/nerf-az-pipelines/scripts/nerf-az-pipelines-run-show +0 -93
  241. nerftools-2.0.0/out/claude-plugin/skills/nerf-az-pipelines/scripts/nerf-az-pipelines-run-timeline +0 -148
  242. nerftools-2.0.0/out/claude-plugin/skills/nerf-az-pipelines/scripts/nerf-az-pipelines-runs +0 -53
  243. nerftools-2.0.0/out/claude-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-comments +0 -116
  244. nerftools-2.0.0/out/claude-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-create +0 -129
  245. nerftools-2.0.0/out/claude-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-edit +0 -105
  246. nerftools-2.0.0/out/claude-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-list +0 -92
  247. nerftools-2.0.0/out/claude-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-set-status +0 -124
  248. nerftools-2.0.0/out/claude-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-show +0 -93
  249. nerftools-2.0.0/out/claude-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-vote +0 -124
  250. nerftools-2.0.0/out/claude-plugin/skills/nerf-tf/SKILL.md +0 -33
  251. nerftools-2.0.0/out/claude-plugin/skills/nerf-tg/scripts/nerf-tg-fmt-all +0 -52
  252. nerftools-2.0.0/out/codex-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-area-list +0 -53
  253. nerftools-2.0.0/out/codex-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-mywi-comment +0 -137
  254. nerftools-2.0.0/out/codex-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-mywi-list +0 -51
  255. nerftools-2.0.0/out/codex-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-mywi-show +0 -113
  256. nerftools-2.0.0/out/codex-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-mywi-update +0 -131
  257. nerftools-2.0.0/out/codex-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-wi-add-parent +0 -125
  258. nerftools-2.0.0/out/codex-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-wi-comment +0 -115
  259. nerftools-2.0.0/out/codex-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-wi-list +0 -83
  260. nerftools-2.0.0/out/codex-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-wi-show +0 -93
  261. nerftools-2.0.0/out/codex-plugin/skills/nerf-az-pipelines/scripts/nerf-az-pipelines-check +0 -93
  262. nerftools-2.0.0/out/codex-plugin/skills/nerf-az-pipelines/scripts/nerf-az-pipelines-list +0 -53
  263. nerftools-2.0.0/out/codex-plugin/skills/nerf-az-pipelines/scripts/nerf-az-pipelines-run-show +0 -93
  264. nerftools-2.0.0/out/codex-plugin/skills/nerf-az-pipelines/scripts/nerf-az-pipelines-run-timeline +0 -148
  265. nerftools-2.0.0/out/codex-plugin/skills/nerf-az-pipelines/scripts/nerf-az-pipelines-runs +0 -53
  266. nerftools-2.0.0/out/codex-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-comments +0 -116
  267. nerftools-2.0.0/out/codex-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-create +0 -129
  268. nerftools-2.0.0/out/codex-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-edit +0 -105
  269. nerftools-2.0.0/out/codex-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-list +0 -92
  270. nerftools-2.0.0/out/codex-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-set-status +0 -124
  271. nerftools-2.0.0/out/codex-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-show +0 -93
  272. nerftools-2.0.0/out/codex-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-vote +0 -124
  273. nerftools-2.0.0/out/codex-plugin/skills/nerf-tf/SKILL.md +0 -33
  274. nerftools-2.0.0/out/codex-plugin/skills/nerf-tg/SKILL.md +0 -133
  275. nerftools-2.0.0/out/codex-plugin/skills/nerf-tg/scripts/nerf-tg-fmt-all +0 -52
  276. nerftools-2.0.0/rulesync.jsonc +0 -11
  277. {nerftools-2.0.0 → nerftools-2.1.0}/.agents/plugins/marketplace.json +0 -0
  278. {nerftools-2.0.0 → nerftools-2.1.0}/.claude-plugin/marketplace.json +0 -0
  279. {nerftools-2.0.0 → nerftools-2.1.0}/.editorconfig +0 -0
  280. {nerftools-2.0.0 → nerftools-2.1.0}/.prettierrc +0 -0
  281. {nerftools-2.0.0 → nerftools-2.1.0}/.python-version +0 -0
  282. {nerftools-2.0.0 → nerftools-2.1.0}/.rulesync-version +0 -0
  283. {nerftools-2.0.0 → nerftools-2.1.0}/LICENSE +0 -0
  284. {nerftools-2.0.0 → nerftools-2.1.0}/docs/sdd/2026-04-04-nerf-refactor/locked.md +0 -0
  285. {nerftools-2.0.0 → nerftools-2.1.0}/nerftools/config.py +0 -0
  286. {nerftools-2.0.0 → nerftools-2.1.0}/nerftools/default_manifests/__init__.py +0 -0
  287. {nerftools-2.0.0/nerftools/nerfctl → nerftools-2.1.0/nerftools/nerf_report}/__init__.py +0 -0
  288. {nerftools-2.0.0/tests → nerftools-2.1.0/nerftools/nerfctl}/__init__.py +0 -0
  289. {nerftools-2.0.0 → nerftools-2.1.0}/nerftools/nerfctl/claude/grant-allow.sh +0 -0
  290. {nerftools-2.0.0 → nerftools-2.1.0}/nerftools/nerfctl/claude/grant-by-threat.sh +0 -0
  291. {nerftools-2.0.0 → nerftools-2.1.0}/nerftools/nerfctl/claude/grant-deny.sh +0 -0
  292. {nerftools-2.0.0 → nerftools-2.1.0}/nerftools/nerfctl/claude/grant-list.sh +0 -0
  293. {nerftools-2.0.0 → nerftools-2.1.0}/nerftools/nerfctl/claude/grant-reset.sh +0 -0
  294. {nerftools-2.0.0 → nerftools-2.1.0}/nerftools/rendering.py +0 -0
  295. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/hooks/hooks.json +0 -0
  296. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/hooks/nerf-session-start +0 -0
  297. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/scripts/nerfctl-grant-allow +0 -0
  298. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/scripts/nerfctl-grant-by-threat +0 -0
  299. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/scripts/nerfctl-grant-deny +0 -0
  300. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/scripts/nerfctl-grant-list +0 -0
  301. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/scripts/nerfctl-grant-reset +0 -0
  302. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-account/scripts/nerf-az-account-list +0 -0
  303. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-account/scripts/nerf-az-account-set +0 -0
  304. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-account/scripts/nerf-az-account-show +0 -0
  305. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-aks/scripts/nerf-az-aks-command-invoke +0 -0
  306. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-aks/scripts/nerf-az-aks-get-credentials +0 -0
  307. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-aks/scripts/nerf-az-aks-get-credentials-admin +0 -0
  308. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-aks/scripts/nerf-az-aks-get-versions +0 -0
  309. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-aks/scripts/nerf-az-aks-list +0 -0
  310. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-aks/scripts/nerf-az-aks-nodepool-list +0 -0
  311. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-aks/scripts/nerf-az-aks-nodepool-show +0 -0
  312. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-aks/scripts/nerf-az-aks-show +0 -0
  313. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-cosmosdb/scripts/nerf-az-cosmosdb-database-list +0 -0
  314. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-cosmosdb/scripts/nerf-az-cosmosdb-list +0 -0
  315. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-cosmosdb/scripts/nerf-az-cosmosdb-network-rule-list +0 -0
  316. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-cosmosdb/scripts/nerf-az-cosmosdb-show +0 -0
  317. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-devops/scripts/nerf-az-devops-set-default-project +0 -0
  318. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-keyvault/scripts/nerf-az-keyvault-list +0 -0
  319. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-keyvault/scripts/nerf-az-keyvault-network-rule-list +0 -0
  320. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-keyvault/scripts/nerf-az-keyvault-secret-list +0 -0
  321. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-keyvault/scripts/nerf-az-keyvault-secret-stats +0 -0
  322. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-keyvault/scripts/nerf-az-keyvault-show +0 -0
  323. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-monitor/scripts/nerf-az-monitor-activity-log +0 -0
  324. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-monitor/scripts/nerf-az-monitor-diagnostic-settings-list +0 -0
  325. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-monitor/scripts/nerf-az-monitor-metrics-list +0 -0
  326. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-network/scripts/nerf-az-network-nic-show +0 -0
  327. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-network/scripts/nerf-az-network-nsg-list +0 -0
  328. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-network/scripts/nerf-az-network-nsg-show +0 -0
  329. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-network/scripts/nerf-az-network-private-dns-link-list +0 -0
  330. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-network/scripts/nerf-az-network-private-dns-link-show +0 -0
  331. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-network/scripts/nerf-az-network-private-dns-record-list +0 -0
  332. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-network/scripts/nerf-az-network-private-dns-zone-list +0 -0
  333. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-network/scripts/nerf-az-network-private-dns-zone-show +0 -0
  334. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-network/scripts/nerf-az-network-private-endpoint-list +0 -0
  335. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-network/scripts/nerf-az-network-private-endpoint-show +0 -0
  336. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-network/scripts/nerf-az-network-private-link-resource-list +0 -0
  337. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-network/scripts/nerf-az-network-public-ip-list +0 -0
  338. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-network/scripts/nerf-az-network-public-ip-show +0 -0
  339. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-network/scripts/nerf-az-network-route-table-show +0 -0
  340. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-network/scripts/nerf-az-network-subnet-show +0 -0
  341. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-network/scripts/nerf-az-network-vnet-list +0 -0
  342. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-network/scripts/nerf-az-network-vnet-peering-list +0 -0
  343. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-network/scripts/nerf-az-network-vnet-peering-show +0 -0
  344. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-network/scripts/nerf-az-network-vnet-show +0 -0
  345. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-postgres/scripts/nerf-az-postgres-flexible-server-firewall-rule-list +0 -0
  346. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-postgres/scripts/nerf-az-postgres-flexible-server-list +0 -0
  347. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-postgres/scripts/nerf-az-postgres-flexible-server-show +0 -0
  348. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-resource/scripts/nerf-az-group-list +0 -0
  349. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-resource/scripts/nerf-az-group-show +0 -0
  350. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-resource/scripts/nerf-az-resource-list +0 -0
  351. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-resource/scripts/nerf-az-resource-show +0 -0
  352. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-role/scripts/nerf-az-role-assignment-by-id +0 -0
  353. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-role/scripts/nerf-az-role-assignment-list +0 -0
  354. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-role/scripts/nerf-az-role-definition-list +0 -0
  355. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-storage/scripts/nerf-az-storage-account-list +0 -0
  356. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-storage/scripts/nerf-az-storage-account-network-rule-list +0 -0
  357. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-storage/scripts/nerf-az-storage-account-show +0 -0
  358. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-gh/scripts/nerf-gh-issue-comment +0 -0
  359. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-gh/scripts/nerf-gh-issue-create +0 -0
  360. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-gh/scripts/nerf-gh-issue-list +0 -0
  361. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-gh/scripts/nerf-gh-issue-view +0 -0
  362. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-gh/scripts/nerf-gh-pr-create +0 -0
  363. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-gh/scripts/nerf-gh-pr-diff +0 -0
  364. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-gh/scripts/nerf-gh-pr-inline-comments +0 -0
  365. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-gh/scripts/nerf-gh-pr-list +0 -0
  366. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-gh/scripts/nerf-gh-pr-review-comments +0 -0
  367. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-gh/scripts/nerf-gh-pr-reviews +0 -0
  368. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-gh/scripts/nerf-gh-pr-thread-comment +0 -0
  369. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-gh/scripts/nerf-gh-pr-thread-comments +0 -0
  370. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-gh/scripts/nerf-gh-pr-view +0 -0
  371. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-gh/scripts/nerf-gh-run-list +0 -0
  372. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-add +0 -0
  373. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-blame +0 -0
  374. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-branch-checkout-remote +0 -0
  375. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-branch-current +0 -0
  376. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-branch-delete-merged +0 -0
  377. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-branch-list-local +0 -0
  378. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-branch-list-remote +0 -0
  379. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-cherry-pick +0 -0
  380. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-commit +0 -0
  381. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-commit-amend +0 -0
  382. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-create-branch +0 -0
  383. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-diff +0 -0
  384. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-fetch +0 -0
  385. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-log +0 -0
  386. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-ls-remote +0 -0
  387. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-merge-no-ff +0 -0
  388. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-mv +0 -0
  389. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-pull +0 -0
  390. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-push-branch +0 -0
  391. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-push-main +0 -0
  392. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-rebase-abort +0 -0
  393. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-rebase-continue +0 -0
  394. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-rebase-unpushed +0 -0
  395. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-reflog +0 -0
  396. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-remote-list +0 -0
  397. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-reset-hard-last +0 -0
  398. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-reset-unpushed +0 -0
  399. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-restore-staged +0 -0
  400. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-restore-worktree +0 -0
  401. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-revert +0 -0
  402. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-rm +0 -0
  403. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-show +0 -0
  404. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-stash-drop +0 -0
  405. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-stash-list +0 -0
  406. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-stash-pop +0 -0
  407. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-stash-push +0 -0
  408. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-status +0 -0
  409. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-submodule-status +0 -0
  410. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-switch +0 -0
  411. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-tag +0 -0
  412. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-tag-push +0 -0
  413. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-api-resources +0 -0
  414. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-api-versions +0 -0
  415. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-cluster-info +0 -0
  416. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-config-current-context +0 -0
  417. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-config-get-contexts +0 -0
  418. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-config-use-context +0 -0
  419. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-describe +0 -0
  420. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-exec +0 -0
  421. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-explain +0 -0
  422. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-get +0 -0
  423. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-get-secrets +0 -0
  424. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-logs +0 -0
  425. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-port-forward +0 -0
  426. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-rollout-restart +0 -0
  427. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-top-nodes +0 -0
  428. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-top-pods +0 -0
  429. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-version +0 -0
  430. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-nx/scripts/nerf-nx-affected +0 -0
  431. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-nx/scripts/nerf-nx-graph +0 -0
  432. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-nx/scripts/nerf-nx-reset +0 -0
  433. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-nx/scripts/nerf-nx-run +0 -0
  434. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-nx/scripts/nerf-nx-show-project +0 -0
  435. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-nx/scripts/nerf-nx-show-projects +0 -0
  436. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-pkgrun/scripts/nerf-pkgrun-cspell +0 -0
  437. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-pkgrun/scripts/nerf-pkgrun-markdownlint +0 -0
  438. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-pkgrun/scripts/nerf-pkgrun-prettier +0 -0
  439. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-stdutils/scripts/nerf-find +0 -0
  440. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-stdutils/scripts/nerf-find-cwd +0 -0
  441. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-stdutils/scripts/nerf-grep +0 -0
  442. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-stdutils/scripts/nerf-grep-recursive-cwd +0 -0
  443. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-tf/scripts/nerf-tf-fmt +0 -0
  444. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-tg/scripts/nerf-tg-init +0 -0
  445. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-tg/scripts/nerf-tg-output +0 -0
  446. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-tg/scripts/nerf-tg-plan +0 -0
  447. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-tg/scripts/nerf-tg-validate +0 -0
  448. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-uv/scripts/nerf-uv-mypy +0 -0
  449. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-uv/scripts/nerf-uv-pytest +0 -0
  450. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-uv/scripts/nerf-uv-ruff-check +0 -0
  451. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-uv/scripts/nerf-uv-ruff-fix +0 -0
  452. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerfctl-grant-allow/SKILL.md +0 -0
  453. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerfctl-grant-by-threat/SKILL.md +0 -0
  454. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerfctl-grant-deny/SKILL.md +0 -0
  455. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerfctl-grant-list/SKILL.md +0 -0
  456. {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerfctl-grant-reset/SKILL.md +0 -0
  457. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-account/scripts/nerf-az-account-list +0 -0
  458. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-account/scripts/nerf-az-account-set +0 -0
  459. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-account/scripts/nerf-az-account-show +0 -0
  460. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-aks/scripts/nerf-az-aks-command-invoke +0 -0
  461. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-aks/scripts/nerf-az-aks-get-credentials +0 -0
  462. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-aks/scripts/nerf-az-aks-get-credentials-admin +0 -0
  463. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-aks/scripts/nerf-az-aks-get-versions +0 -0
  464. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-aks/scripts/nerf-az-aks-list +0 -0
  465. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-aks/scripts/nerf-az-aks-nodepool-list +0 -0
  466. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-aks/scripts/nerf-az-aks-nodepool-show +0 -0
  467. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-aks/scripts/nerf-az-aks-show +0 -0
  468. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-cosmosdb/scripts/nerf-az-cosmosdb-database-list +0 -0
  469. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-cosmosdb/scripts/nerf-az-cosmosdb-list +0 -0
  470. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-cosmosdb/scripts/nerf-az-cosmosdb-network-rule-list +0 -0
  471. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-cosmosdb/scripts/nerf-az-cosmosdb-show +0 -0
  472. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-devops/scripts/nerf-az-devops-set-default-project +0 -0
  473. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-keyvault/scripts/nerf-az-keyvault-list +0 -0
  474. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-keyvault/scripts/nerf-az-keyvault-network-rule-list +0 -0
  475. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-keyvault/scripts/nerf-az-keyvault-secret-list +0 -0
  476. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-keyvault/scripts/nerf-az-keyvault-secret-stats +0 -0
  477. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-keyvault/scripts/nerf-az-keyvault-show +0 -0
  478. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-monitor/scripts/nerf-az-monitor-activity-log +0 -0
  479. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-monitor/scripts/nerf-az-monitor-diagnostic-settings-list +0 -0
  480. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-monitor/scripts/nerf-az-monitor-metrics-list +0 -0
  481. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-network/scripts/nerf-az-network-nic-show +0 -0
  482. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-network/scripts/nerf-az-network-nsg-list +0 -0
  483. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-network/scripts/nerf-az-network-nsg-show +0 -0
  484. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-network/scripts/nerf-az-network-private-dns-link-list +0 -0
  485. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-network/scripts/nerf-az-network-private-dns-link-show +0 -0
  486. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-network/scripts/nerf-az-network-private-dns-record-list +0 -0
  487. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-network/scripts/nerf-az-network-private-dns-zone-list +0 -0
  488. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-network/scripts/nerf-az-network-private-dns-zone-show +0 -0
  489. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-network/scripts/nerf-az-network-private-endpoint-list +0 -0
  490. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-network/scripts/nerf-az-network-private-endpoint-show +0 -0
  491. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-network/scripts/nerf-az-network-private-link-resource-list +0 -0
  492. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-network/scripts/nerf-az-network-public-ip-list +0 -0
  493. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-network/scripts/nerf-az-network-public-ip-show +0 -0
  494. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-network/scripts/nerf-az-network-route-table-show +0 -0
  495. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-network/scripts/nerf-az-network-subnet-show +0 -0
  496. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-network/scripts/nerf-az-network-vnet-list +0 -0
  497. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-network/scripts/nerf-az-network-vnet-peering-list +0 -0
  498. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-network/scripts/nerf-az-network-vnet-peering-show +0 -0
  499. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-network/scripts/nerf-az-network-vnet-show +0 -0
  500. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-postgres/scripts/nerf-az-postgres-flexible-server-firewall-rule-list +0 -0
  501. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-postgres/scripts/nerf-az-postgres-flexible-server-list +0 -0
  502. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-postgres/scripts/nerf-az-postgres-flexible-server-show +0 -0
  503. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-resource/scripts/nerf-az-group-list +0 -0
  504. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-resource/scripts/nerf-az-group-show +0 -0
  505. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-resource/scripts/nerf-az-resource-list +0 -0
  506. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-resource/scripts/nerf-az-resource-show +0 -0
  507. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-role/scripts/nerf-az-role-assignment-by-id +0 -0
  508. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-role/scripts/nerf-az-role-assignment-list +0 -0
  509. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-role/scripts/nerf-az-role-definition-list +0 -0
  510. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-storage/scripts/nerf-az-storage-account-list +0 -0
  511. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-storage/scripts/nerf-az-storage-account-network-rule-list +0 -0
  512. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-storage/scripts/nerf-az-storage-account-show +0 -0
  513. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-gh/scripts/nerf-gh-issue-comment +0 -0
  514. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-gh/scripts/nerf-gh-issue-create +0 -0
  515. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-gh/scripts/nerf-gh-issue-list +0 -0
  516. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-gh/scripts/nerf-gh-issue-view +0 -0
  517. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-gh/scripts/nerf-gh-pr-create +0 -0
  518. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-gh/scripts/nerf-gh-pr-diff +0 -0
  519. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-gh/scripts/nerf-gh-pr-inline-comments +0 -0
  520. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-gh/scripts/nerf-gh-pr-list +0 -0
  521. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-gh/scripts/nerf-gh-pr-review-comments +0 -0
  522. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-gh/scripts/nerf-gh-pr-reviews +0 -0
  523. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-gh/scripts/nerf-gh-pr-thread-comment +0 -0
  524. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-gh/scripts/nerf-gh-pr-thread-comments +0 -0
  525. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-gh/scripts/nerf-gh-pr-view +0 -0
  526. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-gh/scripts/nerf-gh-run-list +0 -0
  527. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-add +0 -0
  528. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-blame +0 -0
  529. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-branch-checkout-remote +0 -0
  530. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-branch-current +0 -0
  531. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-branch-delete-merged +0 -0
  532. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-branch-list-local +0 -0
  533. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-branch-list-remote +0 -0
  534. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-cherry-pick +0 -0
  535. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-commit +0 -0
  536. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-commit-amend +0 -0
  537. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-create-branch +0 -0
  538. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-diff +0 -0
  539. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-fetch +0 -0
  540. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-log +0 -0
  541. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-ls-remote +0 -0
  542. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-merge-no-ff +0 -0
  543. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-mv +0 -0
  544. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-pull +0 -0
  545. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-push-branch +0 -0
  546. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-push-main +0 -0
  547. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-rebase-abort +0 -0
  548. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-rebase-continue +0 -0
  549. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-rebase-unpushed +0 -0
  550. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-reflog +0 -0
  551. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-remote-list +0 -0
  552. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-reset-hard-last +0 -0
  553. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-reset-unpushed +0 -0
  554. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-restore-staged +0 -0
  555. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-restore-worktree +0 -0
  556. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-revert +0 -0
  557. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-rm +0 -0
  558. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-show +0 -0
  559. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-stash-drop +0 -0
  560. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-stash-list +0 -0
  561. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-stash-pop +0 -0
  562. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-stash-push +0 -0
  563. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-status +0 -0
  564. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-submodule-status +0 -0
  565. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-switch +0 -0
  566. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-tag +0 -0
  567. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-tag-push +0 -0
  568. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-api-resources +0 -0
  569. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-api-versions +0 -0
  570. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-cluster-info +0 -0
  571. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-config-current-context +0 -0
  572. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-config-get-contexts +0 -0
  573. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-config-use-context +0 -0
  574. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-describe +0 -0
  575. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-exec +0 -0
  576. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-explain +0 -0
  577. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-get +0 -0
  578. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-get-secrets +0 -0
  579. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-logs +0 -0
  580. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-port-forward +0 -0
  581. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-rollout-restart +0 -0
  582. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-top-nodes +0 -0
  583. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-top-pods +0 -0
  584. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-version +0 -0
  585. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-nx/scripts/nerf-nx-affected +0 -0
  586. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-nx/scripts/nerf-nx-graph +0 -0
  587. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-nx/scripts/nerf-nx-reset +0 -0
  588. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-nx/scripts/nerf-nx-run +0 -0
  589. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-nx/scripts/nerf-nx-show-project +0 -0
  590. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-nx/scripts/nerf-nx-show-projects +0 -0
  591. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-pkgrun/scripts/nerf-pkgrun-cspell +0 -0
  592. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-pkgrun/scripts/nerf-pkgrun-markdownlint +0 -0
  593. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-pkgrun/scripts/nerf-pkgrun-prettier +0 -0
  594. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-stdutils/scripts/nerf-find +0 -0
  595. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-stdutils/scripts/nerf-find-cwd +0 -0
  596. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-stdutils/scripts/nerf-grep +0 -0
  597. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-stdutils/scripts/nerf-grep-recursive-cwd +0 -0
  598. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-tf/scripts/nerf-tf-fmt +0 -0
  599. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-tg/scripts/nerf-tg-init +0 -0
  600. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-tg/scripts/nerf-tg-output +0 -0
  601. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-tg/scripts/nerf-tg-plan +0 -0
  602. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-tg/scripts/nerf-tg-validate +0 -0
  603. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-uv/scripts/nerf-uv-mypy +0 -0
  604. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-uv/scripts/nerf-uv-pytest +0 -0
  605. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-uv/scripts/nerf-uv-ruff-check +0 -0
  606. {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-uv/scripts/nerf-uv-ruff-fix +0 -0
  607. {nerftools-2.0.0 → nerftools-2.1.0}/pypi-dist/.gitignore +0 -0
  608. {nerftools-2.0.0 → nerftools-2.1.0}/release-please-config.json +0 -0
  609. {nerftools-2.0.0 → nerftools-2.1.0}/rulesync.local.jsonc.example +0 -0
  610. {nerftools-2.0.0 → nerftools-2.1.0}/tests/test_config.py +0 -0
  611. {nerftools-2.0.0 → nerftools-2.1.0}/tests/test_nerfctl.py +0 -0
  612. {nerftools-2.0.0 → nerftools-2.1.0}/tests/test_rendering.py +0 -0
@@ -149,41 +149,34 @@ Beyond outright security: rough edges that bite users.
149
149
 
150
150
  ### 9. Bash hint coverage (package-level `bash_hints`)
151
151
 
152
- `bash_hints` is a list of regex patterns at the package level that drive a
153
- pre-bash redirect hook on plugin targets that support one: when an agent
154
- calls raw bash with a command matching any pattern, the hook denies the
155
- call and points the agent at the nerf skill instead. Patterns are matched
156
- anywhere in the command. The hook automatically skips when it detects an
157
- actual wrapper invocation -- it splits the command on shell separators
158
- (``&&``, ``||``, ``;``, ``|``, ``&``), finds the first non-env-var token
159
- in each segment, and checks whether that token's basename starts with the
160
- wrapper prefix. So ``cd /repo && nerf-git status`` and
161
- ``/abs/path/nerf-git-add .`` skip cleanly; ``git log --grep nerf-X`` does
162
- not (the prefix appears only at arg position, not at an executable
152
+ `bash_hints` is a list of regex patterns at the package level that drive a pre-bash redirect hook on
153
+ plugin targets that support one: when an agent calls raw bash with a command matching any pattern,
154
+ the hook denies the call and points the agent at the nerf skill instead. Patterns are matched
155
+ anywhere in the command. The hook automatically skips when it detects an actual wrapper invocation
156
+ -- it splits the command on shell separators (`&&`, `||`, `;`, `|`, `&`), finds the first
157
+ non-env-var token in each segment, and checks whether that token's basename starts with the wrapper
158
+ prefix. So `cd /repo && nerf-git status` and `/abs/path/nerf-git-add .` skip cleanly;
159
+ `git log --grep nerf-X` does not (the prefix appears only at arg position, not at an executable
163
160
  position).
164
161
 
165
- - **Coverage**: every CLI binary that this package's tools wrap must be
166
- covered by at least one pattern. E.g., a package that wraps both `git`
167
- and `gh` must declare patterns for both. A tool whose underlying command
168
- isn't matched by any hint will silently let the agent reach for raw
169
- bash without redirection -- file it as a gap.
170
- - **Anchoring**: prefer word-boundary anchors (`\bgit\b`) over start-of-line
171
- (`^git`). Compound commands like `foo && git status` only match
172
- word-boundary patterns. Start-anchored patterns miss those cases.
173
- - **Specificity vs. breadth**: package-level patterns are coarse on purpose
174
- -- they redirect to a skill, not a specific tool. `\baz boards\b` is fine
175
- even if the package doesn't yet wrap every `az boards` subcommand; the
176
- hint says "the skill may wrap this," and the agent learns which tools
162
+ - **Coverage**: every CLI binary that this package's tools wrap must be covered by at least one
163
+ pattern. E.g., a package that wraps both `git` and `gh` must declare patterns for both. A tool
164
+ whose underlying command isn't matched by any hint will silently let the agent reach for raw bash
165
+ without redirection -- file it as a gap.
166
+ - **Anchoring**: prefer word-boundary anchors (`\bgit\b`) over start-of-line (`^git`). Compound
167
+ commands like `foo && git status` only match word-boundary patterns. Start-anchored patterns miss
168
+ those cases.
169
+ - **Specificity vs. breadth**: package-level patterns are coarse on purpose -- they redirect to a
170
+ skill, not a specific tool. `\baz boards\b` is fine even if the package doesn't yet wrap every
171
+ `az boards` subcommand; the hint says "the skill may wrap this," and the agent learns which tools
177
172
  exist by loading the skill.
178
- - **No false positives on the wrapper**: do NOT add a pattern that would
179
- match the wrapper's own name when called by its absolute path. The
180
- executable-position exclusion in the hook covers normal wrapper calls,
181
- but an over-eager pattern (e.g. `git` without word boundaries) can still
182
- misfire on unrelated substrings in env exports or paths.
183
- - **Extensions**: if this manifest is an extension of an existing package
184
- (same `package.name` in a different file), `bash_hints` is unioned across
185
- manifests. An extension may declare additional patterns covering its new
186
- surface (e.g. `\bgit lfs\b`) without restating the base patterns.
173
+ - **No false positives on the wrapper**: do NOT add a pattern that would match the wrapper's own
174
+ name when called by its absolute path. The executable-position exclusion in the hook covers normal
175
+ wrapper calls, but an over-eager pattern (e.g. `git` without word boundaries) can still misfire on
176
+ unrelated substrings in env exports or paths.
177
+ - **Extensions**: if this manifest is an extension of an existing package (same `package.name` in a
178
+ different file), `bash_hints` is unioned across manifests. An extension may declare additional
179
+ patterns covering its new surface (e.g. `\bgit lfs\b`) without restating the base patterns.
187
180
 
188
181
  ### 10. Description, intro, and metadata hygiene
189
182
 
@@ -0,0 +1 @@
1
+ 10.0.0
@@ -2,8 +2,7 @@
2
2
  "version": "0.2",
3
3
  "language": "en",
4
4
  "words": [
5
- "agentic",
6
- "Agentworks",
5
+ "agentworks",
7
6
  "bunx",
8
7
  "codegen",
9
8
  "coreutils",
@@ -11,50 +10,42 @@
11
10
  "dataclasses",
12
11
  "errexit",
13
12
  "esac",
14
- "footgun",
15
- "footguns",
16
13
  "execdir",
17
14
  "exitcode",
15
+ "footguns",
18
16
  "lookaheads",
19
17
  "metacharacter",
20
18
  "metacharacters",
21
- "myapp",
22
19
  "mypy",
23
20
  "mywi",
24
21
  "nerfctl",
25
- "nerftool",
26
22
  "nerftools",
27
23
  "okdir",
28
24
  "oneline",
29
25
  "permissioning",
30
26
  "pipefail",
31
- "passthroughs",
32
27
  "pkgrun",
33
- "pnpx",
34
- "pyproject",
35
28
  "pytest",
36
29
  "rulesync",
37
- "Rulesync",
38
30
  "stdutils",
39
31
  "subshell",
40
- "TOCTOU",
32
+ "toctou",
41
33
  "typer",
42
34
  "uncompilable",
43
35
  "unioned",
44
36
  "upgen",
45
- "uppercased",
46
- "wiql",
47
- "WIQL"
48
- ],
49
- "ignoreRegExpList": [
50
- "`[^`\\r\\n]+`"
37
+ "uppercased"
51
38
  ],
39
+ "ignoreRegExpList": ["`[^`\\r\\n]+`"],
52
40
  "ignorePaths": [
53
41
  "node_modules",
54
42
  "out/",
55
43
  "CHANGELOG.md",
56
44
  "**/*.yaml",
57
45
  "**/*.yml",
58
- "**/*.py"
46
+ "**/*.py",
47
+ "**/*.toml",
48
+ "**/*.json",
49
+ "**/*.jsonc"
59
50
  ]
60
51
  }
@@ -151,41 +151,34 @@ Beyond outright security: rough edges that bite users.
151
151
 
152
152
  ### 9. Bash hint coverage (package-level `bash_hints`)
153
153
 
154
- `bash_hints` is a list of regex patterns at the package level that drive a
155
- pre-bash redirect hook on plugin targets that support one: when an agent
156
- calls raw bash with a command matching any pattern, the hook denies the
157
- call and points the agent at the nerf skill instead. Patterns are matched
158
- anywhere in the command. The hook automatically skips when it detects an
159
- actual wrapper invocation -- it splits the command on shell separators
160
- (``&&``, ``||``, ``;``, ``|``, ``&``), finds the first non-env-var token
161
- in each segment, and checks whether that token's basename starts with the
162
- wrapper prefix. So ``cd /repo && nerf-git status`` and
163
- ``/abs/path/nerf-git-add .`` skip cleanly; ``git log --grep nerf-X`` does
164
- not (the prefix appears only at arg position, not at an executable
154
+ `bash_hints` is a list of regex patterns at the package level that drive a pre-bash redirect hook on
155
+ plugin targets that support one: when an agent calls raw bash with a command matching any pattern,
156
+ the hook denies the call and points the agent at the nerf skill instead. Patterns are matched
157
+ anywhere in the command. The hook automatically skips when it detects an actual wrapper invocation
158
+ -- it splits the command on shell separators (`&&`, `||`, `;`, `|`, `&`), finds the first
159
+ non-env-var token in each segment, and checks whether that token's basename starts with the wrapper
160
+ prefix. So `cd /repo && nerf-git status` and `/abs/path/nerf-git-add .` skip cleanly;
161
+ `git log --grep nerf-X` does not (the prefix appears only at arg position, not at an executable
165
162
  position).
166
163
 
167
- - **Coverage**: every CLI binary that this package's tools wrap must be
168
- covered by at least one pattern. E.g., a package that wraps both `git`
169
- and `gh` must declare patterns for both. A tool whose underlying command
170
- isn't matched by any hint will silently let the agent reach for raw
171
- bash without redirection -- file it as a gap.
172
- - **Anchoring**: prefer word-boundary anchors (`\bgit\b`) over start-of-line
173
- (`^git`). Compound commands like `foo && git status` only match
174
- word-boundary patterns. Start-anchored patterns miss those cases.
175
- - **Specificity vs. breadth**: package-level patterns are coarse on purpose
176
- -- they redirect to a skill, not a specific tool. `\baz boards\b` is fine
177
- even if the package doesn't yet wrap every `az boards` subcommand; the
178
- hint says "the skill may wrap this," and the agent learns which tools
164
+ - **Coverage**: every CLI binary that this package's tools wrap must be covered by at least one
165
+ pattern. E.g., a package that wraps both `git` and `gh` must declare patterns for both. A tool
166
+ whose underlying command isn't matched by any hint will silently let the agent reach for raw bash
167
+ without redirection -- file it as a gap.
168
+ - **Anchoring**: prefer word-boundary anchors (`\bgit\b`) over start-of-line (`^git`). Compound
169
+ commands like `foo && git status` only match word-boundary patterns. Start-anchored patterns miss
170
+ those cases.
171
+ - **Specificity vs. breadth**: package-level patterns are coarse on purpose -- they redirect to a
172
+ skill, not a specific tool. `\baz boards\b` is fine even if the package doesn't yet wrap every
173
+ `az boards` subcommand; the hint says "the skill may wrap this," and the agent learns which tools
179
174
  exist by loading the skill.
180
- - **No false positives on the wrapper**: do NOT add a pattern that would
181
- match the wrapper's own name when called by its absolute path. The
182
- executable-position exclusion in the hook covers normal wrapper calls,
183
- but an over-eager pattern (e.g. `git` without word boundaries) can still
184
- misfire on unrelated substrings in env exports or paths.
185
- - **Extensions**: if this manifest is an extension of an existing package
186
- (same `package.name` in a different file), `bash_hints` is unioned across
187
- manifests. An extension may declare additional patterns covering its new
188
- surface (e.g. `\bgit lfs\b`) without restating the base patterns.
175
+ - **No false positives on the wrapper**: do NOT add a pattern that would match the wrapper's own
176
+ name when called by its absolute path. The executable-position exclusion in the hook covers normal
177
+ wrapper calls, but an over-eager pattern (e.g. `git` without word boundaries) can still misfire on
178
+ unrelated substrings in env exports or paths.
179
+ - **Extensions**: if this manifest is an extension of an existing package (same `package.name` in a
180
+ different file), `bash_hints` is unioned across manifests. An extension may declare additional
181
+ patterns covering its new surface (e.g. `\bgit lfs\b`) without restating the base patterns.
189
182
 
190
183
  ### 10. Description, intro, and metadata hygiene
191
184
 
@@ -0,0 +1,53 @@
1
+ # Dependabot configuration.
2
+ #
3
+ # Two ecosystems are covered:
4
+ # - "pip" for the Python package at the repo root (reads pyproject.toml).
5
+ # Caveat: this repo uses uv, and Dependabot's pip ecosystem does NOT
6
+ # update uv.lock. Each Dependabot PR will need a follow-up `uv lock`
7
+ # to refresh the lockfile before CI passes. When GitHub's native `uv`
8
+ # ecosystem is GA, switch package-ecosystem to "uv" and drop this caveat.
9
+ # - "github-actions" for the workflows under .github/workflows/.
10
+ #
11
+ # commit-message blocks ensure Dependabot's PRs land as valid Conventional
12
+ # Commits (the repo enforces this via release-please).
13
+ #
14
+ # Major-version bumps for each are kept as standalone PRs because they
15
+ # usually need review (release notes, breaking changes); patches and
16
+ # minors are grouped to keep the PR queue manageable.
17
+ version: 2
18
+ updates:
19
+ - package-ecosystem: pip
20
+ directory: /
21
+ schedule:
22
+ interval: weekly
23
+ day: monday
24
+ open-pull-requests-limit: 3
25
+ labels:
26
+ - dependencies
27
+ - python
28
+ commit-message:
29
+ prefix: chore
30
+ include: scope
31
+ groups:
32
+ python-patch-and-minor:
33
+ update-types:
34
+ - patch
35
+ - minor
36
+
37
+ - package-ecosystem: github-actions
38
+ directory: /
39
+ schedule:
40
+ interval: weekly
41
+ day: monday
42
+ open-pull-requests-limit: 3
43
+ labels:
44
+ - dependencies
45
+ - ci
46
+ commit-message:
47
+ prefix: chore
48
+ include: scope
49
+ groups:
50
+ actions-patch-and-minor:
51
+ update-types:
52
+ - patch
53
+ - minor
@@ -0,0 +1,121 @@
1
+ name: CI
2
+
3
+ on:
4
+ pull_request:
5
+ push:
6
+ branches: [main]
7
+
8
+ permissions:
9
+ contents: read
10
+
11
+ jobs:
12
+ lint:
13
+ runs-on: ubuntu-latest
14
+ steps:
15
+ - uses: actions/checkout@v6
16
+
17
+ - uses: astral-sh/setup-uv@v7
18
+ with:
19
+ enable-cache: true
20
+
21
+ - name: Install dependencies
22
+ run: uv sync --frozen
23
+
24
+ - name: Ruff check
25
+ run: uv run ruff check nerftools/ tests/
26
+
27
+ - name: Mypy
28
+ run: uv run mypy nerftools/
29
+
30
+ test:
31
+ runs-on: ubuntu-latest
32
+ steps:
33
+ - uses: actions/checkout@v6
34
+
35
+ - uses: astral-sh/setup-uv@v7
36
+ with:
37
+ enable-cache: true
38
+
39
+ - name: Install dependencies
40
+ run: uv sync --frozen
41
+
42
+ - name: Pytest
43
+ run: uv run pytest tests/ -v
44
+
45
+ # File-quality linters (prettier, markdownlint, cspell) run via the same
46
+ # script contributors use locally (./scripts/lint-files.sh). That keeps CI
47
+ # and local behavior in lockstep; the version pins, ignore lists, and
48
+ # exit semantics are defined exactly once.
49
+ lint-files:
50
+ runs-on: ubuntu-latest
51
+ steps:
52
+ - uses: actions/checkout@v6
53
+
54
+ - uses: actions/setup-node@v6
55
+ with:
56
+ node-version-file: .node-version
57
+
58
+ - name: ./scripts/lint-files.sh
59
+ run: ./scripts/lint-files.sh
60
+
61
+ rulesync:
62
+ runs-on: ubuntu-latest
63
+ steps:
64
+ - uses: actions/checkout@v6
65
+
66
+ - uses: actions/setup-node@v6
67
+ with:
68
+ node-version-file: .node-version
69
+
70
+ - name: Regenerate rulesync outputs
71
+ run: ./scripts/rulesync-upgen.sh
72
+
73
+ - name: Verify generated outputs match committed
74
+ run: |
75
+ if ! git diff --quiet; then
76
+ echo "::error::Rulesync output is out of sync with sources."
77
+ echo "Run ./scripts/rulesync-upgen.sh locally and commit the result."
78
+ git diff --stat
79
+ exit 1
80
+ fi
81
+ if [ -n "$(git ls-files --others --exclude-standard)" ]; then
82
+ echo "::error::Rulesync produced files outside the committed standard set."
83
+ echo "Either add the path to .gitignore (personal-target output) or commit it (new standard target)."
84
+ git ls-files --others --exclude-standard
85
+ exit 1
86
+ fi
87
+
88
+ # The plugin drift check runs the same script contributors use locally
89
+ # (./scripts/generate-plugins.sh --check). That keeps CI and local behavior
90
+ # in lockstep; the generate-and-diff semantics are defined exactly once.
91
+ plugins-drift:
92
+ runs-on: ubuntu-latest
93
+ steps:
94
+ - uses: actions/checkout@v6
95
+
96
+ - uses: astral-sh/setup-uv@v7
97
+ with:
98
+ enable-cache: true
99
+
100
+ - name: Install dependencies
101
+ run: uv sync --frozen
102
+
103
+ - name: ./scripts/generate-plugins.sh --check
104
+ run: ./scripts/generate-plugins.sh --check
105
+
106
+ # Umbrella job: require this single check in branch protection on main.
107
+ # Adding a new job to CI means adding it to `needs:` below, so the
108
+ # required-checks list lives in the workflow file (alongside the jobs)
109
+ # rather than in GitHub settings that can drift silently.
110
+ ci-success:
111
+ if: always()
112
+ needs: [lint, test, lint-files, rulesync, plugins-drift]
113
+ runs-on: ubuntu-latest
114
+ steps:
115
+ - name: Verify all required jobs passed
116
+ run: |
117
+ if [[ "${{ contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled') }}" == "true" ]]; then
118
+ echo "::error::One or more required CI jobs failed or were cancelled."
119
+ exit 1
120
+ fi
121
+ echo "All required CI jobs passed."
@@ -3,6 +3,10 @@ name: Release Please
3
3
  on:
4
4
  push:
5
5
  branches: [main]
6
+ # Manual trigger lets us rebuild the release PR without pushing to main --
7
+ # useful when the open release PR conflicts with main (e.g. after a reformat
8
+ # touches the same line release-please bumps) and needs a clean regenerate.
9
+ workflow_dispatch:
6
10
 
7
11
  jobs:
8
12
  release-please:
@@ -23,7 +27,7 @@ jobs:
23
27
  app-id: ${{ vars.RELEASE_APP_ID }}
24
28
  private-key: ${{ secrets.RELEASE_APP_PRIVATE_KEY }}
25
29
 
26
- - uses: googleapis/release-please-action@v4
30
+ - uses: googleapis/release-please-action@v5
27
31
  id: release
28
32
  with:
29
33
  token: ${{ steps.app-token.outputs.token }}
@@ -37,7 +41,19 @@ jobs:
37
41
  branch=$(echo '${{ steps.release.outputs.pr }}' | jq -r .headBranchName)
38
42
  echo "pr_branch=$branch" >> "$GITHUB_OUTPUT"
39
43
 
40
- regenerate-dist:
44
+ sync-version-artifacts:
45
+ # release-please bumps the version in pyproject.toml and nerf.yaml, which
46
+ # leaves two artifacts mechanically stale:
47
+ # - uv.lock: pins the local package version, so `uv sync --frozen` would
48
+ # fail in CI until re-locked.
49
+ # - out/*/plugin.json: nerf.yaml's version is baked into plugin.json at
50
+ # generation time, so CI's plugins-drift check would fail until
51
+ # regenerated.
52
+ # Both are mechanical consequences of the version bump release-please
53
+ # already made -- so we apply them on the release PR branch automatically.
54
+ # Contributor-driven changes (manifests, generator code, dependencies)
55
+ # still go through the verify-in-CI path: they must be committed by the
56
+ # author and CI fails if they're out of sync.
41
57
  needs: release-please
42
58
  if: needs.release-please.outputs.pr_branch
43
59
  runs-on: ubuntu-latest
@@ -58,23 +74,20 @@ jobs:
58
74
  with:
59
75
  enable-cache: true
60
76
 
61
- - name: Sync lockfile and install dependencies
62
- run: uv sync
77
+ - name: Re-lock (preserves existing pins; only the workspace version moves)
78
+ run: uv lock
63
79
 
64
- - name: Regenerate Claude Code plugin
65
- run: uv run nerf generate --target claude-plugin -c nerf.yaml --outdir ./out/claude-plugin
80
+ - name: Regenerate plugins (picks up new version in plugin.json)
81
+ run: ./scripts/generate-plugins.sh
66
82
 
67
- - name: Regenerate Codex plugin
68
- run: uv run nerf generate --target codex-plugin -c nerf.yaml --outdir ./out/codex-plugin
69
-
70
- - name: Commit updated plugins and lockfile
83
+ - name: Commit version-bump artifacts if changed
71
84
  run: |
72
85
  git config user.name "nerftools-release[bot]"
73
86
  git config user.email "nerftools-release[bot]@users.noreply.github.com"
74
- git add out/claude-plugin/ out/codex-plugin/ uv.lock
87
+ git add uv.lock out/claude-plugin/ out/codex-plugin/
75
88
  if git diff --cached --quiet; then
76
- echo "No changes to plugin output or lockfile"
89
+ echo "Version-bump artifacts already in sync"
77
90
  else
78
- git commit -m "build: regenerate plugins for release"
91
+ git commit -m "chore: sync version-bump artifacts (uv.lock, plugin outputs)"
79
92
  git push
80
93
  fi
@@ -6,7 +6,7 @@ on:
6
6
 
7
7
  permissions:
8
8
  contents: read
9
- id-token: write # Required for trusted publishing via OIDC
9
+ id-token: write # Required for trusted publishing via OIDC
10
10
 
11
11
  jobs:
12
12
  verify-tag-on-main:
@@ -44,6 +44,11 @@ htmlcov/
44
44
  # tmuxinator config is personal
45
45
  .tmuxinator.yml
46
46
 
47
+ # Claude Code session-local state. Note: .claude/agents/ is rulesync-generated
48
+ # and IS committed (see below); only transient/per-session files belong here.
49
+ # settings.local.json is already covered by Claude Code's global ignore.
50
+ .claude/scheduled_tasks.lock
51
+
47
52
  # Rulesync personal target overrides (gitignored; see rulesync.local.jsonc.example).
48
53
  rulesync.local.jsonc
49
54
 
@@ -0,0 +1 @@
1
+ 0.22.1
@@ -0,0 +1,16 @@
1
+ {
2
+ "config": {
3
+ "default": true,
4
+ "MD013": {
5
+ "line_length": 100,
6
+ "code_blocks": false,
7
+ "tables": false,
8
+ },
9
+ "MD024": {
10
+ "siblings_only": true,
11
+ },
12
+ "MD033": false,
13
+ "MD060": false,
14
+ },
15
+ "ignores": ["out/**", "CHANGELOG.md"],
16
+ }
@@ -0,0 +1 @@
1
+ 24
@@ -0,0 +1 @@
1
+ 3.8.3
@@ -0,0 +1,17 @@
1
+ # Auto-generated by release-please; never hand-formatted.
2
+ **/CHANGELOG.md
3
+
4
+ # Auto-generated by rulesync. Source files live in .rulesync/; edit those instead.
5
+ # rulesync emits its own formatting and we round-trip these files on every
6
+ # `rulesync generate`, so letting prettier reformat them would cause perpetual
7
+ # drift between the two tools.
8
+ .claude/agents/
9
+ .github/agents/
10
+
11
+ # Generated plugin outputs (regenerated via ./scripts/generate-plugins.sh).
12
+ # nerf generate owns the formatting; prettier reformatting would cause drift
13
+ # on every regen.
14
+ out/
15
+
16
+ # uv lockfile is machine-generated and managed by uv.
17
+ uv.lock
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "2.1.0"
3
+ }
@@ -150,41 +150,34 @@ Beyond outright security: rough edges that bite users.
150
150
 
151
151
  ### 9. Bash hint coverage (package-level `bash_hints`)
152
152
 
153
- `bash_hints` is a list of regex patterns at the package level that drive a
154
- pre-bash redirect hook on plugin targets that support one: when an agent
155
- calls raw bash with a command matching any pattern, the hook denies the
156
- call and points the agent at the nerf skill instead. Patterns are matched
157
- anywhere in the command. The hook automatically skips when it detects an
158
- actual wrapper invocation -- it splits the command on shell separators
159
- (``&&``, ``||``, ``;``, ``|``, ``&``), finds the first non-env-var token
160
- in each segment, and checks whether that token's basename starts with the
161
- wrapper prefix. So ``cd /repo && nerf-git status`` and
162
- ``/abs/path/nerf-git-add .`` skip cleanly; ``git log --grep nerf-X`` does
163
- not (the prefix appears only at arg position, not at an executable
153
+ `bash_hints` is a list of regex patterns at the package level that drive a pre-bash redirect hook on
154
+ plugin targets that support one: when an agent calls raw bash with a command matching any pattern,
155
+ the hook denies the call and points the agent at the nerf skill instead. Patterns are matched
156
+ anywhere in the command. The hook automatically skips when it detects an actual wrapper invocation
157
+ -- it splits the command on shell separators (`&&`, `||`, `;`, `|`, `&`), finds the first
158
+ non-env-var token in each segment, and checks whether that token's basename starts with the wrapper
159
+ prefix. So `cd /repo && nerf-git status` and `/abs/path/nerf-git-add .` skip cleanly;
160
+ `git log --grep nerf-X` does not (the prefix appears only at arg position, not at an executable
164
161
  position).
165
162
 
166
- - **Coverage**: every CLI binary that this package's tools wrap must be
167
- covered by at least one pattern. E.g., a package that wraps both `git`
168
- and `gh` must declare patterns for both. A tool whose underlying command
169
- isn't matched by any hint will silently let the agent reach for raw
170
- bash without redirection -- file it as a gap.
171
- - **Anchoring**: prefer word-boundary anchors (`\bgit\b`) over start-of-line
172
- (`^git`). Compound commands like `foo && git status` only match
173
- word-boundary patterns. Start-anchored patterns miss those cases.
174
- - **Specificity vs. breadth**: package-level patterns are coarse on purpose
175
- -- they redirect to a skill, not a specific tool. `\baz boards\b` is fine
176
- even if the package doesn't yet wrap every `az boards` subcommand; the
177
- hint says "the skill may wrap this," and the agent learns which tools
163
+ - **Coverage**: every CLI binary that this package's tools wrap must be covered by at least one
164
+ pattern. E.g., a package that wraps both `git` and `gh` must declare patterns for both. A tool
165
+ whose underlying command isn't matched by any hint will silently let the agent reach for raw bash
166
+ without redirection -- file it as a gap.
167
+ - **Anchoring**: prefer word-boundary anchors (`\bgit\b`) over start-of-line (`^git`). Compound
168
+ commands like `foo && git status` only match word-boundary patterns. Start-anchored patterns miss
169
+ those cases.
170
+ - **Specificity vs. breadth**: package-level patterns are coarse on purpose -- they redirect to a
171
+ skill, not a specific tool. `\baz boards\b` is fine even if the package doesn't yet wrap every
172
+ `az boards` subcommand; the hint says "the skill may wrap this," and the agent learns which tools
178
173
  exist by loading the skill.
179
- - **No false positives on the wrapper**: do NOT add a pattern that would
180
- match the wrapper's own name when called by its absolute path. The
181
- executable-position exclusion in the hook covers normal wrapper calls,
182
- but an over-eager pattern (e.g. `git` without word boundaries) can still
183
- misfire on unrelated substrings in env exports or paths.
184
- - **Extensions**: if this manifest is an extension of an existing package
185
- (same `package.name` in a different file), `bash_hints` is unioned across
186
- manifests. An extension may declare additional patterns covering its new
187
- surface (e.g. `\bgit lfs\b`) without restating the base patterns.
174
+ - **No false positives on the wrapper**: do NOT add a pattern that would match the wrapper's own
175
+ name when called by its absolute path. The executable-position exclusion in the hook covers normal
176
+ wrapper calls, but an over-eager pattern (e.g. `git` without word boundaries) can still misfire on
177
+ unrelated substrings in env exports or paths.
178
+ - **Extensions**: if this manifest is an extension of an existing package (same `package.name` in a
179
+ different file), `bash_hints` is unioned across manifests. An extension may declare additional
180
+ patterns covering its new surface (e.g. `\bgit lfs\b`) without restating the base patterns.
188
181
 
189
182
  ### 10. Description, intro, and metadata hygiene
190
183