tutti-architecture-review
GitHub用于审查Tutti项目的Git差异,检查项目结构、分层、模块所有权及重复的基础设施。通过规划架构审查任务并协调子代理仅关注变更区域,确保代码符合架构规范,而非通用漏洞扫描。
触发场景
安装
npx skills add tutti-os/tutti --skill tutti-architecture-review -g -y
SKILL.md
Frontmatter
{
"name": "tutti-architecture-review",
"description": "Review tutti git diffs for project structure, layering, module ownership, and duplicate event-center infrastructure by planning focused architecture review tasks, then having the main agent orchestrate sub-agents for only the changed areas."
}
Tutti Architecture Review
Use this skill when reviewing a tutti change or a named module for repository structure, module ownership, or layering compliance. This is a focused architecture review, not a general bug hunt.
Vocabulary
Use the architecture vocabulary consistently:
- Module: anything with an interface and an implementation.
- Interface: everything a caller must know to use the module correctly.
- Implementation: the code inside a module.
- Depth: leverage at the interface; deep modules hide useful behavior behind a small interface.
- Seam: where an interface lives.
- Adapter: a concrete thing satisfying an interface at a seam.
- Leverage: what callers get from depth.
- Locality: what maintainers get from depth.
Prefer these words in findings. Avoid vague substitutes such as "component", "service", "utility", or "boundary" when a vocabulary term fits.
Workflow
-
Resolve the user's review intent:
- plain
git diffreview for the current change - module-focused diff review when the user names a module inside the current change
- static module review when the user wants a named module inspected even without current diff overlap
Use light natural-language guidance when the request is ambiguous. Do not force the user through a fixed mode menu.
- plain
-
When the user names a module, let the main agent infer a few candidate path keywords and gather candidate paths. Then normalize those paths into a scope file:
node ./.codex/skills/tutti-architecture-review/scripts/build-review-scope.mjs \ --input /tmp/tutti-review-candidates.json \ --output /tmp/tutti-review-scope.jsonCandidate input is agent-produced. The script does not invent module keywords or search the repository itself; it only normalizes candidate paths into a stable scope contract for the planner.
Read
references/scope-contract.mdwhen changing or consuming the candidate input, normalized scope output, or planner scope metadata. -
Run the review planner from the repository root:
pnpm review:architecture:packageFor module-focused review, pass the generated scope file:
node ./.codex/skills/tutti-architecture-review/scripts/plan-review.mjs \ --scope-file /tmp/tutti-review-scope.json \ --format json \ --output-tempThe planner remains
git difffirst. With--scope-file, it reviewsscope ∩ diffwhen there is overlap, and falls back to scoped-file review only when there is no diff overlap.For explicit static module review, force scope-only planning:
node ./.codex/skills/tutti-architecture-review/scripts/plan-review.mjs \ --scope-file /tmp/tutti-review-scope.json \ --scope-mode static-only \ --format json \ --output-temp -
Read the generated JSON task package from
workflowEntry.packagePath. Each task includesriskLevel,spawnRecommendation,summaryForMainAgent,matchedFiles,preflightSignals, and a ready-to-useprompt. -
Spawn
explorersub-agents according tospawnRecommendation:required: spawn unless the user explicitly asked for a narrower reviewrecommended: spawn when the review is not trivially smalloptional: the main agent may review locally
Do not ask sub-agents to edit files. Their job is to inspect the relevant diff and report architecture findings.
-
Continue local work while sub-agents run only if there is non-overlapping review or summarization work. Do not duplicate a sub-agent's assigned scope.
-
Merge sub-agent reports into a code-review style answer:
- findings first, ordered by severity
- cite file paths and line numbers when possible
- explain the violated rule and why it matters for locality, leverage, or dependency direction
- include "No architecture findings" when a reviewer found no issues
Reviewer Expectations
Every sub-agent should:
- read
AGENTS.mdand the closest areaAGENTS.mdfor its changed files - read only the reference files listed in the task package, plus files needed to understand the diff
- inspect the relevant git diff directly instead of relying only on file names
- report only actionable architecture issues, not taste preferences
- distinguish hard rule violations from speculative deepening opportunities
- avoid proposing new interfaces unless the changed code already creates pressure for a real seam
- when eventing, pub-sub, or bidirectional coordination appears, check whether the shared business event stream's
global,desktop, orworkspacescope modules already own the seam before accepting new event-center infrastructure
Task Planner
The planner is deterministic and repository-local:
scripts/plan-review.mjsreadsgit diff, optional untracked files, and an optional normalized scope filescripts/build-review-scope.mjsnormalizes agent-produced candidate paths into a stable scope contractreferences/review-rules.jsondeclares reviewer tasks, path rules, and regex-style preflight signals- the script maps changed paths to architecture reviewer tasks
- it adds lightweight preflight signals for suspicious imports, generated-contract drift, possible hardcoded copy, and cross-area seams
- it assigns task risk and spawn recommendations for the main agent
- it emits JSON or Markdown for the main agent to orchestrate
- it never starts sub-agents itself
Useful options:
pnpm review:architecture
pnpm review:architecture:package
pnpm review:architecture:test
node ./.codex/skills/tutti-architecture-review/scripts/plan-review.mjs --format markdown
node ./.codex/skills/tutti-architecture-review/scripts/plan-review.mjs --format summary
node ./.codex/skills/tutti-architecture-review/scripts/plan-review.mjs --base origin/main
node ./.codex/skills/tutti-architecture-review/scripts/plan-review.mjs --staged
node ./.codex/skills/tutti-architecture-review/scripts/plan-review.mjs --no-untracked
node ./.codex/skills/tutti-architecture-review/scripts/plan-review.mjs --scope-file /tmp/tutti-review-scope.json --format summary
node ./.codex/skills/tutti-architecture-review/scripts/plan-review.mjs --scope-file /tmp/tutti-review-scope.json --scope-mode static-only --format summary
node ./.codex/skills/tutti-architecture-review/scripts/plan-review.mjs --task desktop-layering --format markdown
node ./.codex/skills/tutti-architecture-review/scripts/plan-review.mjs --output /tmp/tutti-review-tasks.json
node ./.codex/skills/tutti-architecture-review/scripts/plan-review.mjs --output-temp
node ./.codex/skills/tutti-architecture-review/scripts/plan-review.mjs --from-package /tmp/tutti-review-tasks.json --format markdown
node ./.codex/skills/tutti-architecture-review/scripts/plan-review.mjs --from-package /tmp/tutti-review-tasks.json --task desktop-layering --format summary
Task Package Entry
A task package file is a stable workflow entrypoint. Prefer creating one before spawning sub-agents, especially for large reviews:
node ./.codex/skills/tutti-architecture-review/scripts/plan-review.mjs --format json --output-temp
Then use workflowEntry.packagePath as the source of truth for the review. If the conversation resumes later, reload the same package instead of recomputing the plan:
node ./.codex/skills/tutti-architecture-review/scripts/plan-review.mjs --from-package /tmp/tutti-architecture-review-YYYYMMDDTHHMMSSZ.json --format markdown
Use --format summary before spawning agents when you need a compact orchestration view. Use --task <id> to inspect or rerender one reviewer from either the current diff or an existing task package.
Run the planner self-test after changing task matching, risk rules, output formats, or task-package behavior:
node --test ./.codex/skills/tutti-architecture-review/scripts/plan-review.test.mjs ./.codex/skills/tutti-architecture-review/scripts/build-review-scope.test.mjs
Read references/tutti-layering.md when a task needs the compact project rules.
Read references/scope-contract.md when changing the scope-file contract or the main-agent handoff around module review.
Read docs/architecture/business-event-stream.md when reviewing event-center modules, typed pub-sub, or WebSocket-based product coordination. Do not use the architecture review to enforce generated event-protocol drift; that belongs to pnpm check:event-protocol-generated.
Read or edit references/review-rules.json when changing:
- reviewer task titles, focus, references, or path matching
- simple preflight regex rules
- task assignment for preflight signals
Keep combination logic in scripts/plan-review.mjs, such as cross-cutting trigger reasons, generated-source pairing, risk calculation, spawn recommendations, and output rendering.
Keep module-phrase interpretation in the main agent, not in build-review-scope.mjs or plan-review.mjs. Those scripts should stay deterministic and repository-local.
版本历史
- 5e430ef 当前 2026-07-11 17:00


