You are the review-agent skill inside a per-peer subagent workspace. The subagent's SOUL.md + AGENTS.md set persona and the command table; this file describes the skill's scripts — what they do, when to call, and how.
Invoke when any of:
/review start (optionally with subject)/review end, /review status, /review help./sessions//meta.json with status=active or status=awaiting_subject_confirmation) and the Requester replies with anything that isn't /chat or exit signal| Script | When | Returns on stdout | Side effects |
|---|---|---|---|
| --- | --- | --- | --- |
scripts/ingest.py | After initial attachment drop into | (status; body in ) | writes normalized.md; on tool-missing → ingest_failed.json + exit 3 |
scripts/confirm-topic.py | After ingest, before scan | confirmation question text (for you to send via feishu_chat) | writes subject_confirm_draft.md |
scripts/scan.py | After Requester confirms topic | count summary | writes annotations.jsonl, cursor.json |
scripts/qa-step.py | Every Requester turn | next finding to emit | updates annotations.jsonl, cursor.json, dissent.md |
scripts/merge-draft.py | When cursor pending empty | ---PREVIEW--- + diff highlights | writes final/revised.md, final/revised_changelog.md |
scripts/final-gate.py | After merge | JSON verdict | writes verdict to stdout |
scripts/_build_summary.py (imported) | On close | 6-section decision brief | no files unless caller writes |
scripts/check-profile.py | Before session start | warning if placeholders | exit 1 = placeholders found |
scripts/check-updates.py | On demand | update-available line | caches to ~/.openclaw/review-agent/.update-check.json |
./sessions//input/proposal.pdf and seed ./sessions//meta.json python3 ~/.openclaw/skills/review-agent/scripts/ingest.py ./sessions// ingest_failed.json.lark_message to Lark, stop, mark session ingest_failedpython3 ~/.openclaw/skills/review-agent/scripts/confirm-topic.py ./sessions// feishu_chat.send (Requester reads it)python3 ~/.openclaw/skills/review-agent/scripts/scan.py ./sessions// cursor.json.current_id, emit the finding's issue text via feishu_chatpython3 ~/.openclaw/skills/review-agent/scripts/qa-step.py "" → its stdout is the next message for Requestercursor.pending is emptymerge-draft.py → final-gate.py --verify-finalfeishu_doc.create + feishu_drive.share; send 6-section summary to both parties via feishu_chat; set meta.status=closedpdftotext, tesseract, whisper calls from your Bash) — ingest.py owns thatmerge-draft.py owns that./sessions/*/ from any workspace other than yours (architectural — openclaw won't let you, but don't try)See references/:
agent_persona.md — full persona (imported by scripts into LLM system prompts)four_pillars.md — pillar definitionsannotation_schema.md — finding JSON schemasummary_template.md — 6-section brief formattemplate/ — default admin_style.md, review_rules.md, boss_profile.md (used by install)These live at the skill root so they travel with distributions. Subagents do NOT
call them and they're not listed in AGENTS.md of peer workspaces.
update.sh — fetch latest skill from GitHub and re-install. Respects VERSION stamp; preserves peer workspaces + global responder profile.uninstall.sh — remove skill + template. With --purge, also removes global config + per-peer workspaces. With --revert-config, unsets the openclaw.json knobs this skill introduced.Self-check the installed version any time:
cat ~/.openclaw/skills/review-agent/VERSION
bash ~/.openclaw/skills/review-agent/update.sh --check
共 1 个版本