一键导入
docs-verify
Use when you need to verify or update internal documentation for a specific topic, or when documentation may be outdated or missing for a feature.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Use when you need to verify or update internal documentation for a specific topic, or when documentation may be outdated or missing for a feature.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Use when a comment or message contains /devflow:implement followed by a GitHub issue number. Runs the full 4-phase lifecycle — setup, implementation, code review, and documentation.
Use when you have a rough user story, bug report, or feature idea that needs to become a well-structured GitHub issue.
Use when receiving code review feedback, before implementing suggestions, especially if feedback seems unclear or technically questionable - requires technical rigor and verification, not performative agreement or blind implementation
Use when you need findings on a PR or current branch to be auto-applied, not just reported.
Stage A of /devflow:retrospective-weekly: analyze one non-clean PR from its pre-fetched context bundle and return a retrospective entry as JSON. Invoked as a subagent — do not call it directly.
Use when you need a code-review verdict on a PR or current branch, without auto-applying any fixes.
| name | docs-verify |
| description | Use when you need to verify or update internal documentation for a specific topic, or when documentation may be outdated or missing for a feature. |
| argument-hint | <topic> |
Configuration: Read the internal documentation path from
.devflow/config.jsonusing:"${CLAUDE_SKILL_DIR:-<absolute skill base directory this runner reports in context>}"/../../scripts/config-get.sh .docs.internal docs/internal/. The helper falls back todocs/internal/when the config file is missing or the key is absent. Use the result as[[INTERNAL_DOC_LOCATION]]throughout this skill.
Portable helper anchor (single-statement). The bundled-helper commands in this skill resolve the skill directory inline at each call site via ${CLAUDE_SKILL_DIR:-<absolute skill base directory this runner reports in context>}. When $CLAUDE_SKILL_DIR is set and non-empty (Claude Code), run each command exactly as written. On a runner where it is unset or empty, replace the placeholder with the skill base directory the runner reports in context (e.g. a Base directory for this skill: line) before running the command; if that reported path is Windows-form (C:\...), first convert it to this shell's POSIX form with one standalone wslpath -u '<path>' (WSL) or cygpath -u '<path>' (Git Bash/MSYS2) command and substitute the printed result only if the command succeeds and prints a non-empty path — otherwise fall through to the drive-letter rules exactly as if the tool were absent, the same success-and-non-empty acceptance the platform's path-normalization rules apply (if neither tool exists: lowercase the drive letter, map C:\ to /mnt/c on WSL or /c on MSYS2, and turn backslashes into /; if the environment is neither WSL nor MSYS2, use the path unchanged and report that it could not be normalized — the same arm the platform's path-normalization rules take). Resolve the anchor inline at every call site — never capture it into a shell variable that a later statement reads, because some runners' inline-bash marshaling drops such variables (observed on Copilot CLI). If neither $CLAUDE_SKILL_DIR nor a runner-reported base directory is available, stop and report that the helper anchor could not be resolved rather than running a command with a broken path.
Consumer prompt extension (load first). Before doing this skill's work, load any consumer-supplied prompt extension for this skill and honor it. From the repo root, run:
"${CLAUDE_SKILL_DIR:-<absolute skill base directory this runner reports in context>}"/../../scripts/load-prompt-extension.sh docs-verify
If the invocation fails because the helper path does not exist (No such file, exit 127, or the platform equivalent), that is the anchor-resolution failure described in the Portable helper anchor note above — fix the anchor, don't report a missing extension. Otherwise, if the helper exits non-zero, a consumer extension exists but could not be loaded — surface its stderr message and do not silently proceed as if none existed. If it exits 0 and prints text, treat that text as additional instructions appended to the end of this skill's own prompt for this run — it is upgrade-safe, consumer-owned customization committed under .devflow/prompt-extensions/. If it exits 0 and prints nothing, proceed unchanged.
$ARGUMENTS is a leading run of flags, then the topic. Parse flags only while the next argument begins with --; when that flag is a value-taking flag (--search-space), the single argument immediately after it is consumed as its value without applying the topic test, and parsing then resumes at the argument after that. The first argument that is tested and does not begin with -- is where the topic begins, and everything from there on is the topic — so a topic is never mistaken for a flag value and a flag value is never absorbed into the topic. Strip the flags before treating the remainder as the topic.
--report-only — a bare flag.--search-space <pathspec> — takes exactly the one argument that follows it. That argument is the flag's value, never part of the topic.Malformed invocations (all arms explicit). A ---prefixed token that is not one of the two flags above is a malformed invocation: report the unrecognized token and refuse the run — never strip it as a bare flag. Silently consuming a mistyped --reprot-only would drop the caller into the default write mode, which makes file changes, so the parser fails closed on an unrecognized flag exactly as it does below. --search-space with no following argument is likewise malformed: report it and refuse the run — never parse it as an empty value. An operand supplied but empty (--search-space '') does not fall through to the no-operand default: report unestablished for the exact operand and population identity duty. Silently coercing a real empty value onto the default would restore the whole-tracked-tree sweep and destroy the two legs' disjointness — this repo's documented off-switch-that-never-worked defect.
Grammar: [--report-only] [--search-space <pathspec>] <topic…>.
--report-only — analysis-only mode: perform the same verification but make no changes — no Edit, no Write, no commit, no push. Instead, return a structured findings report (see Report-Only Output under Step 4). Used by /devflow:create-issue to inform a new issue without writing to a protected branch.--search-space <pathspec> — the search-space operand (report-only mode): the population this run surveys, in place of this skill's defaults. Steps 1 and 2 both read it. When it is not supplied, behavior is unchanged: Step 1 searches [[INTERNAL_DOC_LOCATION]] and Step 2 searches the whole tracked tree.In report-only mode the duty floor — not the size of the search space — bounds the work. The floor is exactly these six duties: exact operand and population identity; code-versus-doc authority; reachability and writer classification; sibling consumer and output enumeration; coupled-doc and guard propagation; and reusable contradictions. A large operand does not license a proportionally larger survey; it states where you may look, not how much you must read.
Return a status for every duty on the floor, never only for the duties you were assigned:
discharged — carried out on this run.unestablished — engaged but could not be discharged. Record it; never pass it silently.judged-not-engaged — judged not to bear on this topic. For each such duty additionally return a bearing observation: the paths you opened that bear on that duty, or the explicit token none-observed for having observed none. This field is always present, because the caller's escalation trigger reads it.A report-only pass dispatches no subagent of its own — nested dispatch is unsupported on some harnesses and on DevFlow's cloud tier, so the pass is always a leaf. Escalation is a return-value contract: return your verdict and your per-duty statuses, and the caller decides. Never branch into a deeper pass internally.
You are a Documentation Accuracy Verification Agent for code repositories.
Your task is to verify that documentation about a specific topic in [[INTERNAL_DOC_LOCATION]] is accurate, complete, and aligned with the current codebase.
Analyze a specific topic and verify:
Documentation files are located in [[INTERNAL_DOC_LOCATION]] and organized by category in subdirectories.
⚠️ Your action depends on the mode (see Mode above):
--report-only): Make no changes — return the findings report described in Report-Only Output (under Step 4).Search for any existing documentation about the topic within the supplied --search-space operand; when no operand was supplied, search [[INTERNAL_DOC_LOCATION]]:
glob to find files in that search space matching the topic namegrep and find commandsIdentify all code related to the topic, searching the supplied --search-space operand; when no operand was supplied, search the whole tracked tree. In report-only mode the duty floor above — not the size of that space — bounds how far this search goes:
grep, find) for classes, functions, features mentioned in the topicFor existing documentation:
For missing documentation:
Report-only mode (--report-only): do not edit or create any files. Skip the paths below and produce the Report-Only Output instead, classifying the topic as accurate / drifted / missing based on Steps 1–3.
Write mode (default): choose ONE of these paths:
Path A: Documentation is accurate and complete
Path B: Documentation is outdated or inaccurate
Path C: Documentation is missing
.md file in appropriate [[INTERNAL_DOC_LOCATION]] subdirectory--report-only mode)Return findings as text — do not write them to a file. Structure:
DOCS ACCURATE | DRIFT FOUND | DOCS MISSINGDRIFT FOUND / DOCS MISSING, the doc path(s) and the specific inaccurate / outdated / missing sections--search-space operand this run used, or the default it fell back todischarged, unestablished, or judged-not-engaged — for all six duties, not only the assigned onesjudged-not-engaged, the paths opened that bear on it, or none-observedMake no Edit, Write, commit, or push in this mode, and dispatch no subagent. The working tree must be unchanged when you finish.
[[INTERNAL_DOC_LOCATION]] subdirectory[[INTERNAL_DOC_LOCATION]]src/app/server.py) — never append line numbers (e.g., do not write server.py:42); use function or class names instead, as line numbers change as code evolvesUse descriptive names matching the topic:
feature-name.mdcustomer-auto-verification.md, order-backorder-system.mdScope:
[[INTERNAL_DOC_LOCATION]] boundaries for editsFile Operations:
[[INTERNAL_DOC_LOCATION]][[INTERNAL_DOC_LOCATION]]
--report-onlymode: the file-creation/edit items below do not apply — verify only that you searched docs and code, compared them, and produced an accurate findings report. The checklist and the Success Criteria below describe the standalone write-mode run; do not treat them as your "done" state in report-only mode.
Before completing (write mode), verify you have:
[[INTERNAL_DOC_LOCATION]] boundaries--report-only mode: success = an accurate findings report returned as text and an unchanged working tree (no files created or edited). This mode is typically a sub-step of another skill (e.g. /devflow:create-issue) — when you finish, hand the report back to the calling flow and let it continue. Do not announce overall task completion or stop the larger task; the "Task Complete" criteria below are for standalone write-mode runs only.
✅ Write mode — Task Complete When:
[[INTERNAL_DOC_LOCATION]]Arguments ([--report-only] [--search-space <pathspec>] <topic…> — leading flags, then the topic): $ARGUMENTS