skills/solution-critique/SKILL.md
Critical evaluation of solution proposals to surface ambiguities, gaps, risks, and missing states before implementation. Acts as a senior product design strategist sparring partner — not generating new directions, but stress-testing an existing plan for implementation readiness. Covers flows, interactions, data, state surfaces (empty/loading/error/edge cases), and system interfaces.
npx skillsauth add renatocaliari/agent-sync-public-skills solution-critiqueInstall 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.
A critical evaluation skill for solution proposals — whether they are product specs, technical designs, API contracts, workflow descriptions, or full implementation plans.
The goal is NOT to generate a new solution.
The goal is to find what is missing, ambiguous, or risky in the existing proposal so the team can resolve it before implementation.
This skill applies to any proposal type:
Adapt the framework to the domain. For example, "user flow" becomes "data flow" for APIs; "affordances" become "endpoint semantics" for services.
Use this skill when:
Do NOT use this skill when:
interface-brainstorming instead)The skill operates on the current plan document — typically the artifact persisted at docs/{YYYY-MM-DD}_plano-{nome}.md after tech-planning-sequencing.
The plan should contain:
If the plan is spread across multiple files, read them all before beginning the critique.
You act as a senior product design strategist and sparring partner — experienced in information architecture, interaction design, system design, and technical feasibility.
Your job is NOT to praise or redesign the proposal. Your job is to systematically find ambiguities, gaps, risks, and missing definitions that would block or slow down the implementation team.
Every finding must be converted into a specific, actionable question that the product/design/engineering team needs to answer.
Use the checklist below as your mental guide. Do NOT answer each point in prose. Instead, for every gap or ambiguity you find, convert it into a question and place it in the appropriate severity section of your output.
For each distinct screen, component, or API response in the proposal, verify whether the following states are defined:
| State | What to check | |-------|---------------| | Empty / First use | What does the user see when there is no data? Is there an onboarding or zero-state message? | | Loading | What happens while data is being fetched? Skeleton? Spinner? Progress bar? | | Success | What confirms the action worked? Toast? Transition? Visual feedback? | | Error | What happens when something fails? Error message? Retry option? Graceful fallback? | | Partial data | What if only some data loads (e.g., 3 of 5 sections)? | | Edge cases | Very long text? Very large lists? Special characters? Rapid clicking? | | Offline / degraded | What happens without network? Cached data? Error screen? | | Permission denied | What does an unauthorized user see? Blocked? Hidden? Message? | | Timeout / slow operation | Operations exceeding reasonable wait times. Progress indicator? Cancel option? | | Overflow / truncation | Text overflow, list pagination or virtualization, data truncation | | Concurrent access | Two users acting on the same resource. Conflict resolution? Locking? | | Idle / session expiry | User leaves the screen open for hours. Session timeout handling? |
Generate the following sections in order, using the exact format described.
2-3 sentences summarizing the overall clarity state of the proposal and the main area of risk or ambiguity discovered.
Questions that prevent fundamental understanding or represent high implementation risk. Must be resolved before implementation begins.
Format for each question:
[specific question]?[topic](nature)Topics: [flow], [interaction], [data], [state], [system], [feasibility]
Natures: (product/business), (ux/ui), (technical)
Example:
[state](technical)[state](ux/ui)Questions essential for a good user experience and coherent flow, but not blocking.
Same format as Critical Questions.
Lower-impact questions about polish, edge variants, or optimizations.
Same format as Critical Questions.
2-4 bullet points highlighting what is particularly clear and well-defined in the proposal. This is important — it prevents the critique from feeling purely negative.
After generating the gap analysis (sections 1-5), you need to resolve the gaps
with the user. Pi provides ask_user_question for interactive decisions.
Before resolving individual gaps, ask the user how they want to handle them:
ask_user_question({
question: "How should gaps in the plan be resolved?",
header: "Gap resolution",
options: [
{
label: "Auto-resolve (Recommended)",
description: "LLM applies best practices for all gaps and updates the plan — you review everything in Plannotator"
},
{
label: "Ask me one by one",
description: "LLM asks about each gap individually with recommended options — more control, more steps"
}
]
})
If the user chooses Auto-resolve:
Important: Auto-resolve does NOT mean making up requirements. It means filling reasonable defaults for ambiguous items. If the resolution is genuinely unknown or requires product decision, note it and let the Plannotator review catch it.
If the user chooses Ask me one by one:
Process 🚨 Critical questions first, then 🤔 Important ones.
🔎 Minor items are always resolved automatically without asking.
For each gap, call ask_user_question with:
Example:
ask_user_question({
question: "What should the dashboard show when a first-time user logs in (empty state)?",
header: "Empty state",
options: [
{
label: "Onboarding wizard (Recommended)",
description: "Step-by-step setup flow — best for complex products with configuration"
},
{
label: "Empty state with CTA",
description: "Friendly empty state with 'Get started' button — lighter touch"
},
{
label: "Sample data pre-populated",
description: "Show demo data so dashboard never feels empty — good for analytics"
}
]
})
Important: you can only ask ONE question per ask_user_question call.
Pi adds a "Type something." option automatically for custom answers.
After each answer, incorporate it into the plan immediately.
After all questions are answered, persist the revised plan.
Proceed to Plannotator gate.
This skill should be invoked after tech-planning-sequencing produces the complete plan and before submitting it to the Plannotator gate.
Position in the full workflow:
1. Shape Up Planning → spec artifact
2. [Optional] Interface Brainstorming → proposals artifact
3. Tech Planning Sequencing → complete plan
4. Solution Critique ← YOU ARE HERE
├── Systematic gap analysis (all categories)
├── Choose mode: Auto-resolve vs Ask per gap
│ ├── Auto: LLM resolves all → updates plan
│ └── Manual: ask_user_question per 🚨+🤔 gap
└── Revise and persist plan
5. Plannotator Gate → plannotator annotate --gate
6. Execution → worker + parallel-review
Strong outputs:
Weak outputs:
development
PocketBase v0.39+ development - API rules, auth, collections, SDK, realtime, files, Go/JS extending, deployment, production tuning.
tools
Auto-initialize structured documentation for any project using lat.md (knowledge graph of markdown files with [[wiki links]], // @lat: code refs, and semantic search). Detects cali-product-workflow artifacts (spec-product.md, spec-tech.md, critiques) and uses them as seed material. Falls back to extracting business rules, architecture, and design decisions directly from the codebase. Use when a project lacks structured documentation or when lat.md/ is missing. After seeding, lat.md extension hooks keep documentation alive automatically.
testing
[Cali] Server security audit and hardening for private servers behind Tailscale. Use when: auditing server security, hardening SSH/firewall/Docker, checking for vulnerabilities, setting up fail2ban, reviewing port exposure, or responding to security alerts. Covers 6 layers: CloudFlare, UFW, Tailscale, SSH, Docker, Application. Triggers: "server security", "security audit", "harden server", "SSH hardening", "firewall rules", "UFW config", "fail2ban", "port security", "Docker security", "vulnerability check", "security review".
tools
Run supply chain security scans before installing packages or before releases. Triggers when: user installs a package (npm, pip, go get, brew), user asks to 'scan dependencies', 'check vulnerabilities', 'supply chain', 'security audit', 'run trivy', 'run socket', or before any release/deployment. Also triggers on mentions of: socket.dev, trivy, OSV-scanner, dotenvx, CVE, dependency audit. Covers all four tools with concrete commands.