[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6DSVR9NQ59NM3PME44Z4CP0":3,"skill-same:01M6DSVR9NQ59NM3PME44Z4CP0":105},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":28,"publishedAt":49,"linkOnly":50,"markdownContent":51,"markdownBody":52,"frontMatter":53,"refName":54,"commitSha":55,"skillDirectory":56,"forksCount":57,"repositoryHtmlUrl":58,"repositoryHomepageUrl":59,"ownerHtmlUrl":60,"ownerBlogUrl":61,"ownerDescription":6,"updatedAt":62,"install":63,"resources":76},"01M6DSVR9NQ59NM3PME44Z4CP0","review-loop-reviewer",null,"Run one stateless reviewer round for an OACP inbox-based PR review loop: verify the request snapshot, review one exact PR head, enforce the findings quality gate, and send review_feedback or review_lgtm. Use for OACP review_request traffic or review_addressed with explicit human approval or an accepted grant listing that type; do not use for an ordinary local code review or GitHub comment triage.","kiloloop\u002Foacp-skills","kiloloop","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F264514437?v=4","01M6DSS1K2JKZD3YRMXRH54968","Kiloloop","01M6DSS1SMM810F7327W2YX7ZZ",0,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fkiloloop\u002Foacp-skills\u002Fblob\u002Fmain\u002Fskills\u002Freview-loop-reviewer\u002Fcodex\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000007","代码审查","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48],"review","review loop reviewer","reviewer","review loop","loop","run","code","inbox","quality gate","pr","feedback","pr review","snapshot","do","enforce","human","local","lgtm","oacp","code review","2026-11-10 10:12:30",false,"---\nname: review-loop-reviewer\ndescription: \"Run one stateless reviewer round for an OACP inbox-based PR review loop: verify the request snapshot, review one exact PR head, enforce the findings quality gate, and send review_feedback or review_lgtm. Use for OACP review_request traffic or review_addressed with explicit human approval or an accepted grant listing that type; do not use for an ordinary local code review or GitHub comment triage.\"\n---\n\n# OACP review loop: reviewer\n\nReview exactly one PR head and emit exactly one terminal protocol response.\n\n## Inputs\n\nRequire the PR number and author. Accept `project`, `task_id`, and `dry_run`\nwhen supplied. Resolve omitted project context from session init and repo\nmarkers; use the canonical `$OACP_HOME\u002Fprojects\u002F\u003Cproject>\u002F` runtime.\n\nBundled helpers need Python 3.10+, PyYAML, Git, and the GitHub CLI. Protocol\nintake and cancellation require OACP CLI 0.5.3+ and the installed `check-inbox`\nskill. Capability-check optional stack operations before relying on them.\n\n## Load before acting\n\n1. Read the nearest `AGENTS.md`, including scoped code-review rules and GitHub\n   identity requirements.\n2. Read the active runtime's `docs\u002Fprotocol\u002Fdispatch_states.yaml`,\n   `docs\u002Fprotocol\u002Freview_loop.md`, and findings packet template. They override\n   this skill on conflict.\n3. Use `check-inbox` for every inbound candidate. Its verified snapshot reader\n   and archival sequence are the only boundary for message fields, hashes, and\n   terminal inbox consumption.\n4. Run `check-inbox`'s mechanical OACP version gate and require `>=0.5.3`.\n5. Read [findings-contract.md](references\u002Ffindings-contract.md) before creating\n   a verdict or terminal message.\n\nSet `REVIEW_LOOP_REVIEWER_SKILL` to the absolute directory containing this\n`SKILL.md`; use that path when invoking bundled resources from a project.\n\n## Non-negotiable invariants\n\n- Stay stateless: send one `review_feedback` or `review_lgtm`, then exit. Never\n  wait in-session for `review_addressed`.\n- Review a full commit SHA, not a moving branch. Capture the head before\n  analysis and compare it again before and after terminal side effects.\n- Require one schema-valid incoming conversation ID and carry it unchanged on\n  the terminal reply; direct parent linkage is additional, not a substitute.\n- Keep the base repository (PR\u002Fcomments\u002Freviews) distinct from the head\n  repository (fork commit materialization).\n- Default to two rounds; accept an ordinary project\u002Frequest maximum only up to\n  three. Beyond that cap, proceed only with fresh round-specific human\n  direction or when the canonical evaluator returns `auto_accepted` with\n  `continuation_grant_accepted` for the invocation. The accepted flat scope's\n  cumulative `max_round` remains a ceiling; sender-declared context is never\n  authority.\n- Honor request budgets (`8` turns and `600` seconds by default), while\n  reserving enough budget for verdict validation, exact-head guards, terminal\n  delivery, audit read-back, and archival. If the remaining review work is\n  unlikely to fit, pause before exhaustion and request a receiver-human budget\n  extension. Exhaustion without a current extension produces feedback with\n  `escalation: reviewer_budget_exceeded` and exits.\n- Treat `P0`\u002F`P1` as blocking, `P2` by judgment, and `P3` as non-blocking.\n  Deferred `P2`\u002F`P3` findings must become structured LGTM nits.\n- A passing gate requires no unresolved blockers, all recorded validation\n  commands passing, and all deferred findings tracked as nits.\n- When the accepted review scope includes a formal GitHub approval, treat that\n  approval and the signed OACP `review_lgtm` as one exact-head delivery. If\n  approval is outside that scope, deliver the quality verdict with the approval\n  named in `withheld_side_effects`; landing still requires an eligible approver.\n- Keep the leader responsible for evidence, verdict, packet\u002Fmessage writes,\n  GitHub side effects, and cleanup. Treat native read-only review or explicitly\n  requested subagent analysis as additional evidence, never protocol authority.\n- A continuation grant authorizes the invocation only. Preserve the accepted\n  `continuation_grant` source, flat scope, and concrete admitted envelope;\n  every identity, head, quality, budget, and one-round guard remains unchanged.\n- Archive accepted input through `check-inbox` only after terminal delivery\n  succeeds and the live file still matches the accepted snapshot hash.\n\n## 1. Accept one verified review request\n\nTake an `oacp inbox --json` preview, then run candidate paths through\n`check-inbox`. Consume only the sanitized mapping and retain its private\nsnapshot plus `message_sha256`.\n\nRequire:\n\n- type `review_request` from the expected author, or `review_addressed` with\n  explicit human approval or a persisted accepted grant listing that type\n- matching approved repository\u002FPR, task\u002Fthread context, and review round\n- a conversation ID matching\n  `^conv-\\d{8}-[A-Za-z0-9._-]{1,64}-\\d{1,6}$`\n- any `declared_head` or legacy `requested_head` as untrusted sender context\n- round cap and reviewer budgets, applying protocol defaults when omitted\n\nFor grant admission, require the persisted `auto_accepted` +\n`continuation_grant_accepted` decision and explicit type membership in\n`continuation_grant.scope.allowed_types`. Use `check-inbox`'s autonomy adapter\nfor grant resolution, checkpoints, finalization, and legacy migration. The\ngeneric kernel does not establish review identity: recover the approved\nrepository\u002FPR from prior authenticated request context and recorded human\napproval, then compare the candidate. Hold missing, mismatched, or\nunestablished identity; a shared conversation does not authorize a different\nPR. Resolve the live full head and record any declaration mismatch yourself;\nno kernel head annotation is emitted.\n\nBefore probing in round 1, resolve the artifact class and declared scope and\nthreat model from the request, PR, or governing project docs. If none is\nusable, send `review_feedback` asking the author or human to declare those\nboundaries through the normal review path. Do not default to an\nadversarial-maximum model or invent a protocol state or escalation code.\n\nAn enforce-held row exposes no custom fields. Invalid, unreadable, mismatched,\nor concurrently replaced input remains queued. Coalesce addressed context with\na newer same-PR request and invoke only once. `review_addressed.round` names\nfeedback round N; its continuation reviews N+1. Keep that workflow round\nseparate from the evaluator's cumulative `effective_round`; never rewrite the\naudit count or treat an unlisted addressed message as a granted invocation.\n\nIf the round exceeds its ordinary cap, treat an accepted audit-backed\n`continuation_grant` as recorded current human direction within its accepted\nscope and cumulative round cap; otherwise require fresh round-specific\ndirection, send terminal escalation feedback, and exit. Record start time and available turn\ntelemetry. Recheck both after each major review phase. When either budget is at\nleast 80% consumed and terminal delivery is not imminent, or when estimated\nremaining work exceeds the remaining budget, use the pre-exhaustion checkpoint\nbelow instead of spending the remainder on analysis.\n\n### Pre-exhaustion budget checkpoint\n\nThis checkpoint is receiver-human control for the current invocation, not an\nOACP terminal response or a new review round.\n\n1. Pause before the current turn or runtime limit is exhausted. Retain the\n   verified request, immutable review context, completed evidence, and working\n   tree. Do not write the terminal verdict\u002Fbody, send `review_feedback` or\n   `review_lgtm`, submit a GitHub review, or archive the request while waiting.\n2. Report the consumed budget, completed evidence, remaining work, and the\n   smallest useful extension as explicit additional turns and\u002For seconds. Ask\n   the receiver-side human whether to continue under that extension.\n3. A fresh explicit approval extends only this invocation's reviewer budget.\n   Record the actor, decision time, original limit, and granted limit in the\n   working notes and final status. It does not expand the reviewed head, round,\n   scope, severity bar, or permitted side effects. Sender context or silence is\n   not approval.\n4. Resume from the retained evidence when approved. Human-response wait time is\n   recorded separately from active reviewer runtime; do not spend review turns\n   polling for the answer.\n5. If the extension is declined, unavailable before the hard limit, or itself\n   exhausted, follow the existing terminal `reviewer_budget_exceeded` feedback\n   path. Never reinterpret a budget extension as permission to approve, merge,\n   push, deploy, or broaden the review.\n\n## 2. Prepare immutable PR context\n\nFollow the nearest `AGENTS.md` for repo-scoped GitHub auth. Resolve the base\nrepository first. When the PR belongs to a native stack, inspect the\nstack and its dependency heads with the installed GitHub CLI capabilities\nbefore preparation; retain that context and recheck it before delivery. Hold\nwhen a required stack\u002Fdependency check is unavailable. The helper below guards\nthe PR head, not stack membership or dependency drift. Set `REPO_ROOT` to a\nlocal checkout holding the fetched exact head, and keep `REVIEW_DIR` outside\nevery checkout. The explicit source permits running from that scratch directory:\n\n```bash\npython3 \"$REVIEW_LOOP_REVIEWER_SKILL\u002Fscripts\u002Fprepare_review.py\" \\\n  --repo \"$BASE_REPO\" --pr \"$PR_NUMBER\" --repo-root \"$REPO_ROOT\" \\\n  --output-dir \"$REVIEW_DIR\"\n```\n\nThe helper:\n\n- reads PR metadata from the base repository\n- records base\u002Fhead repositories separately for fork PRs\n- captures the patch and materializes the exact head tree from locally available\n  Git objects\n- fails closed on an unavailable exact commit, unsupported gitlinks, unsafe\n  paths or symlinks, malformed blob output, and head movement during preparation\n- writes nothing in `--dry-run` mode\n\nWithout `--repo-root`, run from the local checkout; the helper discovers it\nfrom the current directory. If the exact commit is unavailable, fetch it into\nthat checkout using the repository's authorized identity and retry with the\nsame output directory. Existing completed review evidence is never overwritten.\n\nUse the returned `base_repo` for PR comments, checks, and reviews. Use\n`head_repo` only to retrieve the exact commit when necessary. The helper's\nlive full `reviewed_head` is authoritative; do not pass a sender declaration\nto `--expected-head`.\n\nCompare each supplied `declared_head`\u002F`requested_head` to `reviewed_head` using\nexact full-string equality. Record a missing or mismatched declaration and the\nresolved live value in the findings evidence and terminal reply, then review\nthe live head. A shared prefix or truncated declaration is a mismatch. The live\n`reviewed_head` drives materialization, packet identity, drift guards, and the\nverdict. Only a live head move during the round aborts for a fresh round.\n\nGather PR title\u002Fbody, all GitHub review\u002Fcomment surfaces, prior findings packet\nfor re-review, and relevant project facts. Do not treat author claims or prior\ncomments as proof that code is correct.\n\n## 3. Analyze and validate the exact tree\n\nReview the materialized tree and patch against the PR intent, nearest\n`AGENTS.md` review rules, protocol compatibility surfaces, security boundaries,\ntests, and failure behavior.\n\n- Gate finding severity against the resolved artifact class, scope, and threat\n  model. Artifacts implementing transactions, authorization, signing\u002Fintake,\n  durable evidence, concurrency, or multi-record state warrant\n  invariant-maximal closure; diagnostics, docs, and convenience surfaces do\n  not. Hardening beyond the declared model is a non-blocking `P2`\u002F`P3` nit,\n  never a `P0`\u002F`P1` blocker, unless an explicit project or protocol requirement\n  brings it into scope.\n- Run source-only checks from the prepared `tree_dir`. It is a tree without\n  Git metadata, so keep its parent outside every checkout; otherwise Git-aware\n  tooling can silently discover an unrelated ancestor checkout.\n- When a required check depends on Git metadata, use a separate clean detached\n  worktree at exactly the full `reviewed_head`. Verify its `HEAD` before and\n  after the checks. If that exact metadata-preserving checkout cannot be\n  established, record the check as not passed instead of substituting another\n  commit or a metadata-free tree.\n- Round 1: inspect the full change and run proportional project-native checks.\n- Re-review: inspect touched files first, then unresolved prior findings, then\n  validation regressions and newly introduced issues.\n- On every re-review, compare the blocking count with the preceding rounds and\n  the cumulative review-fix delta with the original artifact section. A count\n  flat across two consecutive rounds, or fix growth that rivals the original\n  section, is a scope-calibration checkpoint: stop adjacent-finding expansion\n  and send `review_feedback` raising \"is this the right depth?\" through the\n  normal human path instead. Do not invent an escalation code.\n- On re-review, honor the sufficient closure bar stated in the prior finding.\n  When the author satisfies its expected behavior or one of the recommendation's\n  offered alternatives, close that finding instead of retroactively making an\n  unstated broader improvement blocking. Track an independently material new\n  defect under its own evidence and severity, and preserve intentionally\n  deferred remainder as a structured nit so later rounds do not mistake it for\n  an omission.\n- For a systemic blocker involving identity, authorization, durable evidence,\n  concurrency, or a multi-record transaction, build the closure matrix in\n  `findings-contract.md` before calling it fixed. Re-run the original repros\n  plus adjacent malformed-input, failure, rollback, and concurrent-writer rows\n  that apply to the changed design; a green narrow repro does not close the\n  parent invariant.\n- Keep one stable parent finding across rounds. Name newly discovered cases as\n  explicit subcases (for example `F-006a`) or matrix rows, and close the parent\n  only when every known blocking row passes. If two addressed rounds reopen\n  the same parent invariant, require a bounded author\u002Fcoordinator architecture\n  checkpoint before another narrow patch round. The checkpoint must state what\n  is in scope, what is out of scope, and why; later rounds honor those\n  boundaries.\n- Honor a human-ruled descope or rework as a new artifact at round 1. Treat\n  checks withdrawn by the ruling as resolved by removal, not regressions, and\n  do not re-run probes that the new boundary explicitly excludes.\n- Report only actionable issues introduced or exposed by the change. Include\n  file\u002Fline, evidence or reproduction, expected behavior, and a concrete fix.\n- Record every validation command and outcome. `warn`, skipped, missing, or\n  failing evidence does not satisfy a passing quality gate.\n\nDefault to leader-only analysis. If the user or applicable instructions ask\nfor delegation and independent lanes improve confidence, pass the materialized\ntree or bounded artifacts rather than injecting a giant diff prompt. Reconcile\nall returned evidence locally.\n\n## 4. Build the deterministic verdict\n\nCreate a small JSON verdict using `references\u002Ffindings-contract.md`, then run\n`scripts\u002Fvalidate_verdict.py` to validate severity semantics, infer pass\u002Ffail,\nwrite the findings packet, and write the candidate terminal message body. A\npassing candidate is not deliverable until any GitHub approval accepted in scope\nhas also succeeded at the same head.\n\nThe skill's validator enforces the findings gate: only `fixed` and `wont_fix`\nresolve findings, and unresolved P0 or blocking findings prevent a pass. It also\nrequires passing validation evidence and structured nits for deferred findings.\n\nBefore classifying the budget as exhausted, apply the pre-exhaustion checkpoint\nwhen a receiver-side human is reachable. If its extension is approved, continue\nunder the recorded limit. If runtime\u002Fturn budget actually expires without a\ncurrent extension, write a feedback verdict with `reviewer_budget_exceeded`. If\na blocking verdict reaches the configured last round, add\n`max_rounds_exceeded`. Never convert these outcomes to LGTM because the diff\nappears small.\n\n## 5. Guard the head and deliver one response\n\nFetch the live base-repo `headRefOid` immediately before sending. Require it to\nequal the packet's full `reviewed_head`.\n\n- Pass: when formal GitHub approval is absent or false in the accepted scope,\n  send `review_lgtm` with `quality_gate_result: pass`, `merge_ready: true`, full\n  `validated_head`, all structured nits, and `withheld_side_effects`. If repository\n  policy still needs an approval, name `submits_github_review` in that list and\n  explain that an eligible, separately authorized approver must complete the\n  landing gate. This includes an accepted approval-withheld reason. When formal\n  approval is accepted in scope, follow the composite delivery sequence below.\n- Fail\u002Fescalate: send `review_feedback` with packet path, round, blocking count,\n  full validated head, and escalation when applicable.\n\nUse `--body-file`, `--related-pr`, the accepted explicit `--conversation-id`,\nand `--in-reply-to` to the accepted request.\nKeep GitHub comments status-only; detailed evidence belongs in the packet. Use\nthe base repository for comments\u002Freviews.\n\nBefore composing the terminal body for a grant-dispatched round, enumerate its\ncandidate GitHub effects and consult the accepted\nflat `continuation_grant.scope` and admitted envelope before each one. Do not\nrun a comment or review submission whose effect is false; name each withheld\nrequested action in the signed reply's `withheld_side_effects` list. A withheld\nGitHub approval outside the accepted scope does not prevent a terminal quality\nverdict. If a baseline packet write or OACP reply is forbidden, pause instead.\nA manually confirmed, non-granted round follows its separately authorized scope.\n\nDo not perform a status comment merely because a formal approval was\nauthorized; the two effects are distinct. For a passing verdict whose accepted\nscope includes `submits_github_review`, deliver approval in this fixed order:\n\n1. Require an eligible active reviewer identity distinct from the PR author.\n2. Reconcile first: reuse an existing review by that identity only when its\n   state is `APPROVED` and its full `commit_id` exactly equals `reviewed_head`.\n3. If no such review exists, after the pre-effect head guard submit the formal\n   GitHub approval against `reviewed_head`.\n4. Read the resulting or reused review back and require the same identity,\n   `state: APPROVED`, and exact full commit ID.\n5. Fetch `headRefOid` again and require the same full SHA.\n6. Only then send the signed OACP `review_lgtm` for that head.\n\nThe accepted scope for `submits_github_review` authorizes this single composite\ndelivery; do not ask for a second confirmation merely to send the paired LGTM.\nFor an approval accepted in scope, a self-review restriction, failed submission,\nor unverified result holds the composite LGTM; do not substitute an informational\ncomment or a withheld-effect LGTM for that failed accepted action.\nRetain the request, report the exact approval-delivery blocker, and stop so an\neligible authorized reviewer can complete the same round. A head move instead\nrequires a fresh review of the new head. The OACP-only pass path above applies\nwhen approval was not accepted, even when a separate landing approval remains\nrequired. Neither `merge_ready: true` nor a withheld-effect LGTM satisfies that\nindependent landing gate.\n\n## Sender replacement or pause\n\nA verified sender pause or replacement request voids the admitted round.\nAcknowledge the pause before any new GitHub action, retain partial evidence,\nand send no terminal verdict for that head. A replacement is admitted on its\nown; it inherits no authority from the cancelled round.\n\nWhen an effect already occurred, record it before cancelling using the\nappropriate admission path. An audit with an admitted `scope_envelope` uses a\nlive canonical checkpoint with the measured round start and file count:\n\n```bash\noacp autonomy finalize \"$AUDIT_PATH\" --checkpoint \\\n  --started-at \"$WORK_STARTED_UTC\" --actual-files-touched \"$ACTUAL_FILES\" \\\n  --realized writes_findings_packet\n```\n\nUse only a canonical realized action supported and covered by that admission;\ndo not claim an effect that did not occur or fabricate a grant to make it pass.\nA checkpoint exit 4 reports a scope breach: surface it to the human and hold\ninstead of continuing the cancellation sequence.\n\nA human-approved admission with a null envelope cannot use this canonical\n`--checkpoint` command. Follow the installed `check-inbox` autonomy adapter's\n\"Human-approved admissions without an envelope\" procedure instead: recover\nexecution bounds from the authenticated snapshot and recorded human approval,\nevaluate actuals and effects in a separate durable execution-checkpoint\nartifact, and require `evaluated: true` with no unresolved breach. Preserve\nthe original null envelope, human outcome and admission fields. Use only an\nactually accepted continuation grant, if one exists. Link this execution\nartifact with `--artifact \"$EXECUTION_CHECKPOINT_REF\"` on cancellation and read\nit back with the terminal audit; canonical finalization alone does not validate\nthe separate execution scope.\n\nAfter the applicable checkpoint succeeds, cancel with clock and count actuals\nonly:\n\n```bash\noacp autonomy finalize \"$AUDIT_PATH\" --final-state cancelled \\\n  --cancelled-by sender --cancelled-at \"$CANCELLED_UTC\" \\\n  --started-at \"$WORK_STARTED_UTC\" --actual-files-touched \"$ACTUAL_FILES\" \\\n  --deliverable-landed \"$LANDED_REFERENCE\"\noacp autonomy finalize \"$AUDIT_PATH\" --validate\n```\n\n`CANCELLED_UTC` is the actual notice\u002Freplacement arrival time. Include\n`--deliverable-landed` only for an existing deliverable, such as the packet\npath; repeat it when needed. A never-started round omits the start, file count,\nand deliverable flags so the finalizer records zero actuals. Never pass\n`--realized` to cancellation: it accepts clock\u002Fcount actuals only and rejects\nthat flag without closing the audit. Archive consumed messages through\n`check-inbox` only after finalization succeeds and validation reports no errors.\nUse `superseded` only for a never-admitted original with\n`--superseded-by-message`, or linked re-evaluation with `--superseded-by`.\n\n## 6. Consume input and exit\n\nImmediately before archival, rerun the verified snapshot reader on the live\npath and require its SHA-256 to match the accepted snapshot. Consume through\n`check-inbox` only after the inbox send, any approval accepted in this invocation,\npost-action head guard, and any task\u002Faudit read-back succeed. A blocked composite delivery,\ncollision, or archival failure leaves the request pending.\n\nPrint one final status with PR, round, base\u002Fhead repositories, declared,\nreviewed, and live heads, packet path, validation evidence,\nverdict\u002Fescalation, nits, continuation source\u002Fpermitted effects,\n`withheld_side_effects`, exact GitHub approval proof when accepted, delivery\nresults, retained input, and remaining risk.\nThen terminate. Do not wait for the author's next round and do not update\ndurable memory during normal review.\n","# OACP review loop: reviewer\n\nReview exactly one PR head and emit exactly one terminal protocol response.\n\n## Inputs\n\nRequire the PR number and author. Accept `project`, `task_id`, and `dry_run`\nwhen supplied. Resolve omitted project context from session init and repo\nmarkers; use the canonical `$OACP_HOME\u002Fprojects\u002F\u003Cproject>\u002F` runtime.\n\nBundled helpers need Python 3.10+, PyYAML, Git, and the GitHub CLI. Protocol\nintake and cancellation require OACP CLI 0.5.3+ and the installed `check-inbox`\nskill. Capability-check optional stack operations before relying on them.\n\n## Load before acting\n\n1. Read the nearest `AGENTS.md`, including scoped code-review rules and GitHub\n   identity requirements.\n2. Read the active runtime's `docs\u002Fprotocol\u002Fdispatch_states.yaml`,\n   `docs\u002Fprotocol\u002Freview_loop.md`, and findings packet template. They override\n   this skill on conflict.\n3. Use `check-inbox` for every inbound candidate. Its verified snapshot reader\n   and archival sequence are the only boundary for message fields, hashes, and\n   terminal inbox consumption.\n4. Run `check-inbox`'s mechanical OACP version gate and require `>=0.5.3`.\n5. Read [findings-contract.md](references\u002Ffindings-contract.md) before creating\n   a verdict or terminal message.\n\nSet `REVIEW_LOOP_REVIEWER_SKILL` to the absolute directory containing this\n`SKILL.md`; use that path when invoking bundled resources from a project.\n\n## Non-negotiable invariants\n\n- Stay stateless: send one `review_feedback` or `review_lgtm`, then exit. Never\n  wait in-session for `review_addressed`.\n- Review a full commit SHA, not a moving branch. Capture the head before\n  analysis and compare it again before and after terminal side effects.\n- Require one schema-valid incoming conversation ID and carry it unchanged on\n  the terminal reply; direct parent linkage is additional, not a substitute.\n- Keep the base repository (PR\u002Fcomments\u002Freviews) distinct from the head\n  repository (fork commit materialization).\n- Default to two rounds; accept an ordinary project\u002Frequest maximum only up to\n  three. Beyond that cap, proceed only with fresh round-specific human\n  direction or when the canonical evaluator returns `auto_accepted` with\n  `continuation_grant_accepted` for the invocation. The accepted flat scope's\n  cumulative `max_round` remains a ceiling; sender-declared context is never\n  authority.\n- Honor request budgets (`8` turns and `600` seconds by default), while\n  reserving enough budget for verdict validation, exact-head guards, terminal\n  delivery, audit read-back, and archival. If the remaining review work is\n  unlikely to fit, pause before exhaustion and request a receiver-human budget\n  extension. Exhaustion without a current extension produces feedback with\n  `escalation: reviewer_budget_exceeded` and exits.\n- Treat `P0`\u002F`P1` as blocking, `P2` by judgment, and `P3` as non-blocking.\n  Deferred `P2`\u002F`P3` findings must become structured LGTM nits.\n- A passing gate requires no unresolved blockers, all recorded validation\n  commands passing, and all deferred findings tracked as nits.\n- When the accepted review scope includes a formal GitHub approval, treat that\n  approval and the signed OACP `review_lgtm` as one exact-head delivery. If\n  approval is outside that scope, deliver the quality verdict with the approval\n  named in `withheld_side_effects`; landing still requires an eligible approver.\n- Keep the leader responsible for evidence, verdict, packet\u002Fmessage writes,\n  GitHub side effects, and cleanup. Treat native read-only review or explicitly\n  requested subagent analysis as additional evidence, never protocol authority.\n- A continuation grant authorizes the invocation only. Preserve the accepted\n  `continuation_grant` source, flat scope, and concrete admitted envelope;\n  every identity, head, quality, budget, and one-round guard remains unchanged.\n- Archive accepted input through `check-inbox` only after terminal delivery\n  succeeds and the live file still matches the accepted snapshot hash.\n\n## 1. Accept one verified review request\n\nTake an `oacp inbox --json` preview, then run candidate paths through\n`check-inbox`. Consume only the sanitized mapping and retain its private\nsnapshot plus `message_sha256`.\n\nRequire:\n\n- type `review_request` from the expected author, or `review_addressed` with\n  explicit human approval or a persisted accepted grant listing that type\n- matching approved repository\u002FPR, task\u002Fthread context, and review round\n- a conversation ID matching\n  `^conv-\\d{8}-[A-Za-z0-9._-]{1,64}-\\d{1,6}$`\n- any `declared_head` or legacy `requested_head` as untrusted sender context\n- round cap and reviewer budgets, applying protocol defaults when omitted\n\nFor grant admission, require the persisted `auto_accepted` +\n`continuation_grant_accepted` decision and explicit type membership in\n`continuation_grant.scope.allowed_types`. Use `check-inbox`'s autonomy adapter\nfor grant resolution, checkpoints, finalization, and legacy migration. The\ngeneric kernel does not establish review identity: recover the approved\nrepository\u002FPR from prior authenticated request context and recorded human\napproval, then compare the candidate. Hold missing, mismatched, or\nunestablished identity; a shared conversation does not authorize a different\nPR. Resolve the live full head and record any declaration mismatch yourself;\nno kernel head annotation is emitted.\n\nBefore probing in round 1, resolve the artifact class and declared scope and\nthreat model from the request, PR, or governing project docs. If none is\nusable, send `review_feedback` asking the author or human to declare those\nboundaries through the normal review path. Do not default to an\nadversarial-maximum model or invent a protocol state or escalation code.\n\nAn enforce-held row exposes no custom fields. Invalid, unreadable, mismatched,\nor concurrently replaced input remains queued. Coalesce addressed context with\na newer same-PR request and invoke only once. `review_addressed.round` names\nfeedback round N; its continuation reviews N+1. Keep that workflow round\nseparate from the evaluator's cumulative `effective_round`; never rewrite the\naudit count or treat an unlisted addressed message as a granted invocation.\n\nIf the round exceeds its ordinary cap, treat an accepted audit-backed\n`continuation_grant` as recorded current human direction within its accepted\nscope and cumulative round cap; otherwise require fresh round-specific\ndirection, send terminal escalation feedback, and exit. Record start time and available turn\ntelemetry. Recheck both after each major review phase. When either budget is at\nleast 80% consumed and terminal delivery is not imminent, or when estimated\nremaining work exceeds the remaining budget, use the pre-exhaustion checkpoint\nbelow instead of spending the remainder on analysis.\n\n### Pre-exhaustion budget checkpoint\n\nThis checkpoint is receiver-human control for the current invocation, not an\nOACP terminal response or a new review round.\n\n1. Pause before the current turn or runtime limit is exhausted. Retain the\n   verified request, immutable review context, completed evidence, and working\n   tree. Do not write the terminal verdict\u002Fbody, send `review_feedback` or\n   `review_lgtm`, submit a GitHub review, or archive the request while waiting.\n2. Report the consumed budget, completed evidence, remaining work, and the\n   smallest useful extension as explicit additional turns and\u002For seconds. Ask\n   the receiver-side human whether to continue under that extension.\n3. A fresh explicit approval extends only this invocation's reviewer budget.\n   Record the actor, decision time, original limit, and granted limit in the\n   working notes and final status. It does not expand the reviewed head, round,\n   scope, severity bar, or permitted side effects. Sender context or silence is\n   not approval.\n4. Resume from the retained evidence when approved. Human-response wait time is\n   recorded separately from active reviewer runtime; do not spend review turns\n   polling for the answer.\n5. If the extension is declined, unavailable before the hard limit, or itself\n   exhausted, follow the existing terminal `reviewer_budget_exceeded` feedback\n   path. Never reinterpret a budget extension as permission to approve, merge,\n   push, deploy, or broaden the review.\n\n## 2. Prepare immutable PR context\n\nFollow the nearest `AGENTS.md` for repo-scoped GitHub auth. Resolve the base\nrepository first. When the PR belongs to a native stack, inspect the\nstack and its dependency heads with the installed GitHub CLI capabilities\nbefore preparation; retain that context and recheck it before delivery. Hold\nwhen a required stack\u002Fdependency check is unavailable. The helper below guards\nthe PR head, not stack membership or dependency drift. Set `REPO_ROOT` to a\nlocal checkout holding the fetched exact head, and keep `REVIEW_DIR` outside\nevery checkout. The explicit source permits running from that scratch directory:\n\n```bash\npython3 \"$REVIEW_LOOP_REVIEWER_SKILL\u002Fscripts\u002Fprepare_review.py\" \\\n  --repo \"$BASE_REPO\" --pr \"$PR_NUMBER\" --repo-root \"$REPO_ROOT\" \\\n  --output-dir \"$REVIEW_DIR\"\n```\n\nThe helper:\n\n- reads PR metadata from the base repository\n- records base\u002Fhead repositories separately for fork PRs\n- captures the patch and materializes the exact head tree from locally available\n  Git objects\n- fails closed on an unavailable exact commit, unsupported gitlinks, unsafe\n  paths or symlinks, malformed blob output, and head movement during preparation\n- writes nothing in `--dry-run` mode\n\nWithout `--repo-root`, run from the local checkout; the helper discovers it\nfrom the current directory. If the exact commit is unavailable, fetch it into\nthat checkout using the repository's authorized identity and retry with the\nsame output directory. Existing completed review evidence is never overwritten.\n\nUse the returned `base_repo` for PR comments, checks, and reviews. Use\n`head_repo` only to retrieve the exact commit when necessary. The helper's\nlive full `reviewed_head` is authoritative; do not pass a sender declaration\nto `--expected-head`.\n\nCompare each supplied `declared_head`\u002F`requested_head` to `reviewed_head` using\nexact full-string equality. Record a missing or mismatched declaration and the\nresolved live value in the findings evidence and terminal reply, then review\nthe live head. A shared prefix or truncated declaration is a mismatch. The live\n`reviewed_head` drives materialization, packet identity, drift guards, and the\nverdict. Only a live head move during the round aborts for a fresh round.\n\nGather PR title\u002Fbody, all GitHub review\u002Fcomment surfaces, prior findings packet\nfor re-review, and relevant project facts. Do not treat author claims or prior\ncomments as proof that code is correct.\n\n## 3. Analyze and validate the exact tree\n\nReview the materialized tree and patch against the PR intent, nearest\n`AGENTS.md` review rules, protocol compatibility surfaces, security boundaries,\ntests, and failure behavior.\n\n- Gate finding severity against the resolved artifact class, scope, and threat\n  model. Artifacts implementing transactions, authorization, signing\u002Fintake,\n  durable evidence, concurrency, or multi-record state warrant\n  invariant-maximal closure; diagnostics, docs, and convenience surfaces do\n  not. Hardening beyond the declared model is a non-blocking `P2`\u002F`P3` nit,\n  never a `P0`\u002F`P1` blocker, unless an explicit project or protocol requirement\n  brings it into scope.\n- Run source-only checks from the prepared `tree_dir`. It is a tree without\n  Git metadata, so keep its parent outside every checkout; otherwise Git-aware\n  tooling can silently discover an unrelated ancestor checkout.\n- When a required check depends on Git metadata, use a separate clean detached\n  worktree at exactly the full `reviewed_head`. Verify its `HEAD` before and\n  after the checks. If that exact metadata-preserving checkout cannot be\n  established, record the check as not passed instead of substituting another\n  commit or a metadata-free tree.\n- Round 1: inspect the full change and run proportional project-native checks.\n- Re-review: inspect touched files first, then unresolved prior findings, then\n  validation regressions and newly introduced issues.\n- On every re-review, compare the blocking count with the preceding rounds and\n  the cumulative review-fix delta with the original artifact section. A count\n  flat across two consecutive rounds, or fix growth that rivals the original\n  section, is a scope-calibration checkpoint: stop adjacent-finding expansion\n  and send `review_feedback` raising \"is this the right depth?\" through the\n  normal human path instead. Do not invent an escalation code.\n- On re-review, honor the sufficient closure bar stated in the prior finding.\n  When the author satisfies its expected behavior or one of the recommendation's\n  offered alternatives, close that finding instead of retroactively making an\n  unstated broader improvement blocking. Track an independently material new\n  defect under its own evidence and severity, and preserve intentionally\n  deferred remainder as a structured nit so later rounds do not mistake it for\n  an omission.\n- For a systemic blocker involving identity, authorization, durable evidence,\n  concurrency, or a multi-record transaction, build the closure matrix in\n  `findings-contract.md` before calling it fixed. Re-run the original repros\n  plus adjacent malformed-input, failure, rollback, and concurrent-writer rows\n  that apply to the changed design; a green narrow repro does not close the\n  parent invariant.\n- Keep one stable parent finding across rounds. Name newly discovered cases as\n  explicit subcases (for example `F-006a`) or matrix rows, and close the parent\n  only when every known blocking row passes. If two addressed rounds reopen\n  the same parent invariant, require a bounded author\u002Fcoordinator architecture\n  checkpoint before another narrow patch round. The checkpoint must state what\n  is in scope, what is out of scope, and why; later rounds honor those\n  boundaries.\n- Honor a human-ruled descope or rework as a new artifact at round 1. Treat\n  checks withdrawn by the ruling as resolved by removal, not regressions, and\n  do not re-run probes that the new boundary explicitly excludes.\n- Report only actionable issues introduced or exposed by the change. Include\n  file\u002Fline, evidence or reproduction, expected behavior, and a concrete fix.\n- Record every validation command and outcome. `warn`, skipped, missing, or\n  failing evidence does not satisfy a passing quality gate.\n\nDefault to leader-only analysis. If the user or applicable instructions ask\nfor delegation and independent lanes improve confidence, pass the materialized\ntree or bounded artifacts rather than injecting a giant diff prompt. Reconcile\nall returned evidence locally.\n\n## 4. Build the deterministic verdict\n\nCreate a small JSON verdict using `references\u002Ffindings-contract.md`, then run\n`scripts\u002Fvalidate_verdict.py` to validate severity semantics, infer pass\u002Ffail,\nwrite the findings packet, and write the candidate terminal message body. A\npassing candidate is not deliverable until any GitHub approval accepted in scope\nhas also succeeded at the same head.\n\nThe skill's validator enforces the findings gate: only `fixed` and `wont_fix`\nresolve findings, and unresolved P0 or blocking findings prevent a pass. It also\nrequires passing validation evidence and structured nits for deferred findings.\n\nBefore classifying the budget as exhausted, apply the pre-exhaustion checkpoint\nwhen a receiver-side human is reachable. If its extension is approved, continue\nunder the recorded limit. If runtime\u002Fturn budget actually expires without a\ncurrent extension, write a feedback verdict with `reviewer_budget_exceeded`. If\na blocking verdict reaches the configured last round, add\n`max_rounds_exceeded`. Never convert these outcomes to LGTM because the diff\nappears small.\n\n## 5. Guard the head and deliver one response\n\nFetch the live base-repo `headRefOid` immediately before sending. Require it to\nequal the packet's full `reviewed_head`.\n\n- Pass: when formal GitHub approval is absent or false in the accepted scope,\n  send `review_lgtm` with `quality_gate_result: pass`, `merge_ready: true`, full\n  `validated_head`, all structured nits, and `withheld_side_effects`. If repository\n  policy still needs an approval, name `submits_github_review` in that list and\n  explain that an eligible, separately authorized approver must complete the\n  landing gate. This includes an accepted approval-withheld reason. When formal\n  approval is accepted in scope, follow the composite delivery sequence below.\n- Fail\u002Fescalate: send `review_feedback` with packet path, round, blocking count,\n  full validated head, and escalation when applicable.\n\nUse `--body-file`, `--related-pr`, the accepted explicit `--conversation-id`,\nand `--in-reply-to` to the accepted request.\nKeep GitHub comments status-only; detailed evidence belongs in the packet. Use\nthe base repository for comments\u002Freviews.\n\nBefore composing the terminal body for a grant-dispatched round, enumerate its\ncandidate GitHub effects and consult the accepted\nflat `continuation_grant.scope` and admitted envelope before each one. Do not\nrun a comment or review submission whose effect is false; name each withheld\nrequested action in the signed reply's `withheld_side_effects` list. A withheld\nGitHub approval outside the accepted scope does not prevent a terminal quality\nverdict. If a baseline packet write or OACP reply is forbidden, pause instead.\nA manually confirmed, non-granted round follows its separately authorized scope.\n\nDo not perform a status comment merely because a formal approval was\nauthorized; the two effects are distinct. For a passing verdict whose accepted\nscope includes `submits_github_review`, deliver approval in this fixed order:\n\n1. Require an eligible active reviewer identity distinct from the PR author.\n2. Reconcile first: reuse an existing review by that identity only when its\n   state is `APPROVED` and its full `commit_id` exactly equals `reviewed_head`.\n3. If no such review exists, after the pre-effect head guard submit the formal\n   GitHub approval against `reviewed_head`.\n4. Read the resulting or reused review back and require the same identity,\n   `state: APPROVED`, and exact full commit ID.\n5. Fetch `headRefOid` again and require the same full SHA.\n6. Only then send the signed OACP `review_lgtm` for that head.\n\nThe accepted scope for `submits_github_review` authorizes this single composite\ndelivery; do not ask for a second confirmation merely to send the paired LGTM.\nFor an approval accepted in scope, a self-review restriction, failed submission,\nor unverified result holds the composite LGTM; do not substitute an informational\ncomment or a withheld-effect LGTM for that failed accepted action.\nRetain the request, report the exact approval-delivery blocker, and stop so an\neligible authorized reviewer can complete the same round. A head move instead\nrequires a fresh review of the new head. The OACP-only pass path above applies\nwhen approval was not accepted, even when a separate landing approval remains\nrequired. Neither `merge_ready: true` nor a withheld-effect LGTM satisfies that\nindependent landing gate.\n\n## Sender replacement or pause\n\nA verified sender pause or replacement request voids the admitted round.\nAcknowledge the pause before any new GitHub action, retain partial evidence,\nand send no terminal verdict for that head. A replacement is admitted on its\nown; it inherits no authority from the cancelled round.\n\nWhen an effect already occurred, record it before cancelling using the\nappropriate admission path. An audit with an admitted `scope_envelope` uses a\nlive canonical checkpoint with the measured round start and file count:\n\n```bash\noacp autonomy finalize \"$AUDIT_PATH\" --checkpoint \\\n  --started-at \"$WORK_STARTED_UTC\" --actual-files-touched \"$ACTUAL_FILES\" \\\n  --realized writes_findings_packet\n```\n\nUse only a canonical realized action supported and covered by that admission;\ndo not claim an effect that did not occur or fabricate a grant to make it pass.\nA checkpoint exit 4 reports a scope breach: surface it to the human and hold\ninstead of continuing the cancellation sequence.\n\nA human-approved admission with a null envelope cannot use this canonical\n`--checkpoint` command. Follow the installed `check-inbox` autonomy adapter's\n\"Human-approved admissions without an envelope\" procedure instead: recover\nexecution bounds from the authenticated snapshot and recorded human approval,\nevaluate actuals and effects in a separate durable execution-checkpoint\nartifact, and require `evaluated: true` with no unresolved breach. Preserve\nthe original null envelope, human outcome and admission fields. Use only an\nactually accepted continuation grant, if one exists. Link this execution\nartifact with `--artifact \"$EXECUTION_CHECKPOINT_REF\"` on cancellation and read\nit back with the terminal audit; canonical finalization alone does not validate\nthe separate execution scope.\n\nAfter the applicable checkpoint succeeds, cancel with clock and count actuals\nonly:\n\n```bash\noacp autonomy finalize \"$AUDIT_PATH\" --final-state cancelled \\\n  --cancelled-by sender --cancelled-at \"$CANCELLED_UTC\" \\\n  --started-at \"$WORK_STARTED_UTC\" --actual-files-touched \"$ACTUAL_FILES\" \\\n  --deliverable-landed \"$LANDED_REFERENCE\"\noacp autonomy finalize \"$AUDIT_PATH\" --validate\n```\n\n`CANCELLED_UTC` is the actual notice\u002Freplacement arrival time. Include\n`--deliverable-landed` only for an existing deliverable, such as the packet\npath; repeat it when needed. A never-started round omits the start, file count,\nand deliverable flags so the finalizer records zero actuals. Never pass\n`--realized` to cancellation: it accepts clock\u002Fcount actuals only and rejects\nthat flag without closing the audit. Archive consumed messages through\n`check-inbox` only after finalization succeeds and validation reports no errors.\nUse `superseded` only for a never-admitted original with\n`--superseded-by-message`, or linked re-evaluation with `--superseded-by`.\n\n## 6. Consume input and exit\n\nImmediately before archival, rerun the verified snapshot reader on the live\npath and require its SHA-256 to match the accepted snapshot. Consume through\n`check-inbox` only after the inbox send, any approval accepted in this invocation,\npost-action head guard, and any task\u002Faudit read-back succeed. A blocked composite delivery,\ncollision, or archival failure leaves the request pending.\n\nPrint one final status with PR, round, base\u002Fhead repositories, declared,\nreviewed, and live heads, packet path, validation evidence,\nverdict\u002Fescalation, nits, continuation source\u002Fpermitted effects,\n`withheld_side_effects`, exact GitHub approval proof when accepted, delivery\nresults, retained input, and remaining risk.\nThen terminate. Do not wait for the author's next round and do not update\ndurable memory during normal review.\n",{"name":5,"description":7},"main","ea78d5cce0208a15b59f6f2c49e729ba71a3c5af","skills\u002Freview-loop-reviewer\u002Fcodex",1,"https:\u002F\u002Fgithub.com\u002Fkiloloop\u002Foacp-skills","https:\u002F\u002Foacp.dev\u002Fskills\u002F","https:\u002F\u002Fgithub.com\u002Fkiloloop","https:\u002F\u002Fkiloloop.com","2026-10-31 14:39:52",{"source":8,"skillName":5,"commands":64,"prompt":74,"zipAvailable":75},[65,68,71],{"tool":66,"command":67},"npx","npx skills add kiloloop\u002Foacp-skills --skill review-loop-reviewer",{"tool":69,"command":70},"bunx","bunx skills add kiloloop\u002Foacp-skills --skill review-loop-reviewer",{"tool":72,"command":73},"pnpm","pnpm dlx skills add kiloloop\u002Foacp-skills --skill review-loop-reviewer","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fkiloloop\u002Foacp-skills\u002Fblob\u002Fmain\u002Fskills\u002Freview-loop-reviewer\u002Fcodex\u002FSKILL.md",true,[77,83,87,93,97,101],{"path":78,"resourceType":79,"resourceTypeDesc":80,"sizeBytes":81,"sourceHtmlUrl":82},"agents\u002Fopenai.yaml","REFERENCE","参考文档",225,"https:\u002F\u002Fgithub.com\u002Fkiloloop\u002Foacp-skills\u002Fblob\u002Fmain\u002Fskills\u002Freview-loop-reviewer\u002Fcodex\u002Fagents\u002Fopenai.yaml",{"path":84,"resourceType":79,"resourceTypeDesc":80,"sizeBytes":85,"sourceHtmlUrl":86},"references\u002Ffindings-contract.md",9358,"https:\u002F\u002Fgithub.com\u002Fkiloloop\u002Foacp-skills\u002Fblob\u002Fmain\u002Fskills\u002Freview-loop-reviewer\u002Fcodex\u002Freferences\u002Ffindings-contract.md",{"path":88,"resourceType":89,"resourceTypeDesc":90,"sizeBytes":91,"sourceHtmlUrl":92},"scripts\u002Fprepare_review.py","SCRIPT","脚本",15409,"https:\u002F\u002Fgithub.com\u002Fkiloloop\u002Foacp-skills\u002Fblob\u002Fmain\u002Fskills\u002Freview-loop-reviewer\u002Fcodex\u002Fscripts\u002Fprepare_review.py",{"path":94,"resourceType":89,"resourceTypeDesc":90,"sizeBytes":95,"sourceHtmlUrl":96},"scripts\u002Fvalidate_verdict.py",11279,"https:\u002F\u002Fgithub.com\u002Fkiloloop\u002Foacp-skills\u002Fblob\u002Fmain\u002Fskills\u002Freview-loop-reviewer\u002Fcodex\u002Fscripts\u002Fvalidate_verdict.py",{"path":98,"resourceType":89,"resourceTypeDesc":90,"sizeBytes":99,"sourceHtmlUrl":100},"tests\u002Ftest_prepare_review.py",14230,"https:\u002F\u002Fgithub.com\u002Fkiloloop\u002Foacp-skills\u002Fblob\u002Fmain\u002Fskills\u002Freview-loop-reviewer\u002Fcodex\u002Ftests\u002Ftest_prepare_review.py",{"path":102,"resourceType":89,"resourceTypeDesc":90,"sizeBytes":103,"sourceHtmlUrl":104},"tests\u002Ftest_validate_verdict.py",10425,"https:\u002F\u002Fgithub.com\u002Fkiloloop\u002Foacp-skills\u002Fblob\u002Fmain\u002Fskills\u002Freview-loop-reviewer\u002Fcodex\u002Ftests\u002Ftest_validate_verdict.py",[106,117,122,148,154,163],{"skillNo":107,"name":108,"nameZh":6,"description":109,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":110,"categories":111,"keywords":112,"publishedAt":49},"01M6DSWR7WDRG7C3D31R4QKW5T","\u003Cskill-name>","\u003Cone-line description>","https:\u002F\u002Fgithub.com\u002Fkiloloop\u002Foacp-skills\u002Fblob\u002Fmain\u002Ftemplate\u002Fcodex\u002FSKILL.md",[],[113,114,115,116],"skill name","name","\u003Cskill name>","line",{"skillNo":118,"name":108,"nameZh":6,"description":109,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":119,"categories":120,"keywords":121,"publishedAt":49},"01M6DSWMRPCHQH4HJJF3MATTXZ","https:\u002F\u002Fgithub.com\u002Fkiloloop\u002Foacp-skills\u002Fblob\u002Fmain\u002Ftemplate\u002Fclaude\u002FSKILL.md",[],[113,114,115,116],{"skillNo":123,"name":124,"nameZh":6,"description":125,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":126,"categories":127,"keywords":128,"publishedAt":49},"01M6DSWH83XKNGJSKX2XWQCRKJ","wrap-up","End-of-session cleanup for Codex — inspect stale artifacts, run debrief, write significant org-memory events, run a delta-first self-improve pass, then publish bounded approved memory and repository changes.","https:\u002F\u002Fgithub.com\u002Fkiloloop\u002Foacp-skills\u002Fblob\u002Fmain\u002Fskills\u002Fwrap-up\u002Fcodex\u002FSKILL.md",[],[129,130,131,34,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147],"wrap up","up","wrap","memory","cleanup","artifacts","repository","publish","first","improve","write","session","stale","session cleanup","delta","self","end","debrief","codex",{"skillNo":149,"name":150,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":151,"categories":152,"keywords":153,"publishedAt":49},"01M6DSWEQBS2CE6F2H8T3VQNZY","claude","https:\u002F\u002Fgithub.com\u002Fkiloloop\u002Foacp-skills\u002Fblob\u002Fmain\u002Fskills\u002Fwrap-up\u002Fclaude\u002FSKILL.md",[],[],{"skillNo":155,"name":124,"nameZh":6,"description":156,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":157,"categories":158,"keywords":159,"publishedAt":49},"01M6DSW99EPXDVAG8GHR785CC5","End-of-session cleanup, debrief, org-memory events, self-improve, commit, and push in one command.","https:\u002F\u002Fgithub.com\u002Fkiloloop\u002Foacp-skills\u002Fblob\u002Fmain\u002Fskills\u002Fwrap-up\u002FSKILL.md",[],[129,130,131,144,132,160,133,161,138,162,140,142,145,146],"commit","push","command",{"skillNo":164,"name":165,"nameZh":6,"description":166,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":167,"categories":168,"keywords":169,"publishedAt":49},"01M6DSW4FRNRKRQ0TRMZAYNMKZ","self-improve","Audit and improve Codex operating guidance: skills, curated project memory, AGENTS.md, and relevant configuration. Use for explicit self-improve requests, routine wrap-up drift checks, stale or conflicting guidance, or an approved cleanup. Route release-wide OACP migrations and context-budget audits to audit-oacp-skills. Do not hand-edit generated Codex memories or installed plugin\u002Fsystem artifacts.","https:\u002F\u002Fgithub.com\u002Fkiloloop\u002Foacp-skills\u002Fblob\u002Fmain\u002Fskills\u002Fself-improve\u002Fcodex\u002FSKILL.md",[],[170,144,138,171,133,172,173,174,175,176,177,178,130,42,179,180,181,182,47,132],"self improve","project","release","audit","Budget","system","edit","context","generated","route","drift","memories","operating"]