skills/canon/skills/refine/SKILL.md
Requirements sharpening for build requests. Classifies request fuzziness into tiers (trivial, clear, fuzzy) and applies proportionate PM effort -- from pass-through to full creative divergence. Produces a sharpened-request artifact for architect hand-off. Used by the PM orchestrator.
npx skillsauth add micherra/canon refineInstall 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.
This skill defines the PM's protocol for sharpening build requests before routing to the architect. It scales effort to fuzziness: trivial requests pass through, clear requests get stress-tested, fuzzy requests get full creative divergence before converging.
Determine which tier applies to the incoming request. This is the first thing the PM does after intent classification confirms a build request.
Used for clear-tier requests and as the second phase of fuzzy-tier requests (after divergence converges).
Run 1-2 MCP triage calls (get_file_context, graph_query) to ground the conversation in codebase reality. This is the same scope check the PM already does -- but the results now inform the stress-test questions.
Apply these frameworks to the request. You do not need to use all of them -- pick the 1-2 that are most revealing for this specific request.
Pre-mortem: "If this build fails 2 weeks from now, what went wrong?" Surface risks the user hasn't considered. Focus on scope creep, unstated dependencies, and integration risks.
JTBD (Jobs to Be Done): "What job is the user hiring this feature to do?" Reframe the request in terms of the underlying need. Often reveals that the proposed solution is one of several ways to serve the real job.
Constraint-Based: "What are the hard constraints vs nice-to-haves?" Force explicit prioritization. Especially useful when the request bundles multiple sub-features without stating which are essential.
First Principles: "What is the core problem beneath the proposed solution?" Decompose the request to its essential elements. Useful when the user has proposed a specific implementation but the underlying problem might have simpler solutions.
Present findings as natural conversation (not a form). The PM:
Write sharpened-request.md using the template at templates/sharpened-request.md. Save to ${WORKSPACE}/plans/${slug}/sharpened-request.md.
Used for fuzzy-tier requests. Adds a creative divergence phase before the stress-test.
Same as Section 2 Phase 1 -- run MCP triage calls to understand the codebase landscape around the fuzzy area.
The PM generates 2-3 alternative framings of the request. This is creative work -- the PM is not asking the user to choose from options, but thinking out loud about different ways to interpret and solve the underlying problem.
Alternative Framing: "What if the problem were stated as X instead of Y?" Reframe the request from different angles. For example, "improve search" could be framed as: (a) make search faster (performance), (b) make search smarter (relevance), or (c) make search more accessible (UI/UX).
First Principles decomposition: Break the fuzzy request into its constituent sub-problems. "Clean up the API layer" might decompose into: naming inconsistencies, missing error handling, redundant endpoints, and missing documentation.
Scope gradient: Present the request on a spectrum from minimal to maximal interpretation. "What's the smallest thing we could do that would meaningfully improve this? What's the biggest?"
Present the alternative framings to the user as a thinking-out-loud conversation, not as a multiple-choice menu. State which framing you lean toward and why. Invite the user to refine, combine, or redirect.
Once the user and PM align on a framing:
Same as Section 2 Phase 4.
The PM has opinions and uses them. This is not a neutral facilitator role.
Watch for these failure modes during the refine conversation:
${WORKSPACE}/plans/${slug}/sharpened-request.md
Follow templates/sharpened-request.md exactly.
The architect reads the sharpened-request.md as the primary requirements input. The architect's Requirements Interview Fallback (in architect.md) handles cases where the sharpened request has gaps.
data-ai
Procedural how-to for inter-wave handoff coordination: analyze execution reports, push back on weak verdicts, draft next-wave prompts.
development
Principle, convention, and agent-rule authoring. Covers creation, editing, and applying accepted learner proposals. Handles interview, examples, conflict detection, format validation, and save. Loaded by the writer agent.
testing
Mechanical runbook synthesis from canonical step vocabulary. Composes a step-by-step runbook from the design using only canonical step IDs. Validates step composition, enforces mandatory tail, and emits per-signal confidence. Used by the architect agent.
development
Strategic analysis and planning brief production. Evaluates build requests, challenges assumptions, considers alternatives. Used by the architect agent as a requirements interview fallback when PM conversation left gaps.