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.
- {nerftools-2.0.0 → nerftools-2.1.0}/.claude/agents/nerftool-manifest-reviewer.md +25 -32
- nerftools-2.1.0/.cspell-version +1 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/.cspell.json +9 -18
- {nerftools-2.0.0 → nerftools-2.1.0}/.github/agents/nerftool-manifest-reviewer.md +25 -32
- nerftools-2.1.0/.github/dependabot.yml +53 -0
- nerftools-2.1.0/.github/workflows/ci.yml +121 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/.github/workflows/release-please.yml +26 -13
- {nerftools-2.0.0 → nerftools-2.1.0}/.github/workflows/release.yml +1 -1
- {nerftools-2.0.0 → nerftools-2.1.0}/.gitignore +5 -0
- nerftools-2.1.0/.markdownlint-cli2-version +1 -0
- nerftools-2.1.0/.markdownlint-cli2.jsonc +16 -0
- nerftools-2.1.0/.node-version +1 -0
- nerftools-2.1.0/.prettier-version +1 -0
- nerftools-2.1.0/.prettierignore +17 -0
- nerftools-2.1.0/.release-please-manifest.json +3 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/.rulesync/subagents/nerftool-manifest-reviewer.md +25 -32
- {nerftools-2.0.0 → nerftools-2.1.0}/CHANGELOG.md +41 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/CONTRIBUTING.md +46 -25
- {nerftools-2.0.0 → nerftools-2.1.0}/PKG-INFO +1 -1
- {nerftools-2.0.0 → nerftools-2.1.0}/README.md +2 -2
- {nerftools-2.0.0 → nerftools-2.1.0}/docs/nerf-manifest.md +81 -53
- {nerftools-2.0.0 → nerftools-2.1.0}/docs/sdd/2026-04-04-nerf-refactor/frd.md +1 -2
- {nerftools-2.0.0 → nerftools-2.1.0}/docs/sdd/2026-04-04-nerf-refactor/hla.md +23 -23
- {nerftools-2.0.0 → nerftools-2.1.0}/docs/sdd/2026-04-04-nerf-refactor/manifest-spec.md +223 -245
- {nerftools-2.0.0 → nerftools-2.1.0}/docs/sdd/2026-04-04-nerf-refactor/plan.md +19 -18
- nerftools-2.1.0/nerf.yaml +25 -0
- nerftools-2.1.0/nerftools/__init__.py +82 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/nerftools/builder.py +8 -5
- {nerftools-2.0.0 → nerftools-2.1.0}/nerftools/cli.py +87 -48
- {nerftools-2.0.0 → nerftools-2.1.0}/nerftools/default_manifests/README.md +4 -4
- nerftools-2.1.0/nerftools/default_manifests/az-account.yaml +50 -0
- nerftools-2.1.0/nerftools/default_manifests/az-aks.yaml +295 -0
- nerftools-2.1.0/nerftools/default_manifests/az-boards.yaml +683 -0
- nerftools-2.1.0/nerftools/default_manifests/az-cosmosdb.yaml +135 -0
- nerftools-2.1.0/nerftools/default_manifests/az-devops.yaml +35 -0
- nerftools-2.1.0/nerftools/default_manifests/az-keyvault.yaml +173 -0
- nerftools-2.1.0/nerftools/default_manifests/az-monitor.yaml +154 -0
- nerftools-2.1.0/nerftools/default_manifests/az-network.yaml +604 -0
- nerftools-2.1.0/nerftools/default_manifests/az-pipelines.yaml +410 -0
- nerftools-2.1.0/nerftools/default_manifests/az-postgres.yaml +105 -0
- nerftools-2.1.0/nerftools/default_manifests/az-repos.yaml +473 -0
- nerftools-2.1.0/nerftools/default_manifests/az-resource.yaml +113 -0
- nerftools-2.1.0/nerftools/default_manifests/az-role.yaml +121 -0
- nerftools-2.1.0/nerftools/default_manifests/az-storage.yaml +104 -0
- nerftools-2.1.0/nerftools/default_manifests/gh.yaml +535 -0
- nerftools-2.1.0/nerftools/default_manifests/git.yaml +1165 -0
- nerftools-2.1.0/nerftools/default_manifests/kubectl.yaml +451 -0
- nerftools-2.1.0/nerftools/default_manifests/nx.yaml +90 -0
- nerftools-2.1.0/nerftools/default_manifests/pkgrun.yaml +62 -0
- nerftools-2.1.0/nerftools/default_manifests/stdutils.yaml +158 -0
- nerftools-2.1.0/nerftools/default_manifests/tf.yaml +68 -0
- nerftools-2.1.0/nerftools/default_manifests/tg.yaml +159 -0
- nerftools-2.1.0/nerftools/default_manifests/uv.yaml +70 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/nerftools/formats.py +133 -23
- {nerftools-2.0.0 → nerftools-2.1.0}/nerftools/manifest.py +20 -2
- nerftools-2.1.0/nerftools/nerf_report/script.sh +109 -0
- nerftools-2.1.0/nerftools/outdir.py +118 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/nerftools/skill.py +9 -7
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/.claude-plugin/plugin.json +1 -1
- nerftools-2.1.0/out/claude-plugin/.nerf-build-manifest +1 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/hooks/nerf-bash-hint +3 -1
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-account/SKILL.md +2 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-aks/SKILL.md +2 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-boards/SKILL.md +32 -16
- nerftools-2.1.0/out/claude-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-area-list +163 -0
- nerftools-2.1.0/out/claude-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-mywi-comment +245 -0
- nerftools-2.1.0/out/claude-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-mywi-list +159 -0
- nerftools-2.1.0/out/claude-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-mywi-show +221 -0
- nerftools-2.1.0/out/claude-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-mywi-update +236 -0
- nerftools-2.1.0/out/claude-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-wi-add-parent +235 -0
- nerftools-2.1.0/out/claude-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-wi-comment +225 -0
- {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
- nerftools-2.1.0/out/claude-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-wi-list +193 -0
- nerftools-2.1.0/out/claude-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-wi-show +203 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-wi-update +111 -1
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-cosmosdb/SKILL.md +2 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-devops/SKILL.md +2 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-keyvault/SKILL.md +2 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-monitor/SKILL.md +2 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-network/SKILL.md +2 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-pipelines/SKILL.md +26 -15
- nerftools-2.1.0/out/claude-plugin/skills/nerf-az-pipelines/scripts/nerf-az-pipelines-check +203 -0
- nerftools-2.1.0/out/claude-plugin/skills/nerf-az-pipelines/scripts/nerf-az-pipelines-list +163 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-pipelines/scripts/nerf-az-pipelines-run-log +111 -3
- nerftools-2.1.0/out/claude-plugin/skills/nerf-az-pipelines/scripts/nerf-az-pipelines-run-show +203 -0
- nerftools-2.1.0/out/claude-plugin/skills/nerf-az-pipelines/scripts/nerf-az-pipelines-run-timeline +256 -0
- nerftools-2.1.0/out/claude-plugin/skills/nerf-az-pipelines/scripts/nerf-az-pipelines-runs +163 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-postgres/SKILL.md +2 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-repos/SKILL.md +36 -20
- nerftools-2.1.0/out/claude-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-comments +223 -0
- nerftools-2.1.0/out/claude-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-create +279 -0
- nerftools-2.1.0/out/claude-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-edit +229 -0
- nerftools-2.1.0/out/claude-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-list +202 -0
- nerftools-2.1.0/out/claude-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-set-status +234 -0
- nerftools-2.1.0/out/claude-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-show +203 -0
- nerftools-2.1.0/out/claude-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-vote +234 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-resource/SKILL.md +2 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-role/SKILL.md +2 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-storage/SKILL.md +2 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-gh/SKILL.md +51 -3
- nerftools-2.1.0/out/claude-plugin/skills/nerf-gh/scripts/nerf-gh-pr-copilot-review-status +101 -0
- nerftools-2.1.0/out/claude-plugin/skills/nerf-gh/scripts/nerf-gh-pr-ready +82 -0
- nerftools-2.1.0/out/claude-plugin/skills/nerf-gh/scripts/nerf-gh-pr-request-copilot-review +75 -0
- {nerftools-2.0.0/out/codex-plugin → nerftools-2.1.0/out/claude-plugin}/skills/nerf-gh/scripts/nerf-gh-run-view +13 -6
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/SKILL.md +2 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-kubectl/SKILL.md +2 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-nx/SKILL.md +2 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-pkgrun/SKILL.md +2 -0
- nerftools-2.1.0/out/claude-plugin/skills/nerf-report/SKILL.md +49 -0
- nerftools-2.1.0/out/claude-plugin/skills/nerf-report/scripts/nerf-report +109 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-stdutils/SKILL.md +2 -0
- nerftools-2.1.0/out/claude-plugin/skills/nerf-tf/SKILL.md +49 -0
- nerftools-2.1.0/out/claude-plugin/skills/nerf-tf/scripts/nerf-tf-validate +56 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-tg/SKILL.md +33 -11
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-tg/scripts/nerf-tg-fmt +10 -6
- nerftools-2.1.0/out/claude-plugin/skills/nerf-tg/scripts/nerf-tg-fmt-all +56 -0
- nerftools-2.1.0/out/claude-plugin/skills/nerf-tg/scripts/nerf-tg-hcl-validate +60 -0
- {nerftools-2.0.0/out/codex-plugin → nerftools-2.1.0/out/claude-plugin}/skills/nerf-tg/scripts/nerf-tg-init-all +3 -3
- {nerftools-2.0.0/out/codex-plugin → nerftools-2.1.0/out/claude-plugin}/skills/nerf-tg/scripts/nerf-tg-output-all +3 -3
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-tg/scripts/nerf-tg-plan-all +3 -3
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-tg/scripts/nerf-tg-validate-all +3 -3
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-uv/SKILL.md +2 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerftools/SKILL.md +5 -1
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/.codex-plugin/plugin.json +1 -1
- nerftools-2.1.0/out/codex-plugin/.nerf-build-manifest +1 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-account/SKILL.md +2 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-aks/SKILL.md +2 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-boards/SKILL.md +32 -16
- nerftools-2.1.0/out/codex-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-area-list +163 -0
- nerftools-2.1.0/out/codex-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-mywi-comment +245 -0
- nerftools-2.1.0/out/codex-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-mywi-list +159 -0
- nerftools-2.1.0/out/codex-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-mywi-show +221 -0
- nerftools-2.1.0/out/codex-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-mywi-update +236 -0
- nerftools-2.1.0/out/codex-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-wi-add-parent +235 -0
- nerftools-2.1.0/out/codex-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-wi-comment +225 -0
- {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
- nerftools-2.1.0/out/codex-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-wi-list +193 -0
- nerftools-2.1.0/out/codex-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-wi-show +203 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-wi-update +111 -1
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-cosmosdb/SKILL.md +2 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-devops/SKILL.md +2 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-keyvault/SKILL.md +2 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-monitor/SKILL.md +2 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-network/SKILL.md +2 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-pipelines/SKILL.md +26 -15
- nerftools-2.1.0/out/codex-plugin/skills/nerf-az-pipelines/scripts/nerf-az-pipelines-check +203 -0
- nerftools-2.1.0/out/codex-plugin/skills/nerf-az-pipelines/scripts/nerf-az-pipelines-list +163 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-pipelines/scripts/nerf-az-pipelines-run-log +111 -3
- nerftools-2.1.0/out/codex-plugin/skills/nerf-az-pipelines/scripts/nerf-az-pipelines-run-show +203 -0
- nerftools-2.1.0/out/codex-plugin/skills/nerf-az-pipelines/scripts/nerf-az-pipelines-run-timeline +256 -0
- nerftools-2.1.0/out/codex-plugin/skills/nerf-az-pipelines/scripts/nerf-az-pipelines-runs +163 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-postgres/SKILL.md +2 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-repos/SKILL.md +36 -20
- nerftools-2.1.0/out/codex-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-comments +223 -0
- nerftools-2.1.0/out/codex-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-create +279 -0
- nerftools-2.1.0/out/codex-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-edit +229 -0
- nerftools-2.1.0/out/codex-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-list +202 -0
- nerftools-2.1.0/out/codex-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-set-status +234 -0
- nerftools-2.1.0/out/codex-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-show +203 -0
- nerftools-2.1.0/out/codex-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-vote +234 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-resource/SKILL.md +2 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-role/SKILL.md +2 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-storage/SKILL.md +2 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-gh/SKILL.md +51 -3
- nerftools-2.1.0/out/codex-plugin/skills/nerf-gh/scripts/nerf-gh-pr-copilot-review-status +101 -0
- nerftools-2.1.0/out/codex-plugin/skills/nerf-gh/scripts/nerf-gh-pr-ready +82 -0
- nerftools-2.1.0/out/codex-plugin/skills/nerf-gh/scripts/nerf-gh-pr-request-copilot-review +75 -0
- {nerftools-2.0.0/out/claude-plugin → nerftools-2.1.0/out/codex-plugin}/skills/nerf-gh/scripts/nerf-gh-run-view +13 -6
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/SKILL.md +2 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-kubectl/SKILL.md +2 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-nx/SKILL.md +2 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-pkgrun/SKILL.md +2 -0
- nerftools-2.1.0/out/codex-plugin/skills/nerf-report/SKILL.md +49 -0
- nerftools-2.1.0/out/codex-plugin/skills/nerf-report/scripts/nerf-report +109 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-stdutils/SKILL.md +2 -0
- nerftools-2.1.0/out/codex-plugin/skills/nerf-tf/SKILL.md +49 -0
- nerftools-2.1.0/out/codex-plugin/skills/nerf-tf/scripts/nerf-tf-validate +56 -0
- nerftools-2.1.0/out/codex-plugin/skills/nerf-tg/SKILL.md +155 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-tg/scripts/nerf-tg-fmt +10 -6
- nerftools-2.1.0/out/codex-plugin/skills/nerf-tg/scripts/nerf-tg-fmt-all +56 -0
- nerftools-2.1.0/out/codex-plugin/skills/nerf-tg/scripts/nerf-tg-hcl-validate +60 -0
- {nerftools-2.0.0/out/claude-plugin → nerftools-2.1.0/out/codex-plugin}/skills/nerf-tg/scripts/nerf-tg-init-all +3 -3
- {nerftools-2.0.0/out/claude-plugin → nerftools-2.1.0/out/codex-plugin}/skills/nerf-tg/scripts/nerf-tg-output-all +3 -3
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-tg/scripts/nerf-tg-plan-all +3 -3
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-tg/scripts/nerf-tg-validate-all +3 -3
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-uv/SKILL.md +2 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerftools/SKILL.md +5 -1
- {nerftools-2.0.0 → nerftools-2.1.0}/pyproject.toml +1 -1
- nerftools-2.1.0/rulesync.jsonc +11 -0
- nerftools-2.1.0/scripts/_common.sh +75 -0
- nerftools-2.1.0/scripts/generate-plugins.sh +61 -0
- nerftools-2.1.0/scripts/lint-files.sh +140 -0
- nerftools-2.0.0/scripts/rulesync-upgen.bash → nerftools-2.1.0/scripts/rulesync-upgen.sh +1 -1
- nerftools-2.1.0/tests/__init__.py +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/tests/test_builder.py +106 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/tests/test_formats.py +36 -3
- {nerftools-2.0.0 → nerftools-2.1.0}/tests/test_manifest.py +43 -0
- nerftools-2.1.0/tests/test_nerf_report.py +251 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/tests/test_skill.py +1 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/uv.lock +1 -1
- nerftools-2.0.0/.github/workflows/ci.yml +0 -91
- nerftools-2.0.0/.markdownlint-cli2.jsonc +0 -16
- nerftools-2.0.0/.release-please-manifest.json +0 -3
- nerftools-2.0.0/nerf.yaml +0 -25
- nerftools-2.0.0/nerftools/__init__.py +0 -35
- nerftools-2.0.0/nerftools/default_manifests/az-account.yaml +0 -50
- nerftools-2.0.0/nerftools/default_manifests/az-aks.yaml +0 -295
- nerftools-2.0.0/nerftools/default_manifests/az-boards.yaml +0 -480
- nerftools-2.0.0/nerftools/default_manifests/az-cosmosdb.yaml +0 -135
- nerftools-2.0.0/nerftools/default_manifests/az-devops.yaml +0 -35
- nerftools-2.0.0/nerftools/default_manifests/az-keyvault.yaml +0 -173
- nerftools-2.0.0/nerftools/default_manifests/az-monitor.yaml +0 -154
- nerftools-2.0.0/nerftools/default_manifests/az-network.yaml +0 -604
- nerftools-2.0.0/nerftools/default_manifests/az-pipelines.yaml +0 -297
- nerftools-2.0.0/nerftools/default_manifests/az-postgres.yaml +0 -105
- nerftools-2.0.0/nerftools/default_manifests/az-repos.yaml +0 -301
- nerftools-2.0.0/nerftools/default_manifests/az-resource.yaml +0 -113
- nerftools-2.0.0/nerftools/default_manifests/az-role.yaml +0 -121
- nerftools-2.0.0/nerftools/default_manifests/az-storage.yaml +0 -104
- nerftools-2.0.0/nerftools/default_manifests/gh.yaml +0 -417
- nerftools-2.0.0/nerftools/default_manifests/git.yaml +0 -1156
- nerftools-2.0.0/nerftools/default_manifests/kubectl.yaml +0 -451
- nerftools-2.0.0/nerftools/default_manifests/nx.yaml +0 -90
- nerftools-2.0.0/nerftools/default_manifests/pkgrun.yaml +0 -62
- nerftools-2.0.0/nerftools/default_manifests/stdutils.yaml +0 -158
- nerftools-2.0.0/nerftools/default_manifests/tf.yaml +0 -40
- nerftools-2.0.0/nerftools/default_manifests/tg.yaml +0 -109
- nerftools-2.0.0/nerftools/default_manifests/uv.yaml +0 -70
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-area-list +0 -53
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-mywi-comment +0 -137
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-mywi-list +0 -51
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-mywi-show +0 -113
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-mywi-update +0 -131
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-wi-add-parent +0 -125
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-wi-comment +0 -115
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-wi-list +0 -83
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-wi-show +0 -93
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-pipelines/scripts/nerf-az-pipelines-check +0 -93
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-pipelines/scripts/nerf-az-pipelines-list +0 -53
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-pipelines/scripts/nerf-az-pipelines-run-show +0 -93
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-pipelines/scripts/nerf-az-pipelines-run-timeline +0 -148
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-pipelines/scripts/nerf-az-pipelines-runs +0 -53
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-comments +0 -116
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-create +0 -129
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-edit +0 -105
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-list +0 -92
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-set-status +0 -124
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-show +0 -93
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-vote +0 -124
- nerftools-2.0.0/out/claude-plugin/skills/nerf-tf/SKILL.md +0 -33
- nerftools-2.0.0/out/claude-plugin/skills/nerf-tg/scripts/nerf-tg-fmt-all +0 -52
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-area-list +0 -53
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-mywi-comment +0 -137
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-mywi-list +0 -51
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-mywi-show +0 -113
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-mywi-update +0 -131
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-wi-add-parent +0 -125
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-wi-comment +0 -115
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-wi-list +0 -83
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-wi-show +0 -93
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-pipelines/scripts/nerf-az-pipelines-check +0 -93
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-pipelines/scripts/nerf-az-pipelines-list +0 -53
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-pipelines/scripts/nerf-az-pipelines-run-show +0 -93
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-pipelines/scripts/nerf-az-pipelines-run-timeline +0 -148
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-pipelines/scripts/nerf-az-pipelines-runs +0 -53
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-comments +0 -116
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-create +0 -129
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-edit +0 -105
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-list +0 -92
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-set-status +0 -124
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-show +0 -93
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-vote +0 -124
- nerftools-2.0.0/out/codex-plugin/skills/nerf-tf/SKILL.md +0 -33
- nerftools-2.0.0/out/codex-plugin/skills/nerf-tg/SKILL.md +0 -133
- nerftools-2.0.0/out/codex-plugin/skills/nerf-tg/scripts/nerf-tg-fmt-all +0 -52
- nerftools-2.0.0/rulesync.jsonc +0 -11
- {nerftools-2.0.0 → nerftools-2.1.0}/.agents/plugins/marketplace.json +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/.claude-plugin/marketplace.json +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/.editorconfig +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/.prettierrc +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/.python-version +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/.rulesync-version +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/LICENSE +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/docs/sdd/2026-04-04-nerf-refactor/locked.md +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/nerftools/config.py +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/nerftools/default_manifests/__init__.py +0 -0
- {nerftools-2.0.0/nerftools/nerfctl → nerftools-2.1.0/nerftools/nerf_report}/__init__.py +0 -0
- {nerftools-2.0.0/tests → nerftools-2.1.0/nerftools/nerfctl}/__init__.py +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/nerftools/nerfctl/claude/grant-allow.sh +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/nerftools/nerfctl/claude/grant-by-threat.sh +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/nerftools/nerfctl/claude/grant-deny.sh +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/nerftools/nerfctl/claude/grant-list.sh +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/nerftools/nerfctl/claude/grant-reset.sh +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/nerftools/rendering.py +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/hooks/hooks.json +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/hooks/nerf-session-start +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/scripts/nerfctl-grant-allow +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/scripts/nerfctl-grant-by-threat +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/scripts/nerfctl-grant-deny +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/scripts/nerfctl-grant-list +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/scripts/nerfctl-grant-reset +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-account/scripts/nerf-az-account-list +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-account/scripts/nerf-az-account-set +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-account/scripts/nerf-az-account-show +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-aks/scripts/nerf-az-aks-command-invoke +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-aks/scripts/nerf-az-aks-get-credentials +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-aks/scripts/nerf-az-aks-get-credentials-admin +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-aks/scripts/nerf-az-aks-get-versions +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-aks/scripts/nerf-az-aks-list +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-aks/scripts/nerf-az-aks-nodepool-list +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-aks/scripts/nerf-az-aks-nodepool-show +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-aks/scripts/nerf-az-aks-show +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-cosmosdb/scripts/nerf-az-cosmosdb-database-list +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-cosmosdb/scripts/nerf-az-cosmosdb-list +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-cosmosdb/scripts/nerf-az-cosmosdb-network-rule-list +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-cosmosdb/scripts/nerf-az-cosmosdb-show +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-devops/scripts/nerf-az-devops-set-default-project +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-keyvault/scripts/nerf-az-keyvault-list +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-keyvault/scripts/nerf-az-keyvault-network-rule-list +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-keyvault/scripts/nerf-az-keyvault-secret-list +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-keyvault/scripts/nerf-az-keyvault-secret-stats +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-keyvault/scripts/nerf-az-keyvault-show +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-monitor/scripts/nerf-az-monitor-activity-log +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-monitor/scripts/nerf-az-monitor-diagnostic-settings-list +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-monitor/scripts/nerf-az-monitor-metrics-list +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-network/scripts/nerf-az-network-nic-show +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-network/scripts/nerf-az-network-nsg-list +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-network/scripts/nerf-az-network-nsg-show +0 -0
- {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
- {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
- {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
- {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
- {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
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-network/scripts/nerf-az-network-private-endpoint-list +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-network/scripts/nerf-az-network-private-endpoint-show +0 -0
- {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
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-network/scripts/nerf-az-network-public-ip-list +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-network/scripts/nerf-az-network-public-ip-show +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-network/scripts/nerf-az-network-route-table-show +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-network/scripts/nerf-az-network-subnet-show +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-network/scripts/nerf-az-network-vnet-list +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-network/scripts/nerf-az-network-vnet-peering-list +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-network/scripts/nerf-az-network-vnet-peering-show +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-network/scripts/nerf-az-network-vnet-show +0 -0
- {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
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-postgres/scripts/nerf-az-postgres-flexible-server-list +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-postgres/scripts/nerf-az-postgres-flexible-server-show +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-resource/scripts/nerf-az-group-list +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-resource/scripts/nerf-az-group-show +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-resource/scripts/nerf-az-resource-list +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-resource/scripts/nerf-az-resource-show +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-role/scripts/nerf-az-role-assignment-by-id +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-role/scripts/nerf-az-role-assignment-list +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-role/scripts/nerf-az-role-definition-list +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-storage/scripts/nerf-az-storage-account-list +0 -0
- {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
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-az-storage/scripts/nerf-az-storage-account-show +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-gh/scripts/nerf-gh-issue-comment +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-gh/scripts/nerf-gh-issue-create +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-gh/scripts/nerf-gh-issue-list +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-gh/scripts/nerf-gh-issue-view +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-gh/scripts/nerf-gh-pr-create +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-gh/scripts/nerf-gh-pr-diff +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-gh/scripts/nerf-gh-pr-inline-comments +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-gh/scripts/nerf-gh-pr-list +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-gh/scripts/nerf-gh-pr-review-comments +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-gh/scripts/nerf-gh-pr-reviews +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-gh/scripts/nerf-gh-pr-thread-comment +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-gh/scripts/nerf-gh-pr-thread-comments +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-gh/scripts/nerf-gh-pr-view +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-gh/scripts/nerf-gh-run-list +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-add +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-blame +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-branch-checkout-remote +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-branch-current +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-branch-delete-merged +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-branch-list-local +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-branch-list-remote +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-cherry-pick +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-commit +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-commit-amend +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-create-branch +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-diff +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-fetch +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-log +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-ls-remote +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-merge-no-ff +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-mv +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-pull +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-push-branch +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-push-main +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-rebase-abort +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-rebase-continue +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-rebase-unpushed +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-reflog +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-remote-list +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-reset-hard-last +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-reset-unpushed +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-restore-staged +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-restore-worktree +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-revert +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-rm +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-show +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-stash-drop +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-stash-list +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-stash-pop +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-stash-push +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-status +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-submodule-status +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-switch +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-tag +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-git/scripts/nerf-git-tag-push +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-api-resources +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-api-versions +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-cluster-info +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-config-current-context +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-config-get-contexts +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-config-use-context +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-describe +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-exec +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-explain +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-get +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-get-secrets +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-logs +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-port-forward +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-rollout-restart +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-top-nodes +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-top-pods +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-version +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-nx/scripts/nerf-nx-affected +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-nx/scripts/nerf-nx-graph +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-nx/scripts/nerf-nx-reset +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-nx/scripts/nerf-nx-run +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-nx/scripts/nerf-nx-show-project +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-nx/scripts/nerf-nx-show-projects +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-pkgrun/scripts/nerf-pkgrun-cspell +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-pkgrun/scripts/nerf-pkgrun-markdownlint +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-pkgrun/scripts/nerf-pkgrun-prettier +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-stdutils/scripts/nerf-find +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-stdutils/scripts/nerf-find-cwd +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-stdutils/scripts/nerf-grep +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-stdutils/scripts/nerf-grep-recursive-cwd +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-tf/scripts/nerf-tf-fmt +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-tg/scripts/nerf-tg-init +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-tg/scripts/nerf-tg-output +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-tg/scripts/nerf-tg-plan +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-tg/scripts/nerf-tg-validate +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-uv/scripts/nerf-uv-mypy +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-uv/scripts/nerf-uv-pytest +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-uv/scripts/nerf-uv-ruff-check +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerf-uv/scripts/nerf-uv-ruff-fix +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerfctl-grant-allow/SKILL.md +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerfctl-grant-by-threat/SKILL.md +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerfctl-grant-deny/SKILL.md +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerfctl-grant-list/SKILL.md +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/claude-plugin/skills/nerfctl-grant-reset/SKILL.md +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-account/scripts/nerf-az-account-list +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-account/scripts/nerf-az-account-set +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-account/scripts/nerf-az-account-show +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-aks/scripts/nerf-az-aks-command-invoke +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-aks/scripts/nerf-az-aks-get-credentials +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-aks/scripts/nerf-az-aks-get-credentials-admin +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-aks/scripts/nerf-az-aks-get-versions +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-aks/scripts/nerf-az-aks-list +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-aks/scripts/nerf-az-aks-nodepool-list +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-aks/scripts/nerf-az-aks-nodepool-show +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-aks/scripts/nerf-az-aks-show +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-cosmosdb/scripts/nerf-az-cosmosdb-database-list +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-cosmosdb/scripts/nerf-az-cosmosdb-list +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-cosmosdb/scripts/nerf-az-cosmosdb-network-rule-list +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-cosmosdb/scripts/nerf-az-cosmosdb-show +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-devops/scripts/nerf-az-devops-set-default-project +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-keyvault/scripts/nerf-az-keyvault-list +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-keyvault/scripts/nerf-az-keyvault-network-rule-list +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-keyvault/scripts/nerf-az-keyvault-secret-list +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-keyvault/scripts/nerf-az-keyvault-secret-stats +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-keyvault/scripts/nerf-az-keyvault-show +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-monitor/scripts/nerf-az-monitor-activity-log +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-monitor/scripts/nerf-az-monitor-diagnostic-settings-list +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-monitor/scripts/nerf-az-monitor-metrics-list +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-network/scripts/nerf-az-network-nic-show +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-network/scripts/nerf-az-network-nsg-list +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-network/scripts/nerf-az-network-nsg-show +0 -0
- {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
- {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
- {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
- {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
- {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
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-network/scripts/nerf-az-network-private-endpoint-list +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-network/scripts/nerf-az-network-private-endpoint-show +0 -0
- {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
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-network/scripts/nerf-az-network-public-ip-list +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-network/scripts/nerf-az-network-public-ip-show +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-network/scripts/nerf-az-network-route-table-show +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-network/scripts/nerf-az-network-subnet-show +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-network/scripts/nerf-az-network-vnet-list +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-network/scripts/nerf-az-network-vnet-peering-list +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-network/scripts/nerf-az-network-vnet-peering-show +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-network/scripts/nerf-az-network-vnet-show +0 -0
- {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
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-postgres/scripts/nerf-az-postgres-flexible-server-list +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-postgres/scripts/nerf-az-postgres-flexible-server-show +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-resource/scripts/nerf-az-group-list +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-resource/scripts/nerf-az-group-show +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-resource/scripts/nerf-az-resource-list +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-resource/scripts/nerf-az-resource-show +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-role/scripts/nerf-az-role-assignment-by-id +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-role/scripts/nerf-az-role-assignment-list +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-role/scripts/nerf-az-role-definition-list +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-storage/scripts/nerf-az-storage-account-list +0 -0
- {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
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-az-storage/scripts/nerf-az-storage-account-show +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-gh/scripts/nerf-gh-issue-comment +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-gh/scripts/nerf-gh-issue-create +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-gh/scripts/nerf-gh-issue-list +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-gh/scripts/nerf-gh-issue-view +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-gh/scripts/nerf-gh-pr-create +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-gh/scripts/nerf-gh-pr-diff +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-gh/scripts/nerf-gh-pr-inline-comments +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-gh/scripts/nerf-gh-pr-list +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-gh/scripts/nerf-gh-pr-review-comments +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-gh/scripts/nerf-gh-pr-reviews +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-gh/scripts/nerf-gh-pr-thread-comment +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-gh/scripts/nerf-gh-pr-thread-comments +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-gh/scripts/nerf-gh-pr-view +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-gh/scripts/nerf-gh-run-list +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-add +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-blame +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-branch-checkout-remote +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-branch-current +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-branch-delete-merged +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-branch-list-local +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-branch-list-remote +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-cherry-pick +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-commit +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-commit-amend +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-create-branch +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-diff +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-fetch +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-log +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-ls-remote +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-merge-no-ff +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-mv +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-pull +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-push-branch +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-push-main +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-rebase-abort +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-rebase-continue +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-rebase-unpushed +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-reflog +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-remote-list +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-reset-hard-last +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-reset-unpushed +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-restore-staged +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-restore-worktree +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-revert +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-rm +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-show +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-stash-drop +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-stash-list +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-stash-pop +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-stash-push +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-status +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-submodule-status +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-switch +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-tag +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-git/scripts/nerf-git-tag-push +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-api-resources +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-api-versions +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-cluster-info +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-config-current-context +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-config-get-contexts +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-config-use-context +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-describe +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-exec +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-explain +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-get +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-get-secrets +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-logs +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-port-forward +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-rollout-restart +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-top-nodes +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-top-pods +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-version +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-nx/scripts/nerf-nx-affected +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-nx/scripts/nerf-nx-graph +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-nx/scripts/nerf-nx-reset +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-nx/scripts/nerf-nx-run +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-nx/scripts/nerf-nx-show-project +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-nx/scripts/nerf-nx-show-projects +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-pkgrun/scripts/nerf-pkgrun-cspell +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-pkgrun/scripts/nerf-pkgrun-markdownlint +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-pkgrun/scripts/nerf-pkgrun-prettier +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-stdutils/scripts/nerf-find +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-stdutils/scripts/nerf-find-cwd +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-stdutils/scripts/nerf-grep +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-stdutils/scripts/nerf-grep-recursive-cwd +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-tf/scripts/nerf-tf-fmt +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-tg/scripts/nerf-tg-init +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-tg/scripts/nerf-tg-output +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-tg/scripts/nerf-tg-plan +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-tg/scripts/nerf-tg-validate +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-uv/scripts/nerf-uv-mypy +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-uv/scripts/nerf-uv-pytest +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-uv/scripts/nerf-uv-ruff-check +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/out/codex-plugin/skills/nerf-uv/scripts/nerf-uv-ruff-fix +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/pypi-dist/.gitignore +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/release-please-config.json +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/rulesync.local.jsonc.example +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/tests/test_config.py +0 -0
- {nerftools-2.0.0 → nerftools-2.1.0}/tests/test_nerfctl.py +0 -0
- {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
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
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
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
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
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
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
|
-
"
|
|
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
|
-
"
|
|
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
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
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
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
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
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
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@
|
|
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
|
-
|
|
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:
|
|
62
|
-
run: uv
|
|
77
|
+
- name: Re-lock (preserves existing pins; only the workspace version moves)
|
|
78
|
+
run: uv lock
|
|
63
79
|
|
|
64
|
-
- name: Regenerate
|
|
65
|
-
run:
|
|
80
|
+
- name: Regenerate plugins (picks up new version in plugin.json)
|
|
81
|
+
run: ./scripts/generate-plugins.sh
|
|
66
82
|
|
|
67
|
-
- name:
|
|
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/
|
|
87
|
+
git add uv.lock out/claude-plugin/ out/codex-plugin/
|
|
75
88
|
if git diff --cached --quiet; then
|
|
76
|
-
echo "
|
|
89
|
+
echo "Version-bump artifacts already in sync"
|
|
77
90
|
else
|
|
78
|
-
git commit -m "
|
|
91
|
+
git commit -m "chore: sync version-bump artifacts (uv.lock, plugin outputs)"
|
|
79
92
|
git push
|
|
80
93
|
fi
|
|
@@ -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
|
|
@@ -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
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
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
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
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
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
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
|
|