用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/edwinhu/workflows --skill writing-verify命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
正在显示 SKILL.md
| name | writing-verify |
| description | Internal /writing VERIFY beat — independent machine verification of authenticated PLAN-bound drafts. |
| user-invocable | false |
| disable-model-invocation | true |
| allowed-tools | Read, Grep, Glob, Bash, Agent, Skill, Workflow, TaskCreate, TaskUpdate, TaskList, TaskGet |
| hooks | {"PreToolUse":[{"matcher":"Agent|Workflow","hooks":[{"type":"command","command":"bun ${CLAUDE_PLUGIN_ROOT}/hooks/approved-artifact-gate.ts --workflow writing"}]},{"matcher":"Workflow","hooks":[{"type":"command","command":"bun ${CLAUDE_PLUGIN_ROOT}/hooks/writing-mechanical-gate.ts"}]}]} |
!bun ${CLAUDE_SKILL_DIR}/../../scripts/load-constraints.ts writing-verify
Run independent, evidence-grounded review against the authenticated PLAN's claims, counterarguments, source plan, section outputs, dependencies, and review surfaces. Findings live in TaskList; this phase does not create a competing planning or review ledger.
planPath, hash mismatch, malformed index, or retired-file input blocks review.plan_file and plan_hash from the approved combined review.json receipt; the compiler exposes them as index planFile and planHash.planFile, planHash, and reviewStatus to equal receipt plan_file, plan_hash, and status.implements frontmatter, including [] for claimless sections.workflows:ai-anti-patterns.NO WORKFLOW WITHOUT AN AUTHENTICATE PRE-STEP AND A --verify POST-STEP. The
workflow script is pure control flow — the Workflow runtime forbids import(),
import.meta, process, and Buffer, so the orchestrator cannot open, hash, or
re-stat a file. Artifact authentication and drift detection therefore run in the
deterministic compiler on either side of the dispatch. They are never delegated to
an agent: the section index itself comes from an agent, and asking the untrusted
party to vouch for its own artifacts is not authentication.
1. Authenticate (pre-step). Snapshot every artifact under TOCTOU discipline
(O_NOFOLLOW open, fstat-vs-lstat identity comparison across the read, realpath
containment, sha256 of the bytes actually opened):
python3 ${CLAUDE_SKILL_DIR}/../../scripts/writing/writing_section_index.py \
--authenticate "<absolute project root>" > /tmp/writing-auth.json
Non-zero exit or ok !== true blocks review — read violations and stop. The
bundle carries projectReal, planPath, planHash, index (the same
deterministic section index as the bare invocation), and artifacts, keyed
receipt, plan, bib, section:<name>:outline, section:<name>:draft.
2. Dispatch. Pass the bundle's fields straight through:
Workflow({
scriptPath: "${CLAUDE_SKILL_DIR}/../../workflows/writing-verify.js",
args: {
projectDir: "<absolute project root>",
projectReal: <bundle.projectReal>,
pluginRoot: "${CLAUDE_SKILL_DIR}/../../workflows",
planPath: <bundle.planPath>,
planHash: <bundle.planHash>,
sectionIndex: <bundle.index>,
artifacts: <bundle.artifacts>
}
})
The run returns {planPath, planHash, finalPlanHash, verifyRequired, driftVerified, overallPass, substratePass, verdict, summary, sections, findings, unreliableSections, sectionsThatFlagged}.
3. Verify (post-step). The returned verdict is provisional — it carries
verifyRequired: true and driftVerified: false. Write the return value to disk
and re-snapshot against the entry bundle:
python3 ${CLAUDE_SKILL_DIR}/../../scripts/writing/writing_section_index.py \
--verify /tmp/writing-auth.json --findings /tmp/writing-result.json \
> /tmp/writing-final.json
The finalized result is the only one you may read a gate from. If an artifact
moved during asynchronous review, the post-step discards that section's
findings — they describe bytes that no longer exist — zeroes its
finalOutlineHash/finalDraftHash, appends a critical artifact-integrity
finding in their place, and forces overallPass: false. Drifted sections must be
re-reviewed from a fresh authenticate, not patched from the discarded findings.
Selective re-review may pass onlyChecks and priorReviews only for the same plan hash. A structural replacement invalidates all prior review carry-forward.
Every normalized finding includes severity, location or review area, diagnosis, planHash, stable retry identity, and affected section/claim IDs where applicable. Section findings also retain verbatim quotes and proposed fixes when supplied. Mechanical quote verification drops fabricated or misattributed evidence, marks the section unreliable, and emits its own critical TaskList-ready finding.
Create or update current-hash review items rather than writing a review Markdown file:
CLAIM-NN IDs;open, fixed, accepted, or superseded) and retry linkage.critical and major findings block. Minor polish is advisory. Unreliable reviewer output blocks a clean verdict.
Read the gate from the finalized post-step output, never from the raw workflow
return (verifyRequired: true means the drift check has not run and the verdict
is not yet trustworthy). Read overallPass, normalized findings, raw counts,
unreliable sections, quoted evidence, driftedArtifacts, and final artifact hashes. A clean substrate requires zero critical, zero major, no unreliable sections, unchanged plan/outline/draft bytes after asynchronous review, and completed Review Surfaces. Reconcile every finding into TaskList before routing to /writing-revise; a clean result proceeds to the returned human review surface. Neither path creates a mutable planning ledger.
Default OFF. It exists only if the authenticated plan carries the opt-in line, so it binds to
planHash and is visible in plan review:
- **Third-party review:** prose-codex, prose-gemini
none / off / no disable it; an absent line means the step does not exist. Naming several runs
all of them, which is usually right: the value is in where adapters DISAGREE, and measured on the
sibling code path only one finding in eight was raised by more than one adapter.
Why it is worth the tokens. Every reviewer in this workflow is Claude judging Claude — six passes, one set of blind spots, and a defect the model shares with itself is invisible by construction. The 2026 Economist corpus study makes that concrete: the em-dash tell is now Claude-specific, so a Claude reviewer reads its own strongest tell as ordinary prose.
It runs last and does not gate. After Claude's own review, for the same reason as
beat-implement: a third party that runs first duplicates a pass we were going to make anyway. Its
findings are advisory minors. An external model's claims are unverified by construction, and letting
them gate would import another model's false positives into ours.
The invocation and every rule for reading its result live in
${CLAUDE_SKILL_DIR}/../beat-third-party/SKILL.md — read status before findings, an
unparseable adapter has not necessarily said nothing, and the real cost is $5–15 per pair rather
than the $0.12 floor this section used to quote. Those warnings were written out here, in
beat-implement and inline in workflows/writing-verify.js; three copies of a warning is two too
many, so they are now in one place.
This workflow's rules bundle — passed as skills in the runner's stdin JSON, per draft:
"skills": ["ai-anti-patterns", "de-ai-revise"]
The reviewer is a different model with no reason to know this domain's standards, and the version
that merely told it to load those two skills left nobody able to check whether it had. They are
handed over as bytes now, and briefSources on each review says what was handed over. That the
corpus rules matter here specifically is not incidental: the 2026 Economist corpus study found the
em-dash tell is now Claude-specific, so a Claude reviewer reads its own strongest tell as ordinary
prose.
Use for feature development and engineering changes.
This skill should be used when the user asks to 'start data analysis', 'plan a data project', 'explore this dataset', 'what should I analyze', 'set up a new study', or needs the data-science workflow.
Use when the user asks to 'run a work workflow', 'do this properly', 'clarify, plan, and verify this', 'small structured task', or 'don't just wing it' for a bounded task too small for a specialized workflow.