본문으로 건너뛰기
cccskills
무료GitHub에 공개한국어 소개

pr-gardening

Paperclip 인스턴스가 만든 풀 리퀘스트의 목적과 병합 준비 상태를 확인하고, 미완료 항목을 수정 작업으로 연결한 뒤 최신 변경의 검증 결과를 보고합니다.

원문원문 설명 보기

Discover the pull requests this Paperclip instance opened (never community contributions), report what each is for and how confident we are that it is merge-ready, and automatically drive the non-ready ones back to green with /prepare-paperclip-pr — without ever merging.

연동 도구GitHub
AI 평가90점/ 100설치 방법 보기

이럴 때 유용합니다

  • 현재 인스턴스가 만든 풀 리퀘스트 점검
  • 검사 실패나 충돌의 수정 요청
  • 수정 후 병합 준비 상태 재확인
  • 기록을 바꾸지 않고 상태 확인

한국어 소개

할 수 있는 일

pr-gardening은 최근 Paperclip 작업에서 언급된 현재 인스턴스의 풀 리퀘스트를 모아 목적과 병합 준비 상태를 보고합니다. 스크립트로 최신 변경의 검사 결과, 충돌, 검토 상태, 기준 브랜치보다 뒤처진 정도를 확인합니다. 준비되지 않은 항목은 /prepare-paperclip-pr 수정 작업으로 연결하고 변경 후 다시 검증합니다.

이럴 때 유용합니다

여러 풀 리퀘스트가 남아 있어 확인 대상을 정리할 때 유용합니다. 준비 상태의 확신도와 근거를 목록으로 제시하며 중복 수정 요청과 짧은 간격의 반복 처리도 줄입니다. 기본 대상 기간은 14일입니다.

사용 예시

  • “최근 14일의 대상 풀 리퀘스트를 조사해 목적과 준비 상태를 보고해 주세요.”
  • “--dry-run으로 기록을 바꾸지 않고 확인해 주세요.”
  • “미준비 항목을 수정 작업으로 연결하고 완료 후 재검증해 주세요.”

주의 사항

Node.js 20 이상, GitHub 읽기 인증을 마친 gh, Paperclip 실행 인증 정보가 필요합니다. 준비 작업에는 /prepare-paperclip-pr을 사용합니다. 보통 커뮤니티 기여는 제외하고 초안은 보고만 합니다. 이 스킬은 병합, 승인, 종료를 수행하지 않습니다. GitHub 접근은 읽기 전용이며, 일반 실행은 Paperclip에 댓글과 작업을 만듭니다.

이 소개문은 공개된 SKILL.md를 바탕으로 AI(OpenAI Codex)가 작성했습니다. 정확한 사양은 아래 원문을 확인하세요.

객관 평가

AI가 SKILL.md의 내용만을 근거로 4가지 관점에서 판정했습니다. 스타 수나 인기도는 판정에 넣지 않았습니다.

지시의 명확성언제 쓰고 무엇을 하는지 알 수 있는가
A양호현재 인스턴스의 풀 리퀘스트를 수집하고 검사해 미준비 항목을 수정으로 연결하는 역할을 명시합니다.
절차의 구체성절차·입출력·예시가 구체적으로 적혀 있는가
A양호후보 수집과 검증 명령, JSON 출력, 판정값, 작업 중복 방지 절차를 제시합니다.
안전성전송·삭제·명령 실행 등을 명시하고 있는가
A양호GitHub 읽기 전용 접근과 변경 범위를 명시하고 모든 변경을 막는 --dry-run을 제공합니다.
도입의 용이성필요한 도구나 API 키가 적고 적혀 있는가
B일부 부족Node.js 20 이상, gh 인증, 실행 인증 정보가 필요하지만 인증 설정 절차는 없습니다.

총점은 각 항목을 A=25점, B=15점, C=5점으로 더한 값입니다. 2026년 10월 20일 기준으로 AI(OpenAI Codex)가 판정했습니다. 참고용이므로 설치 전에 원문도 확인해 주세요.

평가가 다르다고 생각되면 재검토를 요청하기

어느 항목이 왜 다르다고 생각하는지 적어 주세요. 로그인은 필요 없습니다. SKILL.md와 대조해 평가를 다시 만들고 이곳에 반영합니다.

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

포함된 파일(6)

  • SKILL.md12.9 KB
  • scripts/check-readiness.mjs7.7 KB
  • scripts/find-candidates.mjs7.4 KB
  • scripts/lib.mjs7.0 KB
  • scripts/pr-gardening.test.mjs13.5 KB
  • scripts/render-report.mjs3.9 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

PR Gardening

Actively garden the pull requests this Paperclip instance opened that are referenced by Paperclip issues active in a recent window (default 14 days). Candidate discovery and readiness checking are scripts, not LLM analysis. GitHub access is read-only throughout this workflow.

Scope — Our PRs Only

By default the workflow gardens only pull requests authored by this instance's GitHub identity (the gh authenticated login, e.g. cryppadotta). Community contributions and dependabot PRs are excluded mechanically by author login in Stage A and land in droppedCommunityPullRequests; never re-add them by hand, widen the scope only when the caller explicitly passes --authors or --include-community.

Hard Guardrails

  • Never merge, approve, or close a pull request.
  • Never instruct another person or agent to merge, approve, or close a pull request.
  • Never garden, comment on, or run /prepare-paperclip-pr against a community PR. Only PRs from the Stage A author allowlist are actionable.
  • Never use mutating gh commands or mutating GitHub API requests. The scripts only use gh pr view and read-only gh api GET requests.
  • Draft pull requests are report-only. Do not post gardening comments for drafts.
  • Comment only on existing originating issues. Never create a gardening issue per pull request.
  • --dry-run suppresses all Paperclip mutations, including gardening comments, prepare tasks, and inbox archives. Discovery and GitHub inspection remain read-only in every mode.

Inputs

  • --days <N>: activity window, default 14. Applies to both mentioning-issue activity and the PR's own updatedAt; open PRs with no activity inside the window are dropped as stale.
  • --authors <logins>: comma-separated GitHub logins whose PRs are in scope; default is the gh authenticated user.
  • --include-community: disable the author filter entirely. Only on explicit caller request.
  • --repo <owner/repo>: GitHub repository, default detected by gh repo view.
  • --dry-run: discover, verify, and report without posting comments, creating prepare tasks, or archiving inbox entries.
  • --archive-inbox: after GitHub confirms a candidate PR is merged at its current head, archive the originating issue from the responsible user's inbox in Stage D.
  • --cooldown-hours <N>: repeat-gardening cooldown, default 48.
  • --max-rounds <N>: maximum gardening rounds per PR, default 3.

Use a run-owned directory such as $PAPERCLIP_RUN_SCRATCH_DIR/pr-gardening for generated files.

Stage A — Discover Candidates

Run the extract-search path. It scans every result page, normalizes PR URLs, deduplicates PR numbers, records every mentioning issue, checks issue work products to identify the origin, drops PRs that GitHub says are merged or closed, drops PRs whose author is outside the allowlist (community contributions) into droppedCommunityPullRequests, and drops open PRs whose own updatedAt is older than the window into droppedStalePullRequests. Issues that exceed the per-issue extract match cap (typically digest or QA issues that enumerate hundreds of PR URLs) are recorded in source.truncatedIssues and noted in the report instead of aborting the run.

node .agents/skills/pr-gardening/scripts/find-candidates.mjs \
  --days 14 \
  --dry-run \
  --output "$RUN_DIR/candidates.json"

The script calls GET /api/companies/:companyId/search/extract with kind=url, scope=all, and updatedWithin=<N>d, then resolves the author allowlist from gh api user unless --authors or --include-community overrides it. Do not replace it with full issue-list fetching or LLM scanning.

Stage B — Verify Current-Head Readiness

node .agents/skills/pr-gardening/scripts/check-readiness.mjs \
  --input "$RUN_DIR/candidates.json" \
  --output "$RUN_DIR/readiness.json" \
  --dry-run

For every candidate, the script re-fetches the current head SHA and records:

  • open/draft state and mergeability/conflicts;
  • statusCheckRollup check-run and legacy status inventory;
  • a completed Greptile check-run on the exact head, clean only for success or neutral;
  • reviewDecision;
  • commits behind the base branch.

Verdicts are ready, needs_gardening, or report_only for drafts. Always rerun this stage after any wake or claim that a PR was fixed. Never trust issue comments as proof of readiness.

Follow-up Create-PR Task Deduplication

If gardening decides a branch needs a follow-up task to create a single pull request, deduplicate before creating anything.

For each branch, process one branch at a time and do this serially:

  1. Search open Paperclip issues for the exact branch name with statuses backlog, todo, in_progress, in_review, and blocked.
  2. Inspect matching issue titles, descriptions, and recent comments for an equivalent open "create PR from this branch" task for the same branch.
  3. If an equivalent open task exists, reuse it: add a concise comment with the current PR/head/reason context and link it from the gardening issue or blocker list. Do not create another task.
  4. Only if no equivalent open task exists, create exactly one follow-up task for that branch.

Never fan out follow-up task creation in parallel. Do not issue concurrent POST /api/companies/:companyId/issues calls for create-PR or prepare-PR tasks. After P1's issue-create idempotency support is available, every create-PR follow-up task creation must include idempotencyKey: "pr-gardening:create-pr:{branch}" and every prepare-PR task idempotencyKey: "pr-gardening:prepare-pr:{owner/repo}#{number}".

Stage C — Drive Our PRs to Ready with /prepare-paperclip-pr

Skip this stage in --dry-run mode and for ready or report_only entries.

Every needs_gardening PR here was opened by this instance (Stage A guarantees it), so do not just report — actively get it merge-ready by running the /prepare-paperclip-pr skill against it. Process PRs one at a time:

  1. Cooldown and rounds. Locate the originatingIssue from candidates.json (selection priority: issue carrying the exact PR URL as a pull_request work product; then issue whose comment mentions the PR; then most recently active mentioning issue). Fetch its comments and search for the marker:

    <!-- pr-gardening:<owner/repo>#<number> -->
    

    Skip the PR if the latest matching marker is newer than the cooldown. Track rounds from matching markers; after three rounds, stop and report not converging; recommend close or human decision. That is a recommendation for human disposition, not an instruction to close the PR.

  2. Deduplicate. Search open Paperclip issues for the PR number/branch. If an equivalent open prepare-PR task already exists, reuse it with a concise status comment instead of creating another (see the deduplication section above).

  3. Run the prepare skill. Create one focused child task per PR assigned to a coder agent (prefer CodexCoder) instructing it to run /prepare-paperclip-pr for that PR — include the PR URL, branch, current head SHA, and the exact machine-detected reasons[] from readiness.json. If you are the gardener and already have the PR's branch checked out in a worktree, you may run /prepare-paperclip-pr directly instead of delegating. Either way, the prepare work must never merge, approve, or close the PR.

  4. Leave the marker comment. Comment on the originating issue with the marker above, the current head SHA, the copied reasons[], the round counter, and a link to the prepare task. Use POST /api/issues/:issueId/comments with X-Paperclip-Run-Id. Include resume: true when the issue is terminal so the comment creates a live continuation.

Suggested body:

<!-- pr-gardening:paperclipai/paperclip#1234 -->
Gardening: dispatched `/prepare-paperclip-pr` for https://github.com/paperclipai/paperclip/pull/1234 via PAP-XXXX.

Current-head verification at `abc123` found:
- failing check: test
- Greptile missing at current head

Gardening round 1/3. Re-verification is required after changes; do not merge based on this comment.

Stage D — Optional Inbox Tidy-Up

Run this stage only when the caller explicitly supplied --archive-inbox. --dry-run always suppresses inbox mutations, even when --archive-inbox is also present. Without the flag, do not archive anything.

Stage D applies to a previously monitored candidate that transitions to merged. Rerun Stage B immediately before this stage and require GitHub to report state: merged for the same current head SHA recorded by that verification. Fresh Stage A discovery intentionally drops PRs that were already merged or closed.

For each qualifying candidate, archive its originatingIssue from the responsible user's inbox with POST /api/issues/:issueId/inbox-archive and an empty JSON body. Do not pass userId; the Paperclip API resolves the responsible user from the gardener's run context and enforces that user's inbox-agent policy. GitHub access remains read-only.

Do not archive PRs that are merely ready, closed without merging, draft, pending, or merged at an unverified or stale head. Never archive an originating issue while the user is still awaiting review, a decision, approval, or other action on it. If Paperclip denies the mutation because the responsible user is unresolved, inbox management is disabled, the gardener is not allowlisted, or a trust boundary applies, report the denial and continue without retrying around policy.

After a successful archive, leave a standard gardening marker comment on the originating issue that names the archived issue and merged PR:

<!-- pr-gardening:paperclipai/paperclip#1234 -->
Inbox tidy-up: archived [PAP-310](/PAP/issues/PAP-310) from the responsible user's inbox after confirming https://github.com/paperclipai/paperclip/pull/1234 merged at current head `abc123`.

This archive is audited and reversible; later issue activity may resurface the item.

Use POST /api/issues/:issueId/comments and include X-Paperclip-Run-Id on both the archive and comment requests. In --dry-run, report the archive and marker comment that would have been written, but perform neither mutation.

Stage E — Monitor to Termination

Set the gardening run issue's blockedByIssueIds to the non-terminal prepare tasks and originating issues engaged in Stage C so blocker resolution wakes the gardener. A scheduled or manual rerun is the fallback.

On every wake, rerun Stage B first. A PR terminates from active gardening only when one of these is mechanically observed:

  • verified ready at the current head;
  • merged or closed externally;
  • maximum rounds reached, reported as not converging.

Do not leave the gardening issue blocked on terminal issues. Do not poll agents or long-running sessions.

Stage F — Render and Publish the Report

node .agents/skills/pr-gardening/scripts/render-report.mjs \
  --input "$RUN_DIR/readiness.json" \
  --output "$RUN_DIR/gardening-report.md"

The report states the scope (authors + window), and for every open PR gives its author, a one-line purpose summary taken from the PR description, and a readiness confidence bucket:

  • High: current-head checks green, no conflicts, Greptile clean, base fresh, originating issue terminal.
  • Medium: otherwise green but base stale, review not complete, or originating issue active.
  • Low: failing/pending checks, missing Greptile, draft/just-fixed-unverified state, or no identifiable origin.

If a PR's generated purpose line is empty or unhelpful, write a one-sentence description from the PR title and diff summary when publishing the report.

Upload candidates.json, readiness.json, and gardening-report.md to the gardening issue, create/update the gardening-report issue document with the Markdown body, and leave a summary comment linking the artifacts. The report is the deliverable; it is never authorization to merge.

Verification

Run focused script tests:

node --test .agents/skills/pr-gardening/scripts/pr-gardening.test.mjs

For a live dry run, execute Stages A, B, and F with --dry-run, then sanity-check named PRs only if they are still open. Merged or closed examples should appear under droppedClosedPullRequests, not in readiness results, and community-authored PRs must appear only under droppedCommunityPullRequests — a candidate or report entry with an author outside the allowlist is a scope failure. If also exercising --archive-inbox, confirm the report describes the suppressed Stage D action and that no Paperclip archive or marker-comment mutation occurred.

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

add-product-e2e-eval

무료요약 있음AI 평가 90점

Paperclip에서 실제 브라우저부터 서버, 데이터베이스, runner까지 검증하는 E2E 평가를 추가·확장합니다. 테스트 데이터와 판정 조건, 증거를 기존 보고서에 연결합니다.

  • 전체 사용자 작업 흐름의 평가 추가
  • 테스트 데이터와 판정 조건 갱신
  • 평가 보고서에 스크린샷과 산출물 추가
paperclipai/paperclip10.6만2026년 10월 22일 업데이트

add-runner-eval

무료요약 있음AI 평가 90점

Paperclip Runner의 동작 평가에 판정 조건, 실행 대상, 보고서 검증 데이터를 추가하고 증거와 실행 이력을 남겨 검증합니다.

  • Runner 동작 평가를 추가합니다
  • 정상 및 잘못된 증거로 판정을 검증합니다
  • 실행 대상 목록과 지속 평가를 갱신합니다
paperclipai/paperclip10.6만2026년 10월 22일 업데이트

agent-browser

무료요약 있음AI 평가 90점

실제 브라우저로 웹페이지와 앱을 조작하며 화면과 동작을 검증합니다. 스크린샷, 간단한 양식 입력, 오류 및 통신 기록으로 문제 재현과 결과 확인을 돕습니다.

  • UI 변경 후 화면을 확인합니다
  • JavaScript로 렌더링된 내용을 읽습니다
  • 화면 문제와 오류를 재현합니다
paperclipai/paperclip10.6만2026년 10월 22일 업데이트

agentmail

무료요약 있음AI 평가 100점

Paperclip에서 할당받은 AgentMail 수신함으로 작업에 연결된 메일을 확인하고, 새 메일 전송과 답장, 전송 결과 확인까지 수행합니다.

  • 담당 작업에 연결된 메일을 확인합니다
  • 할당된 수신함에서 새 메일을 보냅니다
  • 대화의 특정 메시지에 답장합니다
paperclipai/paperclip10.6만2026년 10월 22일 업데이트

check-pr

무료요약 있음AI 평가 80점

GitHub, GitLab, Perforce 변경의 검토 의견, 자동 검사 실패와 설명 누락을 확인하고, 할 일을 정리하며 요청에 따라 수정과 처리된 스레드 해결을 지원합니다.

  • 변경 사항을 제출하기 전에 점검합니다
  • 실패한 검사와 수정할 항목을 확인합니다
  • 사람과 봇의 검토 의견을 정리합니다
paperclipai/paperclip10.6만2026년 10월 22일 업데이트

company-creator

무료요약 있음AI 평가 100점

구상이나 기존 저장소를 바탕으로 AI 에이전트의 역할, 보고 체계, 작업 인계를 정리하고 규격에 맞는 회사 또는 팀 패키지를 만듭니다.

  • 구상에서 에이전트 회사를 만듭니다
  • 저장소를 팀 구성으로 정리합니다
  • 역할 분담과 작업 인계를 설계합니다
paperclipai/paperclip10.6만2026년 10월 22일 업데이트

paperclipai의 스킬 모두 보기

이 스킬의 문제 신고