nerftools 1.4.0__tar.gz → 2.0.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/.claude/agents/nerftool-manifest-reviewer.md +235 -0
- nerftools-2.0.0/.cspell.json +60 -0
- nerftools-2.0.0/.github/agents/nerftool-manifest-reviewer.md +237 -0
- nerftools-2.0.0/.github/workflows/ci.yml +91 -0
- nerftools-2.0.0/.gitignore +72 -0
- nerftools-2.0.0/.release-please-manifest.json +3 -0
- nerftools-2.0.0/.rulesync/subagents/nerftool-manifest-reviewer.md +236 -0
- nerftools-2.0.0/.rulesync-version +1 -0
- nerftools-2.0.0/CHANGELOG.md +223 -0
- nerftools-2.0.0/CONTRIBUTING.md +113 -0
- nerftools-2.0.0/PKG-INFO +13 -0
- nerftools-2.0.0/docs/nerf-manifest.md +877 -0
- nerftools-2.0.0/nerf.yaml +25 -0
- nerftools-2.0.0/nerftools/builder.py +957 -0
- nerftools-2.0.0/nerftools/cli.py +196 -0
- nerftools-2.0.0/nerftools/config.py +437 -0
- nerftools-2.0.0/nerftools/default_manifests/az-account.yaml +50 -0
- nerftools-2.0.0/nerftools/default_manifests/az-aks.yaml +295 -0
- nerftools-2.0.0/nerftools/default_manifests/az-boards.yaml +480 -0
- nerftools-2.0.0/nerftools/default_manifests/az-cosmosdb.yaml +135 -0
- nerftools-2.0.0/nerftools/default_manifests/az-devops.yaml +35 -0
- nerftools-2.0.0/nerftools/default_manifests/az-keyvault.yaml +173 -0
- nerftools-2.0.0/nerftools/default_manifests/az-monitor.yaml +154 -0
- nerftools-2.0.0/nerftools/default_manifests/az-network.yaml +604 -0
- nerftools-2.0.0/nerftools/default_manifests/az-pipelines.yaml +297 -0
- nerftools-2.0.0/nerftools/default_manifests/az-postgres.yaml +105 -0
- nerftools-2.0.0/nerftools/default_manifests/az-repos.yaml +301 -0
- nerftools-2.0.0/nerftools/default_manifests/az-resource.yaml +113 -0
- nerftools-2.0.0/nerftools/default_manifests/az-role.yaml +121 -0
- nerftools-2.0.0/nerftools/default_manifests/az-storage.yaml +104 -0
- nerftools-2.0.0/nerftools/default_manifests/gh.yaml +417 -0
- nerftools-2.0.0/nerftools/default_manifests/git.yaml +1156 -0
- nerftools-2.0.0/nerftools/default_manifests/kubectl.yaml +451 -0
- nerftools-2.0.0/nerftools/default_manifests/nx.yaml +90 -0
- nerftools-2.0.0/nerftools/default_manifests/pkgrun.yaml +62 -0
- nerftools-2.0.0/nerftools/default_manifests/tf.yaml +40 -0
- nerftools-2.0.0/nerftools/default_manifests/tg.yaml +109 -0
- nerftools-2.0.0/nerftools/default_manifests/uv.yaml +70 -0
- nerftools-2.0.0/nerftools/formats.py +887 -0
- nerftools-2.0.0/nerftools/manifest.py +919 -0
- nerftools-2.0.0/nerftools/nerfctl/claude/grant-allow.sh +176 -0
- nerftools-2.0.0/nerftools/nerfctl/claude/grant-by-threat.sh +307 -0
- nerftools-2.0.0/nerftools/nerfctl/claude/grant-deny.sh +170 -0
- nerftools-2.0.0/nerftools/nerfctl/claude/grant-list.sh +113 -0
- nerftools-2.0.0/nerftools/nerfctl/claude/grant-reset.sh +161 -0
- nerftools-2.0.0/out/claude-plugin/.claude-plugin/plugin.json +18 -0
- nerftools-2.0.0/out/claude-plugin/hooks/hooks.json +26 -0
- nerftools-2.0.0/out/claude-plugin/hooks/nerf-bash-hint +154 -0
- nerftools-2.0.0/out/claude-plugin/hooks/nerf-session-start +27 -0
- nerftools-2.0.0/out/claude-plugin/scripts/nerfctl-grant-allow +176 -0
- nerftools-2.0.0/out/claude-plugin/scripts/nerfctl-grant-by-threat +307 -0
- nerftools-2.0.0/out/claude-plugin/scripts/nerfctl-grant-deny +170 -0
- nerftools-2.0.0/out/claude-plugin/scripts/nerfctl-grant-list +113 -0
- nerftools-2.0.0/out/claude-plugin/scripts/nerfctl-grant-reset +161 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-account/scripts/nerf-az-account-list +45 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-account/scripts/nerf-az-account-set +75 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-account/scripts/nerf-az-account-show +45 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-aks/scripts/nerf-az-aks-command-invoke +106 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-aks/scripts/nerf-az-aks-get-credentials +100 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-aks/scripts/nerf-az-aks-get-credentials-admin +100 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-aks/scripts/nerf-az-aks-get-versions +83 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-aks/scripts/nerf-az-aks-list +58 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-aks/scripts/nerf-az-aks-nodepool-list +94 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-aks/scripts/nerf-az-aks-nodepool-show +105 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-aks/scripts/nerf-az-aks-show +94 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-area-list +53 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-mywi-comment +137 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-mywi-list +51 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-mywi-show +113 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-mywi-update +131 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-wi-add-parent +125 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-wi-comment +115 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-wi-create +135 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-wi-list +83 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-wi-show +93 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-wi-update +128 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-cosmosdb/scripts/nerf-az-cosmosdb-database-list +94 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-cosmosdb/scripts/nerf-az-cosmosdb-list +58 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-cosmosdb/scripts/nerf-az-cosmosdb-network-rule-list +94 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-cosmosdb/scripts/nerf-az-cosmosdb-show +94 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-devops/scripts/nerf-az-devops-set-default-project +75 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-keyvault/scripts/nerf-az-keyvault-list +58 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-keyvault/scripts/nerf-az-keyvault-network-rule-list +88 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-keyvault/scripts/nerf-az-keyvault-secret-list +83 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-keyvault/scripts/nerf-az-keyvault-secret-stats +124 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-keyvault/scripts/nerf-az-keyvault-show +88 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-monitor/scripts/nerf-az-monitor-activity-log +119 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-monitor/scripts/nerf-az-monitor-diagnostic-settings-list +83 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-monitor/scripts/nerf-az-monitor-metrics-list +132 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-network/scripts/nerf-az-network-nic-show +94 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-network/scripts/nerf-az-network-nsg-list +58 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-network/scripts/nerf-az-network-nsg-show +94 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-network/scripts/nerf-az-network-private-dns-link-list +94 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-network/scripts/nerf-az-network-private-dns-link-show +105 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-network/scripts/nerf-az-network-private-dns-record-list +94 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-network/scripts/nerf-az-network-private-dns-zone-list +58 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-network/scripts/nerf-az-network-private-dns-zone-show +94 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-network/scripts/nerf-az-network-private-endpoint-list +58 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-network/scripts/nerf-az-network-private-endpoint-show +94 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-network/scripts/nerf-az-network-private-link-resource-list +83 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-network/scripts/nerf-az-network-public-ip-list +58 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-network/scripts/nerf-az-network-public-ip-show +94 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-network/scripts/nerf-az-network-route-table-show +94 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-network/scripts/nerf-az-network-subnet-show +105 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-network/scripts/nerf-az-network-vnet-list +58 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-network/scripts/nerf-az-network-vnet-peering-list +94 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-network/scripts/nerf-az-network-vnet-peering-show +105 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-network/scripts/nerf-az-network-vnet-show +94 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-pipelines/scripts/nerf-az-pipelines-check +93 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-pipelines/scripts/nerf-az-pipelines-list +53 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-pipelines/scripts/nerf-az-pipelines-run-log +203 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-pipelines/scripts/nerf-az-pipelines-run-show +93 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-pipelines/scripts/nerf-az-pipelines-run-timeline +148 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-pipelines/scripts/nerf-az-pipelines-runs +53 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-postgres/scripts/nerf-az-postgres-flexible-server-firewall-rule-list +94 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-postgres/scripts/nerf-az-postgres-flexible-server-list +58 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-postgres/scripts/nerf-az-postgres-flexible-server-show +94 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-comments +116 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-create +129 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-edit +105 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-list +92 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-set-status +124 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-show +93 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-vote +124 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-resource/scripts/nerf-az-group-list +53 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-resource/scripts/nerf-az-group-show +83 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-resource/scripts/nerf-az-resource-list +68 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-resource/scripts/nerf-az-resource-show +83 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-role/scripts/nerf-az-role-assignment-by-id +83 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-role/scripts/nerf-az-role-assignment-list +79 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-role/scripts/nerf-az-role-definition-list +69 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-storage/scripts/nerf-az-storage-account-list +58 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-storage/scripts/nerf-az-storage-account-network-rule-list +94 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-az-storage/scripts/nerf-az-storage-account-show +94 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-gh/scripts/nerf-gh-issue-comment +97 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-gh/scripts/nerf-gh-issue-create +93 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-gh/scripts/nerf-gh-issue-list +87 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-gh/scripts/nerf-gh-issue-view +75 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-gh/scripts/nerf-gh-pr-create +99 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-gh/scripts/nerf-gh-pr-diff +75 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-gh/scripts/nerf-gh-pr-inline-comments +85 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-gh/scripts/nerf-gh-pr-list +93 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-gh/scripts/nerf-gh-pr-review-comments +117 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-gh/scripts/nerf-gh-pr-reviews +109 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-gh/scripts/nerf-gh-pr-thread-comment +97 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-gh/scripts/nerf-gh-pr-thread-comments +85 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-gh/scripts/nerf-gh-pr-view +75 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-gh/scripts/nerf-gh-run-list +87 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-gh/scripts/nerf-gh-run-view +85 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-git/SKILL.md +687 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-git/scripts/nerf-git-add +154 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-git/scripts/nerf-git-blame +168 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-git/scripts/nerf-git-branch-checkout-remote +206 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-git/scripts/nerf-git-branch-current +134 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-git/scripts/nerf-git-branch-delete-merged +195 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-git/scripts/nerf-git-branch-list-local +134 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-git/scripts/nerf-git-branch-list-remote +134 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-git/scripts/nerf-git-cherry-pick +194 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-git/scripts/nerf-git-commit +193 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-git/scripts/nerf-git-commit-amend +212 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-git/scripts/nerf-git-create-branch +174 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-git/scripts/nerf-git-diff +201 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-git/scripts/nerf-git-fetch +174 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-git/scripts/nerf-git-log +190 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-git/scripts/nerf-git-ls-remote +200 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-git/scripts/nerf-git-merge-no-ff +194 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-git/scripts/nerf-git-mv +194 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-git/scripts/nerf-git-pull +174 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-git/scripts/nerf-git-push-branch +194 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-git/scripts/nerf-git-push-main +174 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-git/scripts/nerf-git-rebase-abort +134 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-git/scripts/nerf-git-rebase-continue +134 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-git/scripts/nerf-git-rebase-unpushed +200 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-git/scripts/nerf-git-reflog +134 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-git/scripts/nerf-git-remote-list +134 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-git/scripts/nerf-git-reset-hard-last +154 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-git/scripts/nerf-git-reset-unpushed +206 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-git/scripts/nerf-git-restore-staged +154 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-git/scripts/nerf-git-restore-worktree +154 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-git/scripts/nerf-git-revert +164 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-git/scripts/nerf-git-rm +154 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-git/scripts/nerf-git-show +168 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-git/scripts/nerf-git-stash-drop +174 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-git/scripts/nerf-git-stash-list +134 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-git/scripts/nerf-git-stash-pop +168 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-git/scripts/nerf-git-stash-push +139 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-git/scripts/nerf-git-status +134 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-git/scripts/nerf-git-submodule-status +134 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-git/scripts/nerf-git-switch +174 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-git/scripts/nerf-git-tag +202 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-git/scripts/nerf-git-tag-push +206 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-api-resources +63 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-api-versions +45 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-cluster-info +45 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-config-current-context +45 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-config-get-contexts +45 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-config-use-context +85 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-describe +137 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-exec +130 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-explain +92 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-get +151 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-get-secrets +113 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-logs +139 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-port-forward +158 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-rollout-restart +103 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-top-nodes +53 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-top-pods +74 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-version +45 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-nx/scripts/nerf-nx-affected +47 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-nx/scripts/nerf-nx-graph +47 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-nx/scripts/nerf-nx-reset +47 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-nx/scripts/nerf-nx-run +87 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-nx/scripts/nerf-nx-show-project +87 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-nx/scripts/nerf-nx-show-projects +47 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-pkgrun/scripts/nerf-pkgrun-cspell +78 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-pkgrun/scripts/nerf-pkgrun-markdownlint +78 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-pkgrun/scripts/nerf-pkgrun-prettier +78 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-stdutils/scripts/nerf-find +59 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-stdutils/scripts/nerf-find-cwd +59 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-stdutils/scripts/nerf-grep +124 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-stdutils/scripts/nerf-grep-recursive-cwd +108 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-tf/scripts/nerf-tf-fmt +165 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-tg/scripts/nerf-tg-fmt +52 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-tg/scripts/nerf-tg-fmt-all +52 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-tg/scripts/nerf-tg-init +52 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-tg/scripts/nerf-tg-init-all +52 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-tg/scripts/nerf-tg-output +45 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-tg/scripts/nerf-tg-output-all +45 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-tg/scripts/nerf-tg-plan +45 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-tg/scripts/nerf-tg-plan-all +45 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-tg/scripts/nerf-tg-validate +45 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-tg/scripts/nerf-tg-validate-all +45 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-uv/scripts/nerf-uv-mypy +59 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-uv/scripts/nerf-uv-pytest +59 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-uv/scripts/nerf-uv-ruff-check +59 -0
- nerftools-2.0.0/out/claude-plugin/skills/nerf-uv/scripts/nerf-uv-ruff-fix +59 -0
- nerftools-2.0.0/out/codex-plugin/.codex-plugin/plugin.json +18 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-account/scripts/nerf-az-account-list +45 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-account/scripts/nerf-az-account-set +75 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-account/scripts/nerf-az-account-show +45 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-aks/scripts/nerf-az-aks-command-invoke +106 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-aks/scripts/nerf-az-aks-get-credentials +100 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-aks/scripts/nerf-az-aks-get-credentials-admin +100 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-aks/scripts/nerf-az-aks-get-versions +83 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-aks/scripts/nerf-az-aks-list +58 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-aks/scripts/nerf-az-aks-nodepool-list +94 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-aks/scripts/nerf-az-aks-nodepool-show +105 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-aks/scripts/nerf-az-aks-show +94 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-area-list +53 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-mywi-comment +137 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-mywi-list +51 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-mywi-show +113 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-mywi-update +131 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-wi-add-parent +125 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-wi-comment +115 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-wi-create +135 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-wi-list +83 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-wi-show +93 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-wi-update +128 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-cosmosdb/scripts/nerf-az-cosmosdb-database-list +94 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-cosmosdb/scripts/nerf-az-cosmosdb-list +58 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-cosmosdb/scripts/nerf-az-cosmosdb-network-rule-list +94 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-cosmosdb/scripts/nerf-az-cosmosdb-show +94 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-devops/scripts/nerf-az-devops-set-default-project +75 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-keyvault/scripts/nerf-az-keyvault-list +58 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-keyvault/scripts/nerf-az-keyvault-network-rule-list +88 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-keyvault/scripts/nerf-az-keyvault-secret-list +83 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-keyvault/scripts/nerf-az-keyvault-secret-stats +124 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-keyvault/scripts/nerf-az-keyvault-show +88 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-monitor/scripts/nerf-az-monitor-activity-log +119 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-monitor/scripts/nerf-az-monitor-diagnostic-settings-list +83 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-monitor/scripts/nerf-az-monitor-metrics-list +132 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-network/scripts/nerf-az-network-nic-show +94 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-network/scripts/nerf-az-network-nsg-list +58 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-network/scripts/nerf-az-network-nsg-show +94 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-network/scripts/nerf-az-network-private-dns-link-list +94 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-network/scripts/nerf-az-network-private-dns-link-show +105 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-network/scripts/nerf-az-network-private-dns-record-list +94 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-network/scripts/nerf-az-network-private-dns-zone-list +58 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-network/scripts/nerf-az-network-private-dns-zone-show +94 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-network/scripts/nerf-az-network-private-endpoint-list +58 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-network/scripts/nerf-az-network-private-endpoint-show +94 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-network/scripts/nerf-az-network-private-link-resource-list +83 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-network/scripts/nerf-az-network-public-ip-list +58 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-network/scripts/nerf-az-network-public-ip-show +94 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-network/scripts/nerf-az-network-route-table-show +94 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-network/scripts/nerf-az-network-subnet-show +105 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-network/scripts/nerf-az-network-vnet-list +58 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-network/scripts/nerf-az-network-vnet-peering-list +94 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-network/scripts/nerf-az-network-vnet-peering-show +105 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-network/scripts/nerf-az-network-vnet-show +94 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-pipelines/scripts/nerf-az-pipelines-check +93 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-pipelines/scripts/nerf-az-pipelines-list +53 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-pipelines/scripts/nerf-az-pipelines-run-log +203 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-pipelines/scripts/nerf-az-pipelines-run-show +93 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-pipelines/scripts/nerf-az-pipelines-run-timeline +148 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-pipelines/scripts/nerf-az-pipelines-runs +53 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-postgres/scripts/nerf-az-postgres-flexible-server-firewall-rule-list +94 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-postgres/scripts/nerf-az-postgres-flexible-server-list +58 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-postgres/scripts/nerf-az-postgres-flexible-server-show +94 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-comments +116 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-create +129 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-edit +105 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-list +92 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-set-status +124 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-show +93 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-vote +124 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-resource/scripts/nerf-az-group-list +53 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-resource/scripts/nerf-az-group-show +83 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-resource/scripts/nerf-az-resource-list +68 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-resource/scripts/nerf-az-resource-show +83 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-role/scripts/nerf-az-role-assignment-by-id +83 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-role/scripts/nerf-az-role-assignment-list +79 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-role/scripts/nerf-az-role-definition-list +69 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-storage/scripts/nerf-az-storage-account-list +58 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-storage/scripts/nerf-az-storage-account-network-rule-list +94 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-az-storage/scripts/nerf-az-storage-account-show +94 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-gh/scripts/nerf-gh-issue-comment +97 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-gh/scripts/nerf-gh-issue-create +93 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-gh/scripts/nerf-gh-issue-list +87 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-gh/scripts/nerf-gh-issue-view +75 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-gh/scripts/nerf-gh-pr-create +99 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-gh/scripts/nerf-gh-pr-diff +75 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-gh/scripts/nerf-gh-pr-inline-comments +85 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-gh/scripts/nerf-gh-pr-list +93 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-gh/scripts/nerf-gh-pr-review-comments +117 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-gh/scripts/nerf-gh-pr-reviews +109 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-gh/scripts/nerf-gh-pr-thread-comment +97 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-gh/scripts/nerf-gh-pr-thread-comments +85 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-gh/scripts/nerf-gh-pr-view +75 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-gh/scripts/nerf-gh-run-list +87 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-gh/scripts/nerf-gh-run-view +85 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-git/SKILL.md +687 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-git/scripts/nerf-git-add +154 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-git/scripts/nerf-git-blame +168 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-git/scripts/nerf-git-branch-checkout-remote +206 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-git/scripts/nerf-git-branch-current +134 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-git/scripts/nerf-git-branch-delete-merged +195 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-git/scripts/nerf-git-branch-list-local +134 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-git/scripts/nerf-git-branch-list-remote +134 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-git/scripts/nerf-git-cherry-pick +194 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-git/scripts/nerf-git-commit +193 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-git/scripts/nerf-git-commit-amend +212 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-git/scripts/nerf-git-create-branch +174 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-git/scripts/nerf-git-diff +201 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-git/scripts/nerf-git-fetch +174 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-git/scripts/nerf-git-log +190 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-git/scripts/nerf-git-ls-remote +200 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-git/scripts/nerf-git-merge-no-ff +194 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-git/scripts/nerf-git-mv +194 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-git/scripts/nerf-git-pull +174 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-git/scripts/nerf-git-push-branch +194 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-git/scripts/nerf-git-push-main +174 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-git/scripts/nerf-git-rebase-abort +134 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-git/scripts/nerf-git-rebase-continue +134 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-git/scripts/nerf-git-rebase-unpushed +200 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-git/scripts/nerf-git-reflog +134 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-git/scripts/nerf-git-remote-list +134 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-git/scripts/nerf-git-reset-hard-last +154 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-git/scripts/nerf-git-reset-unpushed +206 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-git/scripts/nerf-git-restore-staged +154 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-git/scripts/nerf-git-restore-worktree +154 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-git/scripts/nerf-git-revert +164 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-git/scripts/nerf-git-rm +154 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-git/scripts/nerf-git-show +168 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-git/scripts/nerf-git-stash-drop +174 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-git/scripts/nerf-git-stash-list +134 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-git/scripts/nerf-git-stash-pop +168 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-git/scripts/nerf-git-stash-push +139 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-git/scripts/nerf-git-status +134 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-git/scripts/nerf-git-submodule-status +134 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-git/scripts/nerf-git-switch +174 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-git/scripts/nerf-git-tag +202 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-git/scripts/nerf-git-tag-push +206 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-api-resources +63 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-api-versions +45 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-cluster-info +45 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-config-current-context +45 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-config-get-contexts +45 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-config-use-context +85 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-describe +137 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-exec +130 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-explain +92 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-get +151 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-get-secrets +113 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-logs +139 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-port-forward +158 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-rollout-restart +103 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-top-nodes +53 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-top-pods +74 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-version +45 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-nx/scripts/nerf-nx-affected +47 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-nx/scripts/nerf-nx-graph +47 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-nx/scripts/nerf-nx-reset +47 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-nx/scripts/nerf-nx-run +87 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-nx/scripts/nerf-nx-show-project +87 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-nx/scripts/nerf-nx-show-projects +47 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-pkgrun/scripts/nerf-pkgrun-cspell +78 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-pkgrun/scripts/nerf-pkgrun-markdownlint +78 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-pkgrun/scripts/nerf-pkgrun-prettier +78 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-stdutils/scripts/nerf-find +59 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-stdutils/scripts/nerf-find-cwd +59 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-stdutils/scripts/nerf-grep +124 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-stdutils/scripts/nerf-grep-recursive-cwd +108 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-tf/scripts/nerf-tf-fmt +165 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-tg/scripts/nerf-tg-fmt +52 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-tg/scripts/nerf-tg-fmt-all +52 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-tg/scripts/nerf-tg-init +52 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-tg/scripts/nerf-tg-init-all +52 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-tg/scripts/nerf-tg-output +45 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-tg/scripts/nerf-tg-output-all +45 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-tg/scripts/nerf-tg-plan +45 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-tg/scripts/nerf-tg-plan-all +45 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-tg/scripts/nerf-tg-validate +45 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-tg/scripts/nerf-tg-validate-all +45 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-uv/scripts/nerf-uv-mypy +59 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-uv/scripts/nerf-uv-pytest +59 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-uv/scripts/nerf-uv-ruff-check +59 -0
- nerftools-2.0.0/out/codex-plugin/skills/nerf-uv/scripts/nerf-uv-ruff-fix +59 -0
- nerftools-2.0.0/pyproject.toml +64 -0
- nerftools-2.0.0/rulesync.jsonc +11 -0
- nerftools-2.0.0/rulesync.local.jsonc.example +14 -0
- nerftools-2.0.0/scripts/rulesync-upgen.bash +48 -0
- nerftools-2.0.0/tests/test_builder.py +1211 -0
- nerftools-2.0.0/tests/test_config.py +371 -0
- nerftools-2.0.0/tests/test_formats.py +783 -0
- nerftools-2.0.0/tests/test_manifest.py +990 -0
- nerftools-2.0.0/uv.lock +384 -0
- nerftools-1.4.0/.cspell.json +0 -53
- nerftools-1.4.0/.github/workflows/ci.yml +0 -63
- nerftools-1.4.0/.gitignore +0 -45
- nerftools-1.4.0/.release-please-manifest.json +0 -3
- nerftools-1.4.0/CHANGELOG.md +0 -178
- nerftools-1.4.0/CONTRIBUTING.md +0 -90
- nerftools-1.4.0/PKG-INFO +0 -13
- nerftools-1.4.0/docs/nerf-manifest.md +0 -772
- nerftools-1.4.0/nerf.yaml +0 -22
- nerftools-1.4.0/nerftools/builder.py +0 -951
- nerftools-1.4.0/nerftools/cli.py +0 -193
- nerftools-1.4.0/nerftools/config.py +0 -399
- nerftools-1.4.0/nerftools/default_manifests/az-account.yaml +0 -48
- nerftools-1.4.0/nerftools/default_manifests/az-aks.yaml +0 -293
- nerftools-1.4.0/nerftools/default_manifests/az-boards.yaml +0 -478
- nerftools-1.4.0/nerftools/default_manifests/az-cosmosdb.yaml +0 -133
- nerftools-1.4.0/nerftools/default_manifests/az-devops.yaml +0 -33
- nerftools-1.4.0/nerftools/default_manifests/az-keyvault.yaml +0 -171
- nerftools-1.4.0/nerftools/default_manifests/az-monitor.yaml +0 -152
- nerftools-1.4.0/nerftools/default_manifests/az-network.yaml +0 -602
- nerftools-1.4.0/nerftools/default_manifests/az-pipelines.yaml +0 -295
- nerftools-1.4.0/nerftools/default_manifests/az-postgres.yaml +0 -103
- nerftools-1.4.0/nerftools/default_manifests/az-repos.yaml +0 -299
- nerftools-1.4.0/nerftools/default_manifests/az-resource.yaml +0 -110
- nerftools-1.4.0/nerftools/default_manifests/az-role.yaml +0 -119
- nerftools-1.4.0/nerftools/default_manifests/az-storage.yaml +0 -102
- nerftools-1.4.0/nerftools/default_manifests/gh.yaml +0 -410
- nerftools-1.4.0/nerftools/default_manifests/git.yaml +0 -603
- nerftools-1.4.0/nerftools/default_manifests/kubectl.yaml +0 -449
- nerftools-1.4.0/nerftools/default_manifests/nx.yaml +0 -88
- nerftools-1.4.0/nerftools/default_manifests/pkgrun.yaml +0 -58
- nerftools-1.4.0/nerftools/default_manifests/tf.yaml +0 -38
- nerftools-1.4.0/nerftools/default_manifests/tg.yaml +0 -107
- nerftools-1.4.0/nerftools/default_manifests/uv.yaml +0 -68
- nerftools-1.4.0/nerftools/formats.py +0 -542
- nerftools-1.4.0/nerftools/manifest.py +0 -873
- nerftools-1.4.0/nerftools/nerfctl/claude/grant-allow.sh +0 -170
- nerftools-1.4.0/nerftools/nerfctl/claude/grant-by-threat.sh +0 -307
- nerftools-1.4.0/nerftools/nerfctl/claude/grant-deny.sh +0 -164
- nerftools-1.4.0/nerftools/nerfctl/claude/grant-list.sh +0 -107
- nerftools-1.4.0/nerftools/nerfctl/claude/grant-reset.sh +0 -155
- nerftools-1.4.0/out/claude-plugin/.claude-plugin/plugin.json +0 -18
- nerftools-1.4.0/out/claude-plugin/scripts/nerfctl-grant-allow +0 -170
- nerftools-1.4.0/out/claude-plugin/scripts/nerfctl-grant-by-threat +0 -307
- nerftools-1.4.0/out/claude-plugin/scripts/nerfctl-grant-deny +0 -164
- nerftools-1.4.0/out/claude-plugin/scripts/nerfctl-grant-list +0 -107
- nerftools-1.4.0/out/claude-plugin/scripts/nerfctl-grant-reset +0 -155
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-account/scripts/nerf-az-account-list +0 -39
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-account/scripts/nerf-az-account-set +0 -69
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-account/scripts/nerf-az-account-show +0 -39
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-aks/scripts/nerf-az-aks-command-invoke +0 -100
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-aks/scripts/nerf-az-aks-get-credentials +0 -94
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-aks/scripts/nerf-az-aks-get-credentials-admin +0 -94
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-aks/scripts/nerf-az-aks-get-versions +0 -77
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-aks/scripts/nerf-az-aks-list +0 -52
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-aks/scripts/nerf-az-aks-nodepool-list +0 -88
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-aks/scripts/nerf-az-aks-nodepool-show +0 -99
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-aks/scripts/nerf-az-aks-show +0 -88
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-area-list +0 -47
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-mywi-comment +0 -131
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-mywi-list +0 -45
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-mywi-show +0 -107
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-mywi-update +0 -125
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-wi-add-parent +0 -119
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-wi-comment +0 -109
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-wi-create +0 -129
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-wi-list +0 -77
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-wi-show +0 -87
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-wi-update +0 -122
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-cosmosdb/scripts/nerf-az-cosmosdb-database-list +0 -88
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-cosmosdb/scripts/nerf-az-cosmosdb-list +0 -52
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-cosmosdb/scripts/nerf-az-cosmosdb-network-rule-list +0 -88
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-cosmosdb/scripts/nerf-az-cosmosdb-show +0 -88
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-devops/scripts/nerf-az-devops-set-default-project +0 -69
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-keyvault/scripts/nerf-az-keyvault-list +0 -52
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-keyvault/scripts/nerf-az-keyvault-network-rule-list +0 -82
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-keyvault/scripts/nerf-az-keyvault-secret-list +0 -77
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-keyvault/scripts/nerf-az-keyvault-secret-stats +0 -118
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-keyvault/scripts/nerf-az-keyvault-show +0 -82
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-monitor/scripts/nerf-az-monitor-activity-log +0 -113
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-monitor/scripts/nerf-az-monitor-diagnostic-settings-list +0 -77
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-monitor/scripts/nerf-az-monitor-metrics-list +0 -126
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-network/scripts/nerf-az-network-nic-show +0 -88
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-network/scripts/nerf-az-network-nsg-list +0 -52
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-network/scripts/nerf-az-network-nsg-show +0 -88
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-network/scripts/nerf-az-network-private-dns-link-list +0 -88
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-network/scripts/nerf-az-network-private-dns-link-show +0 -99
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-network/scripts/nerf-az-network-private-dns-record-list +0 -88
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-network/scripts/nerf-az-network-private-dns-zone-list +0 -52
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-network/scripts/nerf-az-network-private-dns-zone-show +0 -88
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-network/scripts/nerf-az-network-private-endpoint-list +0 -52
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-network/scripts/nerf-az-network-private-endpoint-show +0 -88
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-network/scripts/nerf-az-network-private-link-resource-list +0 -77
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-network/scripts/nerf-az-network-public-ip-list +0 -52
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-network/scripts/nerf-az-network-public-ip-show +0 -88
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-network/scripts/nerf-az-network-route-table-show +0 -88
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-network/scripts/nerf-az-network-subnet-show +0 -99
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-network/scripts/nerf-az-network-vnet-list +0 -52
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-network/scripts/nerf-az-network-vnet-peering-list +0 -88
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-network/scripts/nerf-az-network-vnet-peering-show +0 -99
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-network/scripts/nerf-az-network-vnet-show +0 -88
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-pipelines/scripts/nerf-az-pipelines-check +0 -87
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-pipelines/scripts/nerf-az-pipelines-list +0 -47
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-pipelines/scripts/nerf-az-pipelines-run-log +0 -197
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-pipelines/scripts/nerf-az-pipelines-run-show +0 -87
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-pipelines/scripts/nerf-az-pipelines-run-timeline +0 -142
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-pipelines/scripts/nerf-az-pipelines-runs +0 -47
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-postgres/scripts/nerf-az-postgres-flexible-server-firewall-rule-list +0 -88
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-postgres/scripts/nerf-az-postgres-flexible-server-list +0 -52
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-postgres/scripts/nerf-az-postgres-flexible-server-show +0 -88
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-comments +0 -110
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-create +0 -123
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-edit +0 -99
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-list +0 -86
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-set-status +0 -118
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-show +0 -87
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-vote +0 -118
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-resource/scripts/nerf-az-group-list +0 -47
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-resource/scripts/nerf-az-group-show +0 -77
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-resource/scripts/nerf-az-resource-list +0 -62
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-resource/scripts/nerf-az-resource-show +0 -77
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-role/scripts/nerf-az-role-assignment-by-id +0 -77
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-role/scripts/nerf-az-role-assignment-list +0 -73
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-role/scripts/nerf-az-role-definition-list +0 -63
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-storage/scripts/nerf-az-storage-account-list +0 -52
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-storage/scripts/nerf-az-storage-account-network-rule-list +0 -88
- nerftools-1.4.0/out/claude-plugin/skills/nerf-az-storage/scripts/nerf-az-storage-account-show +0 -88
- nerftools-1.4.0/out/claude-plugin/skills/nerf-gh/scripts/nerf-gh-issue-comment +0 -91
- nerftools-1.4.0/out/claude-plugin/skills/nerf-gh/scripts/nerf-gh-issue-create +0 -87
- nerftools-1.4.0/out/claude-plugin/skills/nerf-gh/scripts/nerf-gh-issue-list +0 -81
- nerftools-1.4.0/out/claude-plugin/skills/nerf-gh/scripts/nerf-gh-issue-view +0 -69
- nerftools-1.4.0/out/claude-plugin/skills/nerf-gh/scripts/nerf-gh-pr-create +0 -93
- nerftools-1.4.0/out/claude-plugin/skills/nerf-gh/scripts/nerf-gh-pr-diff +0 -69
- nerftools-1.4.0/out/claude-plugin/skills/nerf-gh/scripts/nerf-gh-pr-inline-comments +0 -79
- nerftools-1.4.0/out/claude-plugin/skills/nerf-gh/scripts/nerf-gh-pr-list +0 -87
- nerftools-1.4.0/out/claude-plugin/skills/nerf-gh/scripts/nerf-gh-pr-review-comments +0 -111
- nerftools-1.4.0/out/claude-plugin/skills/nerf-gh/scripts/nerf-gh-pr-reviews +0 -99
- nerftools-1.4.0/out/claude-plugin/skills/nerf-gh/scripts/nerf-gh-pr-thread-comment +0 -91
- nerftools-1.4.0/out/claude-plugin/skills/nerf-gh/scripts/nerf-gh-pr-thread-comments +0 -79
- nerftools-1.4.0/out/claude-plugin/skills/nerf-gh/scripts/nerf-gh-pr-view +0 -69
- nerftools-1.4.0/out/claude-plugin/skills/nerf-gh/scripts/nerf-gh-run-list +0 -81
- nerftools-1.4.0/out/claude-plugin/skills/nerf-gh/scripts/nerf-gh-run-view +0 -79
- nerftools-1.4.0/out/claude-plugin/skills/nerf-git/SKILL.md +0 -417
- nerftools-1.4.0/out/claude-plugin/skills/nerf-git/scripts/nerf-git-add +0 -148
- nerftools-1.4.0/out/claude-plugin/skills/nerf-git/scripts/nerf-git-branch-checkout-remote +0 -200
- nerftools-1.4.0/out/claude-plugin/skills/nerf-git/scripts/nerf-git-branch-delete-merged +0 -189
- nerftools-1.4.0/out/claude-plugin/skills/nerf-git/scripts/nerf-git-branch-list-local +0 -128
- nerftools-1.4.0/out/claude-plugin/skills/nerf-git/scripts/nerf-git-branch-list-remote +0 -128
- nerftools-1.4.0/out/claude-plugin/skills/nerf-git/scripts/nerf-git-commit +0 -171
- nerftools-1.4.0/out/claude-plugin/skills/nerf-git/scripts/nerf-git-commit-amend +0 -188
- nerftools-1.4.0/out/claude-plugin/skills/nerf-git/scripts/nerf-git-create-branch +0 -168
- nerftools-1.4.0/out/claude-plugin/skills/nerf-git/scripts/nerf-git-diff +0 -128
- nerftools-1.4.0/out/claude-plugin/skills/nerf-git/scripts/nerf-git-diff-staged +0 -128
- nerftools-1.4.0/out/claude-plugin/skills/nerf-git/scripts/nerf-git-fetch +0 -168
- nerftools-1.4.0/out/claude-plugin/skills/nerf-git/scripts/nerf-git-log +0 -128
- nerftools-1.4.0/out/claude-plugin/skills/nerf-git/scripts/nerf-git-pull +0 -168
- nerftools-1.4.0/out/claude-plugin/skills/nerf-git/scripts/nerf-git-push-branch +0 -188
- nerftools-1.4.0/out/claude-plugin/skills/nerf-git/scripts/nerf-git-push-main +0 -168
- nerftools-1.4.0/out/claude-plugin/skills/nerf-git/scripts/nerf-git-rebase-abort +0 -128
- nerftools-1.4.0/out/claude-plugin/skills/nerf-git/scripts/nerf-git-rebase-continue +0 -128
- nerftools-1.4.0/out/claude-plugin/skills/nerf-git/scripts/nerf-git-rebase-unpushed +0 -194
- nerftools-1.4.0/out/claude-plugin/skills/nerf-git/scripts/nerf-git-reset-hard-last +0 -148
- nerftools-1.4.0/out/claude-plugin/skills/nerf-git/scripts/nerf-git-reset-unpushed +0 -200
- nerftools-1.4.0/out/claude-plugin/skills/nerf-git/scripts/nerf-git-revert +0 -158
- nerftools-1.4.0/out/claude-plugin/skills/nerf-git/scripts/nerf-git-status +0 -128
- nerftools-1.4.0/out/claude-plugin/skills/nerf-git/scripts/nerf-git-switch +0 -168
- nerftools-1.4.0/out/claude-plugin/skills/nerf-git/scripts/nerf-git-tag +0 -196
- nerftools-1.4.0/out/claude-plugin/skills/nerf-git/scripts/nerf-git-tag-push +0 -200
- nerftools-1.4.0/out/claude-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-api-resources +0 -57
- nerftools-1.4.0/out/claude-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-api-versions +0 -39
- nerftools-1.4.0/out/claude-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-cluster-info +0 -39
- nerftools-1.4.0/out/claude-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-config-current-context +0 -39
- nerftools-1.4.0/out/claude-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-config-get-contexts +0 -39
- nerftools-1.4.0/out/claude-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-config-use-context +0 -79
- nerftools-1.4.0/out/claude-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-describe +0 -131
- nerftools-1.4.0/out/claude-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-exec +0 -124
- nerftools-1.4.0/out/claude-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-explain +0 -86
- nerftools-1.4.0/out/claude-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-get +0 -145
- nerftools-1.4.0/out/claude-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-get-secrets +0 -107
- nerftools-1.4.0/out/claude-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-logs +0 -133
- nerftools-1.4.0/out/claude-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-port-forward +0 -152
- nerftools-1.4.0/out/claude-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-rollout-restart +0 -97
- nerftools-1.4.0/out/claude-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-top-nodes +0 -47
- nerftools-1.4.0/out/claude-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-top-pods +0 -68
- nerftools-1.4.0/out/claude-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-version +0 -39
- nerftools-1.4.0/out/claude-plugin/skills/nerf-nx/scripts/nerf-nx-affected +0 -41
- nerftools-1.4.0/out/claude-plugin/skills/nerf-nx/scripts/nerf-nx-graph +0 -41
- nerftools-1.4.0/out/claude-plugin/skills/nerf-nx/scripts/nerf-nx-reset +0 -41
- nerftools-1.4.0/out/claude-plugin/skills/nerf-nx/scripts/nerf-nx-run +0 -81
- nerftools-1.4.0/out/claude-plugin/skills/nerf-nx/scripts/nerf-nx-show-project +0 -81
- nerftools-1.4.0/out/claude-plugin/skills/nerf-nx/scripts/nerf-nx-show-projects +0 -41
- nerftools-1.4.0/out/claude-plugin/skills/nerf-pkgrun/scripts/nerf-pkgrun-cspell +0 -72
- nerftools-1.4.0/out/claude-plugin/skills/nerf-pkgrun/scripts/nerf-pkgrun-markdownlint +0 -72
- nerftools-1.4.0/out/claude-plugin/skills/nerf-pkgrun/scripts/nerf-pkgrun-prettier +0 -72
- nerftools-1.4.0/out/claude-plugin/skills/nerf-stdutils/scripts/nerf-find +0 -53
- nerftools-1.4.0/out/claude-plugin/skills/nerf-stdutils/scripts/nerf-find-cwd +0 -53
- nerftools-1.4.0/out/claude-plugin/skills/nerf-stdutils/scripts/nerf-grep +0 -118
- nerftools-1.4.0/out/claude-plugin/skills/nerf-stdutils/scripts/nerf-grep-recursive-cwd +0 -102
- nerftools-1.4.0/out/claude-plugin/skills/nerf-tf/scripts/nerf-tf-fmt +0 -159
- nerftools-1.4.0/out/claude-plugin/skills/nerf-tg/scripts/nerf-tg-fmt +0 -46
- nerftools-1.4.0/out/claude-plugin/skills/nerf-tg/scripts/nerf-tg-fmt-all +0 -46
- nerftools-1.4.0/out/claude-plugin/skills/nerf-tg/scripts/nerf-tg-init +0 -46
- nerftools-1.4.0/out/claude-plugin/skills/nerf-tg/scripts/nerf-tg-init-all +0 -46
- nerftools-1.4.0/out/claude-plugin/skills/nerf-tg/scripts/nerf-tg-output +0 -39
- nerftools-1.4.0/out/claude-plugin/skills/nerf-tg/scripts/nerf-tg-output-all +0 -39
- nerftools-1.4.0/out/claude-plugin/skills/nerf-tg/scripts/nerf-tg-plan +0 -39
- nerftools-1.4.0/out/claude-plugin/skills/nerf-tg/scripts/nerf-tg-plan-all +0 -39
- nerftools-1.4.0/out/claude-plugin/skills/nerf-tg/scripts/nerf-tg-validate +0 -39
- nerftools-1.4.0/out/claude-plugin/skills/nerf-tg/scripts/nerf-tg-validate-all +0 -39
- nerftools-1.4.0/out/claude-plugin/skills/nerf-uv/scripts/nerf-uv-mypy +0 -53
- nerftools-1.4.0/out/claude-plugin/skills/nerf-uv/scripts/nerf-uv-pytest +0 -53
- nerftools-1.4.0/out/claude-plugin/skills/nerf-uv/scripts/nerf-uv-ruff-check +0 -53
- nerftools-1.4.0/out/claude-plugin/skills/nerf-uv/scripts/nerf-uv-ruff-fix +0 -53
- nerftools-1.4.0/out/codex-plugin/.codex-plugin/plugin.json +0 -18
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-account/scripts/nerf-az-account-list +0 -39
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-account/scripts/nerf-az-account-set +0 -69
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-account/scripts/nerf-az-account-show +0 -39
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-aks/scripts/nerf-az-aks-command-invoke +0 -100
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-aks/scripts/nerf-az-aks-get-credentials +0 -94
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-aks/scripts/nerf-az-aks-get-credentials-admin +0 -94
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-aks/scripts/nerf-az-aks-get-versions +0 -77
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-aks/scripts/nerf-az-aks-list +0 -52
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-aks/scripts/nerf-az-aks-nodepool-list +0 -88
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-aks/scripts/nerf-az-aks-nodepool-show +0 -99
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-aks/scripts/nerf-az-aks-show +0 -88
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-area-list +0 -47
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-mywi-comment +0 -131
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-mywi-list +0 -45
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-mywi-show +0 -107
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-mywi-update +0 -125
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-wi-add-parent +0 -119
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-wi-comment +0 -109
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-wi-create +0 -129
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-wi-list +0 -77
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-wi-show +0 -87
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-boards/scripts/nerf-az-boards-wi-update +0 -122
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-cosmosdb/scripts/nerf-az-cosmosdb-database-list +0 -88
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-cosmosdb/scripts/nerf-az-cosmosdb-list +0 -52
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-cosmosdb/scripts/nerf-az-cosmosdb-network-rule-list +0 -88
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-cosmosdb/scripts/nerf-az-cosmosdb-show +0 -88
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-devops/scripts/nerf-az-devops-set-default-project +0 -69
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-keyvault/scripts/nerf-az-keyvault-list +0 -52
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-keyvault/scripts/nerf-az-keyvault-network-rule-list +0 -82
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-keyvault/scripts/nerf-az-keyvault-secret-list +0 -77
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-keyvault/scripts/nerf-az-keyvault-secret-stats +0 -118
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-keyvault/scripts/nerf-az-keyvault-show +0 -82
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-monitor/scripts/nerf-az-monitor-activity-log +0 -113
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-monitor/scripts/nerf-az-monitor-diagnostic-settings-list +0 -77
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-monitor/scripts/nerf-az-monitor-metrics-list +0 -126
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-network/scripts/nerf-az-network-nic-show +0 -88
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-network/scripts/nerf-az-network-nsg-list +0 -52
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-network/scripts/nerf-az-network-nsg-show +0 -88
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-network/scripts/nerf-az-network-private-dns-link-list +0 -88
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-network/scripts/nerf-az-network-private-dns-link-show +0 -99
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-network/scripts/nerf-az-network-private-dns-record-list +0 -88
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-network/scripts/nerf-az-network-private-dns-zone-list +0 -52
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-network/scripts/nerf-az-network-private-dns-zone-show +0 -88
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-network/scripts/nerf-az-network-private-endpoint-list +0 -52
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-network/scripts/nerf-az-network-private-endpoint-show +0 -88
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-network/scripts/nerf-az-network-private-link-resource-list +0 -77
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-network/scripts/nerf-az-network-public-ip-list +0 -52
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-network/scripts/nerf-az-network-public-ip-show +0 -88
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-network/scripts/nerf-az-network-route-table-show +0 -88
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-network/scripts/nerf-az-network-subnet-show +0 -99
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-network/scripts/nerf-az-network-vnet-list +0 -52
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-network/scripts/nerf-az-network-vnet-peering-list +0 -88
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-network/scripts/nerf-az-network-vnet-peering-show +0 -99
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-network/scripts/nerf-az-network-vnet-show +0 -88
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-pipelines/scripts/nerf-az-pipelines-check +0 -87
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-pipelines/scripts/nerf-az-pipelines-list +0 -47
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-pipelines/scripts/nerf-az-pipelines-run-log +0 -197
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-pipelines/scripts/nerf-az-pipelines-run-show +0 -87
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-pipelines/scripts/nerf-az-pipelines-run-timeline +0 -142
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-pipelines/scripts/nerf-az-pipelines-runs +0 -47
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-postgres/scripts/nerf-az-postgres-flexible-server-firewall-rule-list +0 -88
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-postgres/scripts/nerf-az-postgres-flexible-server-list +0 -52
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-postgres/scripts/nerf-az-postgres-flexible-server-show +0 -88
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-comments +0 -110
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-create +0 -123
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-edit +0 -99
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-list +0 -86
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-set-status +0 -118
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-show +0 -87
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-repos/scripts/nerf-az-repos-pr-vote +0 -118
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-resource/scripts/nerf-az-group-list +0 -47
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-resource/scripts/nerf-az-group-show +0 -77
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-resource/scripts/nerf-az-resource-list +0 -62
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-resource/scripts/nerf-az-resource-show +0 -77
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-role/scripts/nerf-az-role-assignment-by-id +0 -77
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-role/scripts/nerf-az-role-assignment-list +0 -73
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-role/scripts/nerf-az-role-definition-list +0 -63
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-storage/scripts/nerf-az-storage-account-list +0 -52
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-storage/scripts/nerf-az-storage-account-network-rule-list +0 -88
- nerftools-1.4.0/out/codex-plugin/skills/nerf-az-storage/scripts/nerf-az-storage-account-show +0 -88
- nerftools-1.4.0/out/codex-plugin/skills/nerf-gh/scripts/nerf-gh-issue-comment +0 -91
- nerftools-1.4.0/out/codex-plugin/skills/nerf-gh/scripts/nerf-gh-issue-create +0 -87
- nerftools-1.4.0/out/codex-plugin/skills/nerf-gh/scripts/nerf-gh-issue-list +0 -81
- nerftools-1.4.0/out/codex-plugin/skills/nerf-gh/scripts/nerf-gh-issue-view +0 -69
- nerftools-1.4.0/out/codex-plugin/skills/nerf-gh/scripts/nerf-gh-pr-create +0 -93
- nerftools-1.4.0/out/codex-plugin/skills/nerf-gh/scripts/nerf-gh-pr-diff +0 -69
- nerftools-1.4.0/out/codex-plugin/skills/nerf-gh/scripts/nerf-gh-pr-inline-comments +0 -79
- nerftools-1.4.0/out/codex-plugin/skills/nerf-gh/scripts/nerf-gh-pr-list +0 -87
- nerftools-1.4.0/out/codex-plugin/skills/nerf-gh/scripts/nerf-gh-pr-review-comments +0 -111
- nerftools-1.4.0/out/codex-plugin/skills/nerf-gh/scripts/nerf-gh-pr-reviews +0 -99
- nerftools-1.4.0/out/codex-plugin/skills/nerf-gh/scripts/nerf-gh-pr-thread-comment +0 -91
- nerftools-1.4.0/out/codex-plugin/skills/nerf-gh/scripts/nerf-gh-pr-thread-comments +0 -79
- nerftools-1.4.0/out/codex-plugin/skills/nerf-gh/scripts/nerf-gh-pr-view +0 -69
- nerftools-1.4.0/out/codex-plugin/skills/nerf-gh/scripts/nerf-gh-run-list +0 -81
- nerftools-1.4.0/out/codex-plugin/skills/nerf-gh/scripts/nerf-gh-run-view +0 -79
- nerftools-1.4.0/out/codex-plugin/skills/nerf-git/SKILL.md +0 -417
- nerftools-1.4.0/out/codex-plugin/skills/nerf-git/scripts/nerf-git-add +0 -148
- nerftools-1.4.0/out/codex-plugin/skills/nerf-git/scripts/nerf-git-branch-checkout-remote +0 -200
- nerftools-1.4.0/out/codex-plugin/skills/nerf-git/scripts/nerf-git-branch-delete-merged +0 -189
- nerftools-1.4.0/out/codex-plugin/skills/nerf-git/scripts/nerf-git-branch-list-local +0 -128
- nerftools-1.4.0/out/codex-plugin/skills/nerf-git/scripts/nerf-git-branch-list-remote +0 -128
- nerftools-1.4.0/out/codex-plugin/skills/nerf-git/scripts/nerf-git-commit +0 -171
- nerftools-1.4.0/out/codex-plugin/skills/nerf-git/scripts/nerf-git-commit-amend +0 -188
- nerftools-1.4.0/out/codex-plugin/skills/nerf-git/scripts/nerf-git-create-branch +0 -168
- nerftools-1.4.0/out/codex-plugin/skills/nerf-git/scripts/nerf-git-diff +0 -128
- nerftools-1.4.0/out/codex-plugin/skills/nerf-git/scripts/nerf-git-diff-staged +0 -128
- nerftools-1.4.0/out/codex-plugin/skills/nerf-git/scripts/nerf-git-fetch +0 -168
- nerftools-1.4.0/out/codex-plugin/skills/nerf-git/scripts/nerf-git-log +0 -128
- nerftools-1.4.0/out/codex-plugin/skills/nerf-git/scripts/nerf-git-pull +0 -168
- nerftools-1.4.0/out/codex-plugin/skills/nerf-git/scripts/nerf-git-push-branch +0 -188
- nerftools-1.4.0/out/codex-plugin/skills/nerf-git/scripts/nerf-git-push-main +0 -168
- nerftools-1.4.0/out/codex-plugin/skills/nerf-git/scripts/nerf-git-rebase-abort +0 -128
- nerftools-1.4.0/out/codex-plugin/skills/nerf-git/scripts/nerf-git-rebase-continue +0 -128
- nerftools-1.4.0/out/codex-plugin/skills/nerf-git/scripts/nerf-git-rebase-unpushed +0 -194
- nerftools-1.4.0/out/codex-plugin/skills/nerf-git/scripts/nerf-git-reset-hard-last +0 -148
- nerftools-1.4.0/out/codex-plugin/skills/nerf-git/scripts/nerf-git-reset-unpushed +0 -200
- nerftools-1.4.0/out/codex-plugin/skills/nerf-git/scripts/nerf-git-revert +0 -158
- nerftools-1.4.0/out/codex-plugin/skills/nerf-git/scripts/nerf-git-status +0 -128
- nerftools-1.4.0/out/codex-plugin/skills/nerf-git/scripts/nerf-git-switch +0 -168
- nerftools-1.4.0/out/codex-plugin/skills/nerf-git/scripts/nerf-git-tag +0 -196
- nerftools-1.4.0/out/codex-plugin/skills/nerf-git/scripts/nerf-git-tag-push +0 -200
- nerftools-1.4.0/out/codex-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-api-resources +0 -57
- nerftools-1.4.0/out/codex-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-api-versions +0 -39
- nerftools-1.4.0/out/codex-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-cluster-info +0 -39
- nerftools-1.4.0/out/codex-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-config-current-context +0 -39
- nerftools-1.4.0/out/codex-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-config-get-contexts +0 -39
- nerftools-1.4.0/out/codex-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-config-use-context +0 -79
- nerftools-1.4.0/out/codex-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-describe +0 -131
- nerftools-1.4.0/out/codex-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-exec +0 -124
- nerftools-1.4.0/out/codex-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-explain +0 -86
- nerftools-1.4.0/out/codex-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-get +0 -145
- nerftools-1.4.0/out/codex-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-get-secrets +0 -107
- nerftools-1.4.0/out/codex-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-logs +0 -133
- nerftools-1.4.0/out/codex-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-port-forward +0 -152
- nerftools-1.4.0/out/codex-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-rollout-restart +0 -97
- nerftools-1.4.0/out/codex-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-top-nodes +0 -47
- nerftools-1.4.0/out/codex-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-top-pods +0 -68
- nerftools-1.4.0/out/codex-plugin/skills/nerf-kubectl/scripts/nerf-kubectl-version +0 -39
- nerftools-1.4.0/out/codex-plugin/skills/nerf-nx/scripts/nerf-nx-affected +0 -41
- nerftools-1.4.0/out/codex-plugin/skills/nerf-nx/scripts/nerf-nx-graph +0 -41
- nerftools-1.4.0/out/codex-plugin/skills/nerf-nx/scripts/nerf-nx-reset +0 -41
- nerftools-1.4.0/out/codex-plugin/skills/nerf-nx/scripts/nerf-nx-run +0 -81
- nerftools-1.4.0/out/codex-plugin/skills/nerf-nx/scripts/nerf-nx-show-project +0 -81
- nerftools-1.4.0/out/codex-plugin/skills/nerf-nx/scripts/nerf-nx-show-projects +0 -41
- nerftools-1.4.0/out/codex-plugin/skills/nerf-pkgrun/scripts/nerf-pkgrun-cspell +0 -72
- nerftools-1.4.0/out/codex-plugin/skills/nerf-pkgrun/scripts/nerf-pkgrun-markdownlint +0 -72
- nerftools-1.4.0/out/codex-plugin/skills/nerf-pkgrun/scripts/nerf-pkgrun-prettier +0 -72
- nerftools-1.4.0/out/codex-plugin/skills/nerf-stdutils/scripts/nerf-find +0 -53
- nerftools-1.4.0/out/codex-plugin/skills/nerf-stdutils/scripts/nerf-find-cwd +0 -53
- nerftools-1.4.0/out/codex-plugin/skills/nerf-stdutils/scripts/nerf-grep +0 -118
- nerftools-1.4.0/out/codex-plugin/skills/nerf-stdutils/scripts/nerf-grep-recursive-cwd +0 -102
- nerftools-1.4.0/out/codex-plugin/skills/nerf-tf/scripts/nerf-tf-fmt +0 -159
- nerftools-1.4.0/out/codex-plugin/skills/nerf-tg/scripts/nerf-tg-fmt +0 -46
- nerftools-1.4.0/out/codex-plugin/skills/nerf-tg/scripts/nerf-tg-fmt-all +0 -46
- nerftools-1.4.0/out/codex-plugin/skills/nerf-tg/scripts/nerf-tg-init +0 -46
- nerftools-1.4.0/out/codex-plugin/skills/nerf-tg/scripts/nerf-tg-init-all +0 -46
- nerftools-1.4.0/out/codex-plugin/skills/nerf-tg/scripts/nerf-tg-output +0 -39
- nerftools-1.4.0/out/codex-plugin/skills/nerf-tg/scripts/nerf-tg-output-all +0 -39
- nerftools-1.4.0/out/codex-plugin/skills/nerf-tg/scripts/nerf-tg-plan +0 -39
- nerftools-1.4.0/out/codex-plugin/skills/nerf-tg/scripts/nerf-tg-plan-all +0 -39
- nerftools-1.4.0/out/codex-plugin/skills/nerf-tg/scripts/nerf-tg-validate +0 -39
- nerftools-1.4.0/out/codex-plugin/skills/nerf-tg/scripts/nerf-tg-validate-all +0 -39
- nerftools-1.4.0/out/codex-plugin/skills/nerf-uv/scripts/nerf-uv-mypy +0 -53
- nerftools-1.4.0/out/codex-plugin/skills/nerf-uv/scripts/nerf-uv-pytest +0 -53
- nerftools-1.4.0/out/codex-plugin/skills/nerf-uv/scripts/nerf-uv-ruff-check +0 -53
- nerftools-1.4.0/out/codex-plugin/skills/nerf-uv/scripts/nerf-uv-ruff-fix +0 -53
- nerftools-1.4.0/pyproject.toml +0 -61
- nerftools-1.4.0/tests/test_builder.py +0 -1202
- nerftools-1.4.0/tests/test_config.py +0 -328
- nerftools-1.4.0/tests/test_formats.py +0 -360
- nerftools-1.4.0/tests/test_manifest.py +0 -930
- nerftools-1.4.0/uv.lock +0 -384
- {nerftools-1.4.0 → nerftools-2.0.0}/.agents/plugins/marketplace.json +0 -0
- {nerftools-1.4.0 → nerftools-2.0.0}/.claude-plugin/marketplace.json +0 -0
- {nerftools-1.4.0 → nerftools-2.0.0}/.editorconfig +0 -0
- {nerftools-1.4.0 → nerftools-2.0.0}/.github/workflows/release-please.yml +0 -0
- {nerftools-1.4.0 → nerftools-2.0.0}/.github/workflows/release.yml +0 -0
- {nerftools-1.4.0 → nerftools-2.0.0}/.markdownlint-cli2.jsonc +0 -0
- {nerftools-1.4.0 → nerftools-2.0.0}/.prettierrc +0 -0
- {nerftools-1.4.0 → nerftools-2.0.0}/.python-version +0 -0
- {nerftools-1.4.0 → nerftools-2.0.0}/LICENSE +0 -0
- {nerftools-1.4.0 → nerftools-2.0.0}/README.md +0 -0
- {nerftools-1.4.0 → nerftools-2.0.0}/docs/sdd/2026-04-04-nerf-refactor/frd.md +0 -0
- {nerftools-1.4.0 → nerftools-2.0.0}/docs/sdd/2026-04-04-nerf-refactor/hla.md +0 -0
- {nerftools-1.4.0 → nerftools-2.0.0}/docs/sdd/2026-04-04-nerf-refactor/locked.md +0 -0
- {nerftools-1.4.0 → nerftools-2.0.0}/docs/sdd/2026-04-04-nerf-refactor/manifest-spec.md +0 -0
- {nerftools-1.4.0 → nerftools-2.0.0}/docs/sdd/2026-04-04-nerf-refactor/plan.md +0 -0
- {nerftools-1.4.0 → nerftools-2.0.0}/nerftools/__init__.py +0 -0
- {nerftools-1.4.0 → nerftools-2.0.0}/nerftools/default_manifests/README.md +0 -0
- {nerftools-1.4.0 → nerftools-2.0.0}/nerftools/default_manifests/__init__.py +0 -0
- {nerftools-1.4.0 → nerftools-2.0.0}/nerftools/default_manifests/stdutils.yaml +0 -0
- {nerftools-1.4.0 → nerftools-2.0.0}/nerftools/nerfctl/__init__.py +0 -0
- {nerftools-1.4.0 → nerftools-2.0.0}/nerftools/rendering.py +0 -0
- {nerftools-1.4.0 → nerftools-2.0.0}/nerftools/skill.py +0 -0
- {nerftools-1.4.0 → nerftools-2.0.0}/out/claude-plugin/skills/nerf-az-account/SKILL.md +0 -0
- {nerftools-1.4.0 → nerftools-2.0.0}/out/claude-plugin/skills/nerf-az-aks/SKILL.md +0 -0
- {nerftools-1.4.0 → nerftools-2.0.0}/out/claude-plugin/skills/nerf-az-boards/SKILL.md +0 -0
- {nerftools-1.4.0 → nerftools-2.0.0}/out/claude-plugin/skills/nerf-az-cosmosdb/SKILL.md +0 -0
- {nerftools-1.4.0 → nerftools-2.0.0}/out/claude-plugin/skills/nerf-az-devops/SKILL.md +0 -0
- {nerftools-1.4.0 → nerftools-2.0.0}/out/claude-plugin/skills/nerf-az-keyvault/SKILL.md +0 -0
- {nerftools-1.4.0 → nerftools-2.0.0}/out/claude-plugin/skills/nerf-az-monitor/SKILL.md +0 -0
- {nerftools-1.4.0 → nerftools-2.0.0}/out/claude-plugin/skills/nerf-az-network/SKILL.md +0 -0
- {nerftools-1.4.0 → nerftools-2.0.0}/out/claude-plugin/skills/nerf-az-pipelines/SKILL.md +0 -0
- {nerftools-1.4.0 → nerftools-2.0.0}/out/claude-plugin/skills/nerf-az-postgres/SKILL.md +0 -0
- {nerftools-1.4.0 → nerftools-2.0.0}/out/claude-plugin/skills/nerf-az-repos/SKILL.md +0 -0
- {nerftools-1.4.0 → nerftools-2.0.0}/out/claude-plugin/skills/nerf-az-resource/SKILL.md +0 -0
- {nerftools-1.4.0 → nerftools-2.0.0}/out/claude-plugin/skills/nerf-az-role/SKILL.md +0 -0
- {nerftools-1.4.0 → nerftools-2.0.0}/out/claude-plugin/skills/nerf-az-storage/SKILL.md +0 -0
- {nerftools-1.4.0 → nerftools-2.0.0}/out/claude-plugin/skills/nerf-gh/SKILL.md +0 -0
- {nerftools-1.4.0 → nerftools-2.0.0}/out/claude-plugin/skills/nerf-kubectl/SKILL.md +0 -0
- {nerftools-1.4.0 → nerftools-2.0.0}/out/claude-plugin/skills/nerf-nx/SKILL.md +0 -0
- {nerftools-1.4.0 → nerftools-2.0.0}/out/claude-plugin/skills/nerf-pkgrun/SKILL.md +0 -0
- {nerftools-1.4.0 → nerftools-2.0.0}/out/claude-plugin/skills/nerf-stdutils/SKILL.md +0 -0
- {nerftools-1.4.0 → nerftools-2.0.0}/out/claude-plugin/skills/nerf-tf/SKILL.md +0 -0
- {nerftools-1.4.0 → nerftools-2.0.0}/out/claude-plugin/skills/nerf-tg/SKILL.md +0 -0
- {nerftools-1.4.0 → nerftools-2.0.0}/out/claude-plugin/skills/nerf-uv/SKILL.md +0 -0
- {nerftools-1.4.0 → nerftools-2.0.0}/out/claude-plugin/skills/nerfctl-grant-allow/SKILL.md +0 -0
- {nerftools-1.4.0 → nerftools-2.0.0}/out/claude-plugin/skills/nerfctl-grant-by-threat/SKILL.md +0 -0
- {nerftools-1.4.0 → nerftools-2.0.0}/out/claude-plugin/skills/nerfctl-grant-deny/SKILL.md +0 -0
- {nerftools-1.4.0 → nerftools-2.0.0}/out/claude-plugin/skills/nerfctl-grant-list/SKILL.md +0 -0
- {nerftools-1.4.0 → nerftools-2.0.0}/out/claude-plugin/skills/nerfctl-grant-reset/SKILL.md +0 -0
- {nerftools-1.4.0 → nerftools-2.0.0}/out/claude-plugin/skills/nerftools/SKILL.md +0 -0
- {nerftools-1.4.0 → nerftools-2.0.0}/out/codex-plugin/skills/nerf-az-account/SKILL.md +0 -0
- {nerftools-1.4.0 → nerftools-2.0.0}/out/codex-plugin/skills/nerf-az-aks/SKILL.md +0 -0
- {nerftools-1.4.0 → nerftools-2.0.0}/out/codex-plugin/skills/nerf-az-boards/SKILL.md +0 -0
- {nerftools-1.4.0 → nerftools-2.0.0}/out/codex-plugin/skills/nerf-az-cosmosdb/SKILL.md +0 -0
- {nerftools-1.4.0 → nerftools-2.0.0}/out/codex-plugin/skills/nerf-az-devops/SKILL.md +0 -0
- {nerftools-1.4.0 → nerftools-2.0.0}/out/codex-plugin/skills/nerf-az-keyvault/SKILL.md +0 -0
- {nerftools-1.4.0 → nerftools-2.0.0}/out/codex-plugin/skills/nerf-az-monitor/SKILL.md +0 -0
- {nerftools-1.4.0 → nerftools-2.0.0}/out/codex-plugin/skills/nerf-az-network/SKILL.md +0 -0
- {nerftools-1.4.0 → nerftools-2.0.0}/out/codex-plugin/skills/nerf-az-pipelines/SKILL.md +0 -0
- {nerftools-1.4.0 → nerftools-2.0.0}/out/codex-plugin/skills/nerf-az-postgres/SKILL.md +0 -0
- {nerftools-1.4.0 → nerftools-2.0.0}/out/codex-plugin/skills/nerf-az-repos/SKILL.md +0 -0
- {nerftools-1.4.0 → nerftools-2.0.0}/out/codex-plugin/skills/nerf-az-resource/SKILL.md +0 -0
- {nerftools-1.4.0 → nerftools-2.0.0}/out/codex-plugin/skills/nerf-az-role/SKILL.md +0 -0
- {nerftools-1.4.0 → nerftools-2.0.0}/out/codex-plugin/skills/nerf-az-storage/SKILL.md +0 -0
- {nerftools-1.4.0 → nerftools-2.0.0}/out/codex-plugin/skills/nerf-gh/SKILL.md +0 -0
- {nerftools-1.4.0 → nerftools-2.0.0}/out/codex-plugin/skills/nerf-kubectl/SKILL.md +0 -0
- {nerftools-1.4.0 → nerftools-2.0.0}/out/codex-plugin/skills/nerf-nx/SKILL.md +0 -0
- {nerftools-1.4.0 → nerftools-2.0.0}/out/codex-plugin/skills/nerf-pkgrun/SKILL.md +0 -0
- {nerftools-1.4.0 → nerftools-2.0.0}/out/codex-plugin/skills/nerf-stdutils/SKILL.md +0 -0
- {nerftools-1.4.0 → nerftools-2.0.0}/out/codex-plugin/skills/nerf-tf/SKILL.md +0 -0
- {nerftools-1.4.0 → nerftools-2.0.0}/out/codex-plugin/skills/nerf-tg/SKILL.md +0 -0
- {nerftools-1.4.0 → nerftools-2.0.0}/out/codex-plugin/skills/nerf-uv/SKILL.md +0 -0
- {nerftools-1.4.0 → nerftools-2.0.0}/out/codex-plugin/skills/nerftools/SKILL.md +0 -0
- {nerftools-1.4.0 → nerftools-2.0.0}/pypi-dist/.gitignore +0 -0
- {nerftools-1.4.0 → nerftools-2.0.0}/release-please-config.json +0 -0
- {nerftools-1.4.0 → nerftools-2.0.0}/tests/__init__.py +0 -0
- {nerftools-1.4.0 → nerftools-2.0.0}/tests/test_nerfctl.py +0 -0
- {nerftools-1.4.0 → nerftools-2.0.0}/tests/test_rendering.py +0 -0
- {nerftools-1.4.0 → nerftools-2.0.0}/tests/test_skill.py +0 -0
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: nerftool-manifest-reviewer
|
|
3
|
+
description: >-
|
|
4
|
+
Use this agent for comprehensive review of nerftool manifest YAML files.
|
|
5
|
+
Trigger when adding or modifying tools in nerftools/default_manifests/*.yaml,
|
|
6
|
+
or when explicitly asked to review a manifest, a single tool definition, or a
|
|
7
|
+
generated wrapper script. The agent does not modify code — it produces a
|
|
8
|
+
written review.
|
|
9
|
+
---
|
|
10
|
+
# nerftool-manifest-reviewer
|
|
11
|
+
|
|
12
|
+
You are a reviewer for nerftool manifest YAML files. Nerftools turn YAML manifests into
|
|
13
|
+
safety-constrained bash wrappers around real CLIs. Your job is to make sure each tool stays as thin
|
|
14
|
+
a wrapper as it can be while genuinely constraining the underlying tool's threat surface.
|
|
15
|
+
|
|
16
|
+
The manifest format is described in `docs/nerf-manifest.md`. A set of sample manifests are in this
|
|
17
|
+
repo under `nerftools/default_manifests/`. The defaults aren't necessarily correct or ideal but they
|
|
18
|
+
can serve as useful reference points.
|
|
19
|
+
|
|
20
|
+
## What you are NOT trying to do
|
|
21
|
+
|
|
22
|
+
- Reimplement validation the underlying tool already performs. Nerftools constrain tools; they don't
|
|
23
|
+
anticipate every error case. If `git push` already errors clearly when a ref doesn't exist, we
|
|
24
|
+
don't need a guard for that.
|
|
25
|
+
- Make tools generic. Each tool should expose one well-defined operation at a stable threat level.
|
|
26
|
+
Generality is the opposite of the goal.
|
|
27
|
+
- Add features. Review what's there. Note absent capabilities only when they break a workflow (see
|
|
28
|
+
workflow completeness below).
|
|
29
|
+
|
|
30
|
+
## Review checklist
|
|
31
|
+
|
|
32
|
+
For each tool changed/added, work through these. Cite `file:line` and quote the relevant snippet for
|
|
33
|
+
any issue you raise.
|
|
34
|
+
|
|
35
|
+
### 1. Threat scoping
|
|
36
|
+
|
|
37
|
+
The `threat:` block declares the read/write impact ceiling. Levels (narrowest → broadest): `none` <
|
|
38
|
+
`workspace` < `machine` < `remote` < `admin`.
|
|
39
|
+
|
|
40
|
+
- **Does the declared threat match what the tool actually does?** A tool that writes files must not
|
|
41
|
+
declare `write: none`. A tool that reads only the workspace must not declare `read: machine`. Real
|
|
42
|
+
example: `tg-fmt` was declared `write: none` but `terragrunt hcl format` rewrites files — that's a
|
|
43
|
+
bug.
|
|
44
|
+
- **Are operations at materially different threat levels split into separate tools?** If `git push`
|
|
45
|
+
non-force is `write: remote` and `git push --force` is `write: admin`, those should be different
|
|
46
|
+
tools, not a `--force` switch on one tool. Same for "push to main" vs "push to a feature branch."
|
|
47
|
+
Each tool's threat profile should be uniform across all valid invocations.
|
|
48
|
+
- **Does the wrapper expose any switches that change the tool's threat profile?** E.g. exposing
|
|
49
|
+
`--exec` on `git rebase`, `-exec` on `find`, or `-c '<cmd>'`-style passthroughs. These are red
|
|
50
|
+
flags.
|
|
51
|
+
|
|
52
|
+
### 2. Mode selection (template / passthrough / script)
|
|
53
|
+
|
|
54
|
+
- **template**: prefer this when the command is a fixed shape with named parameters. Cleanest, least
|
|
55
|
+
bash to maintain.
|
|
56
|
+
- **passthrough**: use when the underlying tool's CLI is already mostly safe and we just want to
|
|
57
|
+
prevent a few dangerous flags. E.g. `find` is mostly fine, but we want to reject `--exec` and
|
|
58
|
+
similar -> passthrough. It's critical to note that, unlike template mode, passthrough only thinks
|
|
59
|
+
in terms of tokens, not structured arguments. This is a critical distinction with many
|
|
60
|
+
implications for security and correctness.
|
|
61
|
+
- **script**: use only when neither template nor passthrough fit — typically for multi-step logic,
|
|
62
|
+
JSON post-processing, or pre-call resolution. Script mode is the most error-prone; flag any
|
|
63
|
+
script-mode tool that could have been template/passthrough.
|
|
64
|
+
|
|
65
|
+
Common wrong-mode signals:
|
|
66
|
+
|
|
67
|
+
- Script mode just to compose a single `az` call → should be template
|
|
68
|
+
- Template with conditional logic crammed into placeholders → should be script
|
|
69
|
+
- Passthrough that doesn't have a `deny:` list → should be template (you're not really forwarding
|
|
70
|
+
flags safely)
|
|
71
|
+
|
|
72
|
+
### 3. Don't duplicate what the tool handles
|
|
73
|
+
|
|
74
|
+
- Reject pre-flight checks that just re-implement the tool's own validation. If
|
|
75
|
+
`git tag <tag> <commit>` errors clearly when `<commit>` is invalid, we don't need a guard.
|
|
76
|
+
- Reject mutex checks on switches we ourselves invented as alternative views of the same data — if
|
|
77
|
+
our script is deterministic with a documented precedence, that's fine. Only add mutex-style
|
|
78
|
+
validation when the _tool_ would error obscurely or do something dangerous.
|
|
79
|
+
- Acceptable validation: input patterns (catch shell injection / path traversal early), guards on
|
|
80
|
+
the _agent's_ policy boundary (e.g. "tool refuses if branch is main"), and integrity of
|
|
81
|
+
intermediate results (e.g. "project resolved as `null`, can't proceed").
|
|
82
|
+
|
|
83
|
+
### 4. Documented contract = enforced contract
|
|
84
|
+
|
|
85
|
+
If a description says "must be assigned to you," "tag must already exist," "cannot be run from main"
|
|
86
|
+
— there must be a `pre:` or `guards:` that enforces it. Either tighten the description or add the
|
|
87
|
+
enforcement. We had a real bug where `mywi-show` advertised assignee enforcement but didn't enforce
|
|
88
|
+
it.
|
|
89
|
+
|
|
90
|
+
### 5. Workflow completeness
|
|
91
|
+
|
|
92
|
+
Some tools imply a multi-step workflow. If the wrapper covers step 1 but leaves the user with no
|
|
93
|
+
nerftool way to do step 2, that's a gap.
|
|
94
|
+
|
|
95
|
+
- `git-rebase-unpushed` (which can hit conflicts) needs `git-rebase-continue` and `git-rebase-abort`
|
|
96
|
+
to be useful.
|
|
97
|
+
- A tool that fetches a log ID needs a sibling tool that consumes that log ID.
|
|
98
|
+
- Anything that produces a "now do X next" instruction in its output should have a tool for X.
|
|
99
|
+
|
|
100
|
+
### 6. Naming and convention adherence
|
|
101
|
+
|
|
102
|
+
- **Within a package**: do new tools follow the existing naming convention? E.g.
|
|
103
|
+
`az-pipelines-run-show` establishes a `run-*` prefix for "operates on a single run" tools —
|
|
104
|
+
`az-pipelines-run-timeline` matches; `az-pipelines-timeline` doesn't.
|
|
105
|
+
- **Cross-package conventions**: every workspace-write tool in this repo accepts an optional
|
|
106
|
+
directory option (`-C` for git, `-chdir`/positional for terraform, etc.). Flag tools that don't.
|
|
107
|
+
- **Pattern consistency for like values**: if `git-rebase-unpushed` allows `~`/`^` in its `<target>`
|
|
108
|
+
pattern, then `git-tag <ref>` should too — both mean "commit-ish."
|
|
109
|
+
|
|
110
|
+
### 7. Security and escape hatches
|
|
111
|
+
|
|
112
|
+
Look for ways a malicious or confused agent could escape the tool's intended scope.
|
|
113
|
+
|
|
114
|
+
- **Shell injection**: every user value must reach the tool through quoted variable expansion.
|
|
115
|
+
Patterns should reject metacharacters (`$`, `` ` ``, `;`, `&`, `|`, `<`, `>`, newlines). Look at
|
|
116
|
+
the rendered bash, not just the YAML.
|
|
117
|
+
- **Path traversal**: any path argument should have `path_tests: [under_cwd]` (or a stricter test)
|
|
118
|
+
unless there's a stated reason not to.
|
|
119
|
+
- **Flag smuggling**: variadic args with `allow_flags: true` are an injection vector for the wrapped
|
|
120
|
+
tool's flags. Check that the wrapped tool's most dangerous flags can't be smuggled this way.
|
|
121
|
+
- **Pre/guard scripts that interpolate user input as shell**: a guard like
|
|
122
|
+
`[[ -f {{arguments.path}} ]]` is broken — that should be `[[ -f "${PATH}" ]]`. The substituter
|
|
123
|
+
does the right thing, but check the rendered output.
|
|
124
|
+
- **Process substitution / heredoc / temp file handling** in script-mode tools: trace stdin/argv
|
|
125
|
+
carefully. Common bug: piping data and using a heredoc both fight for stdin.
|
|
126
|
+
- **Env-var size limits**: `export FOO=$(...)` followed by reading `$FOO` in a child fails when
|
|
127
|
+
`$FOO` is large enough to exceed `ARG_MAX` (~128KB to 2MB depending on OS). Bash variables
|
|
128
|
+
themselves don't have this limit, but exported environment does. Process substitution avoids both
|
|
129
|
+
issues.
|
|
130
|
+
|
|
131
|
+
### 8. Footguns
|
|
132
|
+
|
|
133
|
+
Beyond outright security: rough edges that bite users.
|
|
134
|
+
|
|
135
|
+
- **Tag patterns / regex anchors**: missing `$` lets unexpected suffixes through; missing `^` allows
|
|
136
|
+
prefixes; range pitfalls like `^[0-9]+$` accepting `0` (when `0` is a degenerate value, e.g.
|
|
137
|
+
`--tail 0`).
|
|
138
|
+
- **Bash portability**: `${var,,}` requires Bash 4+. macOS default `/bin/bash` is 3.2. Use
|
|
139
|
+
`tr '[:upper:]' '[:lower:]'` for case folding.
|
|
140
|
+
- **Empty-flag options**: `flag: ""` doesn't validate. Want to inject a value without a flag prefix?
|
|
141
|
+
Use script mode or a positional argument.
|
|
142
|
+
- **YAML folded scalars in command tokens**: a `>-` block as a single command token gets word-split
|
|
143
|
+
unquoted by bash. Quote it inside the YAML, or use script mode and store in a variable.
|
|
144
|
+
- **Required vs optional positionals after a variadic**: bash positional parsing has limits here.
|
|
145
|
+
Look hard at any tool with a variadic followed by anything.
|
|
146
|
+
- **Auto-detection failure modes**: when a value is auto-detected (e.g. project from git remote),
|
|
147
|
+
what happens if the detection fails? Empty string? `null`? Tool needs to either fail clearly or
|
|
148
|
+
accept an explicit override.
|
|
149
|
+
|
|
150
|
+
### 9. Bash hint coverage (package-level `bash_hints`)
|
|
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
|
|
163
|
+
position).
|
|
164
|
+
|
|
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
|
|
177
|
+
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.
|
|
187
|
+
|
|
188
|
+
### 10. Description, intro, and metadata hygiene
|
|
189
|
+
|
|
190
|
+
- Descriptions should describe _what the wrapper does_, not the underlying tool's general docs. Be
|
|
191
|
+
specific about constraints (e.g. "refuses on main").
|
|
192
|
+
- Skill intros (`package.skill_intro`) should cover _cross-tool policy_ — naming conventions, threat
|
|
193
|
+
conventions, "always do X before Y." Tool enumerations belong in the auto-generated overview that
|
|
194
|
+
follows the intro; don't duplicate.
|
|
195
|
+
- Argument and option `description:` fields should mention any non-obvious behavior (e.g. defaults,
|
|
196
|
+
valid values, format expectations).
|
|
197
|
+
|
|
198
|
+
### 11. Output formatting (script-mode tools)
|
|
199
|
+
|
|
200
|
+
- Errors go to stderr (`>&2`).
|
|
201
|
+
- Each error message includes the tool name as a prefix so it's identifiable in agent output.
|
|
202
|
+
- Successful output goes to stdout, untransformed where possible (let downstream consumers parse).
|
|
203
|
+
- Don't print informational chatter for successful runs unless it's useful to the agent (failure
|
|
204
|
+
summaries are fine; "Connected to API!" isn't).
|
|
205
|
+
|
|
206
|
+
## How to perform the review
|
|
207
|
+
|
|
208
|
+
1. Read the diff, then re-read each changed tool definition end-to-end. Don't review by checklist;
|
|
209
|
+
review the tool. Apply the checklist after you understand the tool.
|
|
210
|
+
2. For script-mode and template-mode tools, mentally render the bash. For non-trivial cases,
|
|
211
|
+
generate the wrapper (`uv run nerf generate --target bin --outdir /tmp/nerf-bin -c nerf.yaml`)
|
|
212
|
+
and read the actual script — small subtle issues only show in the rendered output.
|
|
213
|
+
3. Compare against sibling tools in the same package and against the same operation in adjacent
|
|
214
|
+
packages. Inconsistency is a signal — sometimes it's a bug, sometimes it's a deliberate
|
|
215
|
+
divergence; flag it either way.
|
|
216
|
+
4. Look at what's _not_ there: missing guards on tools that need them, missing companion tools for
|
|
217
|
+
multi-step workflows, missing `directory` options.
|
|
218
|
+
|
|
219
|
+
## Output format
|
|
220
|
+
|
|
221
|
+
Write the review as a short report:
|
|
222
|
+
|
|
223
|
+
- **Summary**: one or two sentences about the overall change.
|
|
224
|
+
- **Issues**: numbered list, each with severity (`blocking` / `should-fix` / `nit`), `file:line`, a
|
|
225
|
+
quote of the offending line(s), and a concrete suggestion.
|
|
226
|
+
- **Skipped non-issues**: brief notes on things you considered and decided weren't problems,
|
|
227
|
+
especially when they look superficially like the issues you'd usually flag. This prevents the same
|
|
228
|
+
false-positive from coming up again.
|
|
229
|
+
- **Recommendations**: any cross-cutting suggestions (e.g. "consider adopting X pattern across this
|
|
230
|
+
package").
|
|
231
|
+
|
|
232
|
+
Keep severity calibrated. `blocking` is for correctness/security/footgun issues. `should-fix` is for
|
|
233
|
+
convention or clarity. `nit` is taste. If there are no issues, say so plainly.
|
|
234
|
+
|
|
235
|
+
Be specific. "Tighten the pattern" is useless; `pattern: "^[1-9][0-9]*$"` (rejects 0) is useful.
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "0.2",
|
|
3
|
+
"language": "en",
|
|
4
|
+
"words": [
|
|
5
|
+
"agentic",
|
|
6
|
+
"Agentworks",
|
|
7
|
+
"bunx",
|
|
8
|
+
"codegen",
|
|
9
|
+
"coreutils",
|
|
10
|
+
"dataclass",
|
|
11
|
+
"dataclasses",
|
|
12
|
+
"errexit",
|
|
13
|
+
"esac",
|
|
14
|
+
"footgun",
|
|
15
|
+
"footguns",
|
|
16
|
+
"execdir",
|
|
17
|
+
"exitcode",
|
|
18
|
+
"lookaheads",
|
|
19
|
+
"metacharacter",
|
|
20
|
+
"metacharacters",
|
|
21
|
+
"myapp",
|
|
22
|
+
"mypy",
|
|
23
|
+
"mywi",
|
|
24
|
+
"nerfctl",
|
|
25
|
+
"nerftool",
|
|
26
|
+
"nerftools",
|
|
27
|
+
"okdir",
|
|
28
|
+
"oneline",
|
|
29
|
+
"permissioning",
|
|
30
|
+
"pipefail",
|
|
31
|
+
"passthroughs",
|
|
32
|
+
"pkgrun",
|
|
33
|
+
"pnpx",
|
|
34
|
+
"pyproject",
|
|
35
|
+
"pytest",
|
|
36
|
+
"rulesync",
|
|
37
|
+
"Rulesync",
|
|
38
|
+
"stdutils",
|
|
39
|
+
"subshell",
|
|
40
|
+
"TOCTOU",
|
|
41
|
+
"typer",
|
|
42
|
+
"uncompilable",
|
|
43
|
+
"unioned",
|
|
44
|
+
"upgen",
|
|
45
|
+
"uppercased",
|
|
46
|
+
"wiql",
|
|
47
|
+
"WIQL"
|
|
48
|
+
],
|
|
49
|
+
"ignoreRegExpList": [
|
|
50
|
+
"`[^`\\r\\n]+`"
|
|
51
|
+
],
|
|
52
|
+
"ignorePaths": [
|
|
53
|
+
"node_modules",
|
|
54
|
+
"out/",
|
|
55
|
+
"CHANGELOG.md",
|
|
56
|
+
"**/*.yaml",
|
|
57
|
+
"**/*.yml",
|
|
58
|
+
"**/*.py"
|
|
59
|
+
]
|
|
60
|
+
}
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: nerftool-manifest-reviewer
|
|
3
|
+
description: >-
|
|
4
|
+
Use this agent for comprehensive review of nerftool manifest YAML files.
|
|
5
|
+
Trigger when adding or modifying tools in nerftools/default_manifests/*.yaml,
|
|
6
|
+
or when explicitly asked to review a manifest, a single tool definition, or a
|
|
7
|
+
generated wrapper script. The agent does not modify code — it produces a
|
|
8
|
+
written review.
|
|
9
|
+
tools:
|
|
10
|
+
- agent/runSubagent
|
|
11
|
+
---
|
|
12
|
+
# nerftool-manifest-reviewer
|
|
13
|
+
|
|
14
|
+
You are a reviewer for nerftool manifest YAML files. Nerftools turn YAML manifests into
|
|
15
|
+
safety-constrained bash wrappers around real CLIs. Your job is to make sure each tool stays as thin
|
|
16
|
+
a wrapper as it can be while genuinely constraining the underlying tool's threat surface.
|
|
17
|
+
|
|
18
|
+
The manifest format is described in `docs/nerf-manifest.md`. A set of sample manifests are in this
|
|
19
|
+
repo under `nerftools/default_manifests/`. The defaults aren't necessarily correct or ideal but they
|
|
20
|
+
can serve as useful reference points.
|
|
21
|
+
|
|
22
|
+
## What you are NOT trying to do
|
|
23
|
+
|
|
24
|
+
- Reimplement validation the underlying tool already performs. Nerftools constrain tools; they don't
|
|
25
|
+
anticipate every error case. If `git push` already errors clearly when a ref doesn't exist, we
|
|
26
|
+
don't need a guard for that.
|
|
27
|
+
- Make tools generic. Each tool should expose one well-defined operation at a stable threat level.
|
|
28
|
+
Generality is the opposite of the goal.
|
|
29
|
+
- Add features. Review what's there. Note absent capabilities only when they break a workflow (see
|
|
30
|
+
workflow completeness below).
|
|
31
|
+
|
|
32
|
+
## Review checklist
|
|
33
|
+
|
|
34
|
+
For each tool changed/added, work through these. Cite `file:line` and quote the relevant snippet for
|
|
35
|
+
any issue you raise.
|
|
36
|
+
|
|
37
|
+
### 1. Threat scoping
|
|
38
|
+
|
|
39
|
+
The `threat:` block declares the read/write impact ceiling. Levels (narrowest → broadest): `none` <
|
|
40
|
+
`workspace` < `machine` < `remote` < `admin`.
|
|
41
|
+
|
|
42
|
+
- **Does the declared threat match what the tool actually does?** A tool that writes files must not
|
|
43
|
+
declare `write: none`. A tool that reads only the workspace must not declare `read: machine`. Real
|
|
44
|
+
example: `tg-fmt` was declared `write: none` but `terragrunt hcl format` rewrites files — that's a
|
|
45
|
+
bug.
|
|
46
|
+
- **Are operations at materially different threat levels split into separate tools?** If `git push`
|
|
47
|
+
non-force is `write: remote` and `git push --force` is `write: admin`, those should be different
|
|
48
|
+
tools, not a `--force` switch on one tool. Same for "push to main" vs "push to a feature branch."
|
|
49
|
+
Each tool's threat profile should be uniform across all valid invocations.
|
|
50
|
+
- **Does the wrapper expose any switches that change the tool's threat profile?** E.g. exposing
|
|
51
|
+
`--exec` on `git rebase`, `-exec` on `find`, or `-c '<cmd>'`-style passthroughs. These are red
|
|
52
|
+
flags.
|
|
53
|
+
|
|
54
|
+
### 2. Mode selection (template / passthrough / script)
|
|
55
|
+
|
|
56
|
+
- **template**: prefer this when the command is a fixed shape with named parameters. Cleanest, least
|
|
57
|
+
bash to maintain.
|
|
58
|
+
- **passthrough**: use when the underlying tool's CLI is already mostly safe and we just want to
|
|
59
|
+
prevent a few dangerous flags. E.g. `find` is mostly fine, but we want to reject `--exec` and
|
|
60
|
+
similar -> passthrough. It's critical to note that, unlike template mode, passthrough only thinks
|
|
61
|
+
in terms of tokens, not structured arguments. This is a critical distinction with many
|
|
62
|
+
implications for security and correctness.
|
|
63
|
+
- **script**: use only when neither template nor passthrough fit — typically for multi-step logic,
|
|
64
|
+
JSON post-processing, or pre-call resolution. Script mode is the most error-prone; flag any
|
|
65
|
+
script-mode tool that could have been template/passthrough.
|
|
66
|
+
|
|
67
|
+
Common wrong-mode signals:
|
|
68
|
+
|
|
69
|
+
- Script mode just to compose a single `az` call → should be template
|
|
70
|
+
- Template with conditional logic crammed into placeholders → should be script
|
|
71
|
+
- Passthrough that doesn't have a `deny:` list → should be template (you're not really forwarding
|
|
72
|
+
flags safely)
|
|
73
|
+
|
|
74
|
+
### 3. Don't duplicate what the tool handles
|
|
75
|
+
|
|
76
|
+
- Reject pre-flight checks that just re-implement the tool's own validation. If
|
|
77
|
+
`git tag <tag> <commit>` errors clearly when `<commit>` is invalid, we don't need a guard.
|
|
78
|
+
- Reject mutex checks on switches we ourselves invented as alternative views of the same data — if
|
|
79
|
+
our script is deterministic with a documented precedence, that's fine. Only add mutex-style
|
|
80
|
+
validation when the _tool_ would error obscurely or do something dangerous.
|
|
81
|
+
- Acceptable validation: input patterns (catch shell injection / path traversal early), guards on
|
|
82
|
+
the _agent's_ policy boundary (e.g. "tool refuses if branch is main"), and integrity of
|
|
83
|
+
intermediate results (e.g. "project resolved as `null`, can't proceed").
|
|
84
|
+
|
|
85
|
+
### 4. Documented contract = enforced contract
|
|
86
|
+
|
|
87
|
+
If a description says "must be assigned to you," "tag must already exist," "cannot be run from main"
|
|
88
|
+
— there must be a `pre:` or `guards:` that enforces it. Either tighten the description or add the
|
|
89
|
+
enforcement. We had a real bug where `mywi-show` advertised assignee enforcement but didn't enforce
|
|
90
|
+
it.
|
|
91
|
+
|
|
92
|
+
### 5. Workflow completeness
|
|
93
|
+
|
|
94
|
+
Some tools imply a multi-step workflow. If the wrapper covers step 1 but leaves the user with no
|
|
95
|
+
nerftool way to do step 2, that's a gap.
|
|
96
|
+
|
|
97
|
+
- `git-rebase-unpushed` (which can hit conflicts) needs `git-rebase-continue` and `git-rebase-abort`
|
|
98
|
+
to be useful.
|
|
99
|
+
- A tool that fetches a log ID needs a sibling tool that consumes that log ID.
|
|
100
|
+
- Anything that produces a "now do X next" instruction in its output should have a tool for X.
|
|
101
|
+
|
|
102
|
+
### 6. Naming and convention adherence
|
|
103
|
+
|
|
104
|
+
- **Within a package**: do new tools follow the existing naming convention? E.g.
|
|
105
|
+
`az-pipelines-run-show` establishes a `run-*` prefix for "operates on a single run" tools —
|
|
106
|
+
`az-pipelines-run-timeline` matches; `az-pipelines-timeline` doesn't.
|
|
107
|
+
- **Cross-package conventions**: every workspace-write tool in this repo accepts an optional
|
|
108
|
+
directory option (`-C` for git, `-chdir`/positional for terraform, etc.). Flag tools that don't.
|
|
109
|
+
- **Pattern consistency for like values**: if `git-rebase-unpushed` allows `~`/`^` in its `<target>`
|
|
110
|
+
pattern, then `git-tag <ref>` should too — both mean "commit-ish."
|
|
111
|
+
|
|
112
|
+
### 7. Security and escape hatches
|
|
113
|
+
|
|
114
|
+
Look for ways a malicious or confused agent could escape the tool's intended scope.
|
|
115
|
+
|
|
116
|
+
- **Shell injection**: every user value must reach the tool through quoted variable expansion.
|
|
117
|
+
Patterns should reject metacharacters (`$`, `` ` ``, `;`, `&`, `|`, `<`, `>`, newlines). Look at
|
|
118
|
+
the rendered bash, not just the YAML.
|
|
119
|
+
- **Path traversal**: any path argument should have `path_tests: [under_cwd]` (or a stricter test)
|
|
120
|
+
unless there's a stated reason not to.
|
|
121
|
+
- **Flag smuggling**: variadic args with `allow_flags: true` are an injection vector for the wrapped
|
|
122
|
+
tool's flags. Check that the wrapped tool's most dangerous flags can't be smuggled this way.
|
|
123
|
+
- **Pre/guard scripts that interpolate user input as shell**: a guard like
|
|
124
|
+
`[[ -f {{arguments.path}} ]]` is broken — that should be `[[ -f "${PATH}" ]]`. The substituter
|
|
125
|
+
does the right thing, but check the rendered output.
|
|
126
|
+
- **Process substitution / heredoc / temp file handling** in script-mode tools: trace stdin/argv
|
|
127
|
+
carefully. Common bug: piping data and using a heredoc both fight for stdin.
|
|
128
|
+
- **Env-var size limits**: `export FOO=$(...)` followed by reading `$FOO` in a child fails when
|
|
129
|
+
`$FOO` is large enough to exceed `ARG_MAX` (~128KB to 2MB depending on OS). Bash variables
|
|
130
|
+
themselves don't have this limit, but exported environment does. Process substitution avoids both
|
|
131
|
+
issues.
|
|
132
|
+
|
|
133
|
+
### 8. Footguns
|
|
134
|
+
|
|
135
|
+
Beyond outright security: rough edges that bite users.
|
|
136
|
+
|
|
137
|
+
- **Tag patterns / regex anchors**: missing `$` lets unexpected suffixes through; missing `^` allows
|
|
138
|
+
prefixes; range pitfalls like `^[0-9]+$` accepting `0` (when `0` is a degenerate value, e.g.
|
|
139
|
+
`--tail 0`).
|
|
140
|
+
- **Bash portability**: `${var,,}` requires Bash 4+. macOS default `/bin/bash` is 3.2. Use
|
|
141
|
+
`tr '[:upper:]' '[:lower:]'` for case folding.
|
|
142
|
+
- **Empty-flag options**: `flag: ""` doesn't validate. Want to inject a value without a flag prefix?
|
|
143
|
+
Use script mode or a positional argument.
|
|
144
|
+
- **YAML folded scalars in command tokens**: a `>-` block as a single command token gets word-split
|
|
145
|
+
unquoted by bash. Quote it inside the YAML, or use script mode and store in a variable.
|
|
146
|
+
- **Required vs optional positionals after a variadic**: bash positional parsing has limits here.
|
|
147
|
+
Look hard at any tool with a variadic followed by anything.
|
|
148
|
+
- **Auto-detection failure modes**: when a value is auto-detected (e.g. project from git remote),
|
|
149
|
+
what happens if the detection fails? Empty string? `null`? Tool needs to either fail clearly or
|
|
150
|
+
accept an explicit override.
|
|
151
|
+
|
|
152
|
+
### 9. Bash hint coverage (package-level `bash_hints`)
|
|
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
|
|
165
|
+
position).
|
|
166
|
+
|
|
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
|
|
179
|
+
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.
|
|
189
|
+
|
|
190
|
+
### 10. Description, intro, and metadata hygiene
|
|
191
|
+
|
|
192
|
+
- Descriptions should describe _what the wrapper does_, not the underlying tool's general docs. Be
|
|
193
|
+
specific about constraints (e.g. "refuses on main").
|
|
194
|
+
- Skill intros (`package.skill_intro`) should cover _cross-tool policy_ — naming conventions, threat
|
|
195
|
+
conventions, "always do X before Y." Tool enumerations belong in the auto-generated overview that
|
|
196
|
+
follows the intro; don't duplicate.
|
|
197
|
+
- Argument and option `description:` fields should mention any non-obvious behavior (e.g. defaults,
|
|
198
|
+
valid values, format expectations).
|
|
199
|
+
|
|
200
|
+
### 11. Output formatting (script-mode tools)
|
|
201
|
+
|
|
202
|
+
- Errors go to stderr (`>&2`).
|
|
203
|
+
- Each error message includes the tool name as a prefix so it's identifiable in agent output.
|
|
204
|
+
- Successful output goes to stdout, untransformed where possible (let downstream consumers parse).
|
|
205
|
+
- Don't print informational chatter for successful runs unless it's useful to the agent (failure
|
|
206
|
+
summaries are fine; "Connected to API!" isn't).
|
|
207
|
+
|
|
208
|
+
## How to perform the review
|
|
209
|
+
|
|
210
|
+
1. Read the diff, then re-read each changed tool definition end-to-end. Don't review by checklist;
|
|
211
|
+
review the tool. Apply the checklist after you understand the tool.
|
|
212
|
+
2. For script-mode and template-mode tools, mentally render the bash. For non-trivial cases,
|
|
213
|
+
generate the wrapper (`uv run nerf generate --target bin --outdir /tmp/nerf-bin -c nerf.yaml`)
|
|
214
|
+
and read the actual script — small subtle issues only show in the rendered output.
|
|
215
|
+
3. Compare against sibling tools in the same package and against the same operation in adjacent
|
|
216
|
+
packages. Inconsistency is a signal — sometimes it's a bug, sometimes it's a deliberate
|
|
217
|
+
divergence; flag it either way.
|
|
218
|
+
4. Look at what's _not_ there: missing guards on tools that need them, missing companion tools for
|
|
219
|
+
multi-step workflows, missing `directory` options.
|
|
220
|
+
|
|
221
|
+
## Output format
|
|
222
|
+
|
|
223
|
+
Write the review as a short report:
|
|
224
|
+
|
|
225
|
+
- **Summary**: one or two sentences about the overall change.
|
|
226
|
+
- **Issues**: numbered list, each with severity (`blocking` / `should-fix` / `nit`), `file:line`, a
|
|
227
|
+
quote of the offending line(s), and a concrete suggestion.
|
|
228
|
+
- **Skipped non-issues**: brief notes on things you considered and decided weren't problems,
|
|
229
|
+
especially when they look superficially like the issues you'd usually flag. This prevents the same
|
|
230
|
+
false-positive from coming up again.
|
|
231
|
+
- **Recommendations**: any cross-cutting suggestions (e.g. "consider adopting X pattern across this
|
|
232
|
+
package").
|
|
233
|
+
|
|
234
|
+
Keep severity calibrated. `blocking` is for correctness/security/footgun issues. `should-fix` is for
|
|
235
|
+
convention or clarity. `nit` is taste. If there are no issues, say so plainly.
|
|
236
|
+
|
|
237
|
+
Be specific. "Tighten the pattern" is useless; `pattern: "^[1-9][0-9]*$"` (rejects 0) is useful.
|
|
@@ -0,0 +1,91 @@
|
|
|
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
|
+
markdown:
|
|
46
|
+
runs-on: ubuntu-latest
|
|
47
|
+
steps:
|
|
48
|
+
- uses: actions/checkout@v6
|
|
49
|
+
|
|
50
|
+
- name: markdownlint
|
|
51
|
+
uses: DavidAnson/markdownlint-cli2-action@v23
|
|
52
|
+
with:
|
|
53
|
+
globs: "**/*.md"
|
|
54
|
+
|
|
55
|
+
spelling:
|
|
56
|
+
runs-on: ubuntu-latest
|
|
57
|
+
steps:
|
|
58
|
+
- uses: actions/checkout@v6
|
|
59
|
+
|
|
60
|
+
- name: cspell
|
|
61
|
+
uses: streetsidesoftware/cspell-action@v8
|
|
62
|
+
with:
|
|
63
|
+
files: "**/*.md"
|
|
64
|
+
|
|
65
|
+
rulesync:
|
|
66
|
+
runs-on: ubuntu-latest
|
|
67
|
+
steps:
|
|
68
|
+
- uses: actions/checkout@v6
|
|
69
|
+
|
|
70
|
+
- name: Setup Node.js
|
|
71
|
+
uses: actions/setup-node@v4
|
|
72
|
+
with:
|
|
73
|
+
node-version: "22"
|
|
74
|
+
|
|
75
|
+
- name: Regenerate rulesync outputs
|
|
76
|
+
run: ./scripts/rulesync-upgen.bash
|
|
77
|
+
|
|
78
|
+
- name: Verify generated outputs match committed
|
|
79
|
+
run: |
|
|
80
|
+
if ! git diff --quiet; then
|
|
81
|
+
echo "::error::Rulesync output is out of sync with sources."
|
|
82
|
+
echo "Run ./scripts/rulesync-upgen.bash locally and commit the result."
|
|
83
|
+
git diff --stat
|
|
84
|
+
exit 1
|
|
85
|
+
fi
|
|
86
|
+
if [ -n "$(git ls-files --others --exclude-standard)" ]; then
|
|
87
|
+
echo "::error::Rulesync produced files outside the committed standard set."
|
|
88
|
+
echo "Either add the path to .gitignore (personal-target output) or commit it (new standard target)."
|
|
89
|
+
git ls-files --others --exclude-standard
|
|
90
|
+
exit 1
|
|
91
|
+
fi
|