Compare commits

..

1 Commits

Author SHA1 Message Date
Octavian Guzu
cebbc4f721 Use gh.sh wrapper for all gh commands in triage and dedupe workflows 2026-02-25 13:43:36 +00:00
4 changed files with 65 additions and 30 deletions

View File

@@ -1,5 +1,5 @@
--- ---
allowed-tools: Bash(gh issue view:*), Bash(gh search:*), Bash(gh issue list:*), Bash(./scripts/comment-on-duplicates.sh:*) allowed-tools: Bash(./scripts/gh.sh:*), Bash(./scripts/comment-on-duplicates.sh:*)
description: Find duplicate GitHub issues description: Find duplicate GitHub issues
--- ---
@@ -18,6 +18,10 @@ To do this, follow these steps precisely:
Notes (be sure to tell this to your agents, too): Notes (be sure to tell this to your agents, too):
- Use `gh` to interact with Github, rather than web fetch - Use `./scripts/gh.sh` to interact with Github, rather than web fetch or raw `gh`. Examples:
- Do not use other tools, beyond `gh` and the comment script (eg. don't use other MCP servers, file edit, etc.) - `./scripts/gh.sh issue view 123` — view an issue
- `./scripts/gh.sh issue view 123 --comments` — view with comments
- `./scripts/gh.sh issue list --state open --limit 20` — list issues
- `./scripts/gh.sh search issues "query" --limit 10` — search for issues
- Do not use other tools, beyond `./scripts/gh.sh` and the comment script (eg. don't use other MCP servers, file edit, etc.)
- Make a todo list first - Make a todo list first

View File

@@ -1,5 +1,5 @@
--- ---
allowed-tools: Bash(gh label list:*),Bash(gh issue view:*),Bash(./scripts/edit-issue-labels.sh:*),Bash(gh search issues:*) allowed-tools: Bash(./scripts/gh.sh:*),Bash(./scripts/edit-issue-labels.sh:*)
description: Triage GitHub issues by analyzing and applying labels description: Triage GitHub issues by analyzing and applying labels
--- ---
@@ -12,17 +12,21 @@ Context:
$ARGUMENTS $ARGUMENTS
TOOLS: TOOLS:
- `gh label list`: Fetch all available labels in this repo - `./scripts/gh.sh` — wrapper for `gh` CLI. Only supports these subcommands and flags:
- `gh issue view NUMBER`: Read the issue title, body, and labels - `./scripts/gh.sh label list` — fetch all available labels
- `gh issue view NUMBER --comments`: Read the conversation - `./scripts/gh.sh label list --limit 100` — fetch with limit
- `gh search issues QUERY`: Find similar or duplicate issues - `./scripts/gh.sh issue view 123` — read issue title, body, and labels
- `./scripts/edit-issue-labels.sh --issue NUMBER --add-label LABEL --remove-label LABEL`: Add or remove labels - `./scripts/gh.sh issue view 123 --comments` — read the conversation
- `./scripts/gh.sh issue list --state open --limit 20` — list issues
- `./scripts/gh.sh search issues "query"` — find similar or duplicate issues
- `./scripts/gh.sh search issues "query" --limit 10` — search with limit
- `./scripts/edit-issue-labels.sh --issue NUMBER --add-label LABEL --remove-label LABEL` — add or remove labels
TASK: TASK:
1. Run `gh label list` to fetch the available labels. You may ONLY use labels from this list. Never invent new labels. 1. Run `./scripts/gh.sh label list` to fetch the available labels. You may ONLY use labels from this list. Never invent new labels.
2. Run `gh issue view ISSUE_NUMBER` to read the issue details. 2. Run `./scripts/gh.sh issue view ISSUE_NUMBER` to read the issue details.
3. Run `gh issue view ISSUE_NUMBER --comments` to read the conversation. 3. Run `./scripts/gh.sh issue view ISSUE_NUMBER --comments` to read the conversation.
**If EVENT is "issues" (new issue):** **If EVENT is "issues" (new issue):**
@@ -31,7 +35,7 @@ TASK:
5. Analyze and apply category labels: 5. Analyze and apply category labels:
- Type (bug, enhancement, question, etc.) - Type (bug, enhancement, question, etc.)
- Technical areas and platform - Technical areas and platform
- Check for duplicates with `gh search issues`. Only mark as duplicate of OPEN issues. - Check for duplicates with `./scripts/gh.sh search issues`. Only mark as duplicate of OPEN issues.
6. Evaluate lifecycle labels: 6. Evaluate lifecycle labels:
- `needs-repro` (bugs only, 7 days): Bug reports without clear steps to reproduce. A good repro has specific, followable steps that someone else could use to see the same issue. - `needs-repro` (bugs only, 7 days): Bug reports without clear steps to reproduce. A good repro has specific, followable steps that someone else could use to see the same issue.
@@ -58,7 +62,7 @@ TASK:
- Do NOT add or remove category labels (bug, enhancement, etc.) on comment events. - Do NOT add or remove category labels (bug, enhancement, etc.) on comment events.
GUIDELINES: GUIDELINES:
- ONLY use labels from `gh label list` — never create or guess label names - ONLY use labels from `./scripts/gh.sh label list` — never create or guess label names
- DO NOT post any comments to the issue - DO NOT post any comments to the issue
- Be conservative with lifecycle labels — only apply when clearly warranted - Be conservative with lifecycle labels — only apply when clearly warranted
- Only apply lifecycle labels (`needs-repro`, `needs-info`) to bugs — never to questions or enhancements - Only apply lifecycle labels (`needs-repro`, `needs-info`) to bugs — never to questions or enhancements

View File

@@ -1,20 +1,5 @@
# Changelog # Changelog
## 2.1.55
- Fixed BashTool failing on Windows with EINVAL error
## 2.1.53
- Fixed a UI flicker where user input would briefly disappear after submission before the message rendered
- Fixed bulk agent kill (ctrl+f) to send a single aggregate notification instead of one per agent, and to properly clear the command queue
- Fixed graceful shutdown sometimes leaving stale sessions when using Remote Control by parallelizing teardown network calls
- Fixed `--worktree` sometimes being ignored on first launch
- Fixed a panic ("switch on corrupted value") on Windows
- Fixed a crash that could occur when spawning many processes on Windows
- Fixed a crash in the WebAssembly interpreter on Linux x64 & Windows x64
- Fixed a crash that sometimes occurred after 2 minutes on Windows ARM64
## 2.1.52 ## 2.1.52
- VS Code: Fixed extension crash on Windows ("command 'claude-vscode.editor.openLast' not found") - VS Code: Fixed extension crash on Windows ("command 'claude-vscode.editor.openLast' not found")
@@ -31,7 +16,6 @@
- Added `CLAUDE_CODE_ACCOUNT_UUID`, `CLAUDE_CODE_USER_EMAIL`, and `CLAUDE_CODE_ORGANIZATION_UUID` environment variables for SDK callers to provide account info synchronously, eliminating a race condition where early telemetry events lacked account metadata. - Added `CLAUDE_CODE_ACCOUNT_UUID`, `CLAUDE_CODE_USER_EMAIL`, and `CLAUDE_CODE_ORGANIZATION_UUID` environment variables for SDK callers to provide account info synchronously, eliminating a race condition where early telemetry events lacked account metadata.
- Fixed slash command autocomplete crashing when a plugin's SKILL.md description is a YAML array or other non-string type - Fixed slash command autocomplete crashing when a plugin's SKILL.md description is a YAML array or other non-string type
- The `/model` picker now shows human-readable labels (e.g., "Sonnet 4.5") instead of raw model IDs for pinned model versions, with an upgrade hint when a newer version is available. - The `/model` picker now shows human-readable labels (e.g., "Sonnet 4.5") instead of raw model IDs for pinned model versions, with an upgrade hint when a newer version is available.
- Managed settings can now be set via macOS plist or Windows Registry. Learn more at https://code.claude.com/docs/en/settings#settings-files
## 2.1.50 ## 2.1.50

43
scripts/gh.sh Executable file
View File

@@ -0,0 +1,43 @@
#!/usr/bin/env bash
set -euo pipefail
# Wrapper around gh CLI that only allows specific subcommands and flags.
#
# Usage:
# ./scripts/gh.sh issue view 123
# ./scripts/gh.sh issue view 123 --comments
# ./scripts/gh.sh issue list --state open --limit 20
# ./scripts/gh.sh search issues "search query" --limit 10
# ./scripts/gh.sh label list --limit 100
ALLOWED_FLAGS=(--comments --state --limit --label)
SUB1="${1:-}"
SUB2="${2:-}"
CMD="$SUB1 $SUB2"
case "$CMD" in
"issue view"|"issue list"|"search issues"|"label list")
;;
*)
exit 1
;;
esac
shift 2
for arg in "$@"; do
if [[ "$arg" == -* ]]; then
flag="${arg%%=*}"
matched=false
for allowed in "${ALLOWED_FLAGS[@]}"; do
if [[ "$flag" == "$allowed" ]]; then
matched=true
break
fi
done
if [[ "$matched" == false ]]; then
exit 1
fi
fi
done
gh "$SUB1" "$SUB2" "$@"