Reorganize Claude commands and add permission hooks (#2305)
## Summary
- Move Claude commands to `dyad/` namespace (e2e-rebase, pr-fix)
- Add new commands: fix-issue, gh-push, gh-rebase, lint, session-debug
- Add `gh-permission-hook.py` to block destructive gh commands (except
PRs)
- Expand allowed bash commands in settings.json
- Update AGENTS.md to reference `/dyad:lint` skill and fix typo
## Test plan
- [ ] Verify commands work with `/dyad:<command>` syntax
- [ ] Test that gh-permission-hook blocks issue modifications but allows
PR operations
🤖 Generated with [Claude Code](https://claude.com/claude-code)
<!-- This is an auto-generated description by cubic. -->
---
## Summary by cubic
Reorganized Claude commands under the /dyad namespace and added a GitHub
CLI permission hook that auto-approves read-only commands plus PR and
issue updates while blocking destructive actions. Added new skills
(including deflaking E2E and split PR fix steps), hardened the hook, and
added tests.
- **New Features**
- Moved e2e-rebase and pr-fix to dyad/; added fix-issue, pr-push,
gh-rebase, lint, session-debug, deflake-e2e; split pr-fix into
pr-fix:comments and pr-fix:actions.
- Updated AGENTS.md to reference /dyad:lint and fixed a typo.
- **Permissions**
- Added gh-permission-hook.py (PreToolUse) for Bash gh commands;
auto-approves read-only ops, PR modification commands, issue
create/edit/close/reopen/comment, PR review thread ops, and PR/issue
comment replies and updates; blocks destructive actions across issues,
releases, gists, labels, secrets, repos, workflows, config, and auth.
- Hardened checks: require gh as the executed command (handles
env/sudo/command wrappers); detect shell injection (;, &&/||, &,
newlines, ANSI-C $'…', process substitution); allow safe pipes to jq and
common text filters (head/tail/grep/wc/sort/uniq/cut/tr) and stderr
redirects; parse --method/-X (incl. equals syntax); allow GraphQL
queries plus specific PR review thread/comment mutations; added unit
tests with good/bad fixtures.
- Updated settings.json to narrow read-only gh allowlist, expand safe
Bash commands, and register the PreToolUse hook.
<sup>Written for commit 3237d344cdc2850a97a9a4856bff54bd25be102b.
Summary will update on new commits.</sup>
<!-- End of auto-generated description by cubic. -->
<!-- CURSOR_SUMMARY -->
---
> [!NOTE]
> Streamlines Claude command suite and hardens GitHub CLI usage in the
workspace.
>
> - Reorganizes commands under `/.claude/commands/dyad/` and adds new
skills: `deflake-e2e`, `fix-issue`, `gh-rebase`, `lint`, `pr-push`,
`session-debug`; splits `pr-fix` into `pr-fix:comments` and
`pr-fix:actions`
> - Adds `/.claude/hooks/gh-permission-hook.py` to auto-approve
read-only/PR operations and block destructive `gh` commands; supports
GraphQL query/limited mutations and safe piping
> - Introduces unit tests (`.claude/hooks/tests/*`) with good/bad
command fixtures and a test runner
> - Updates `.claude/settings.json` to expand safe Bash allowlist and
register `PreToolUse` hook; tweaks `.gitignore` and `AGENTS.md`
(references `/dyad:lint`)
>
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
3237d344cdc2850a97a9a4856bff54bd25be102b. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
---------
Co-authored-by:
Claude Opus 4.5 <noreply@anthropic.com>
正在显示
.claude/commands/dyad/lint.md
0 → 100644
.claude/commands/dyad/pr-fix.md
0 → 100644
.claude/commands/dyad/pr-push.md
0 → 100644
.claude/hooks/tests/README.md
0 → 100644
请
注册
或者
登录
后发表评论