with one click
micronaut-repo-operations
// Shared operating rules for running a Micronaut repository cluster to inbox zero across issues, pull requests, release branches, and maintainer handoffs.
// Shared operating rules for running a Micronaut repository cluster to inbox zero across issues, pull requests, release branches, and maintainer handoffs.
| name | micronaut-repo-operations |
| description | Shared operating rules for running a Micronaut repository cluster to inbox zero across issues, pull requests, release branches, and maintainer handoffs. |
Use this skill whenever you are acting on synced GitHub issues or pull requests for this company. Inside imported company instances, this skill plus the live issue execution policy are the runtime source of truth for the workflow.
.company-runtime/ overlays present in the active workspace, and repo-local docs or AGENTS.md files as supplemental operational context, not as the authoritative source of repository membership.executionPolicy for review and approval gates. Inside an active stage, Paperclip is the routing mechanism.executionState.currentParticipant is the only actor allowed to resolve the active stage, and executionState.returnAssignee is who receives the work back when changes are requested.approved, changes_requested, or request_board_approval when a linked human approval must gate the next public action.PATCH /api/issues/{issueId} and status: done plus a decision comment. If another stage remains, Paperclip keeps the issue in in_review, reassigns the next participant, and records the decision automatically.done status, preferably in_progress, plus a precise decision comment. Paperclip records changes_requested, reassigns through returnAssignee, and routes back to the same stage after the executor resubmits.approved only advances the execution policy or the documented follow-through route. Agents do not manually mark the Paperclip item DONE; the GitHub sync plugin does that after merge or after an approved GitHub closure path actually lands.TODO assignment only for non-policy owner changes such as intake-to-planning, planning-to-implementation, or post-PR follow-through. In those cases, assign the next owner, add a comment that names the reason and next action, and invoke their heartbeat only if the work should start immediately.@ mentions as the primary routing mechanism. If a deployment still has mention-wake bugs or the next agent needs extra context, add a structured mention only as a fallback note after the real assignment or stage transition is already correct.POST /api/agents/{agentId}/heartbeat/invoke endpoint, the equivalent runtime wake endpoint exposed by your installed build, or the UI's Review now action after the stage has advanced.paperclipai@2026.428.0 runtime in this package still exposes approvalsNeeded: 1 for execution stages, so do not rely on a single multi-participant stage for unanimous sign-off. If all listed reviewers must approve in order, model that as separate sequential stages.pending, approved, rejected, revision request, and resubmission) and can wake the requester when they are resolved.suggest_tasks when the board/user should accept or reject a proposed task list, ask_user_questions for bounded structured answers, and request_confirmation for explicit proposal or plan confirmation. Keep linked approvals for governance decisions.blocked solely because the failure appears baseline.in_review to in_progress but the live PR is still open, non-draft, CLEAN, all reported checks are passing, and there is no actionable unresolved review state left inside the company workflow, restore in_review, clear the internal assignee, and leave a routing-correction comment instead of keeping an engineer or reviewer on repeated follow-through while the PR only waits on normal maintainer review.AGENTS.md PRs, follow the same merge-readiness rules as other agent PRs: CI must be green, reported checks must pass, and no unresolved review threads may remain. Because CEO heartbeats may be disabled, the daily self-improvement routine must rediscover and follow up those CEO-opened PRs instead of waiting for a PR wakeup.todo is dispatch state and may be assigned or unassigned. in_progress is active work and requires an assignee. blocked is the correct state for waiting on another issue, a human decision, or an external system. in_review means the next move belongs to a reviewer or approver, not the current executor.in_progress. When your deployment exposes checkoutRunId and executionRunId, read them as execution-rights lock versus the currently live execution path.paperclipai@2026.428.0, an assigned todo with no prior issue run is dispatched by recovery as a normal assignment wake and reported as assignmentDispatched; wait for or repair that wake instead of creating duplicate recovery issues. An assigned in_progress should have an active run, queued continuation, liveness recovery state, or recorded next-action hint. Inspect checkout, execution run, liveness, continuation-attempt, watchdog, and continuation-summary context before creating duplicate work. If Paperclip's configured liveness recovery surfaces the issue as stranded or moves it to blocked with a visible comment, treat that as an operational problem to repair or escalate.issue_productivity_review for source work with a no-comment streak, long-active duration, or high-churn loop. Treat the productivity review as queue-health work owned by the manager or CEO: inspect the source issue and run evidence, then make a manager decision to close the review as expected progress, decompose or reroute the source work, block it with a named unblock owner, or stop/cancel the loop. If the open review holds continuation, fix the source route or review decision before forcing resume: true.parentId for structure, work breakdown, checklist display, and rollup context. Create known child issues directly and use blockParentUntilDone when a child should hold the parent. Use blockedByIssueIds for dependency semantics and automatic wakeups when the blocker clears. If a parent is truly waiting on a child, model both the parent link and the blocker relationship explicitly.type: bug: QA intake review -> Micronaut Engineer review stage -> QA verification review -> Security Engineer review -> Code Reviewer review.type: docs: QA intake review -> Technical Writer review stage -> QA verification review -> Security Engineer review -> Code Reviewer review.type: improvement, type: enhancement, type: breaking, type: dependency-upgrade: QA intake review -> Architect review -> Micronaut Engineer or Technical Writer review stage -> QA verification review -> Security Engineer review -> Code Reviewer review.type: question, clarification wait paths, unreproducible bug closures, duplicate closures, and already-implemented closures: QA intake review, with QA publishing the GitHub answer, clarification request, or closure directly and waiting for sync.Before you do any work on a synced issue or PR:
changes_requested to your stage, or the issue is one of your recurring routines..company-runtime/ guidance that changes release-line, CI, docs, or maintainer expectations.These are built into Paperclip itself. Use them even when no plugin-specific tool is involved:
GET /api/agents/me, GET /api/agents/me/inbox-lite, fallback GET /api/companies/{companyId}/issues?assigneeAgentId={yourId}&status=todo,in_progress,in_review,blockedPOST /api/issues/{issueId}/checkout, POST /api/issues/{issueId}/releaseGET /api/issues/{issueId}, GET /api/issues/{issueId}/heartbeat-context, GET /api/issues/{issueId}/comments for assignee, status, execution state, dependency context, liveness and continuation context, and any exposed parentId, blockedByIssueIds, checkoutRunId, or executionRunIdPATCH /api/issues/{issueId} with the run-id header when you need to change issue status, change assignee, update executionPolicy, or append a Paperclip comment in the same callGET /api/issues/{issueId}/documents, GET /api/issues/{issueId}/documents/{key}, PUT /api/issues/{issueId}/documents/{key}, GET /api/issues/{issueId}/documents/{key}/revisionsPOST /api/companies/{companyId}/issues/{issueId}/attachments, GET /api/issues/{issueId}/attachments, GET /api/attachments/{attachmentId}/content; this package imports attachmentMaxBytes: 10485760 (10 MiB), and the process-level attachment cap remains the final ceilingPOST /api/companies/{companyId}/issues; use parentId for structure, blockParentUntilDone for known child work that should hold the parent checklist, and blockedByIssueIds when the new issue is a real blockerPOST /api/issues/{issueId}/interactions with kind: suggest_tasks, kind: ask_user_questions, or kind: request_confirmation; use idempotency keys and a continuation policy when the assignee should resume after the board/user responseGET /api/companies/{companyId}/approvals?status=pending, POST /api/companies/{companyId}/approvals, GET /api/approvals/{approvalId}, GET /api/approvals/{approvalId}/issues, POST /api/approvals/{approvalId}/comments, POST /api/approvals/{approvalId}/resubmitPOST /api/agents/{agentId}/heartbeat/invoke endpoint or the equivalent runtime wake endpoint exposed by the installed build after the stage or assignment is already correctDefault artifact policy for this package:
plan, qa-intake, qa-verification, security-review, or code-reviewGET /api/approvals/{approvalId}/issues instead of relying only on issue.linkedApprovalIds, because some runtimes may leave that issue field empty even when the approval is actually linkedExample keyed-document flow:
GET /api/issues/{issueId}/documents/ceo (or another stable key such as qa-intake, qa-verification, plan, or security-review).PUT /api/issues/{issueId}/documents/ceo so the stage output stays anchored to the same durable key.GET /api/issues/{issueId}/documents/ceo/revisions when you need the audit trail for an earlier version.Plan-confirmation flow:
plan document and read back its latest revision id.POST /api/issues/{issueId}/interactions with kind: request_confirmation, target.type: issue_document, target.key: plan, the latest revisionId, idempotencyKey: confirmation:{issueId}:plan:{revisionId}, and continuationPolicy: wake_assignee_on_accept.Environment, such as the local driver, an SSH-backed remote environment, or a sandbox-backed provider. Environment records, default agent environments, provider credentials, and leases are live deployment settings, not portable package defaults.@paperclipai/plugin-e2b or another environment-driver plugin in the live Paperclip instance instead of adding that provider to this company package.These are provided by alvarosanchez/paperclip-github-plugin via the plugin capability agent.tools.register. Use the exact runtime tool IDs below. Paperclip namespaces plugin tools as <pluginId>:<toolName>, and this plugin's manifest id is paperclip-github-plugin.
GITHUB_TOKEN GitHub access rule:
GITHUB_TOKEN is present in the environment, prefer the gh CLI for GitHub reads and writes, including Micronaut organization-project lookup and live PR association, even when an equivalent GitHub sync plugin tool exists.GITHUB_TOKEN is not available, use the agent tools below for GitHub operations they cover, including organization-project lookup and PR-to-project association.GITHUB_TOKEN, mean the environment variable with that exact name. Do not search the filesystem, plugin config, or other files for a token.gh or another non-plugin GitHub client in a repository mapped to the current company, immediately POST /api/plugins/paperclip-github-plugin/api/company-metrics/events with metric: "pull_request_created" plus either pullRequestUrl or repository and pullRequestNumber. Include companyId only when useful for disambiguation; if present, it must match the calling agent's company.Authorization: Bearer ${PAPERCLIP_API_KEY}. The Paperclip host authenticates the bearer token, scopes the request to the calling agent's company, and rejects missing, expired, invalid, non-agent, or cross-company calls before the plugin worker handles it.paperclip-github-plugin:create_pull_request created the PR; the plugin records pull_request_created automatically. Do not send it for PR edits, comments, review replies, or merges.gh, and GitHub alone cannot attribute those PRs to Paperclip work.PAPERCLIP_API_KEY is already present in authenticated agent runs and is the credential for this route.gh or another GITHUB_TOKEN-backed write, separate the footer from the previous sentence with one blank line, then append this exact GitHub-flavored Markdown footer: --- on its own line, then ###### ✨ This message was AI-generated using <exact model id> on the next line.GITHUB_TOKEN GitHub work.do not use gh boundary in this skill applies when GITHUB_TOKEN is not available; it does not override the GITHUB_TOKEN preference above.Example authenticated KPI attribution call:
payload='{"metric":"pull_request_created","repository":"owner/repo","pullRequestNumber":123}'
curl -fsS -X POST "${PAPERCLIP_API_URL%/}/api/plugins/paperclip-github-plugin/api/company-metrics/events" \
-H "content-type: application/json" \
-H "authorization: Bearer ${PAPERCLIP_API_KEY}" \
-d "${payload}"
paperclip-github-plugin:search_repository_items: repository-scoped open and closed GitHub issue and PR search for deduplication, backlog scans, and prior-art lookup; closed issue results must be judged by why they were closed, including closure disposition, duplicate links, closure comments, and already-implemented evidencepaperclip-github-plugin:get_issue, paperclip-github-plugin:list_issue_comments, paperclip-github-plugin:update_issue, paperclip-github-plugin:add_issue_comment: GitHub issue reads, metadata updates, and maintainer-facing issue commentspaperclip-github-plugin:create_pull_request, paperclip-github-plugin:get_pull_request, paperclip-github-plugin:update_pull_request: PR creation and PR metadata/state managementpaperclip-github-plugin:list_pull_request_files, paperclip-github-plugin:get_pull_request_checks: changed-file inspection and CI/check statuspaperclip-github-plugin:list_pull_request_review_threads, paperclip-github-plugin:reply_to_review_thread, paperclip-github-plugin:resolve_review_thread, paperclip-github-plugin:unresolve_review_thread: review-thread inspection and responsepaperclip-github-plugin:request_pull_request_reviewers: request user or team reviewers on a GitHub PRpaperclip-github-plugin:list_organization_projects: list visible open, public GitHub organization Projects (is:open is:public) so the agent can choose the right Micronaut release board or board setpaperclip-github-plugin:add_pull_request_to_project: associate a GitHub pull request with each selected organization ProjectUse these plugin-tool conventions exactly:
paperclipIssueId whenever the work starts from a synced Paperclip issue so the plugin can infer the linked GitHub issue or PR and repositoryrepository only when the plugin cannot infer it from the mapped Paperclip projectllmModel so the plugin can append the same Markdown footer automaticallypaperclip-github-plugin:search_repository_items for open and closed GitHub issue deduplication and prior-art search; do not replace it with generic Paperclip issue listing, and do not ignore closed issues without reviewing why they were closedEvery stage must end in one of these states:
approved: your stage artifact is complete, the issue is ready for the next configured stage immediately, and no missing governance decision remains for the issue route itself. Intake may still resolve approved when a linked contributor PR stays open while the issue moves toward a separate maintainer-owned PR.changes_requested: your stage artifact names the exact gap, risk, or missing fact that must be addressed before the issue can move forward.request_board_approval: when public GitHub action or a policy exception needs a human decision first, create or update the linked Paperclip approval instead of using a free-form comment as the approval mechanism.When the work needs explicit plan or proposal confirmation but not governance approval, create a Paperclip request_confirmation issue-thread interaction and leave the issue in the appropriate waiting state instead of treating a plain comment as the confirmation mechanism.
Before you stop:
approved, the current stage participant is no longer youchanges_requested, the execution state shows changes_requestedrequest_board_approval, the linked approval exists and is pending or approvedapproved, confirm the current stage participant is no longer you and the issue is in_review or done as expected for the remaining execution-policy stages.DONE just because a stage approved. DONE is reserved only for sync-confirmed GitHub completion: for PR-based delivery work, verify the synced context shows the linked PR as merged; for approved closure paths, verify the synced context shows the linked GitHub issue as closed with the approved disposition or answer path actually applied.TODO, the next owner is assigned, and the next-action comment is clear.Actionable issues and PRs should carry exactly one type: label:
type: breaking for changes that would require a major module version and explicit Architect approvaltype: enhancement for new non-breaking feature work that normally implies a minor module versiontype: improvement for small non-breaking product changes that should fit the current default branch when improvements are allowed theretype: docs for documentation-only changestype: dependency-upgrade for squad-originated version bumps that are not Dependabot work; route it by actual compatibility impact, not by label alonetype: bug for bug fixes that should fit the current default branch when bugfixes are allowed theretype: question for questions QA can answer directly or route into a clarification requestDuplicate, stale, superseded, out-of-scope, and already-implemented issues are immediate-closure dispositions that may be closed without forcing a type: label if the closure path is well documented.
type: bug: QA reproduces first. Reproduced bugs move into the Micronaut Engineer stage sequence. Unreproducible bugs may be closed directly by QA with closed: cannot reproduce, GitHub's native Close as not planned reason instead of Close as completed, and a detailed, evidence-rich closure comment with the exact non-reproducer steps, versions, and observed results.type: improvement, type: enhancement, type: breaking, and type: dependency-upgrade: QA moves the item into the Architect planning stage.type: docs: QA moves the item into the Technical Writer stage.type: question: QA answers directly on GitHub with type: question and closed: question when confident, or posts a request-for-comments message with status: awaiting feedback; issues that remain awaiting feedback for more than 30 days may be closed with closed: question and GitHub's native Close as not planned reason instead of Close as completed.already-implemented (closure disposition, not a GitHub type: label): QA may close the issue directly once it documents the exact version, PR, release, or documentation evidence in a detailed, evidence-rich closure comment and uses GitHub's native Close as not planned reason instead of Close as completed.duplicate (closure disposition, not a GitHub type: label): QA may close the issue directly with closed: duplicate, GitHub's native Close as duplicate reason, a detailed, evidence-rich closure comment that explains why the superseding issue fully covers the report, and a link to the superseding GitHub issue for traceability.linked contributor PR needs replacement (operating situation, not a GitHub type: label): QA documents why the imported PR is not salvageable, leaves that contributor PR open, and still routes the issue through the normal implementation stages toward a separate maintainer-owned PR.type: label instead of relabeling the work as type: docs.[skip ci] for that PR../gradlew publishGuide, or other docs checks. Record the validation or skip rationale in the PR body or routine report.4.0.0-M1 and release candidates such as 4.0.0-RC1, are early-testing releases and do not count as the default branch having already shipped.1.2.x and the latest stable non-pre-release release is 1.1.5, the next release on that branch is 1.2.0, so that default branch has not shipped yet.1.2.x and the latest stable non-pre-release release is 1.2.3, the next release on that branch is 1.2.4, so that default branch is already on a patch line.type: bug, type: improvement, type: enhancement, and docs, CI, or build-only changes. If that unreleased default branch is a new major line such as 5.0.x, it may also accept type: breaking work with the required approvals.type: bug, type: improvement, and docs, CI, or build-only changes. type: enhancement and type: breaking do not target that branch unless a human-approved release-policy exception exists.type: dependency-upgrade follows the actual compatibility impact of the resulting repository release, not the label alone.https://github.com/orgs/micronaut-projects/projects act as release boards for future Micronaut Platform releases.is:open is:public) by asking which Micronaut Platform release can first consume the repository's next release.5.0.0 target with open 5.0.0-M3 and 5.0.0 Release projects should select both.type: breaking requires explicit Architect approval and, when necessary, a linked human approval before work proceeds.approval stages as optional live-instance sugar unless their semantics are explicitly verified in that instance.type: question, status: awaiting feedback, closed: question, closed: cannot reproduce, closed: duplicate, and evidence-backed already-implemented closures without separate board approval when the policy conditions are satisfied and the public comment is detailed, evidence-rich, and not short on details.DONE themselves. The GitHub sync plugin transitions it to DONE after the linked PR merges.This package intentionally keeps internal automation small. It includes one lightweight project, company-operations, with six recurring Paperclip routines:
weekly-product-discovery, assigned to product-managerweekly-security-deep-scan, assigned to security-engineerweekly-user-guide-review, assigned to technical-writerweekly-guide-topic-discovery, assigned to technical-writerdaily-ceo-self-improvement, assigned to ceotraining, assigned to ceoThese routines are company-operating work, not substitutes for the synced GitHub backlog. They exist to keep the maintenance system healthy, product-aware, and guide-aware even when the GitHub queue is quiet.
They import active by default.
When routine instructions say to include active Micronaut-related projects, exclude micronaut-projects/micronaut-project-template. It is a repository template and file sync source, not an actual Micronaut project, so skip it for Product Manager discovery, product development issues, feature requests, user guide review, guide topic creation, standalone guide PRs, and other normal project routines. For guide routines, also exclude micronaut-projects/micronaut-build; it contains internal Gradle plugins for Micronaut committers and is not intended for end-user projects, so skip it for user guide review, guide topic creation, standalone guide PRs, and other normal project documentation routines. Inspect these repositories only when the task is explicitly about template maintenance, shared file synchronization, referenced skills, repository-template infrastructure, or internal build tooling.
When a routine surfaces a new problem:
product-discovery skill; keep the parent routine issue as a coordinator only, search for an existing open or already-created product-discovery child issue or subtask for the same routine issue and project, also search for orphan or top-level product-discovery issues for the same project from recent routine attempts, reuse, update, or reparent the existing issue when possible, record a blocker instead of creating another duplicate if it cannot be safely reparented, and write a child issue description that is self-contained and complete and tells Product Manager to use the product-discovery skillstatus: backlog, no parentId, and assignee QA (qa-engineer) only when the Weekly Product Discovery instructions authorize it and duplicate checks are complete; do not propose or create the same previously proposed feature candidate unless new evidence materially changes the decision, and do not publish issues to GitHubparentId to the routine issue when supported, sets assignee to Technical Writer, and then stops instead of opening or updating PRstype: docs, link any resulting PR to the child issue or subtask through GitHub Sync, leave that child issue or subtask in in_review, and do not close it or mark it DONE just because the PR was createdAGENTS.md, upstream dependency, or other out-of-pipeline PRs, create one Paperclip child issue or subtask per affected project when the project exists in Paperclip before deciding whether a PR is needed; put each subtask in the actual corresponding project, set assignee to CEO, and if a routine may affect more than one project, create multiple subtasks so each project has a clear Paperclip state ownerThis company package is meant to be reimported over time. Treat the package-owned files as immutable defaults inside imported company instances. Local runtime learnings stay additive; reusable defaults for future imports belong in a PR to https://github.com/alvarosanchez/micronaut-agent-company.
Normal Micronaut repository work should not self-edit this package:
COMPANY.mdREADME.md.paperclip.yamlagents/skills/projects/tasks/teams/Instead, read and optionally maintain additive local overlays in .company-runtime/ at the workspace root:
.company-runtime/shared.md.company-runtime/agents/<agent-slug>.md.company-runtime/projects/<project-slug>.mdThese files are optional and additive. If they do not exist, continue with the package defaults. If they grow unwieldy, refactor them with agent-md-refactor.
When a reusable company improvement should become a new package default, route it through the CEO and company-package-evolution so the change lands as a PR to the source repository instead of a local runtime mutation.
This immutability rule applies only to this company package. In managed Micronaut repositories, repo-level AGENTS.md files are product artifacts and may be updated when an explicit task or routine calls for it.
The sync plugin currently exposes this GitHub tool surface for agents, using these exact runtime IDs:
paperclip-github-plugin:search_repository_itemspaperclip-github-plugin:get_issuepaperclip-github-plugin:list_issue_commentspaperclip-github-plugin:update_issuepaperclip-github-plugin:add_issue_commentpaperclip-github-plugin:create_pull_requestpaperclip-github-plugin:get_pull_requestpaperclip-github-plugin:update_pull_requestpaperclip-github-plugin:list_pull_request_filespaperclip-github-plugin:get_pull_request_checkspaperclip-github-plugin:list_pull_request_review_threadspaperclip-github-plugin:reply_to_review_threadpaperclip-github-plugin:resolve_review_threadpaperclip-github-plugin:unresolve_review_threadpaperclip-github-plugin:request_pull_request_reviewerspaperclip-github-plugin:list_organization_projectspaperclip-github-plugin:add_pull_request_to_projectpaperclip-github-plugin:link_github_itemUse them by workflow stage:
paperclip-github-plugin:search_repository_items, paperclip-github-plugin:get_issue, paperclip-github-plugin:list_issue_comments, paperclip-github-plugin:update_issuepaperclip-github-plugin:get_pull_request, paperclip-github-plugin:list_pull_request_files, paperclip-github-plugin:get_pull_request_checks, paperclip-github-plugin:list_pull_request_review_threads, paperclip-github-plugin:list_organization_projectspaperclip-github-plugin:create_pull_request, paperclip-github-plugin:update_pull_request, paperclip-github-plugin:request_pull_request_reviewers, paperclip-github-plugin:add_pull_request_to_projectpaperclip-github-plugin:reply_to_review_thread, paperclip-github-plugin:resolve_review_thread, paperclip-github-plugin:unresolve_review_threadPOST /api/agents/{agentId}/heartbeat/invoke endpoint or the equivalent runtime wake endpoint exposed by the installed build when the live stage or assignment has already advanced correctlyImportant usage rules:
paperclipIssueId whenever you are acting from a synced Paperclip issue so the plugin can infer the linked GitHub item and repository.repository only when the plugin cannot infer it; the repository may be omitted when the current Paperclip project has exactly one mapped repository.paperclip-github-plugin:update_issue for labels, assignees, state, body, title, and milestone changes.paperclip-github-plugin:update_pull_request for PR title, body, base branch, open or close state, and draft vs ready-for-review changes.GITHUB_TOKEN is available, use gh for Micronaut organization-project lookup and live PR association.GITHUB_TOKEN is not available, use paperclip-github-plugin:list_organization_projects during QA intake, or later verification when the upstream facts changed, to identify the best-fit Micronaut organization project set for the eventual PR from the open, public Micronaut organization projects (is:open is:public).GITHUB_TOKEN is not available, use paperclip-github-plugin:add_pull_request_to_project after PR creation, when adopting an already-open surviving PR, or after agent retargeting when the chosen release board changed, so the live PR is linked to every selected organization project chosen during QA intake or any explicitly revised upstream decision. Do not use this repair path to undo a maintainer project change.gh flow or no-GITHUB_TOKEN plugin tooling can apply them.GITHUB_TOKEN-backed runs, if gh or another non-plugin GitHub client created the PR in a repository mapped to the current company, call the metric API route immediately after creation using the bearer-token pattern above so the KPI dashboard can attribute that pull_request_created event to Paperclip work.paperclip-github-plugin:add_issue_comment and paperclip-github-plugin:reply_to_review_thread, send only the human-facing body and set llmModel to your exact runtime model id from .paperclip.yaml. The plugin appends the same Markdown footer automatically.paperclip-github-plugin:link_github_item after creating or discovering an out-of-pipeline PR that should drive a Paperclip issue. Pass kind: "pull_request", paperclipIssueId, and either pullRequestUrl or reference; include repository when you use a number-only reference and the Paperclip issue project is not mapped to that repository.POST /api/plugins/paperclip-github-plugin/api/issue-link with Authorization: Bearer ${PAPERCLIP_API_KEY}, Content-Type: application/json, and a JSON body containing paperclipIssueId plus pullRequestUrl or reference for the PR. Use the same route with kind: "issue" only when linking an existing GitHub issue to a Paperclip issue is the intended outcome.paperclip-github-plugin:search_repository_items. Do not treat generic Paperclip issue search as the deduplication source of truth.gh for GitHub operations when GITHUB_TOKEN is available, including organization-project lookup and PR-to-project association.GITHUB_TOKEN is not available: deduplication search, issue reads and updates, GitHub comments, PR creation and updates, changed-file inspection, CI inspection, review-thread work, and reviewer requests.gh, direct GitHub browser edits, or ad hoc scripts when GITHUB_TOKEN is not available and the sync plugin tools cover the operation.GITHUB_TOKEN-backed runs, use the company metric API route only for PR creation that happened outside paperclip-github-plugin:create_pull_request; never send it for PR edits, comments, review replies, or merges.paperclip-github-plugin:link_github_item or POST /api/plugins/paperclip-github-plugin/api/issue-link to link that PR to the Paperclip child issue or subtask that scopes the work. If the runtime cannot create that durable PR-to-Paperclip issue link, record the tooling blocker in the subtask and routine report instead of presenting the PR as fully tracked.code-reviewer creates the GitHub PR only after QA and Security Engineer stages are approved.code-reviewer must not resolve PR-based delivery work as approved unless, by the end of that run, a non-draft GitHub PR exists in the correct repository and branch, is readable through the synced GitHub context, and carries the correct issue linkage, closing keyword, and type: label. All selected organization projects should be linked when the chosen projects exist and GitHub tooling can apply them, but missing linkage due to no matching project or tooling gaps alone does not block approved.AGENTS.md PRs, upstream dependency PRs, and any other PR created outside that normal delivery pipeline.Fixes #123.type: label.gh when GITHUB_TOKEN is available or paperclip-github-plugin:add_pull_request_to_project otherwise instead of only restating the intended boards in prose.5.0.0-M3 and 5.0.0 Release.code-reviewer applies the project named earlier by QA intake unless an upstream artifact explicitly revised it.micronaut-engineer keeps CI green, addresses Sonar Quality Gate issues, replies to every review thread with a decision explanation, and only then resolves settled threads.DONE.Every non-trivial stage artifact should include:
[HINT] Download the complete skill directory including SKILL.md and all related files