Reviews whether a design is SOUND — solving the right problem, derived from its stated goals and constraints — and emits ranked, evidence-backed findings, not edits. Read when asked to 'review this design', 'is this design sound', 'pressure-test this proposal', 'do a design review', 'does this solve the right problem', 'poke holes in this spec', 'should we build this', or to critique a proposal / spec / ADR / architecture or product decision. Do NOT read when the user wants to AUTHOR one of these — routing a new proposal is frame-a-proposal, a spec is write-a-spec, a decision record is record-a-decision, a postmortem is write-a-postmortem. Do NOT read for code review of a diff, or to fact-check individual claims (that is a correctness pass, a different job).
npx skills add https://github.com/inkeep/open-knowledge --skill open-knowledge-pack-software-lifecycle-review-a-design
The platform open-knowledge skill still governs every markdown operation here (reads via exec, writes via write/edit, links as plain relative markdown, MCP owns in-scope .md); this skill layers design-review craft on top of it.
Three reviews are not the same review, and only one is this skill's job.
You are doing the third. A proposal can be complete and factually correct and still be the wrong design — solving a symptom, chosen before its goals, engaging only strawman alternatives. Completeness and correctness are cheap to check and someone else's pass. Say this to the user up front if there's any ambiguity about what kind of review they want, then do soundness.
You produce findings, not edits. The author decides what to change. Never rewrite the artifact under review unless explicitly asked.
HARD GATE: never review a design you have not read end to end, and never review it in isolation from the decisions it inherits. A review of the first half is worse than no review — it spends the author's trust on partial understanding.
proposals/NNNN-name.md — Motivation / Design / Drawbacks / Alternatives / Unresolved questions),specs/NNN-name/spec.md — Goals / Non-goals / Design / Migration / Test plan, with a parent_proposal:),decisions/NNNN-title.md — Context / Decision / Consequences, with a supersedes: chain), orexec("cat proposals/0003-feature.md").parent_proposal:, and any proposal a decision implements;exec("grep -rln <subsystem-keyword> decisions/"), then cat the relevant ones. A design that contradicts an accepted ADR without noting it is a finding by itself.exec("ls -A postmortems/") and search({ query: "<subsystem> failure" }). A postmortem names a failure mode; a design that reintroduces it is your highest-value catch.supersedes: chain both directions.Read, Grep) — source is outside the knowledge base. In-scope markdown stays on exec/search.Do not proceed until you can name the goal, the constraints, and the prior decisions this design sits on top of.
Before you critique anything, state the design's argument in your own words: the goal it serves, the constraints it accepts, and why this design follows from them. Show it to the user before Step 2.
Why this gate exists:
For an in-flight choice with no document, this step is where you force the argument into words for the first time. Frequently the act of reconstruction resolves the question without a single lens.
Pass the design through each lens below. A lens is a named question plus the failure it catches — run the ones that bite for this artifact, skip the ones that plainly don't, and add any that earn their place. Do not mechanically fill all nine; a review that says the same shallow thing nine times teaches nothing.
Each finding has four parts, and a finding missing the second is an opinion — drop it:
the Design section says "quoted text]" or [the Migration plan assumes X. A finding with no evidence pointer is an opinion; delete it. This is the single discipline that separates a review the author acts on from one they resent.Rank by severity, not by reading order. Lead with the blocking findings; the author reads the top of your review and stops when they've got the gist. Burying the one blocking finding under six minor ones wastes it.
Before you deliver, turn the lenses on yourself. Reviews that flag everything teach the author to ignore reviews — the moment your review has one indefensible finding, the author discounts all of them.
In conversation by default. Most reviews are a message: the reconstructed argument (Step 1), the ranked findings (Step 3), the calibration notes (Step 4).
Persist as a document ONLY when the user asks, or the review is substantial enough to be cited later (a blocking review of a proposal heading to accept/reject). Then:
write({ document: { path: "proposals/0003-feature-review.md" } }).edit — a plain markdown link design review, never backticked, never an HTML anchor.Never edit the design under review to "apply" a finding. You emit findings; the authoring skill applies them.
Route blocking and substantive findings back to whoever owns the fix:
decisions/ with a supersedes: link if it overturns a prior ADR.postmortems/YYYY-MM-DD-name.md so the design engages with it explicitly.Name the skill and the reason in your handoff so the author knows exactly where to go.
Control Cursor AI code editor via CLI. Open files, folders, diffs, and manage extensions.
Comprehensive checklist for conducting thorough code reviews covering functionality, security, performance, and maintainability
Systematically evaluate architecture decisions, document trade-offs, and select appropriate patterns. This skill should be used when the user asks about 'architecture decision', 'ADR', 'design pattern selection', 'technology choice', or needs to evaluate architectural trade-offs. Keywords: architecture, ADR, patterns, trade-offs, technical debt, quality attributes, decision record.
Facilitates deliberate skill development during AI-assisted coding. Offers interactive learning exercises after architectural work (new files, schema changes, refactors). Use when completing features, making design decisions, or when user asks to understand code better. Triggers on "learning exercise", "help me understand", "teach me", "why does this work", or after creating new files/modules. Do NOT use for urgent debugging, quick fixes, or when user says "just ship it".
Organize project files and folders for maintainability and scalability. Use when structuring new projects, refactoring folder structure, or establishing conventions. Handles project structure, naming conventions, and file organization best practices.
Automatically trigger review agents after task completion. Use when strategic-planner finishes planning tasks (calls plan-consultant) or when main agent completes coding tasks in /implement workflow (calls code-reviewer). Triggers on phrases like "plan complete", "implementation done", "coding finished", "ready for review".
Provides a structured workflow for planning and executing code reviews like a senior engineer. Use when asked to review code, PRs, or plan a code review task.
Recall project-first and global-supplement ChatCrystal memories before substantive implementation, refactoring, migration, configuration, investigation, or optimization work. Use when the task is non-trivial, has repository or project context, and prior fixes, decisions, pitfalls, or reusable patterns may change the approach.
Take inkeep/open-knowledge-pack-software-lifecycle-review-a-design from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.