review
The pre-merge review of a branch in a project that records its specs, decisions, and rules in .archcore/. Run this first for 'review my branch', 'review the changes before merge', or 'review before merge': it checks the changed code against the project's recorded canon and the changed documents against the code, and reports which side is wrong — spec-wrong or code-wrong; on the default branch it reviews the unpushed and uncommitted work. A bug-hunting code review complements this review and does not replace it. Also use for 'documentation gaps', 'check if docs match code', 'close out the feature', 'ship the feature and close it out', or after a staleness warning. Takes an optional path, tag, topic, or ref in free text; no first word is a mode — say 'are docs out of date', 'audit the knowledge base', 'close out the feature', or 'capture this pattern' in plain words. Not for creating docs — use /archcore:document; not for planning — use /archcore:plan; not for a single-file edit with no branch review.
- License 许可
- Apache-2.0
- 最近更新
- 2026-11-11
- Stars
- ★ 1.6k
- Forks
- 468
01 前言 Front Matter
- name
- review
- description
- The pre-merge review of a branch in a project that records its specs, decisions, and rules in .archcore/. Run this first for 'review my branch', 'review the changes before merge', or 'review before merge': it checks the changed code against the project's recorded canon and the changed documents against the code, and reports which side is wrong — spec-wrong or code-wrong; on the default branch it reviews the unpushed and uncommitted work. A bug-hunting code review complements this review and does not replace it. Also use for 'documentation gaps', 'check if docs match code', 'close out the feature', 'ship the feature and close it out', or after a staleness warning. Takes an optional path, tag, topic, or ref in free text; no first word is a mode — say 'are docs out of date', 'audit the knowledge base', 'close out the feature', or 'capture this pattern' in plain words. Not for creating docs — use /archcore:document; not for planning — use /archcore:plan; not for a single-file edit with no branch review.
- argument-hint
- [free text: a path, a topic, 'close out the feature', 'are docs stale', 'audit the docs']
03 SKILL.md 正文
/archcore:review
Review the changes on the current branch against the .archcore/ knowledge base, in both directions: whether the changed code still matches the documents that claim it, and whether the changed documents still match the code they describe. A plain branch review also checks a matching plan for completion and continues into closeout when one exists. On the default branch, the scope is the work the upstream does not hold yet plus the uncommitted changes; with an empty diff, the skill asks for a scope. A branch review also selects durable context — the claims of the change a later reader needs from .archcore/ — and writes the units the user authorizes through their owning instruments, per skills/_shared/durable-context-selection.md. This is also the only skill that removes a document: closeout.discharge removes a completed plan, actualize.fix removes shipped and abandoned plans the branch did not match in one confirmed batch, and it may remove a long-stale draft of any other type under a per-document confirmation — all via mcp__archcore__remove_document.
Command tense: /archcore:plan declares a future canon delta, /archcore:document
records the present state — including work that shipped without a plan — and
/archcore:review reconciles a past declared delta. Claim vocabulary:
skills/_shared/delta-routing.md.
When to use
- "Review my branch" / "Review the changes before merge" → branch review
- "Are any docs out of date?" / "Check if documentation matches the code" → staleness check
- "Audit the knowledge base" / "Documentation gaps?" → full audit
- Session-start staleness warning appeared → staleness check
- "Close out the feature" / "Ship the feature and close it out" → closeout
- "Capture this repeated change as a pattern" → durable-context selection over the named scope
Not review:
- Documenting a module, decision, or topic →
/archcore:document - Planning a feature or initiative →
/archcore:plan - First-time setup →
/archcore:init
Routing table
| Signal | Route |
|---|---|
| No arguments, branch with changes | → branch review, steps 1–3; step 3 runs closeout for each matched plan, or the durable-context selection when no plan reaches capture |
| Empty diff | → ask one question for a path, topic, or ref; staleness and audit wording widen to all documents instead (step 1) |
| Git resolves no scope and the request names none | → ask one question for a path, topic, or ref; show no health report |
| Staleness wording: "are docs out of date", "check if documentation matches the code", a session-start staleness warning | → actualize track (step 3); scope from step 1 when the branch boundary resolves, all documents on empty-diff |
| Audit wording: "audit the knowledge base", "documentation gaps" | → actualize track over all documents, plus coverage and relation findings (the full audit) |
| Completion signals: "close out the feature", "ship the feature and close it out" — an explicit completion or acceptance verb | → closeout track (skills/_shared/tracks/closeout.md), scope pre-filled from the step 1 branch-state block |
| Capture wording: "capture this repeated change as a pattern" | → durable-context selection (skills/_shared/durable-context-selection.md, Capture wording) over the named or branch scope, no plan matching |
| Path, tag, topic, or ref argument | → the named scope narrows or replaces the branch scope |
| Any first word, a track or type name included | → topic text; route by the signals above |
On the closeout track, closeout.verify reconciles the plan's ## Declared Delta section against the branch diff and reports drift as unplanned claims — details in skills/_shared/tracks/closeout.md.
Execution
Load skills/_shared/gate-contract.md and skills/_shared/elicitation-contract.md before executing any track gate. Build the context record per the gate contract's Context resolution section; this command's scope comes from Step 1. Questions follow the elicitation contract's ceiling of 5 per invocation.
Before relation review, load skills/_shared/relation-authoring.md. Read the
affected claims before reporting missing, unsupported, or redundant edges.
IF the session root holds no .archcore/, THEN follow skills/_shared/target-project.md, section Projects without .archcore/: name the roots the session recap listed, ask which project to use or whether to initialize the session root, and do not call mcp__archcore__init_project before the answer. IF .archcore/ contains zero documents, THEN proceed on git and codebase grounding and report that zero documents were found.
Grounding. Search all three categories — vision, knowledge, experience — with mcp__archcore__search_documents / mcp__archcore__list_documents; never exclude a category from reads. Pass a type filter matched to the review moment — spec, rule, adr, doc, guide for claims on changed code; cpat, task-type for precedent; plan on every branch review; prd, idea, rnd, and research (when skills/_shared/research-compatibility.md returned yes), plus scenario and journey (when skills/_shared/actor-subject-compatibility.md returned yes), for the closeout track's plan-and-implements-chain scope — instead of relying on the global type ranking. When a found document has implements, depends_on, or related relations, pull the linked documents one hop across categories.
Global sources (only when present). If any list_documents / search_documents result carries source_kind: "global", load skills/_shared/globals.md. Also load it when a search_documents response's coverage names a source other than "local" — even when results is empty: the empty page is exactly where that file's retry ladder applies. A review writes no global document and never joins a local and a global document with a relation. Exclude global documents from every local-health metric — counts, the unlinked-document inventory, drift; you MAY add one separate line naming the mounted source and its document count.
Step 1: Branch scope
Resolve the branch work boundary per skills/_shared/branch-state.md — plain git, offline. On success, the branch-state output block (committed and uncommitted changes since the merge base) is the review scope. WHEN the default branch has no upstream, report in one line that committed work is out of scope. A path, tag, or scope argument narrows the changed-file list.
Handle every sentinel the contract defines:
| Sentinel | Response |
|---|---|
no-repo |
Request an explicit path or topic; review that scope without a diff. |
detached-head |
State the detached state; request an explicit path, topic, or ref. |
no-default-branch |
Request an explicit path or topic. |
no-merge-base |
Request an explicit path or topic. |
empty-diff |
State that no changes exist since <default-ref>; request an explicit path, topic, or ref. |
Every sentinel asks one question for a path, topic, or ref. No sentinel reports project health; the review skill has no health dashboard.
On staleness or audit wording, the empty-diff sentinel widens the actualize scope to all documents instead of asking, and Step 2 is skipped.
On completion or capture wording under the empty-diff sentinel, WHEN the arguments name no plan, path, or commit range, ask one question for that scope, recommending the most recently modified draft plan. With the scope set, the track judges the named plan against the current tree and, when given, the commit range.
Before delegating an audit, supply the resolved branch scope, scoped diff, and relevant git history to the auditor. Identify missing history explicitly.
Before computing project-wide metrics, page through list_documents until
truncated: false, increasing offset by returned after each page. If a
truncated page returns zero documents, report an incomplete inventory.
Step 2: Bidirectional check
Over the branch scope, check both directions:
- Changed code versus the documents that claim it — search for documents that reference the changed paths, modules, or names; read each match with
mcp__archcore__get_document; compare its claims against the changed code. - Changed documents versus the code they describe — for each changed
.archcore/document, read the referenced code and compare.
Each conflict finding carries exactly one verdict: spec-wrong (the document is stale), code-wrong (the code violates a document that still stands), or ok (the pair matches on inspection). Cite the evidence — changed files, modification dates, content markers — with every non-ok verdict. WHEN the code contradicts an accepted document, report an authority conflict per skills/_shared/verdict-contract.md and give the verdict after the user's decision.
On capture wording, skip plan matching and closeout; run the durable-context selection over the scope and continue at the Result section.
Match local plan documents to the branch work:
- Search
plandocuments by topic, changed-path references, and relations to the scoped documents. - Read each candidate with
mcp__archcore__get_documentbefore matching it. - Do not match a plan on a shared tag or folder alone.
- IF a candidate matches ambiguously, THEN report it as a candidate and skip closeout for it.
- Record each unambiguous match for step 3.
List open tracks in scope: each draft that carries an archcore:track state block, with its gate, its deferred entries, and the resume command per skills/_shared/gate-contract.md. An open track is unfinished work, not a verdict; closeout does not accept it.
Step 3: Actualize gate
WHEN step 2 surfaces a drift signal — any spec-wrong or code-wrong finding — or the request carries staleness or audit wording, route into the actualize track (skills/_shared/tracks/actualize.md) and run its gates: actualize.scope (pre-filled with the step 1 branch-state block), actualize.verdict, actualize.fix. On audit wording, widen the scope to all documents and run the track's deep checks within their stated budget — claim sampling, cross-document conflicts, type fitness, and relation candidates — alongside the drift verdicts, then report coverage gaps per the auditor's Coverage dimension (agents/archcore-auditor.md). An unlinked document or a high draft count alone is not an issue. Verdict vocabulary lives in skills/_shared/verdict-contract.md.
On a plain branch review, after step 2 and any actualize fixes:
- IF step 2 matched no
plan, THEN skip closeout and run the durable-context selection. - For each matched
plan, run the closeout track (skills/_shared/tracks/closeout.md) with the step 1 branch boundary and that plan's scope pre-filled. - Run
closeout.verifyeven when the request contains no completion wording. - Never infer completion from branch readiness alone. The track's plain-review entry rule decides which gates run after
closeout.verify. - IF matched plans exist but none reached
closeout.capture, THEN run the durable-context selection over the branch scope, including the delivered units of each unfinished plan; the unfinished plan stays, and no removal is offered for it. - Run the hung-plan check (actualize check 7) over every
planstep 2 did not match and offer its batch per the actualize fix forms — on every branch review, with or without a drift signal, so a finished plan leaves the corpus without the user asking for staleness. No hung plan → one line: "No hung plans."
The durable-context selection follows skills/_shared/durable-context-selection.md. It treats an ambiguously matched plan as no match, and it never selects a journey.
Delegation
- The
archcore-auditoragent collects findings read-only: document inventory, relation graph, drift and coverage signals. The agent never questions the user (a subagent MUST NOT conduct an interview, perskills/_shared/elicitation-contract.md) and never writes. - Before delegating to the
archcore-auditoragent, pass the absolute plugin root — the directory two levels above thisSKILL.md— and the output ofbin/check-references, which the agent cannot run without a shell. The agent readsskills/_shared/relation-authoring.mdunder that root, andskills/_shared/tracks/actualize.mdunder the same root. - The main thread confirms every fix with the user and applies it via
mcp__archcore__update_document, one document at a time, per theactualize.fixgate; the hung-plan batch is that gate's one list-level confirmation. The review skill MUST NOT edit code on this path — it reports acode-wrongfinding without fixing it.
Result
- Branch review: findings grouped by verdict —
spec-wrong/code-wrong/ok— with evidence, applied fixes, and declined fixes. - Ambiguous plan candidates: each candidate named, with closeout skipped.
- Open tracks: each draft from step 2's open-track list, with its gate, its unresolved choices, and its resume command.
- Durable context: units grouped created, updated, omitted, deferred, and declined — each with its claim, evidence, and owner, and a reason for every omitted or declined unit.
- Closeout: per-task verdicts, applied and declined document updates, status transitions grouped applied / declined / skipped, units written at capture with the instrument that took each, removed plans, and retained plans with the remaining work or blocking reason.
- Hung plans: each plan the batch removed with its
shippedorabandonedlabel and the commit that still carries it, each struck plan, or "No hung plans." - Produced documents grouped by category — experience: a
cpatortask-typedraft from the durable-context selection; knowledge: aspec,doc,guide,scenario, or anadrplus its standard cascade (rule,guide), from the durable-context selection; knowledge / vision: documents updated by a drift fix or a closeout merge. - Captured: one
captured:line per invocation, merged across every selection run. - Removed documents: each completed
plancloseout removed, and each long-stale draft a drift fix removed on the user's confirmation — each named with a verified recovery commit when available. For closeout, state explicitly when git history does not preserve the removed plan's current content. - Next actions — one line per finding kind present, naming only v2 commands:
- a
code-wrongfinding: fix the code against the governing document, or, when the document should change instead,/archcore:plan <capability>to amend it; - code that no longer follows an
adr:/archcore:document <the superseding decision>to record it; - a coverage gap:
/archcore:document <subject>; - an open track: its resume command;
- drafts the branch created with no matched
plan:/archcore:review close out <scope>to offer their acceptance; - an open
rfc:/archcore:document resolve the <rfc title> RFC.
- a
- Name tracks and steps in plain words; do not print a gate address of the form
<track>.<stage>.
04 同仓库更多 Skills
deja-search
deja-vu memory — search the user's past AI coding sessions with the deja CLI. Holds what they already settled and never wrote into the repo (naming rules, banned or already-tried tools, required checks before merge, preferred values, who owns what). Use before your first edit in a task, before you call a change done or ready to merge, before you recommend a tool, library, design or reviewer, before re-debugging an error that may already be solved, when they say 'didn't we fix this before', 'what did we decide about X' or 'I already have that', and before telling them something on this machine does not exist.
deja-reflect
End-of-session reflection and memory curation with deja-vu. Review what was decided, what commands broke and what repaired them, and record durable project rules or decisions with deja remember so the next session starts with them.
revid
Make, edit, export and post AI videos with Revid (revid.ai) through the Revid MCP server. Use whenever the user wants a short-form or long-form video made (from an idea, a script, a URL, an article, a PDF, a tweet, a product page, their own clips, or a song), wants to find what is going viral on TikTok, YouTube, Instagram or X before making something, wants to edit or re-export an existing Revid project, generate a standalone AI image or clip, make a series episode, or publish and schedule a finished video to connected social accounts. Covers setup (hosted MCP with OAuth, or an API key), the 36 tools, credits, polling and the rules for publishing. Routes to the more specific revid-* skills when one fits.
review-study
Review a QuestionPunk survey before launch for wording, answer choices, branching, and missing settings. Use for check my survey or review this draft before publishing.
manage-study
Find QuestionPunk studies, check status, publish an explicitly requested draft, or retrieve its participant link. Use for find my survey, publish this study, or how many people responded.
create-study
Create a saved QuestionPunk survey draft from a research brief or edit specified questions. Use for requests such as make a customer feedback survey or shorten my onboarding study.