360 Secure SkillHub
360 安全技能中心

reorganize-logic

该技能用于文档严重腐化、同步已不划算的项目:以代码为唯一真相,把旧契约仅作上下文压缩后丢弃,重新推导架构图、结构图与接口定义三份新契约,并用 verify_contracts.mjs 门禁校验(FAIL/FLAG 阻断),再由独立读者复核排除项。全部通过后输出删除清单,不自动删除,须人工批准。适用于“从零重建契约”;若只需增量同步整理,应改用 neat。支持全项目或指定目录范围。

vincentjiang06
vincentjiang06
热度 47.21
最近更新 2026-09-28 10:54:42
分类:开发依赖:代码执行 / 读写文件 / 内部调用大模型应用场景:代码审查 / 报告撰写 / 工作流 / API 集成

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add reorganize-logic
Metadata
slug
reorganize-logic
displayName
代码架构契约重建助手
name
reorganize-logic
description
Rebuild a project's DESIGN-CONTRACT layer when docs have rotted past sync: re-derive architecture + structure + interface contracts from code, gate-verified. Use-when: "rebuild the contracts from scratch", "从代码重新推导契约", "$reorganize-logic". Do-NOT use for doc sync / cleanup (this REBUILDS and deletes legacy) → neat.
metadata
{"version":"0.3.4"}

reorganize-logic

Rebuild the design-contract layer of an existing project from the ground up, with the code as the single source of truth. The old contracts are untrusted context — compacted, read, then discarded as a source: the new contracts are re-derived from the code, never copy-pasted from the legacy docs. Output is three fresh artifacts (architecture diagram · structure diagram · explicit interface definitions) plus a review-gated deletion manifest for the stale legacy.

The anchor (read first): a contract is only trustworthy once a runnable check ties it back to the code. So every documented interface is cross-checked against the code's public surface by scripts/verify_contracts.mjs, and the new contracts are written before anything legacy is deleted. A contract the gate can't tie to real code is a hallucination; the gate rejects it. The gate flags everything ambiguous for you to reconcile — it never rubber-stamps — and it never rules on design intent: whether an excluded symbol is really internal is judged by a fresh reader against the code, not by the gate.

When this fires (vs neat — the key boundary)

  • reorganize-logic = deliberate, heavyweight, ground-up REBUILD. Old contracts are untrusted; deleting legacy is a feature. Use when docs have drifted so far that syncing is not worth it.
  • neat = incremental sync at session end; keeps what's right, fixes drift, non-destructive. Route there for "tidy up / sync the docs / 同步一下".

If the docs are mostly right → neat. If you'd rather throw them out and re-derive from code → this skill.

Orchestration (the gate stays portable)

The gate is deterministic node (runs anywhere, CI included). The judged work — derivation, synthesis, faithfulness, exclusion verdicts — runs like this:

  • Fan out the derivation. An Explore subagent maps entry points, then one derivation subagent per module in parallel returns its surface + responsibilities.
  • Derivers and readers are non-fork. Spawn every derivation and fresh-reader subagent as a fresh subagent that starts from only the prompt you give it — not a fork of your context, which inherits the legacy docs and your draft. If the host only offers forking, use a separate claude -p session. The reply says how isolation was achieved (a self-report, not an enforcement).
  • Raise effort, don't pad. If a contract reads shallow, raise effort for the running model rather than padding the prompt; effort names are not equivalent across models.
  • Survive compaction from disk. After a compaction, re-read the on-disk artifacts (_legacy-context.md, the contracts written so far, _exclusion-review.md) AND this skill's Controls — a summary may have evicted a standing constraint.
  • Walk every entry point. The coverage gate and the readers enumerate the surface; they never sample it.

Protocol

Preflight: confirm REBUILD (not sync), resolve scope (whole project | a named module/dir). Then the 6 steps (detail in references/protocol.md):

  1. Compact old contracts → read-only, gitignored docs/contracts/_legacy-context.md headed "CONTEXT ONLY — DO NOT COPY".
  2. Re-derive from the code — read structure + public surface; build a fresh model. Code wins every disagreement. No copying from legacy.
  3. Author docs/contracts/architecture.md — Mermaid architecture diagram + components/responsibilities/data+control flow/boundaries.
  4. Author docs/contracts/structure.md (Mermaid + module map) and docs/contracts/interfaces.md in the strict gate-parseable format (references/contract-format.md).
  5. Gate — node scripts/verify_contracts.mjs <root> [--scope <dir>]. FAIL and FLAG block: fix every FAIL, reconcile every FLAG (open the cited code, fix the contract, re-run). REVIEW lines don't block, but every STRONG_EXPORT_EXCLUDED item goes through the fresh-reader exclusion card before you report. A line clearable only by an untrue statement or by editing code/the gate, one surviving two fix attempts, or a language with no matcher → escalate (protocol step 5).
  6. Emit docs/contracts/deletion-manifest.md — stale legacy to delete/overwrite, one reason each. Never delete anything; the human approves and applies.

Verify (eat the dogfood)

Run the gate on the produced interfaces.md before reporting:

node scripts/verify_contracts.mjs <project-root> [--scope <subdir>]

A PASS with exit 0 is PASS (structural): the gate proves doc-vs-code structure — not prose faithfulness, and not whether an excluded symbol is really internal. Any FAIL [tag] / FLAG [tag] line means the contract is not yet tied to the code — fix and re-run. The final word needs the fresh-reader pass and the exclusion card verdicts (references/protocol.md): non-fork readers check the diagrams, responsibilities and signatures against the code, and adjudicate every STRONG_EXPORT_EXCLUDED item.

Controls

  • Code is the only source of truth. Old contracts inform context, never content. No copy-paste from legacy into the new artifacts.
  • Review-gated deletion. Write the new contracts first; emit the manifest; never delete/overwrite legacy without explicit human approval. Nothing is auto-deleted; git is the safety net.
  • Strict gate, judged exclusions. Return contracts only after verify_contracts.mjs PASSes: FAIL and FLAG block. REVIEW items are adjudicated by a non-fork fresh reader with the exclusion card. The gate proves structure, not publicness. The reply names the gate command it ran (the shipped skill path).
  • Never edit the checks mid-task. Never edit, patch, copy-modify, or run a modified copy of scripts/verify_contracts.mjs or evals/ during a user task. An unrecognized export form or unsupported language goes to the owner as a proposal (form, example line, file) — and the run escalates.
  • No untrue contract for a green gate. Never write a contract statement you believe untrue, and never edit product code, to clear a gate line — escalate.
  • These controls are a rule layer: no sandbox or hook ships; the host's permission mode is the only enforcement, git the recovery net.
  • Scopable. Whole project by default; --scope <dir> for cheap re-runs; coverage is scoped accordingly.

Modules

File When to load
references/protocol.md Read at the start of every rebuild, after preflight: the 6-step runbook, the fresh-reader pass and the exclusion judgment card (paste the card section verbatim into each exclusion reader's prompt).
references/contract-format.md Read at step 4 before writing interfaces.md, and when the gate prints FLAG [EXCLUSION_NEEDS_REASON]: the gate-parseable format, the exclusion reason rule, the Mermaid conventions.
references/gate-design.md Read when a FAIL/FLAG/REVIEW tag needs interpreting, or when deciding whether a language/form is supported (escalate): the verdict table with its Plane column and the judgment ledger.
scripts/verify_contracts.mjs Executed at step 5 — never read into context, never edited during a task. Pure validate({contractText, files, scope, exclusions}) + CLI.
evals/run_all.mjs Dev-time only, local (gitignored), 37 cases over the real validate and the CLI walk; never run or edited during a user task.
assets/golden/ Copy from when authoring interfaces.md; smoke-test the CLI (pass/, and fail/: orphan + coverage hole).

Lifecycle

  • version: see frontmatter metadata.version.
  • Breaking change = any change to the gate's input format or the interfaces.md gate-parseable schema (downstream contracts must be re-authored).
  • Rollback = git restore docs/contracts/; the deletion-manifest is never auto-applied, so a bad run leaves the legacy intact.
  • Superseded by neat for the lighter keep-and-sync path.