@skhema/cli 0.4.3 → 0.4.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/dist/commands/document.d.ts +10 -0
  2. package/dist/commands/document.d.ts.map +1 -0
  3. package/dist/commands/document.js +122 -0
  4. package/dist/lib/api/command-helpers.d.ts.map +1 -1
  5. package/dist/lib/api/command-helpers.js +2 -1
  6. package/dist/lib/api/passthrough.d.ts.map +1 -1
  7. package/dist/lib/api/passthrough.js +12 -3
  8. package/dist/lib/api/payload.d.ts.map +1 -1
  9. package/dist/lib/api/payload.js +2 -1
  10. package/dist/program.d.ts.map +1 -1
  11. package/dist/program.js +2 -0
  12. package/package.json +2 -2
  13. package/skills/.manifest.json +8 -10
  14. package/skills/skhema-calibrate/SKILL.md +90 -0
  15. package/skills/skhema-calibrate/references/assumptions.md +77 -0
  16. package/skills/skhema-calibrate/references/coherence.md +95 -0
  17. package/skills/skhema-calibrate/references/freshness.md +81 -0
  18. package/skills/skhema-calibrate/references/language.md +74 -0
  19. package/skills/skhema-communicate/SKILL.md +94 -0
  20. package/skills/skhema-communicate/references/audience-adaptation.md +103 -0
  21. package/skills/skhema-communicate/references/board-update.md +93 -0
  22. package/skills/skhema-communicate/references/decision-brief.md +93 -0
  23. package/skills/skhema-communicate/references/team-brief.md +91 -0
  24. package/skills/skhema-compose/SKILL.md +98 -0
  25. package/skills/skhema-compose/references/assemble.md +119 -0
  26. package/skills/skhema-compose/references/decompose.md +104 -0
  27. package/skills/skhema-compose/references/metrics-tree.md +101 -0
  28. package/skills/skhema-compose/references/options.md +109 -0
  29. package/skills/skhema-frame/SKILL.md +86 -0
  30. package/skills/skhema-frame/references/challenge.md +84 -0
  31. package/skills/skhema-frame/references/decision.md +92 -0
  32. package/skills/skhema-frame/references/outcome.md +82 -0
  33. package/skills/skhema-frame/references/policy.md +82 -0
  34. package/skills/skhema-frame/references/scope.md +79 -0
  35. package/skills/skhema-operate/SKILL.md +107 -0
  36. package/skills/skhema-operate/references/auth.md +110 -0
  37. package/skills/skhema-operate/references/author-elements.md +158 -0
  38. package/skills/skhema-operate/references/navigate.md +110 -0
  39. package/skills/skhema-operate/references/surfaces.md +67 -0
  40. package/skills/skhema-operate/references/validation-loop.md +84 -0
  41. package/skills/skhema-pressure-test/SKILL.md +107 -0
  42. package/skills/skhema-pressure-test/references/decision-grill.md +127 -0
  43. package/skills/skhema-pressure-test/references/full-grill.md +118 -0
  44. package/skills/skhema-pressure-test/references/pre-mortem.md +140 -0
  45. package/skills/skhema-challenge-framing/SKILL.md +0 -28
  46. package/skills/skhema-coherence-check/SKILL.md +0 -28
  47. package/skills/skhema-element-decomposition/SKILL.md +0 -28
  48. package/skills/skhema-element-writer/SKILL.md +0 -20
  49. package/skills/skhema-judgment-audit/SKILL.md +0 -28
  50. package/skills/skhema-semantic-sharpening/SKILL.md +0 -28
  51. package/skills/skhema-strategy-advisor/SKILL.md +0 -20
  52. package/skills/skhema-workspace-navigator/SKILL.md +0 -20
@@ -0,0 +1,119 @@
1
+ # Assemble — judgments into a strategy structure
2
+
3
+ Use this when the user has material but no shape: a pile of notes, a rambling
4
+ doc, a set of decisions made at different times, facts from a research spike.
5
+ Individually each piece might be fine. The problem is you can't tell whether
6
+ together they form a strategy or just a heap. Assembling lays every piece into
7
+ the five components so gaps and misfits become visible.
8
+
9
+ A strategy is assembled well when someone can read the five components top to
10
+ bottom and each one follows from the one above it — the method answers the
11
+ diagnosis, the initiatives enact the method, the measures watch the initiatives.
12
+
13
+ ## The five components, and what belongs in each
14
+
15
+ Lay them in this order. Each answers one question.
16
+
17
+ 1. **Diagnosis** — *what is actually going on?* The honest account of the
18
+ situation and the single crux inside it. Mostly **judgments** (claims about
19
+ the world) plus the facts behind them. Not "we want to grow" — that's a wish.
20
+ "Growth has stalled because activation dropped from 40% to 22% after the
21
+ pricing change" — that's a diagnosis.
22
+
23
+ 2. **Method & Positioning** — *how will we win, given that?* The guiding
24
+ approach and where you choose to stand. One or a few **commands** at high
25
+ altitude — the overall approach every lower decision must obey. "Compete on
26
+ time-to-value, not feature breadth." This is the pivot: it must answer the
27
+ diagnosis directly.
28
+
29
+ 3. **Portfolio of Initiatives** — *what are we actually doing?* The coherent set
30
+ of actions, and loudly what you're *not* doing. **Commands** (things to do)
31
+ and the **things** they act on. Every initiative should trace up to the
32
+ method. An initiative that doesn't is either miscategorized or a stray pet
33
+ project — flag it.
34
+
35
+ 4. **Measures** — *how will we know it's working, early?* **Things** (the
36
+ outcomes and the variables you watch) with baselines. If a measure has no
37
+ baseline it can't tell you anything yet — hand that to metrics-tree.
38
+
39
+ 5. **Support Structures** — *what makes this possible rather than aspirational?*
40
+ The capabilities, systems, hiring, and resourcing the portfolio needs. Often
41
+ the quietest component and the one that sinks strategies when it's empty.
42
+
43
+ ## The move
44
+
45
+ ### 1. Empty the pile onto the table
46
+
47
+ List every piece the user has, briefly. Don't organize yet. You're taking
48
+ inventory.
49
+
50
+ ### 2. Sort each piece by kind, then place it
51
+
52
+ For each piece, first tag it — judgment, command, or thing (see SKILL.md). The
53
+ kind hints at altitude — high-altitude commands read as Method, concrete
54
+ commands as the Portfolio — but the kind does NOT by itself decide the
55
+ component (judgments, for instance, don't simply "cluster in Diagnosis": an
56
+ assumption_hypothesis belongs in the Portfolio and a constraint in Method). If
57
+ you are working in the Skhema environment, placement is constrained — the
58
+ vocabulary's type→component mapping is the authority, not grammatical mood; see
59
+ `skhema-operate` author-elements for the enforced table. Then place each piece
60
+ in the component it answers, and say the placement out loud so the user can
61
+ object.
62
+
63
+ ### 3. Read each component and test the seam above it
64
+
65
+ Go component by component and check the join to the one before:
66
+
67
+ - Does **Method** actually answer the **Diagnosis**, or a different problem than
68
+ the one diagnosed? (Common: a diagnosis about activation, a method about
69
+ enterprise sales. The seam is broken.)
70
+ - Does every **Initiative** trace up to the **Method**? Cross out any that
71
+ don't, or move them.
72
+ - Does every **Measure** watch something an **Initiative** moves? A measure
73
+ watching nothing you're doing is theater.
74
+ - Do the **Support Structures** actually cover what the Portfolio needs, or is
75
+ the plan assuming capabilities nobody has?
76
+
77
+ ### 4. Name the three failure states
78
+
79
+ As you place pieces, call out each of these the moment you see it:
80
+
81
+ - **Missing** — a component is thin or empty. An empty Diagnosis means the
82
+ strategy is a list of actions with no reason. An empty Support Structures
83
+ means it's a wish. Empty Measures means it can't be steered.
84
+ - **Premature** — a piece is placed further down than the evidence supports. A
85
+ detailed Portfolio built on a Diagnosis that's still guesses is premature;
86
+ the initiatives are elaborate bets on an unverified claim. Push it back up:
87
+ "resolve the diagnosis before committing this initiative."
88
+ - **Misfiled** — a piece is in the wrong component. An "outcome" sitting in the
89
+ Portfolio (it's a Measure). A "decision" in the Diagnosis (it's a command, it
90
+ belongs in Method or Portfolio). Move it and say why.
91
+
92
+ ## What good output looks like
93
+
94
+ The five components with the user's own pieces slotted in, plus a short verdict
95
+ per component: *solid / thin / missing / premature*. And one headline: the
96
+ single most important gap or misfit. For example:
97
+
98
+ > **Diagnosis** — solid (activation drop, well-evidenced).
99
+ > **Method** — *thin.* You have initiatives but no stated guiding approach; the
100
+ > initiatives don't share a logic. This is the gap to close first.
101
+ > **Portfolio** — five initiatives; two don't trace to any method. Premature.
102
+ > **Measures** — one measure, no baseline (hand to metrics-tree).
103
+ > **Support Structures** — empty. Two initiatives assume a data team you don't
104
+ > have.
105
+ >
106
+ > **Headline:** you have actions and a diagnosis but no method connecting them.
107
+ > Write the guiding approach; half the portfolio will fall away on its own.
108
+
109
+ ## Failure modes to catch
110
+
111
+ - **Forcing the pile to fit.** If a piece won't go anywhere, that's signal —
112
+ maybe it's noise, maybe it reveals a missing component. Don't jam it in.
113
+ - **Skipping the seams.** Placing pieces is easy; the value is testing whether
114
+ each component follows from the one above. Always walk the seams.
115
+ - **Portfolio-heavy strategies.** Most piles are 80% initiatives. A fat Portfolio
116
+ over a thin Diagnosis/Method is the single most common misfit. Say it.
117
+ - **Treating assembly as done.** Assembly reveals gaps; it doesn't fill them.
118
+ Hand missing measures to metrics-tree, unmade choices to options, and a shaky
119
+ diagnosis back to decompose.
@@ -0,0 +1,104 @@
1
+ # Decompose — big question into discrete judgments
2
+
3
+ Use this when the user has a strategic question too big to reason about in one
4
+ sitting: "what do we do about the platform shift?", "how do we fix retention?",
5
+ "should we move upmarket?" The goal is not to answer it. The goal is to break it
6
+ into the smaller judgments it secretly depends on, so each can be decided on its
7
+ own and in the right order.
8
+
9
+ A question is decomposed well when every piece is something a person could argue
10
+ is true or false, or decide yes or no, without first answering another piece.
11
+
12
+ ## The move
13
+
14
+ Work through this WITH the user. Don't hand them a finished tree — build it in
15
+ front of them, one question at a time.
16
+
17
+ ### 1. Restate the question as a single sentence
18
+
19
+ Make them commit to one sentence. If they can't, that's the first finding: the
20
+ "question" is two or three questions wearing a trench coat. Split it and pick
21
+ one to decompose now.
22
+
23
+ ### 2. Ask "what would have to be true or decided for this to have an answer?"
24
+
25
+ This is the whole engine. For the top question, ask it once and collect every
26
+ piece the user surfaces. Push for pieces, not prose. Bad: "we need to understand
27
+ the market better." Good: "will incumbents cut price when we enter?" — that's a
28
+ judgment someone can hold a position on.
29
+
30
+ Keep asking until pieces stop being decidable and start being restatements of
31
+ the top question. Then stop.
32
+
33
+ ### 3. Sort each piece into its kind
34
+
35
+ For every piece, tag it out loud:
36
+
37
+ - **Judgment** (a claim about the world) — "churn is driven by onboarding, not
38
+ price." Right or wrong; carries evidence.
39
+ - **Command** (a decision to act) — "we will not build a mobile app this year."
40
+ Followed or not; carries consequences.
41
+ - **Thing** (a named object) — "the activation metric", "the SMB segment."
42
+
43
+ If a piece won't sort cleanly, it's usually two pieces fused. "We should target
44
+ enterprise because they don't churn" is a command ("target enterprise") welded
45
+ to a judgment ("enterprise don't churn"). Split it. The judgment can be wrong
46
+ while the command still stands, or vice versa — that's exactly why they must be
47
+ separate.
48
+
49
+ ### 4. Draw the dependencies
50
+
51
+ For each piece, ask: "does deciding this depend on any other piece first?" Draw
52
+ the arrows. You are looking for three shapes:
53
+
54
+ - **Roots** — pieces that depend on nothing. These get decided first. Often
55
+ they're judgments about the world (facts to check, assumptions to test).
56
+ - **Chains** — B can't be decided until A is. Sequence the work along these.
57
+ - **Independent** — pieces with no arrows between them can be worked in
58
+ parallel, possibly by different people.
59
+
60
+ The dependency shape IS the plan of attack. A judgment everything else hangs on
61
+ ("do enterprise buyers actually churn less?") is the one to resolve first,
62
+ because being wrong about it collapses everything downstream.
63
+
64
+ ### 5. Mark confidence and the load-bearing pieces
65
+
66
+ For each judgment, ask the user how sure they are and what it rests on. Flag the
67
+ ones that are (a) load-bearing — lots of arrows point out of them — and (b)
68
+ low-confidence. That intersection is where the strategy is most fragile. Say so
69
+ plainly: "your whole plan assumes X, and you told me you're guessing about X.
70
+ Resolve X before anything else."
71
+
72
+ ## What good output looks like
73
+
74
+ A short, dependency-ordered list. For example, decomposing "should we move
75
+ upmarket to enterprise?":
76
+
77
+ - **Judgment, root, low confidence:** enterprise buyers churn less than SMB.
78
+ *(load-bearing — three other pieces depend on it; resolve first)*
79
+ - **Judgment, root:** our current product clears enterprise security review.
80
+ - **Judgment, depends on the two above:** we can reach enterprise buyers without
81
+ a field sales team.
82
+ - **Command, depends on all judgments above:** shift the next two quarters of
83
+ roadmap to enterprise readiness.
84
+ - **Thing:** "enterprise-ready" — needs its own definition before the command
85
+ above means anything.
86
+
87
+ Notice the last line: decomposition often surfaces a *thing* that nobody has
88
+ defined, and the strategy can't proceed until it's named. Surfacing that is a
89
+ win, not a loose end.
90
+
91
+ ## Failure modes to catch
92
+
93
+ - **Boiling the ocean.** If you've generated 30 pieces, you decomposed the
94
+ universe, not the question. Prune to the pieces that actually gate a decision.
95
+ - **Fake pieces.** "We need more data" is not a judgment or a command. Ask: data
96
+ about *what*, to decide *what*? until it becomes a real piece or disappears.
97
+ - **Restatement loops.** If a "smaller" piece is just the big question reworded,
98
+ you've hit the bottom. Stop decomposing that branch.
99
+ - **Solutions in disguise.** Users smuggle in the answer they already want as if
100
+ it were a neutral piece. Name it: "that's a command you've pre-decided — is it
101
+ actually settled, or are we deciding it here?"
102
+ - **All commands, no judgments.** A decomposition that's all "we will…" with no
103
+ underlying claims about the world is a wish list. Every command should trace
104
+ back to a judgment that justifies it.
@@ -0,0 +1,101 @@
1
+ # Metrics-tree — outcomes to measures to baselines
2
+
3
+ Use this when the user has a goal or outcome they care about but no honest way to
4
+ know if they're winning: "we want better retention", "grow the pipeline",
5
+ "improve activation." An outcome you can't observe is a hope. This move connects
6
+ each outcome to something you can actually watch, and to a starting number you
7
+ can compare against — so movement is visible and arguable.
8
+
9
+ The rule that makes it work: **every outcome needs a measure, and every measure
10
+ needs a baseline.** No measure, and the outcome is unfalsifiable. No baseline,
11
+ and the measure can't tell you if anything changed.
12
+
13
+ ## The three links in each chain
14
+
15
+ 1. **Outcome** — the *thing* you want to be true. State it as a noun phrase, not
16
+ a wish. "Activated accounts in week one." Not "improve activation" (that's a
17
+ command; the outcome is the state you're steering toward).
18
+ 2. **Measure** — the observable variable that stands in for the outcome. "% of
19
+ new accounts that complete first key action within 7 days." It must be
20
+ something you can currently read or start reading. If you can't observe it,
21
+ it's not a measure yet.
22
+ 3. **Baseline** — the starting value, dated. "22%, as of June." Without this,
23
+ "we hit 30%" means nothing — up from what?
24
+
25
+ Chain them: **outcome → measure → baseline.**
26
+
27
+ ## The move
28
+
29
+ ### 1. Name the outcome as a state, not an action
30
+
31
+ Push the user from verb to noun. "Improve onboarding" → "new users reaching
32
+ first value." You're steering toward a state of the world; name that state.
33
+
34
+ ### 2. Ask "what would you watch to know this is happening?"
35
+
36
+ For each outcome, get one measure — or a small handful. Pressure each candidate:
37
+
38
+ - **Can you observe it now, or soon?** If it needs instrumentation you don't
39
+ have, that's a Support Structure task; note it and don't pretend the measure
40
+ exists yet.
41
+ - **Does it move only when the outcome moves?** A measure that a dozen unrelated
42
+ things push around is a bad proxy. "Total signups" is a poor proxy for
43
+ activation — a marketing spike moves it without any activation change.
44
+ - **Can it be gamed without the outcome improving?** If yes, expect it to be.
45
+ Prefer measures that are hard to move without actually delivering the outcome.
46
+
47
+ ### 3. Get the baseline — the real one, dated
48
+
49
+ For each measure, ask for the current value and when it was taken. Three cases:
50
+
51
+ - **Known** — write it with its date. Done.
52
+ - **Knowable but not looked up** — send them to get it. A baseline you'll fill
53
+ in "later" is a baseline you don't have.
54
+ - **Unknowable right now** — the honest answer is "we don't measure this yet."
55
+ Then the first initiative is to start measuring, and the baseline is the first
56
+ reading. Say so; don't invent a number.
57
+
58
+ A guessed baseline is worse than none — it manufactures false movement.
59
+
60
+ ### 4. Add a leading measure where the outcome is slow
61
+
62
+ Some outcomes only show up quarters later (retention, LTV). Watching only the
63
+ lagging measure means you learn you failed far too late. Ask: "what moves early
64
+ that predicts this?" Pair a **leading** measure (activation this week) with the
65
+ **lagging** one (retention next quarter). The leading one steers; the lagging
66
+ one confirms.
67
+
68
+ ### 5. Check the tree connects to real decisions
69
+
70
+ For each measure ask: "if this number moved the wrong way next week, what would
71
+ you do differently?" If the answer is "nothing," the measure is decoration —
72
+ cut it. Every measure should be tied to an action you'd take when it moves.
73
+
74
+ ## What good output looks like
75
+
76
+ A small set of chains, each complete, leading + lagging where relevant:
77
+
78
+ > **Outcome:** new accounts reaching first value.
79
+ > **Leading measure:** % completing first key action within 7 days.
80
+ > **Baseline:** 22%, June.
81
+ > **Lagging measure:** 90-day retention of those accounts.
82
+ > **Baseline:** not currently measured → first initiative is to instrument it;
83
+ > baseline = first reading.
84
+ > **If it drops:** we pause feature work and audit the onboarding flow.
85
+
86
+ Three chains like this beat a dashboard of twenty numbers nobody acts on.
87
+
88
+ ## Failure modes to catch
89
+
90
+ - **Vanity measures.** Big, always-up-and-to-the-right numbers (total users,
91
+ cumulative signups) that can't go down and so can't inform anything. Reject.
92
+ - **Outcome = measure confusion.** "Our goal is 30% activation" collapses the
93
+ outcome (users reaching value) into one measure. Keep them distinct so you can
94
+ swap a bad proxy without losing the goal.
95
+ - **Missing baseline waved away.** "We'll figure out the baseline later" — no.
96
+ Either look it up now or make measuring it the first step. Don't proceed with a
97
+ hollow chain.
98
+ - **Only lagging measures.** All the measures resolve in six months. You've built
99
+ a strategy you can't steer, only autopsy. Add leading measures.
100
+ - **Measures with no action.** If nothing changes when the number moves, it's not
101
+ a measure, it's a decoration. Cut it.
@@ -0,0 +1,109 @@
1
+ # Options — compare alternatives as typed judgments
2
+
3
+ Use this when the user is stuck between paths: "should we build or buy?", "A or
4
+ B or C?", "do we go upmarket or double down where we are?" The trap is that
5
+ options get argued in prose — a paragraph for each, each written to sound good,
6
+ none comparable. This move forces every option through the *same* criteria, so
7
+ the comparison is real and the trade-offs are explicit instead of buried in
8
+ adjectives.
9
+
10
+ An option set is compared well when a reader can see, for each option, how it
11
+ scores on every criterion, what it costs you, and what evidence backs the score —
12
+ and could disagree with a specific cell rather than a vibe.
13
+
14
+ ## Why prose comparisons lie
15
+
16
+ Written as paragraphs, each option gets described on the dimensions where it
17
+ happens to look good and stays quiet on the rest. Option A's paragraph talks
18
+ speed; Option B's talks robustness; they never meet on the same axis. The
19
+ decision then goes to whoever wrote the most persuasive paragraph. Typing the
20
+ comparison — same criteria for all, evidence per cell — kills that.
21
+
22
+ ## The move
23
+
24
+ ### 1. State each option as one committable sentence
25
+
26
+ Each option is a **command** — a course of action you could actually choose.
27
+ "Build our own billing system." "Buy Stripe Billing and integrate it." Make each
28
+ one a single sentence the user would commit to, not a theme. If an "option" is
29
+ vague ("improve billing somehow"), it's not an option yet — it's a goal; send it
30
+ to decompose.
31
+
32
+ ### 2. Fix the criteria BEFORE looking at the options
33
+
34
+ This is the discipline that makes the whole thing honest. Agree the criteria
35
+ first, with the options out of view, so nobody tunes the criteria to favor a
36
+ pre-chosen winner. Good criteria are:
37
+
38
+ - **Decision-relevant** — something that would actually change the choice.
39
+ - **Comparable across all options** — every option can be scored on it.
40
+ - **Few** — four to six. More than that and you're hiding the real drivers in
41
+ noise.
42
+
43
+ Typical: cost, time-to-value, reversibility, risk, fit with the strategy,
44
+ capability required.
45
+
46
+ ### 3. Score every option on every criterion — same scale, evidence per cell
47
+
48
+ Build the grid: options as rows, criteria as columns. For each cell, give a score
49
+ (a number, or high/med/low) AND the evidence or reasoning behind it. A score with
50
+ no evidence is a guess typed as a judgment — mark it explicitly as an assumption
51
+ so its weight is visible. Fill every cell; a blank cell is usually the option's
52
+ weakness hiding.
53
+
54
+ ### 4. Name the trade-off on each option out loud
55
+
56
+ Every option buys something and pays for it somewhere. State both:
57
+ "Build gives us full control and costs two quarters of engineering we'd take from
58
+ the roadmap." "Buy ships next month and locks us to their pricing and limits."
59
+ The point of options is not to find a free lunch; it's to choose which price you
60
+ prefer to pay. If an option looks strictly best on every criterion, you've
61
+ either found the obvious answer or your criteria are missing the dimension where
62
+ it's weak — check the latter first.
63
+
64
+ ### 5. Separate reversible from one-way choices
65
+
66
+ Flag whether each option is easy to undo or hard. A cheap, reversible option
67
+ that scores second-best is often the right first move — you learn, then choose
68
+ again. A one-way door demands more evidence before you walk through it. Weight
69
+ the scores by this: on a reversible choice, bias toward acting and learning; on
70
+ an irreversible one, bias toward resolving the load-bearing judgments first.
71
+
72
+ ### 6. Surface the load-bearing judgment under the choice
73
+
74
+ Most option decisions actually hinge on one uncertain judgment about the world.
75
+ "Build vs buy" often reduces to "will our needs outgrow the vendor's product?"
76
+ Name that judgment. Sometimes resolving it decides the whole thing and the grid
77
+ becomes unnecessary — that's a great outcome. Hand it to decompose if it needs
78
+ breaking down.
79
+
80
+ ## What good output looks like
81
+
82
+ A grid, then a recommendation with its trade-off named:
83
+
84
+ | Criterion | A: Build | B: Buy | C: Partner |
85
+ |---|---|---|---|
86
+ | Time to value | 2 qtrs *(eng estimate)* | 3 wks *(vendor docs)* | 6 wks *(assumption)* |
87
+ | Cost | High *(2 eng, 2 qtrs)* | Med *(usage fee)* | Low upfront |
88
+ | Reversibility | Low — sunk build | High — swap vendor | Med |
89
+ | Strategy fit | High | Med | Low — off-mission |
90
+
91
+ > **Recommendation:** B. It's reversible and ships this quarter, buying us the
92
+ > learning to decide whether A is ever worth it. **Trade-off accepted:** vendor
93
+ > pricing risk and a feature ceiling we may hit in a year.
94
+ > **Load-bearing judgment:** will our billing needs outgrow the vendor within 18
95
+ > months? If yes, revisit; if no, B stands. Currently a guess — worth resolving.
96
+
97
+ ## Failure modes to catch
98
+
99
+ - **Criteria tuned to the winner.** If the criteria appeared *after* someone
100
+ fell for an option, they're rigged. Set criteria first, options hidden.
101
+ - **Uneven scoring.** Option A judged on best case, Option B on worst. Use one
102
+ standard for all — same scale, same rigor per cell.
103
+ - **Straw options.** Two real contenders and one obviously bad option added to
104
+ make a favorite look inevitable. Every listed option should be one someone
105
+ could honestly defend.
106
+ - **Scores with no evidence.** A full grid of confident numbers, none backed by
107
+ anything, is prose in a table. Mark unbacked cells as assumptions.
108
+ - **Ignoring reversibility.** Scoring a one-way, bet-the-company choice the same
109
+ way as a cheap experiment. Always flag which doors swing both ways.
@@ -0,0 +1,86 @@
1
+ ---
2
+ name: skhema-frame
3
+ description: "Use when someone starts a strategy process and can't yet say what it's about — a vague worry, an ambition, or a mandate that needs to become a workable strategic statement. Frames them back to the object they're actually trying to pin down: the challenge, the scope, the guiding policy, the outcome, or a single decision."
4
+ ---
5
+
6
+ # Frame
7
+
8
+ Someone comes to you with something they can't articulate yet. A worry
9
+ ("I think we're falling behind"). An ambition ("we should own this
10
+ market"). A mandate ("the board wants a plan"). None of these is workable
11
+ yet. Your job is not to answer them. Your job is to frame them back to the
12
+ actual object they're trying to pin down, and to help them state it well
13
+ enough that work can start.
14
+
15
+ Framing is a strategic act, not a warm-up. The statement you settle on
16
+ decides what everything downstream argues about. Get it wrong and every
17
+ later step is precise about the wrong thing.
18
+
19
+ ## The first move: which mood?
20
+
21
+ Before anything else, find out what KIND of thing they're trying to say.
22
+ Ask, in plain words:
23
+
24
+ > Are you trying to state something you believe is **true** (a judgment),
25
+ > something you've decided to **do** (a command), or **name a thing**?
26
+
27
+ Most stuck conversations are stuck because these are tangled — a worry
28
+ that's secretly a decision, a goal that's secretly a complaint. Separating
29
+ them is usually enough to unstick the person, and it tells you which
30
+ capability to run.
31
+
32
+ | They're framing… | Mood | Route to |
33
+ |---|---|---|
34
+ | The problem that actually exists — a claim about their world | judgment | `references/challenge.md` |
35
+ | What's in and what's out of this piece of work | command | `references/scope.md` |
36
+ | The direction they'll take, the approach they're committing to | command | `references/policy.md` |
37
+ | What success looks like — the state they want to reach | thing | `references/outcome.md` |
38
+ | One specific choice they're stuck on right now | (a choice, not yet made) | `references/decision.md` |
39
+
40
+ ## How to pick
41
+
42
+ - They're anxious, overwhelmed, or describing symptoms ("sales are down",
43
+ "morale is bad") → **challenge**. They have a symptom, not a problem.
44
+ Frame the challenge underneath it.
45
+ - They keep expanding — every conversation adds another thing the strategy
46
+ "should also cover" → **scope**. Force the in/out line.
47
+ - They have a clear problem but keep restating the goal instead of saying
48
+ what they'll DO about it → **policy**. Push for a committed direction.
49
+ - They say "success is when…" and it comes out fuzzy, or unmeasurable, or
50
+ actually a list of activities → **outcome**. Make it observable.
51
+ - They're circling one fork — "should we build or buy", "do we hire now or
52
+ wait" — and can't move → **decision**. Frame the choice itself.
53
+
54
+ If they need more than one, do them in this order: challenge first (it
55
+ anchors the rest), then scope, then policy, then outcome. A decision can be
56
+ framed at any point it blocks them.
57
+
58
+ Don't do their thinking for them. Your questions surface THEIR answer. A
59
+ frame you hand over gets nodded at and forgotten; a frame they arrived at
60
+ under your questioning, they own.
61
+
62
+ ## What "framed" means
63
+
64
+ A capability is done when the person can say the object in one sentence,
65
+ out loud, without hedging, and a second person would read it the same way.
66
+ Until then, keep probing. Each reference file tells you what good looks
67
+ like for its object and the failure modes to catch.
68
+
69
+ ## Without a live respondent
70
+
71
+ Run headless, with no one to answer? Don't invent their answers. Make the
72
+ minimal reasonable assumption, mark it in the output as yours ("assumed: …"),
73
+ and list the questions only the owner can settle — what's in scope, what a word
74
+ means, whose dissent to record — at the end instead of papering over them. A
75
+ marked assumption is honest work; a silent one is a guess you built on.
76
+
77
+ ## Sharpen with Skhema
78
+
79
+ Every object you frame here maps to a typed element in the Skhema method,
80
+ each with an expected grammatical mood — a judgment reads as an indicative
81
+ claim, a command as an imperative, a thing as a noun phrase. If the mood of
82
+ what they wrote doesn't match the object they claim to be framing, it's the
83
+ wrong object. `npm i @skhema/method` gives you the typed vocabulary and a
84
+ validator that flags the mismatch for you. You don't need it to run this
85
+ skill — but it turns the "which mood?" question from a judgment call into a
86
+ check.
@@ -0,0 +1,84 @@
1
+ # Frame the challenge
2
+
3
+ The challenge is the problem that actually exists — the honest, specific
4
+ account of what's in the way. Mood: **judgment**. It's a claim about their
5
+ world, so it must be true, or at least testable. Most people arrive with a
6
+ symptom and mistake it for the challenge. Your job is to get under the
7
+ symptom to the thing worth solving, and stop before it turns into a
8
+ solution in disguise.
9
+
10
+ ## The moves
11
+
12
+ Run these in order. Each is a question you ask and wait for.
13
+
14
+ 1. **Get the raw version.** "In one sentence, what's the problem?" Let them
15
+ ramble first, then ask for the sentence. Write it down verbatim.
16
+
17
+ 2. **Test whether it's a symptom.** Ask "why is that a problem?" — up to
18
+ three times. "Sales are down." Why does that matter? "We'll miss the
19
+ quarter." Why is that happening? "Our top competitor undercut us on
20
+ price and we had no answer." The third answer is usually closer to the
21
+ challenge than the first. Stop when the answer stops being a
22
+ consequence and starts being a cause you could act on.
23
+
24
+ 3. **Cut the solution out.** If their statement contains a verb of action
25
+ ("we need to hire a VP of Sales", "we should rebuild the app"), it's a
26
+ solution wearing a problem's clothes. Ask: "if that turned out to be the
27
+ wrong fix, what problem would still be sitting there?" Frame THAT.
28
+
29
+ 4. **Bound it.** A challenge you could spend ten years on isn't a
30
+ challenge, it's a condition. Ask "which part of this is ours to move in
31
+ the next [quarter / year]?" Narrow until it fits the time and the
32
+ authority they actually have.
33
+
34
+ 5. **Read it back.** State the framed challenge in one sentence and ask
35
+ "is that the problem — or did I just describe a symptom of it?" Let them
36
+ correct you. Iterate until they say "yes, that's it" without a caveat.
37
+
38
+ ## What good looks like
39
+
40
+ A framed challenge is:
41
+
42
+ - **Specific** — names the actual friction, not a category. Not "we have a
43
+ growth problem" but "we win trials but lose them at the paid-conversion
44
+ step".
45
+ - **A problem, not a solution** — describes what's wrong, leaves the how
46
+ open. If only one action could possibly follow, you've framed a solution.
47
+ - **Bounded** — scoped to something they can move in a stated timeframe
48
+ with the authority they have.
49
+ - **Testable** — a claim about the world that evidence could confirm or
50
+ refute. "Customers don't trust us" is testable; "we lack synergy" is not.
51
+ - **Owned** — they'd say it unprompted to their own boss.
52
+
53
+ Worked example. Arrives as: "Our onboarding is broken and we need to
54
+ redesign it." Under questioning: trials convert fine on the free step, but
55
+ 90% never reach the paid step, and the drop happens right after the team-
56
+ invite screen. Framed challenge: *"New teams stall at the invite step and
57
+ never reach the paid tier — we're losing 90% of otherwise-activated trials
58
+ in one screen."* Notice: no solution (redesign might be wrong), specific
59
+ (one screen, one number), testable, bounded.
60
+
61
+ ## Failure modes to catch
62
+
63
+ - **Symptom mistaken for challenge.** "Revenue is flat" is a reading on the
64
+ dial, not the problem. Ask why until you reach something actionable.
65
+ - **Solution smuggled in.** Any "we need to [do X]" framing. Extract the
66
+ problem X is meant to solve.
67
+ - **Boiling the ocean.** "We need to transform the business." Too big to
68
+ act on. Force the next-move-sized slice.
69
+ - **Two challenges in a trench coat.** If the sentence has an "and" joining
70
+ two different problems, split them and frame the one that matters most
71
+ first; note the other so it isn't lost.
72
+ - **Consensus mush.** A challenge everyone instantly agrees with is usually
73
+ too vague to be wrong. If nobody could disagree, it isn't sharp yet.
74
+ - **Blame dressed as diagnosis.** "The problem is that marketing won't
75
+ ship." That's an accusation, not a framed challenge. Reframe to the
76
+ situation, not the culprit.
77
+
78
+ ## When they're really framing something else
79
+
80
+ - If, once the challenge is clear, they immediately know what to do about
81
+ it, they didn't need a challenge — they need to commit that direction.
82
+ Move to `policy.md`.
83
+ - If the challenge keeps sprawling because they won't decide what's out of
84
+ bounds, move to `scope.md` first, then come back.