From eval-pack
Generate an eval pack and create (or update) a pull request with the eval pack committed to the branch.
How this skill is triggered — by the user, by Claude, or both
Slash command
/eval-pack:reviewThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
This skill combines eval pack generation with PR creation. Follow these steps:
This skill combines eval pack generation with PR creation. Follow these steps:
Invoke the eval-pack generate skill internally. Run the full generation flow:
The .eval-packs/ directory is gitignored — force-add the zip:
git add -f .eval-packs/
git commit -m "chore: add eval pack for session ${SESSION_ID}"
git push
Check if a PR already exists for the current branch:
EXISTING_PR=$(gh pr list --head "$(git branch --show-current)" --json number --jq '.[0].number // empty')
If a PR exists, the push above already updated it. Note: the ticket reference below is added on PR creation only; an existing PR's body is not rewritten on later runs.
If no PR exists, first discover the work ticket, then create the PR.
A PR with no ticket link forces the reviewer to leave the PR and hunt the tracker for the why. Find the ticket key in this order, stopping at the first hit:
Branch name — match the default ticket pattern [A-Z][A-Z0-9]+-[0-9]+ against the
current branch:
BRANCH=$(git branch --show-current)
TICKET=$(printf '%s' "$BRANCH" | grep -oE '[A-Z][A-Z0-9]+-[0-9]+' | head -1)
Commit messages — if TICKET is empty, scan this branch's commits for the same
pattern or a Ticket: trailer:
if [ -z "$TICKET" ]; then
BASE=$(git merge-base HEAD main 2>/dev/null || git merge-base HEAD master 2>/dev/null || echo "")
RANGE=${BASE:+$BASE..HEAD}
TICKET=$(git log $RANGE --format='%B' 2>/dev/null | grep -oE '[A-Z][A-Z0-9]+-[0-9]+' | head -1)
fi
Ask the user once — if TICKET is still empty, ask:
"Ticket for this PR? Provide a key (e.g. PROJ-123), a full URL, or 'none'."
TICKET to it.TICKET_URL to that URL (skip the link-building below).none, leave both empty and omit the Ticket section.TICKET_URL (user pasted a URL): the line is Ticket: <TICKET_URL>.TICKET key AND the plugin config ticketBaseUrl is non-empty:
the line is Ticket: [<TICKET>](<ticketBaseUrl><TICKET>).TICKET key and no ticketBaseUrl: the line is Ticket: <TICKET>.## Ticket section from the body.Include the ## Ticket section above ## Summary only when a ticket was found:
gh pr create --title "<appropriate title based on work done>" --body "$(cat <<'EOF'
## Ticket
Ticket: <the ticket line you built, or omit this whole section if none>
## Summary
<summarize what was accomplished in this session>
## Eval Pack
The eval pack zip is committed to this branch at `.eval-packs/<session-id>.zip`.
Extract and open `index.html` in a browser to view the full report.
## Test Results
<verdict: pass/fail/none with brief summary>
---
Generated by [eval-pack](https://github.com/smalls257/eval-pack)
EOF
)"
Tell the user:
.eval-packs/ on the branch — extract and open index.htmlCreates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub smalls257/eval-pack --plugin eval-pack