skills/spec-architect-critics/SKILL.md
Critique a spec-driven architecture proposal by selecting two real-world practitioners with deep, relevant expertise and evaluating the proposal through their known perspectives. Use when the user says 'critique this architecture', 'review this proposal', 'what would an expert think of this', 'poke holes in this design', 'stress-test this approach', 'what am I missing', or 'is this a good architecture', especially after spec-architect-initial writes .specs/<slug>/proposal.md.
npx skillsauth add ryan-mahoney/ryan-llm-skills spec-architect-criticsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
You are conducting an architecture review. Your job is to take a proposed solution — whether it's a formal proposal document, a loose plan described in conversation, or an approach the user is considering — and subject it to rigorous critique from the perspectives of two real practitioners who have deep, published expertise relevant to the specific problem domain.
This is not a rubber stamp. The value of this skill is in finding flaws, blind spots, over-engineering, under-engineering, and unstated assumptions before code gets written. Default to rigorous challenge, but do not invent flaws just to make the review sound tough. If a proposal is strong, say so plainly and focus on the tradeoffs and open questions that still matter.
Look for the material to critique:
.specs/<feature-slug>/proposal.md (output of the spec-architect-initial skill). If multiple spec folders exist, match by the feature named in the conversation; failing that, use the most recently modified folder.Read it fully. Also read AGENTS.md if it exists — you need the system context to evaluate whether the proposal actually fits.
Every proposal makes implicit and explicit claims. Pull them out:
Write these claims down explicitly. They become the targets for critique.
Choose two real practitioners whose published work, talks, books, or known technical opinions make them specifically relevant to the problem domain of this proposal. These are not generic "smart people" — they are people whose expertise directly addresses the architectural decisions being made.
If no well-matched real practitioners can be verified for the proposal domain, use two clearly named critique lenses instead. For example: operability-first, simplicity-first, data-integrity-first, or developer-experience-first. Say why those lenses are the right substitutes for this review.
For each expert, write:
These show the type of pairing — complementary expertise with productive tension:
Do not default to the same two people for every proposal. The experts must be chosen fresh based on what the proposal is actually about.
For each expert, work through the proposal systematically. The critique is not "what would they vaguely feel" — it's "what specific concerns would they raise, based on their known technical positions."
What they would challenge:
What they would approve:
What they would ask:
Each critique point must be grounded in something real — a known principle, a published argument, a documented pattern or anti-pattern the expert has discussed. Don't fabricate positions. If you're unsure whether an expert has opined on a specific topic, frame it as "based on their general emphasis on X, they would likely question Y" rather than "they have said Y is wrong." If no relevant source can be verified, switch to a named critique lens instead of pretending certainty.
After both critiques, step out of the expert personas and synthesize. You are now the architect again, informed by two strong perspectives.
Where both experts raised the same concern, it's almost certainly a real problem. Elevate these to top-priority recommendations.
Where the experts disagree, don't pick a winner arbitrarily. Explain the tension, what each side optimizes for, and recommend based on the specific context of this project and team. A startup with three engineers has different priorities than a platform team at a large company — even if both experts are "right" in the abstract.
Identify anything neither expert would catch because it falls outside both their domains. Operational concerns that a pure-architecture expert might miss. Developer experience issues that a systems expert might not prioritize. Business constraints that purely technical thinkers might ignore.
Rank the recommendations:
# Architecture Critique: [Feature/Proposal Name]
> Reviewing: [source — filename, conversation description, or PR reference]
> Date: YYYY-MM-DD
## Proposal Summary
[2-3 sentences restating what was proposed, so the critique stands alone.]
## Expert Perspectives
### [Expert 1 Name] — [Their Lens in ~5 Words]
**Relevant background:** [One sentence on why this person's expertise applies.]
**Grounding source:** [Book, talk, article, or project that supports using this perspective.]
**Would challenge:**
- [Specific concern, grounded in their known positions. Not vague — cite the
principle or pattern they'd invoke.]
- [...]
**Would approve:**
- [What parts of the proposal align with their thinking.]
**Key question they'd ask:**
> "[A pointed question that gets at the heart of their concern.]"
---
### [Expert 2 Name] — [Their Lens in ~5 Words]
**Relevant background:** [One sentence on why this person's expertise applies.]
**Grounding source:** [Book, talk, article, or project that supports using this perspective.]
**Would challenge:**
- [Specific concern, grounded in their known positions.]
- [...]
**Would approve:**
- [What parts of the proposal align with their thinking.]
**Key question they'd ask:**
> "[A pointed question that gets at the heart of their concern.]"
---
## Synthesis
### Where Both Experts Agree
[Concerns raised by both — these are your highest-confidence findings.]
### Where They Diverge
[Explain the tension and what each side optimizes for. Recommend based
on the actual project context, not in the abstract.]
### Blind Spots
[Anything the two expert lenses would miss — operational, business,
team-capacity, or domain-specific concerns.]
## Recommendations
### Must Address
1. **[Short title]** — [What to change and why. Be concrete — not "reconsider
the data model" but "the `orders` table should be partitioned by tenant_id
to avoid cross-tenant query leakage, per the multi-tenancy requirement."]
### Should Address
1. **[Short title]** — [What to change and why.]
### Consider
1. **[Short title]** — [What to refine and why.]
## Revised Confidence
[After this critique, how confident are you in the original proposal?
- Strong with minor adjustments
- Viable but needs rework in specific areas
- Fundamentally flawed — needs re-architecture
State which and briefly explain why.]
critique.md in that same folder (.specs/<feature-slug>/critique.md). The spec-write skill reads this fixed path. For material from any other source, write CRITIQUE-[feature-name].md alongside it.Critique, don't rubber-stamp. Every design has tradeoffs; your job is to surface the real ones, not to confirm the proposer's choices. But do not manufacture weaknesses when the proposal is genuinely strong.
Specificity is respect. Vague critique ("this might not scale") is useless and demoralizing. Specific critique ("this fan-out pattern creates N+1 queries against the notification service under the stated load of 10K concurrent users") is actionable and shows you actually engaged with the design.
Experts are lenses, not authorities. You're using their perspectives as analytical tools, not arguing from authority. "Martin Fowler wouldn't like this" is a bad critique. "This violates the principle of keeping aggregate boundaries small, which Fowler argues prevents cascading updates in domain-driven systems — and that matters here because..." is a good one.
Context beats dogma. An expert's general principle may not apply in a specific context. A scrappy prototype doesn't need the same rigor as a payments system. A solo developer's project doesn't need the same decomposition as a platform team's. Always weigh recommendations against the actual situation.
The goal is a better design, not a perfect one. Perfection is the enemy of shipping. Recommendations should make the proposal concretely better, not chase theoretical ideals. If the proposal is 80% right, say so and focus energy on the 20% that matters.
Evidence over performance. Do not fake citations, invented expert opinions, or exaggerated certainty. If a source, position, or critique cannot be grounded, say so and reduce the claim strength.
documentation
This skill should be used when the user asks to "write a spec", "create a spec", "spec this out", "plan this feature", or "write an implementation plan" for a feature or change. Creates a structured implementation spec in .specs/<slug>/spec.md and mirrors it to GitHub only when the current repository is hosted on GitHub.
data-ai
This skill should be used when the user asks to "execute the spec", "run the plan", "implement the spec", "implement the issue", "run all steps", or "run spec". Implements all steps from .specs/<slug>/spec.md, using a subagent per step when the harness supports subagents.
testing
This skill should be used when the user asks to "review a spec", "review an issue", "check the plan", "review the implementation plan", "find gaps in the spec", or "review spec". Reviews .specs/<slug>/spec.md for gaps and viability, edits it when needed, and mirrors changes to GitHub only when a GitHub mirror exists.
development
This skill should be used when the user asks to "remediate the audit findings", "fix the spec violations", "close the audit findings", "fix conformance violations", or "spec remediate". Reads a spec-audit report, drives one smart subagent per VIOLATION to converge the code back to the frozen spec, and re-audits until clean. Edits production code; never rewrites the spec.