Drive an installed LaRuche App through its declared actions, never its files.
中文简介正在准备中。当前显示原文说明。
Review a pull request and leave inline comments on GitHub.
中文简介正在准备中。当前显示原文说明。
安装前可以查看交给 AI 代理的指令内容。
Review local changes before pushing, or review open PRs on GitHub.
github-auth skill)${GITHUB_TOKEN} available in secrets vault (for curl fallback)if command -v gh &>/dev/null && gh auth status &>/dev/null; then
AUTH="gh"
else
AUTH="curl"
fi
REMOTE_URL=$(git remote get-url origin)
OWNER_REPO=$(echo "$REMOTE_URL" | sed -E 's|.*github\.com[:/]||; s|\.git$||')
OWNER=$(echo "$OWNER_REPO" | cut -d/ -f1)
REPO=$(echo "$OWNER_REPO" | cut -d/ -f2)
Pure git - no API needed.
git diff main...HEAD --stat # scope overview
git log main..HEAD --oneline # commit list
git diff main...HEAD # full diff
git diff main...HEAD -- src/file.py # single file
Quick issue scan:
# Debug statements, TODOs
git diff main...HEAD | grep -n "print(\|console\.log\|TODO\|FIXME\|HACK\|debugger"
# Credential patterns
git diff main...HEAD | grep -in "password\|secret\|api_key\|token.*=\|private_key"
# Merge conflict markers
git diff main...HEAD | grep -n "<<<<<<\|>>>>>>\|======="
Use file_read on affected files for full context around flagged lines.
Review output format:
## Code Review Summary
### Critical
- **src/auth.py:45** - SQL injection: raw user input in query. Use parameterized queries.
### Warnings
- **src/models/user.py:23** - Password stored plaintext. Use bcrypt/argon2.
### Suggestions
- **src/utils/helpers.py:8** - Duplicates logic in src/core/utils.py:34.
### Looks Good
- Clean middleware separation; good happy-path test coverage.
With gh (preferred):
gh pr view $PR_NUMBER
gh pr diff $PR_NUMBER --name-only
gh pr checks $PR_NUMBER
With curl (fallback - uses ${GITHUB_TOKEN} from secrets vault):
curl -s -H "Authorization: token ${GITHUB_TOKEN}" \
https://api.github.com/repos/$OWNER/$REPO/pulls/$PR_NUMBER \
| python3 -c "import sys,json; pr=json.load(sys.stdin); print(pr['title'], pr['user']['login'], pr['head']['ref'])"
curl -s -H "Authorization: token ${GITHUB_TOKEN}" \
https://api.github.com/repos/$OWNER/$REPO/pulls/$PR_NUMBER/files \
| python3 -c "import sys,json; [print(f['status'],f['filename']) for f in json.load(sys.stdin)]"
gh pr checkout $PR_NUMBER
# or manually:
git fetch origin pull/$PR_NUMBER/head:pr-$PR_NUMBER && git checkout pr-$PR_NUMBER
git diff main...HEAD # diff against base
# Use file_read, file_list, shell_exec for tests
General comment:
gh pr comment $PR_NUMBER --body "Overall LGTM, a few inline notes below."
# curl fallback:
curl -s -X POST -H "Authorization: token ${GITHUB_TOKEN}" \
https://api.github.com/repos/$OWNER/$REPO/issues/$PR_NUMBER/comments \
-d '{"body": "Overall LGTM, a few inline notes below."}'
Single inline comment:
HEAD_SHA=$(gh pr view $PR_NUMBER --json headRefOid --jq '.headRefOid')
gh api repos/$OWNER/$REPO/pulls/$PR_NUMBER/comments \
--method POST \
-f body="Use a list comprehension here." \
-f path="src/auth/login.py" \
-f commit_id="$HEAD_SHA" \
-f line=45 \
-f side="RIGHT"
line = line number in the new file. For deleted lines use "side": "LEFT".
gh pr review $PR_NUMBER --approve --body "LGTM!"
gh pr review $PR_NUMBER --request-changes --body "See inline comments."
gh pr review $PR_NUMBER --comment --body "A few suggestions."
Atomic review with multiple inline comments (curl):
HEAD_SHA=$(curl -s -H "Authorization: token ${GITHUB_TOKEN}" \
https://api.github.com/repos/$OWNER/$REPO/pulls/$PR_NUMBER \
| python3 -c "import sys,json; print(json.load(sys.stdin)['head']['sha'])")
curl -s -X POST -H "Authorization: token ${GITHUB_TOKEN}" \
https://api.github.com/repos/$OWNER/$REPO/pulls/$PR_NUMBER/reviews \
-d "{
\"commit_id\": \"$HEAD_SHA\",
\"event\": \"REQUEST_CHANGES\",
\"body\": \"## Review\n2 issues, 1 suggestion.\",
\"comments\": [
{\"path\": \"src/auth.py\", \"line\": 45, \"body\": \"SQL injection - use parameterized queries.\"},
{\"path\": \"src/models.py\", \"line\": 23, \"body\": \"Hash passwords before storing.\"},
{\"path\": \"src/utils.py\", \"line\": 8, \"body\": \"Duplicates logic in core/utils.py:34.\"}
]
}"
Event values: "APPROVE" | "REQUEST_CHANGES" | "COMMENT"
| Category | Key checks |
|---|---|
| Correctness | Does it do what it claims? Edge cases (null, empty, large data, concurrency)? Errors handled? |
| Security | No hardcoded secrets/keys; input validation; no SQLi/XSS/path traversal; auth checks in place |
| Code Quality | Clear naming; no premature abstraction; DRY; single-responsibility functions |
| Testing | New paths tested? Happy + error paths? Tests readable? |
| Performance | No N+1 queries; no blocking ops in async; caching where appropriate |
| Docs | Public APIs documented; non-obvious logic explained; README updated if behavior changed |
Decision rule:
1. Auth detection (top of skill) - prefer gh, fall back to ${GITHUB_TOKEN}
2. gh pr view $N → scope, description, CI status
3. gh pr checkout $N (or git fetch origin pull/$N/head:pr-$N && git checkout pr-$N)
4. git diff main...HEAD --name-only → file list
5. Per file: git diff main...HEAD -- <file> + file_read for context
6. Run tests/linter if applicable:
shell_exec("python -m pytest 2>&1 | tail -20")
shell_exec("ruff check . 2>&1 | head -30")
7. Apply checklist (Section 3), collect findings
8. Post atomic review (gh pr review or curl /reviews with inline comments)
9. Post summary top-level comment (gh pr comment)
10. Cleanup: git checkout main && git branch -D pr-$N
还没有评价。欢迎分享你的使用感受。
无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。
还没有评论。来写第一条吧。
Drive an installed LaRuche App through its declared actions, never its files.
中文简介正在准备中。当前显示原文说明。
Find academic papers on arXiv, with citation counts and BibTeX.
中文简介正在准备中。当前显示原文说明。
Render text or an image as ASCII art for terminal-friendly output.
中文简介正在准备中。当前显示原文说明。
Track RSS/Atom feeds and blogs via blogwatcher-cli.
中文简介正在准备中。当前显示原文说明。
Drive a real web browser: navigate, read, find, click, fill, screenshot
中文简介正在准备中。当前显示原文说明。
Measure a codebase: lines of code, language mix, and symbol lookups.
中文简介正在准备中。当前显示原文说明。