reply-to-pr-conversation

$npx mdskill add tobihagemann/turbo/reply-to-pr-conversation

Draft and post a conversational reply to GitHub PR conversation comments

  • Users need to draft and confirm a single reply addressing all tracked items in one natural-prose message.
  • Deploys GitHub API for fetching PR conversation data and uses the `/github-voice` skill for voice rules and insider-vs-outsider detection.
  • Decides on the appropriate response based on category: fix, skip, answer, or clarify, integrating payloads as needed.
  • Posts the final reply as a new PR issue comment.

SKILL.md

.github/skills/reply-to-pr-conversationView on GitHub ↗
---
name: reply-to-pr-conversation
description: "Draft, confirm, and post a single conversational reply to GitHub PR conversation comments (issue comments). The reply addresses all tracked items in one natural-prose message. Use when the user asks to \"reply to PR conversation\", \"post PR conversation replies\", or \"draft PR conversation messages\"."
---

# Reply to PR Conversation

Draft a single reply that addresses a processed issue-comment list, confirm with the user, and post it as a new PR issue comment.

## Step 1: Run `/github-voice` Skill

Run the `/github-voice` skill to load voice rules and the insider-vs-outsider detection.

## Step 2: Compose the Reply

Use the processed-item list from conversation context. Each entry has: id, author, original comment body (to quote from selectively), category (`fix`, `skip`, `answer`, or `clarify`), and per-category payload.

Draft one reply that addresses every item as natural conversational prose. The output is a single piece of prose with flexible length and no rigid section structure.

**Use the category to interpret each payload:**

- **fix**: payload is a commit SHA. Mention "fixed in `<sha>`" where it fits the flow, plus a brief note when the fix diverges from what the commenter suggested.
- **skip**: payload is the skip reasoning. State it directly.
- **answer**: payload is answer text prepared upstream. Integrate it as the implementer's own words.
- **clarify**: payload is a user-directed question. Ask it as-is.

**Quote selectively.** Use `>` blockquotes only for the phrase being responded to. A single-topic reply quotes one sentence then responds; a multi-topic reply weaves quotes and responses together. Drop quotes entirely when @mentions plus context make the reply unambiguous.

**Quote handling:**

- Strip leading `>` from quoted lines so nested blockquotes don't misattribute.
- Replace fenced-code lines inside a quote with `> [code snippet]`.
- If the author login ends in `[bot]`, omit the suffix from the `@` mention.

Apply `/github-voice` rules. Match the conversation's length and tone. An acknowledgment with emoji is fine when the discussion calls for it; a multi-paragraph response is fine when the items warrant it.

## Step 3: Confirm

Output the drafted reply as text for review:

```
**Draft comment**

<full comment body as it will be posted>
```

Then use `AskUserQuestion` to ask whether to post. Offer:

- **Post** — post the comment
- **Cancel** — skip posting

## Step 4: Post the Comment

Auto-detect owner, repo, and PR number from the current branch if not provided. Write the drafted body to `.turbo/pr/<pr_number>-comment.md` with the Write tool, then post via the issue-comments REST endpoint:

```bash
gh api -X POST \
  "/repos/<owner>/<repo>/issues/<pr_number>/comments" \
  -F [email protected]/pr/<pr_number>-comment.md
```

Report the posted comment's URL.

Then use the TaskList tool and proceed to any remaining task.

## Rules

- Never close the PR, resolve a thread, or edit existing comments. Only post a new issue comment.
- If the post fails, report the failure and leave the drafted body in the output so the user can post it manually.

More from tobihagemann/turbo

SkillDescription
answer-reviewer-questionsFor each reviewer question on a PR, recall implementation reasoning and compose a raw answer. Use when the user asks to \"answer reviewer questions\", \"draft answers to PR questions\", or \"explain reviewer questions\".
apply-findingsApply findings by making the suggested code changes. Applies accepted verdicts, escalates ambiguous findings to the user, and offers to note genuine improvements for later. Use when the user asks to \"apply findings\", \"apply fixes\", \"apply suggestions\", \"apply accepted findings\", \"fix the findings\", or \"apply the review results\".
assess-technical-debtAssess project-wide structural technical debt: complexity hotspots, deprecated API usage, duplication clusters, and architecture rot. Ranks findings by impact and refactor effort into a report at .turbo/technical-debt.md. Use when the user asks to \"assess technical debt\", \"find technical debt\", \"review technical debt\", \"what should we refactor\", \"find refactoring candidates\", \"where is the code rot\", or \"what's our worst code\". Analysis-only — does not modify code.
changelog-rulesShared changelog conventions and formatting rules referenced by /create-changelog and /update-changelog. Not typically invoked directly.
claude-printRun a non-interactive Claude Code print-mode call from Codex. Use when the user asks to \"claude print\", \"ask claude\", \"run claude\", \"consult claude\", or when a Codex Turbo skill needs Claude as an independent peer reviewer.
code-styleEnforce mirror, reuse, and symmetry principles to keep new code consistent with surrounding code. Use when writing new code in an existing codebase, adding new features, refactoring, or making any code changes.
codex-execRun autonomous task execution using the codex CLI. Use when the user asks to \"codex exec\", \"run codex exec\", \"execute a task with codex\", or \"delegate to codex\".
commit-rulesShared commit message rules and technical constraints referenced by /stage-commit and /commit-staged. Not typically invoked directly.
commit-staged-pushCommit already-staged changes and push in one step. Use when the user asks to \"commit and push staged changes\", \"commit and push what's staged\", or \"commit staged and push\".
consult-claudeConsult Claude Code for second opinions, brainstorming, or difficult debugging from Codex. Use when the user asks to \"consult claude\", \"ask claude\", \"get claude's opinion\", \"brainstorm with claude\", or \"discuss with claude\".