giuseppe-trisciuoglio/developer-kit

pr-review-comments

Posts review findings from a JSON file as inline comments on a GitHub Pull Request, attaching each comment to its file and line.

View source
Original skill document

Rendered from the source repository. Headings, examples, code, tables, links, and referenced images are preserved.

PR Review Comments

Publish a JSON array of review findings as inline comments on a GitHub Pull Request, each anchored to its file and line. Uses the GitHub API through the authenticated gh CLI, so no token handling is needed.

Prerequisites

  • gh CLI installed and authenticated (gh auth status). The script auto-detects the

repo with gh repo view; pass --repo OWNER/REPO to override.

  • The PR number to comment on.
  • A JSON file: an array of objects. Required keys per object: file, line.

Message comes from summary and/or failure_scenario (combined into the body), or an explicit body. See references/json-schema.md for the full schema and a sample.

Key constraint: only diff lines are commentable

GitHub only accepts an inline comment if the target line is part of the PR's diff. line is the line number in the new file (use side: "LEFT" for removed lines). The script fetches the PR diff, validates every finding against the actual hunks, and skips any whose line is outside the diff — reporting them at the end so nothing is lost silently. There is no way to attach a line comment to an unchanged, undiffed line.

Workflow

  1. Confirm the JSON path and the PR number. If the repo isn't obvious, run gh repo view.
  2. Dry-run first to see what will be posted and what gets skipped:
bash
   scripts/post_pr_comments.py --pr <N> --json <path> --dry-run
  1. Review the "Postable" / "Skipped" counts with the user. If lines were skipped because

the diff moved, the line numbers in the JSON may be stale — reconcile before posting.

  1. Post for real, choosing the mode (see below):
bash
   # Grouped (default): one PR review bundling all comments
   scripts/post_pr_comments.py --pr <N> --json <path> --event COMMENT

   # Individual: one separate inline comment per finding
   scripts/post_pr_comments.py --pr <N> --json <path> --mode individual
  1. Report back the created review/comment URLs and the list of any skipped findings.

Choosing the mode

ModeEndpointUse when
grouped (default)POST /pulls/{n}/reviewsPublishing a set of findings as one review. One notification; can set `--event APPROVE \REQUEST_CHANGES \COMMENT`.
individualPOST /pulls/{n}/commentsAdding standalone comments incrementally, or when each finding should be its own thread/notification.

Default to grouped with --event COMMENT unless the user wants a verdict or separate threads.

Options reference

--pr N              PR number (required)
--json PATH         JSON array of findings (required)
--repo OWNER/REPO   Override auto-detected repo
--mode grouped|individual   Default: grouped
--event COMMENT|APPROVE|REQUEST_CHANGES   Grouped-mode verdict (default COMMENT)
--review-body TEXT  Top-level summary body for the grouped review
--commit SHA        Commit to anchor to (default: PR head SHA)
--dry-run           Validate and print payloads without posting

Notes

  • Multi-line range comments: include start_line (and optional start_side) in the JSON

object alongside line; the script passes them through.

  • Always --dry-run before a real post on an unfamiliar PR — stale line numbers are the

most common failure and the dry-run surfaces them as "skipped" without side effects.

  • The script is the reliable path; don't hand-roll gh api calls for this — it handles

diff validation, repo/commit detection, and body assembly consistently.

from this repository

More skills

All skills
giuseppe-trisciuoglio
Community

clean-architecture

Provides implementation patterns for Clean Architecture, Hexagonal Architecture (Ports & Adapters), and Domain-Driven Design in PHP 8.3+ with Symfony 7.x. Use when architecting enterprise PHP applications with entities/value objects/aggregates, refactoring legacy code to modern patterns, implementing domain-driven design with Symfony, or creating testable backends with clear separation of concerns.

installs
4
GitHub stars
359
Updated
Sep 10
giuseppe-trisciuoglio
Community

nextjs-authentication

Provides authentication implementation patterns for Next.js 15+ App Router using Auth.js 5 (NextAuth.js). Use when setting up authentication flows, implementing protected routes, managing sessions in Server Components and Server Actions, configuring OAuth providers, implementing role-based access control, or handling sign-in/sign-out flows in Next.js applications.

installs
2
GitHub stars
358
Updated
Sep 10
giuseppe-trisciuoglio
Community

adr-drafting

Creates new Architecture Decision Record (ADR) documents for significant architectural changes using a consistent template and repository-aware naming and storage guidance. Use when a user or agent decides on an architectural change, needs to document technical rationale, or wants to add a new ADR to the project history.

installs
1
GitHub stars
358
Updated
Sep 10
giuseppe-trisciuoglio
Community

dynamodb-toolbox-patterns

Provides TypeScript patterns for DynamoDB-Toolbox v2 including schema/table/entity modeling, .build() command workflow, query/scan access patterns, batch and transaction operations, and single-table design with computed keys. Use when implementing type-safe DynamoDB access layers with DynamoDB-Toolbox v2 in TypeScript services or serverless applications.

installs
1
GitHub stars
358
Updated
Sep 10