一键导入
shaping
Collaboratively shape a problem and compare solution directions before implementation.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Collaboratively shape a problem and compare solution directions before implementation.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Prepare relevant planning artifacts, including optional statechart and Dumplink context, for agent implementation work without overloading context.
Create a framing document from notes, messages, or conversation transcripts.
Map a chosen solution into places, affordances, consequences, stores, and wiring.
Reconcile an attached image, screenshot, wireframe, mockup, whiteboard, or hand-drawn sketch with existing frame, shaping, and breadboard artifacts. Use when a user drops in a visual, says "see this sketch" or "we are missing something," asks what the visual changes, or wants visual evidence incorporated without silently changing requirements, scope, or the selected shape.
Turn a selected stateful portion of a breadboard into a transition table and Mermaid statechart without changing the breadboard's authority.
Reflect on a breadboard by syncing it to implementation and finding design smells.
| name | shaping |
| description | Collaboratively shape a problem and compare solution directions before implementation. |
Use this skill when a request is still ambiguous, multiple solution directions are possible, or the team needs a durable planning artifact before building.
Turn a fuzzy request into a concrete shaping document that keeps four things separate but connected:
Planning artifacts live at different levels of abstraction. Truth has to stay consistent across those levels.
From high to low:
Each lower level adds detail. Each higher level is a designed view into the levels below.
Changes ripple both ways:
Whenever making a change:
Shaping is iterative. Requirements sharpen the shape. Shapes reveal missing requirements. The work is to keep both visible at the same time without collapsing them into each other.
You can start from either side:
There is no required order. Requirements and shapes inform each other throughout.
When a shaping doc already has a selected shape:
When summarizing what remains unsolved, explicitly list:
This gives the user immediate context on where the shaping stands and what still needs work.
Requirements describe what must be true of the solution. They should be stated independently of any one implementation approach.
Use identifiers like R0, R1, R2.
Recommended statuses:
Keep the top level scannable. Prefer no more than 9 top-level requirements. If requirements proliferate, group related ones into chunks and use sub-requirements such as R3.1, R3.2 rather than letting the top level grow without structure.
Appetite is the fixed time or scope budget the team is willing to spend on the bet. It constrains the shapes; it is not an estimate produced after a shape has already won.
Set the appetite after the requirements are accepted and before selecting a shape. Record:
Use the Appetite section in templates/shaping.md for a compact decision. Use templates/appetite-card.md when the appetite needs its own durable owner, rationale, or revisit conditions.
If appetite is still undecided, shapes may be explored, but no shape should be recorded as selected. Mark the decision as blocked on appetite rather than allowing an open-ended specification.
Before keeping a line in R, ask:
If a line names a mechanism, it probably belongs in the shape, not the requirements.
Common signs that an R is really a solution choice:
Examples:
❌ Use a TUI
✅ User can inspect and change the current state from one interaction surface
❌ Fetch timezone data from the internet on every load
✅ Timezone data must be accurate at runtime for the requested locale
❌ Use a local LLM to change locales and dates
✅ User can change locales and time window through natural-language input
Shapes are competing or composable solution directions.
Use letters for alternative directions:
A, B, CCURRENT should be used as the standard baseline when describing the existing system before proposing alternativesUse numbered parts for mechanisms inside a chosen direction:
B1, B2, B3If a part has internal alternatives, use nested notation:
B3-A, B3-BGive each serious shape a short title that characterizes the approach.
Good titles capture the essence of the approach in a few words.
Examples:
B: Single-list model with visibility filterCURRENT: Existing list page with inline add flowC: URL-driven state restorationB: The solutionC: Add a search input with some debounce and a whole bunch of browser-state handlingWhen the work touches an existing system, model that existing behavior as CURRENT first. Treat it as the standard baseline shape, not an optional flourish.
Use CURRENT to:
A, B, or CThen compare alternatives against CURRENT rather than shaping in a vacuum.
Keep notation stable throughout the conversation as an audit trail.
When refining or composing later directions, reference earlier parts rather than silently renaming everything. Stable notation helps the user track what changed and why.
Shape parts should describe mechanisms, not intentions.
Persist filter state in the URL and restore it on loadState should work betterUse a flag when a mechanism is described at a high level but is not yet concretely understood.
| Part | Mechanism | Flag |
|---|---|---|
| B1 | Save state in URL | |
| B2 | Integrate local LLM command parser | ⚠️ |
Meaning:
⚠️ = described in outline, but the how is still unresolvedA flagged unknown should not be treated as confidently solved in a fit check. Resolve it or spike it.
When the same logic appears in multiple parts, extract it into a standalone part rather than duplicating it.
This keeps the shape cleaner and makes later fit checks, detailing, and slicing easier to reason about.
CURRENT when the change is not greenfield.These can happen in any order as the shaping evolves:
sketch-reconciliation skill when visual evidence may change the active artifacts---
planning: true
shaping: true
---
# [Project] — Shaping
## Requirements
| ID | Requirement | Status |
|----|-------------|--------|
| R0 | ... | Core goal |
## Appetite
- Time budget:
- Team shape:
- Review point:
- Cut line:
- Accepted uncertainty:
- Must-resolve unknowns:
## Shapes
### CURRENT: [Existing system baseline]
| Part | Mechanism | Flag |
|------|-----------|:----:|
| CURRENT1 | ... | |
### A: [Short title]
| Part | Mechanism | Flag |
|------|-----------|:----:|
| A1 | ... | |
### B: [Short title]
| Part | Mechanism | Flag |
|------|-----------|:----:|
| B1 | ... | |
## Fit Check
| Req | Requirement | Status | CURRENT | A | B |
|-----|-------------|--------|---------|---|---|
| R0 | ... | Core goal | ✅ | ✅ | ❌ |
## Reverse Fit Check
| Shape Part | Mechanism | Requirement(s) Served | Justified? |
|------------|-----------|------------------------|:----------:|
| B1 | ... | R2, R4 | ✅ |
## Appetite Fit
| Shape | Fits appetite? | Required cuts | Uncertainty / spike |
|-------|:---------------:|---------------|---------------------|
| A | ✅ | ... | ... |
| B | ❌ | ... | ... |
## Decision
Chosen direction: B
## Detail B
[Optional deeper breakdown or breadboard handoff]
Use one table to compare requirements against the available shapes.
Rules:
✅ or ❌If something passes every visible check but still feels wrong, there is probably a missing requirement. Articulate it, add it, and re-run the fit check.
After checking requirements against shapes, also check whether every selected shape part is justified by at least one requirement.
Use this to catch unjustified mechanisms, accidental scope creep, or parts that exist because they sounded useful rather than because they satisfy the shaped problem.
| Shape Part | Mechanism | Requirement(s) Served | Justified? |
|---|---|---|---|
| B1 | Persist filter state in the URL | R2, R4 | ✅ |
| B2 | Add export-to-CSV action | — | ❌ |
Rules:
✅ or ❌When comparing alternatives inside one part, run a local fit check instead of forcing every choice into the top-level matrix.
Example:
## B3: State persistence alternative
| Req | Requirement | Status | B3-A | B3-B |
|-----|-------------|--------|------|------|
| R1 | State survives refresh | Must-have | ✅ | ❌ |
| R2 | Back button restores state | Must-have | ✅ | ✅ |
Use this when:
Keep the top-level fit check for comparing whole directions. Use component-scoped fit checks to resolve alternatives within a direction.
Use a macro fit check when working at a higher level and many mechanisms are still unresolved.
Instead of asking only whether the shape passes, ask two things:
This is useful when early shapes feel directionally right but are still full of flagged unknowns.
When displaying requirements, shapes, or fit checks, show the full table rather than a summary whenever practical. Shaping is collaborative negotiation. Partial views hide what matters.
When re-rendering a requirements table, shape table, or fit check after making changes, mark changed or added lines with 🟡 so the user can instantly spot what changed.
The user should not have to mentally diff a whole table to understand what moved.
A spike is an investigation task used when a part is still uncertain and you need objective information about how something works or what concrete steps would be required.
Use a spike to:
Investigate before proposing when confidence in the mechanism is low. A spike should discover how the existing system works and what concrete changes would be needed before the shape claims the part is understood.
Create spikes in their own file when the investigation is substantial.
Examples:
spike-llm-runtime.mdspike-search-index.mdAsk questions about mechanics, for example:
Avoid vague yes/no questions and avoid using the spike only to guess effort.
## [Part] Spike: [Title]
### Context
Why this needs investigation.
### Goal
What we are trying to learn.
### Questions
| # | Question |
|---|----------|
| Q1 | ... |
| Q2 | ... |
### Acceptance
Spike is complete when all questions are answered and the mechanism can be described concretely.
Acceptance should describe the understanding the spike will produce, not the decision you will make afterward.
Examples:
We can describe how state is restored today and what would need to change.We can describe the concrete steps needed to support the proposed mechanism.We can decide whether to proceed.We can answer whether this is a blocker.When a shape is chosen, detail it rather than turning it into a new sibling shape.
Use Detail B to show that the work is a deeper breakdown of shape B, not a new alternative.
Detailing usually produces:
At that point, use the breadboarding skill.
When the user drops in a sketch or screenshot and asks what is missing or what should change, use the sketch-reconciliation skill. Do not treat the image as an automatic shape update.
The reconciliation must separate visible observations from interpretations, map observations to existing IDs, show proposed deltas, and apply accepted changes across every affected layer. Rerun fit checks when requirements or shape parts change.
Use this as an optional exercise before handing work off to breadboarding or slice planning.
The purpose is to make the full implied scope visible and externalize the grouping and sequencing work that strong builders often do in their heads.
List every task implied by the selected shape.
Do not organize yet. Prioritize completeness over structure.
Group tasks by asking: which tasks can be completed together, in isolation from the rest?
Use unnamed groups first. Do not name them until they are filled.
This helps the grouping emerge from the actual work rather than from pre-conceived categories.
Constraints:
Once groups are filled, give each one a name.
Names should reflect what the group does. These names become scope handles — shorthand for the mechanisms being built.
Look across the named groups and ask: which are more unknown than the others?
Start by identifying what is routine and familiar. What remains are the unknowns.
Flag unknown groups explicitly before sequencing.
Output from this exercise:
This output feeds naturally into breadboarding and then into slice sequencing.
Shaping moves through two main phases:
Typical document stack:
The frame captures the why. The shaping doc captures requirements, appetite, shapes, fit checks, and the selected direction. The breadboard or slices doc captures how the chosen direction becomes concrete and incremental. Slice plans capture implementation detail for individual slices.
Truth has to stay consistent across levels. If a mechanism changes in the shaping doc, downstream artifacts may need updates. If implementation planning reveals a new mechanism, the shaping doc may need to reflect it.
Whenever making a change:
Move from shaping to breadboarding when:
Always leave behind a document that someone else could read later and understand without replaying the entire conversation.