SKILL.md
HeyEddi PR Respond
PR author response to every review source — human teammates, bots, and HeyEddi CI (inline + root summaries).
There is one respond skill. Do not split human vs CI into different pipelines.
Default behavior (no confirmation)
On any PR work, do not ask whether to fix findings, check CI, or post threaded replies — always do all three.
- Always run
@heyeddi-ci-failsfirst (fetch, diagnose, fix actionable CI failures) - Fix valid review items automatically
- Commit + push automatically
- Post every reply in-thread automatically
- Only merge requires authorize merge in the current turn
No project scratch files
Never write .heyeddi/docs/pr-* (tracking, replies, posted, comments). GitHub threads are the SSOT.
| Data | Where it lives |
|---|---|
| Comment cache | System temp (fetchprcomments stdout path) |
| Inventory | buildcommentinventory stdout (optional temp cache) |
| Tracking | In chat only |
| Reply drafts | --replies-text to postthreadreplies / verify_response |
| Post log | postthreadreplies stdout JSON only |
Delete legacy pr- / pr--ci-* files under .heyeddi/docs/ if present.
Root review summaries (HeyEddi CI and others)
Review submission bodies often list findings like:
**Commented on the diff**
1. 🔴 Bug title — `path/to/file.py:185`
Mandatory:
- Run
buildcommentinventoryafter fetch — parses root summaries + inline IDs. - Every postable item gets fix/decline analysis, code change when needed, and
## Comment <id>reply draft. - Orphan items still get fix/decline in code and appear in
## Summary. - Do not treat the root summary as done after one top-level reply.
Critical: commit + push before "Fixed" replies
Reviewers and HeyEddi debate only see remote HEAD.
- Apply fixes for every inventory item marked fix/partial
- Commit — do not ask
- Push to the PR branch
- Post in-thread replies
Hard gate: assertfixespushed --check (also inside postthreadreplies unless --dry-run / --allow-unpushed).
Critical: in-thread replies only
- Do
gh api …/pulls/<N>/comments/<ID>/replies - Do not
gh pr commentper finding - Do not "Acknowledged review attachment…" spam
Mandatory pipeline
@heyeddi-ci-fails first → fetch + diagnose + fix CI failures + push
fetch_pr_comments --pr <N>
build_comment_inventory --pr <N> --write-cache
→ tracking table in chat (every item: id, type, fix|decline, status)
for each item: analyze vs PR goals → fix | decline | partial | out-of-scope
apply code/docs fixes when fix
discover_and_verify [--run] → evidenced commands only
assert_no_merge --check → unless user said authorize merge
→ if any fix: commit + push (automatic — do not ask)
assert_fixes_pushed --check
→ compose ## Comment <id> for every postable_reply_id + ## Summary last
post_thread_replies --pr <N> --replies-text '...'
verify_response --pr <N> --replies-text '...' --use-inventory --live --check
→ optional one Summary after verify
Never merge without authorize merge in the current turn.
HeyEddi CI false positives
Reply in-thread with decline rationale; suggest debate or [email protected]. No fake FP API.
Tools
| Tool | Purpose |
|---|---|
fetchprcomments |
Fetch inline, review, discussion → temp cache |
buildcommentinventory |
Parse root summaries + inline; list every item |
filter_comments |
Optional --scope heyeddi (default all) |
discoverandverify |
Evidenced test/build commands |
assertnomerge |
Merge hard gate |
assertfixespushed |
Commit+push gate before Fixed replies |
postthreadreplies |
Post every draft in-thread |
verify_response |
Hard-fail if any postable ID missing |
Requires
ghCLI authenticated
When the task is complete: suggest next skills
When you have finished the user's request for this skill, suggest what to run next:
python .agents/skills/heyeddi-orchestrator/scripts/suggest_next_skill.py \
--current-skill heyeddi-pr-respond --project-root .