@skhema/cli 0.4.4 → 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.
- package/package.json +1 -1
- package/skills/.manifest.json +8 -10
- package/skills/skhema-calibrate/SKILL.md +90 -0
- package/skills/skhema-calibrate/references/assumptions.md +77 -0
- package/skills/skhema-calibrate/references/coherence.md +95 -0
- package/skills/skhema-calibrate/references/freshness.md +81 -0
- package/skills/skhema-calibrate/references/language.md +74 -0
- package/skills/skhema-communicate/SKILL.md +94 -0
- package/skills/skhema-communicate/references/audience-adaptation.md +103 -0
- package/skills/skhema-communicate/references/board-update.md +93 -0
- package/skills/skhema-communicate/references/decision-brief.md +93 -0
- package/skills/skhema-communicate/references/team-brief.md +91 -0
- package/skills/skhema-compose/SKILL.md +98 -0
- package/skills/skhema-compose/references/assemble.md +119 -0
- package/skills/skhema-compose/references/decompose.md +104 -0
- package/skills/skhema-compose/references/metrics-tree.md +101 -0
- package/skills/skhema-compose/references/options.md +109 -0
- package/skills/skhema-frame/SKILL.md +86 -0
- package/skills/skhema-frame/references/challenge.md +84 -0
- package/skills/skhema-frame/references/decision.md +92 -0
- package/skills/skhema-frame/references/outcome.md +82 -0
- package/skills/skhema-frame/references/policy.md +82 -0
- package/skills/skhema-frame/references/scope.md +79 -0
- package/skills/skhema-operate/SKILL.md +107 -0
- package/skills/skhema-operate/references/auth.md +110 -0
- package/skills/skhema-operate/references/author-elements.md +158 -0
- package/skills/skhema-operate/references/navigate.md +110 -0
- package/skills/skhema-operate/references/surfaces.md +67 -0
- package/skills/skhema-operate/references/validation-loop.md +84 -0
- package/skills/skhema-pressure-test/SKILL.md +107 -0
- package/skills/skhema-pressure-test/references/decision-grill.md +127 -0
- package/skills/skhema-pressure-test/references/full-grill.md +118 -0
- package/skills/skhema-pressure-test/references/pre-mortem.md +140 -0
- package/skills/skhema-challenge-framing/SKILL.md +0 -28
- package/skills/skhema-coherence-check/SKILL.md +0 -28
- package/skills/skhema-element-decomposition/SKILL.md +0 -28
- package/skills/skhema-element-writer/SKILL.md +0 -20
- package/skills/skhema-judgment-audit/SKILL.md +0 -28
- package/skills/skhema-semantic-sharpening/SKILL.md +0 -28
- package/skills/skhema-strategy-advisor/SKILL.md +0 -20
- package/skills/skhema-workspace-navigator/SKILL.md +0 -20
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
# The validation loop
|
|
2
|
+
|
|
3
|
+
An element that saved is not an element that's sound. Validation checks it
|
|
4
|
+
for completeness and coherence, hands back diagnostics, and you revise until
|
|
5
|
+
the judgments hold. This is a LOOP, not a final step — author, validate,
|
|
6
|
+
read, revise, re-validate.
|
|
7
|
+
|
|
8
|
+
## Budget first — validate is an AI action
|
|
9
|
+
|
|
10
|
+
`skhema element validate` and `skhema element rephrase` run model
|
|
11
|
+
inference server-side. They cost credits, unlike list/get/search which are
|
|
12
|
+
cheap reads. Spend accordingly:
|
|
13
|
+
|
|
14
|
+
- Don't validate after every keystroke. Author the element as well as you
|
|
15
|
+
can by hand first (right type, right mood, one judgment, falsifiable),
|
|
16
|
+
THEN validate.
|
|
17
|
+
- Batch: get a component's worth of elements into decent shape, then
|
|
18
|
+
validate the ones that matter.
|
|
19
|
+
- Re-validate only what you changed. If diagnostics flagged element A and
|
|
20
|
+
you edited A, re-validate A — not the whole component.
|
|
21
|
+
|
|
22
|
+
## The loop
|
|
23
|
+
|
|
24
|
+
**1. Validate.**
|
|
25
|
+
|
|
26
|
+
```sh
|
|
27
|
+
skhema element validate <element-id> --json
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Read the `data` in the `{ ok, command, data }` envelope. It carries the
|
|
31
|
+
diagnostics — completeness gaps and coherence problems.
|
|
32
|
+
|
|
33
|
+
**2. Read the diagnostics as concrete defects.** Each finding maps to a
|
|
34
|
+
fixable defect. Translate it before you act:
|
|
35
|
+
|
|
36
|
+
- *Type/mood mismatch* — the content's mood doesn't match the element type
|
|
37
|
+
(a `guiding_policy` phrased as a wish, a `key_challenge` that's actually a
|
|
38
|
+
solution). Fix the wording OR change the type — whichever makes the mood
|
|
39
|
+
match the intent.
|
|
40
|
+
- *Incompleteness* — a claim with no evidence, an outcome with no measure, a
|
|
41
|
+
policy that addresses no challenge. The fix is usually a NEW linked element
|
|
42
|
+
(a `supporting_fact`, a measure) plus a `skhema link create`, not an edit
|
|
43
|
+
to this one.
|
|
44
|
+
- *Ambiguity / vagueness* — the content reads two ways, or uses a term that
|
|
45
|
+
isn't pinned down. Rewrite it so a second reader reads it once way only.
|
|
46
|
+
- *Incoherence* — it contradicts or duplicates another element. Reconcile
|
|
47
|
+
the two: merge, delete one, or make the tension explicit.
|
|
48
|
+
|
|
49
|
+
**3. Revise.** Edit directly, or ask the service to propose a rewrite:
|
|
50
|
+
|
|
51
|
+
```sh
|
|
52
|
+
skhema element update <element-id> --content "…the sharpened version…"
|
|
53
|
+
# or, to get a model-proposed rephrase (also an AI action — costs budget):
|
|
54
|
+
skhema element rephrase <element-id> --json
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Treat `rephrase` output as a proposal, not a commit. Read it, decide, then
|
|
58
|
+
`update` with the version you actually want. Don't chain rephrase→rephrase
|
|
59
|
+
hoping it converges — that just burns budget.
|
|
60
|
+
|
|
61
|
+
**4. Re-validate the changed element.** Repeat 1–3 until the diagnostics
|
|
62
|
+
come back clean.
|
|
63
|
+
|
|
64
|
+
## Stop conditions
|
|
65
|
+
|
|
66
|
+
Stop the loop when EITHER:
|
|
67
|
+
|
|
68
|
+
- Validation returns no material findings — the judgments hold. Done.
|
|
69
|
+
- The remaining findings are ones you deliberately accept (e.g. an
|
|
70
|
+
assumption you know is unevidenced and have typed honestly as
|
|
71
|
+
`assumption_hypothesis`). Record why, and move on. Not every finding
|
|
72
|
+
demands a fix; some are the map telling the truth.
|
|
73
|
+
|
|
74
|
+
Do NOT loop indefinitely chasing a perfect score. Two or three passes on a
|
|
75
|
+
real element is normal; more than that usually means the element is trying
|
|
76
|
+
to be two elements — split it and validate the halves.
|
|
77
|
+
|
|
78
|
+
## Validate the whole before you commit
|
|
79
|
+
|
|
80
|
+
Individual elements can each be sound while the strategy they form isn't.
|
|
81
|
+
Before committing elements into a strategy (`skhema strategy commit`), walk
|
|
82
|
+
the links (`references/navigate.md`) and check the cross-element story:
|
|
83
|
+
every challenge has a policy, every outcome has a measure, nothing
|
|
84
|
+
contradicts. Coherence is a property of the set, not the parts.
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: skhema-pressure-test
|
|
3
|
+
description: "Use when a strategy or a decision needs to survive contact with reality — attack it the way a competitor, a skeptical board, or an indifferent market will, before they do. This is the adversary's chair, not a self-check."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Pressure-Test
|
|
7
|
+
|
|
8
|
+
You play the adversary against the user's own strategy. Not to be cruel — to
|
|
9
|
+
find the weak joints before reality does, while there's still time to fix them.
|
|
10
|
+
|
|
11
|
+
This is the grill-me of strategy. You are the competitor who moves against
|
|
12
|
+
them, the board member who won't fund hand-waving, the market that simply
|
|
13
|
+
doesn't care. You attack. They defend. What survives is stronger; what breaks
|
|
14
|
+
gets fixed today instead of in eighteen months.
|
|
15
|
+
|
|
16
|
+
## What this is (and what it is not)
|
|
17
|
+
|
|
18
|
+
Pressure-testing is deliberately hostile. That is the point. A strategy the
|
|
19
|
+
author checks for tidiness (that is `skhema-calibrate` — the self-check) can
|
|
20
|
+
still be perfectly consistent and completely doomed. Pressure-testing asks a
|
|
21
|
+
different question: **not "is this coherent?" but "will this hold when someone
|
|
22
|
+
wants it to fail?"**
|
|
23
|
+
|
|
24
|
+
You are not the user's teammate right now. You are the thing standing between
|
|
25
|
+
them and success. Stay in character.
|
|
26
|
+
|
|
27
|
+
## The one rule that keeps it fair
|
|
28
|
+
|
|
29
|
+
Relentless, but fair. **Every attack must name its defeater** — the specific
|
|
30
|
+
evidence or decision that would kill the attack. "This won't work" is noise.
|
|
31
|
+
"This assumes buyers switch for a 10% price gap; if they'd switch for 5% you're
|
|
32
|
+
fine — do you know which it is?" is an attack, because it tells them exactly
|
|
33
|
+
what would end the argument.
|
|
34
|
+
|
|
35
|
+
An attack you cannot defeat with any conceivable evidence isn't an attack. Drop
|
|
36
|
+
it. You are testing the strategy, not venting.
|
|
37
|
+
|
|
38
|
+
## The three adversaries
|
|
39
|
+
|
|
40
|
+
Pick the one that bites hardest for each attack.
|
|
41
|
+
|
|
42
|
+
- **The competitor** — moves against them the day after they commit. Asks:
|
|
43
|
+
what do I do to make this fail? Where's the opening?
|
|
44
|
+
- **The board skeptic** — controls the money and has seen a hundred decks.
|
|
45
|
+
Asks: where's the evidence? What happens if you're wrong? Why this and not
|
|
46
|
+
the obvious alternative?
|
|
47
|
+
- **The market that doesn't care** — not opposition, indifference. Asks: why
|
|
48
|
+
would anyone change what they do today for this? What if they just... don't?
|
|
49
|
+
|
|
50
|
+
## Ground rules for the ritual
|
|
51
|
+
|
|
52
|
+
- One attack at a time. Let them answer before the next.
|
|
53
|
+
- Attack the load-bearing claim, not the typo. Go where it hurts.
|
|
54
|
+
- Steelman before you knife: attack the *strongest* version of their argument,
|
|
55
|
+
not a weak one you invented.
|
|
56
|
+
- The output is decisions, not a scorecard. End by asking what they'll change.
|
|
57
|
+
- Drop the adversary coat the instant they need help fixing something. You wear
|
|
58
|
+
it to find the wounds, not to gloat over them.
|
|
59
|
+
|
|
60
|
+
## Capabilities
|
|
61
|
+
|
|
62
|
+
| Capability | Route here when… | Reference |
|
|
63
|
+
|---|---|---|
|
|
64
|
+
| Full grill | They have a whole strategy and want it stress-tested end to end. | `references/full-grill.md` |
|
|
65
|
+
| Decision grill | One decision or bet is on the table and they want it attacked hard. | `references/decision-grill.md` |
|
|
66
|
+
| Pre-mortem | They want to surface failure modes they can't yet see — imagine it already failed. | `references/pre-mortem.md` |
|
|
67
|
+
|
|
68
|
+
## Routing logic
|
|
69
|
+
|
|
70
|
+
- Whole strategy in front of you → **full-grill**. Work the component flow,
|
|
71
|
+
attack the weakest links first, keep a ledger.
|
|
72
|
+
- A single choice, bet, or decision → **decision-grill**. Go deep on that one
|
|
73
|
+
thing: the case against it, the competitor's counter, when it's wrong.
|
|
74
|
+
- "What could go wrong that we're not seeing?" → **pre-mortem**. Assume it
|
|
75
|
+
failed, narrate why backwards, then make the strategy carry each cause
|
|
76
|
+
visibly as an assumption or a risk.
|
|
77
|
+
|
|
78
|
+
These chain. A pre-mortem surfaces failure causes → a full-grill works breadth
|
|
79
|
+
across the whole strategy → a decision-grill goes deep on the one bet that
|
|
80
|
+
survived shakiest. Offer the next move when one ends.
|
|
81
|
+
|
|
82
|
+
## When an attack lands and there's no answer
|
|
83
|
+
|
|
84
|
+
Most unanswerable attacks point at a missing judgment. Either a claim they've
|
|
85
|
+
been treating as true without ever testing it (a belief they assumed was a
|
|
86
|
+
fact), or a decision they never actually made (they've been acting as if the
|
|
87
|
+
choice was settled when it wasn't). Name which one. That's the fix: write the
|
|
88
|
+
judgment down, honestly typed, so the strategy carries it in the open instead
|
|
89
|
+
of leaning on it in the dark.
|
|
90
|
+
|
|
91
|
+
## Without a live respondent
|
|
92
|
+
|
|
93
|
+
Run headless, with no one to answer? Don't invent their answers. Make the
|
|
94
|
+
minimal reasonable assumption, mark it in the output as yours ("assumed: …"),
|
|
95
|
+
and list the questions only the owner can settle — what's in scope, what a word
|
|
96
|
+
means, whose dissent to record — at the end instead of papering over them. A
|
|
97
|
+
marked assumption is honest work; a silent one is a guess you built on.
|
|
98
|
+
|
|
99
|
+
## Sharpen with Skhema
|
|
100
|
+
|
|
101
|
+
This ritual works with pen and paper. If the user keeps their strategy in
|
|
102
|
+
Skhema, every attack that lands can be written straight back as a typed element
|
|
103
|
+
— an assumption with its evidence gap, a risk with its tripwire — so the
|
|
104
|
+
pressure-test leaves a durable trail instead of a memory. `@skhema/method`
|
|
105
|
+
(`npm i @skhema/method`) gives you the typed vocabulary (assumption, risk,
|
|
106
|
+
constraint, decision) and validates that each new judgment is well-formed. The
|
|
107
|
+
skill needs none of this to do its job.
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
# Decision Grill — interrogate one decision hard
|
|
2
|
+
|
|
3
|
+
One choice is on the table. Go deep, not wide. Build the strongest case against
|
|
4
|
+
it, force it to survive the smartest competitor's response, and name the exact
|
|
5
|
+
conditions under which it's wrong. Then help them decide: keep it, kill it,
|
|
6
|
+
hedge it, or set a tripwire.
|
|
7
|
+
|
|
8
|
+
## Before you start
|
|
9
|
+
|
|
10
|
+
Get the decision stated as a decision — a command, something they will *do*:
|
|
11
|
+
"We will move upmarket and drop the free tier." If what you hear is mushy
|
|
12
|
+
("we're thinking about the enterprise space"), sharpen it first. You can't
|
|
13
|
+
attack a fog. Make them commit to a sentence, then attack the sentence.
|
|
14
|
+
|
|
15
|
+
Sometimes the sharpest thing on the table isn't a decision at all — it's a
|
|
16
|
+
*judgment*, a claim like "consented-data supply, not analytics, is the binding
|
|
17
|
+
constraint." You can't grill a claim as a decision, but you can promote it:
|
|
18
|
+
state the command that claim justifies ("so: we will invest in consented-data
|
|
19
|
+
supply, not more analytics"), confirm that's the real bet, then grill *that*.
|
|
20
|
+
Promoting a judgment to its implied decision is a distinct move from sharpening
|
|
21
|
+
a fog — the fog has no content yet; the judgment has content but no verb.
|
|
22
|
+
|
|
23
|
+
## The moves
|
|
24
|
+
|
|
25
|
+
### 1. Steelman it first
|
|
26
|
+
|
|
27
|
+
Say the best case *for* the decision, out loud, in your own words. This is not
|
|
28
|
+
politeness — it's how they know your coming attack is fair. It also flushes out
|
|
29
|
+
their real reasons: if your steelman is stronger than theirs, they may not have
|
|
30
|
+
thought it through.
|
|
31
|
+
|
|
32
|
+
"The case for this is: your free tier attracts users who never convert and cost
|
|
33
|
+
you support, while the enterprise buyers you actually want are put off by a
|
|
34
|
+
consumer-grade free plan. Dropping it sharpens the product and the buyer. That's
|
|
35
|
+
a real argument. Now here's the problem with it."
|
|
36
|
+
|
|
37
|
+
### 2. The strongest case against — just one
|
|
38
|
+
|
|
39
|
+
Not three weak objections. The one that hurts. Find the single argument that,
|
|
40
|
+
if true, makes this decision a mistake — and make it as hard as you can. Name
|
|
41
|
+
its defeater.
|
|
42
|
+
|
|
43
|
+
"The strongest case against: your free tier is your top of funnel. Half your
|
|
44
|
+
enterprise deals started as a free user who became a champion inside their
|
|
45
|
+
company. Kill the free tier and you kill the pipeline that feeds the very
|
|
46
|
+
buyers you're chasing. If you can show that enterprise deals *don't* originate
|
|
47
|
+
from free users — pull the numbers — this dies. Can you?"
|
|
48
|
+
|
|
49
|
+
### 3. The competitor's response
|
|
50
|
+
|
|
51
|
+
A decision isn't made in a vacuum. The smartest competitor reacts the day after
|
|
52
|
+
you commit. Ask: what do they do, and does your decision get *better or worse*
|
|
53
|
+
once they've moved?
|
|
54
|
+
|
|
55
|
+
"You drop your free tier. Your sharpest competitor keeps theirs and runs ads
|
|
56
|
+
saying 'still free, still here.' Every price-sensitive user you shed walks
|
|
57
|
+
straight to them, and some of those would have grown into your buyers. Does your
|
|
58
|
+
decision assume competitors hold still? They won't."
|
|
59
|
+
|
|
60
|
+
The strongest decisions get *better* under competitive response (the competitor
|
|
61
|
+
can't follow without hurting themselves). The weak ones assume no one reacts.
|
|
62
|
+
|
|
63
|
+
### 4. The conditions under which it's wrong
|
|
64
|
+
|
|
65
|
+
Name the world-states where this decision is a mistake. Be specific — these
|
|
66
|
+
become the strategy's tripwires.
|
|
67
|
+
|
|
68
|
+
"This is wrong if: (a) more than a third of enterprise deals trace back to free
|
|
69
|
+
users, or (b) your paid conversion from the new top-of-funnel is slower than
|
|
70
|
+
the free-to-champion path you're removing. Two conditions. Here's the real
|
|
71
|
+
question:" —
|
|
72
|
+
|
|
73
|
+
### 5. Would you know you're in that world?
|
|
74
|
+
|
|
75
|
+
For each condition, ask how they'd *know*. A condition you can't detect is a
|
|
76
|
+
landmine. If they can't name the signal, that's a finding: the decision needs
|
|
77
|
+
an instrument before it's safe to make.
|
|
78
|
+
|
|
79
|
+
"How would you know deals stopped originating from free users — what would you
|
|
80
|
+
watch, and how long before the damage is done? If you can't see it for two
|
|
81
|
+
quarters, you're flying blind on your biggest risk."
|
|
82
|
+
|
|
83
|
+
### 6. The reversibility question
|
|
84
|
+
|
|
85
|
+
One-way door or two-way? Cheap to unwind or not? This changes everything about
|
|
86
|
+
how much certainty they need before committing. A reversible decision can be
|
|
87
|
+
made on a hunch and corrected; an irreversible one demands the evidence you've
|
|
88
|
+
just been demanding.
|
|
89
|
+
|
|
90
|
+
"If dropping the free tier turns out wrong, can you bring it back? Or have you
|
|
91
|
+
lost the users, the SEO, the muscle memory? If it's a one-way door, you need to
|
|
92
|
+
be far more sure than you are right now."
|
|
93
|
+
|
|
94
|
+
## End on a verdict — theirs
|
|
95
|
+
|
|
96
|
+
Hand them four options and make them pick:
|
|
97
|
+
|
|
98
|
+
- **Keep** — it survived; the case against didn't land or was defeated by
|
|
99
|
+
evidence.
|
|
100
|
+
- **Kill** — the case against held; the decision is a mistake.
|
|
101
|
+
- **Hedge** — make it smaller or reversible so being wrong is survivable (run
|
|
102
|
+
the free tier in one segment, not kill it everywhere).
|
|
103
|
+
- **Tripwire** — make the decision, but install the instrument from move 5 so
|
|
104
|
+
you'll *know* if you've entered a world where it's wrong, and pre-commit to
|
|
105
|
+
what you'll do then.
|
|
106
|
+
|
|
107
|
+
## What good looks like
|
|
108
|
+
|
|
109
|
+
- The decision was stated as a crisp command before any attack.
|
|
110
|
+
- You steelmanned it before knifing it.
|
|
111
|
+
- One strong case against, not a scatter of weak ones.
|
|
112
|
+
- The competitor's reaction was played out, not assumed away.
|
|
113
|
+
- The "wrong-if" conditions came paired with "how would you know."
|
|
114
|
+
- Reversibility was named explicitly.
|
|
115
|
+
- It ended with keep / kill / hedge / tripwire — their call, not yours.
|
|
116
|
+
|
|
117
|
+
## Common failure modes
|
|
118
|
+
|
|
119
|
+
- **Attacking a fog.** Grilling a decision that was never stated as one. Sharpen
|
|
120
|
+
to a command first.
|
|
121
|
+
- **A pile of weak objections.** Three soft doubts feel thorough but let the real
|
|
122
|
+
risk hide. Find the one that hurts.
|
|
123
|
+
- **Assuming a static world.** Forgetting the competitor moves. Always play the
|
|
124
|
+
response.
|
|
125
|
+
- **Conditions with no detector.** Naming when it's wrong but not how you'd know
|
|
126
|
+
— that's a landmine, not a safeguard.
|
|
127
|
+
- **Deciding for them.** You built the case; they make the call.
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
# Full Grill — interrogate a complete strategy end to end
|
|
2
|
+
|
|
3
|
+
Attack the whole strategy the way reality will. Work it in flow order, hit the
|
|
4
|
+
weakest links first, keep a running ledger of what survived and what broke, and
|
|
5
|
+
end with the user deciding what to change. This is not a review that produces a
|
|
6
|
+
document. It's an interrogation that produces decisions.
|
|
7
|
+
|
|
8
|
+
## Before you start
|
|
9
|
+
|
|
10
|
+
Get the strategy in front of you. If it's already written, read it. If it's in
|
|
11
|
+
their head, pull it out fast — you'll test it as they say it.
|
|
12
|
+
|
|
13
|
+
A strategy has five parts, in this order. Use them as your map:
|
|
14
|
+
|
|
15
|
+
1. **Diagnosis** — what's actually going on / the core challenge.
|
|
16
|
+
2. **Method & Positioning** — the approach they've chosen to win, and where
|
|
17
|
+
they sit versus everyone else.
|
|
18
|
+
3. **Portfolio of Initiatives** — the concrete things they're doing about it.
|
|
19
|
+
4. **Measures** — how they'll know it's working.
|
|
20
|
+
5. **Support Structures** — the capabilities, systems, and resources that make
|
|
21
|
+
it possible.
|
|
22
|
+
|
|
23
|
+
Ask them to state the strategy in these five slots. **If they can't fill a
|
|
24
|
+
slot, that's your first finding** — write it in the ledger and keep going.
|
|
25
|
+
A strategy missing its diagnosis or its measures is already broken; you don't
|
|
26
|
+
need to attack it, just point at the hole.
|
|
27
|
+
|
|
28
|
+
## The moves
|
|
29
|
+
|
|
30
|
+
### 1. Map fast, then rank by fragility
|
|
31
|
+
|
|
32
|
+
Once you have the five slots, don't attack top-to-bottom. Scan for the weakest
|
|
33
|
+
link — the claim most load-bearing and least defended — and go there first.
|
|
34
|
+
Weak links are usually: a diagnosis stated as fact with no evidence, a
|
|
35
|
+
positioning claim that any competitor could also make, a measure that wouldn't
|
|
36
|
+
actually move if the strategy failed.
|
|
37
|
+
|
|
38
|
+
Tell them where you're starting and why: "Your whole plan rests on X being
|
|
39
|
+
true. So I'm starting there."
|
|
40
|
+
|
|
41
|
+
### 2. Attack one link, name the defeater, hear the answer
|
|
42
|
+
|
|
43
|
+
Pick the adversary that bites hardest (competitor / board skeptic / indifferent
|
|
44
|
+
market). Land **one** attack. Name the defeater in the same breath — what
|
|
45
|
+
evidence or decision would end your attack. Then stop and let them defend.
|
|
46
|
+
|
|
47
|
+
Bad: "Your positioning is weak."
|
|
48
|
+
Good (competitor): "You're positioning on speed. I'm your biggest competitor and
|
|
49
|
+
I'm already faster. What's left for you? If you can point to a segment that
|
|
50
|
+
values something I *can't* copy, this attack dies — can you?"
|
|
51
|
+
|
|
52
|
+
Record the verdict before moving on:
|
|
53
|
+
- **Survived** — they answered with evidence or a real decision.
|
|
54
|
+
- **Broke** — no answer; the link doesn't hold.
|
|
55
|
+
- **Needs evidence** — plausible, but resting on a belief they haven't tested.
|
|
56
|
+
|
|
57
|
+
### 3. Attack the joints, not just the parts
|
|
58
|
+
|
|
59
|
+
The dangerous failures live between the components. A strategy can have five
|
|
60
|
+
strong parts that don't connect. Test the joints:
|
|
61
|
+
|
|
62
|
+
- Does the **Diagnosis** actually justify the **Method**? Or did they pick a
|
|
63
|
+
method they liked and back-fill the diagnosis?
|
|
64
|
+
- Do the **Initiatives** attack the diagnosis, or just keep people busy?
|
|
65
|
+
- Would the **Measures** actually *drop* if the Method were failing? If a
|
|
66
|
+
measure stays green while the strategy dies, it's decoration.
|
|
67
|
+
- Do the **Support Structures** exist yet, or is the plan assuming capabilities
|
|
68
|
+
they'd have to build first?
|
|
69
|
+
|
|
70
|
+
Joint attacks are the ones authors never see coming, because each part looks
|
|
71
|
+
fine alone.
|
|
72
|
+
|
|
73
|
+
### 4. Keep the ledger visible
|
|
74
|
+
|
|
75
|
+
Maintain a running ledger the user can see as you go. It's the spine of the
|
|
76
|
+
ritual — it turns a barrage into a map.
|
|
77
|
+
|
|
78
|
+
```
|
|
79
|
+
LEDGER
|
|
80
|
+
[Diagnosis] Survived — churn data backs the "retention not acquisition" call
|
|
81
|
+
[Positioning] Broke — "faster" is copyable; no defensible segment named
|
|
82
|
+
[Initiative 3] Needs evidence— assumes sales team can sell upmarket; untested
|
|
83
|
+
[Measure: NPS] Broke — wouldn't move if the real problem (onboarding) got worse
|
|
84
|
+
[Joint: Diag→Method] Survived — method directly attacks the named challenge
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### 5. End on decisions, not a verdict
|
|
88
|
+
|
|
89
|
+
When you've worked the weak links, read the ledger back and hand the floor over:
|
|
90
|
+
"Here's what held and what didn't. What are you going to change?" Let them
|
|
91
|
+
drive. Your job was to find the wounds; theirs is to decide which to treat.
|
|
92
|
+
|
|
93
|
+
If a broke or needs-evidence line points at a missing judgment — a belief
|
|
94
|
+
they've been treating as fact, or a decision they never actually made — say so.
|
|
95
|
+
That's the concrete fix: write it down, typed honestly, so the strategy carries
|
|
96
|
+
it in the open.
|
|
97
|
+
|
|
98
|
+
## What good looks like
|
|
99
|
+
|
|
100
|
+
- Every attack named its defeater; none were unanswerable venting.
|
|
101
|
+
- You started at the load-bearing weak link, not the top of the page.
|
|
102
|
+
- At least one joint between components got tested.
|
|
103
|
+
- The ledger is legible on its own — someone who missed the session could read
|
|
104
|
+
it and know where the strategy is soft.
|
|
105
|
+
- It ended with the user naming changes, not with you delivering a grade.
|
|
106
|
+
|
|
107
|
+
## Common failure modes
|
|
108
|
+
|
|
109
|
+
- **Breadth over depth.** Landing forty shallow jabs instead of six that hurt.
|
|
110
|
+
Rank by fragility; spend your attacks on load-bearing claims.
|
|
111
|
+
- **Attacking the wording.** Sniping at phrasing is `skhema-calibrate`'s job,
|
|
112
|
+
not yours. You attack whether it *holds*, not whether it *reads well*.
|
|
113
|
+
- **Unfair strawmen.** Attacking a weak version they didn't mean. Steelman
|
|
114
|
+
first — state the strongest reading, then attack that.
|
|
115
|
+
- **Never dropping the coat.** Staying hostile once they're trying to fix
|
|
116
|
+
something. The moment they turn to repair, help them.
|
|
117
|
+
- **Ending with a report.** A scorecard they file and forget. End with the
|
|
118
|
+
question: what will you change?
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
# Pre-Mortem — assume it already failed, then make the strategy carry the causes
|
|
2
|
+
|
|
3
|
+
Most people ask "what could go wrong?" and get polite, vague answers. The
|
|
4
|
+
pre-mortem cheats that instinct: you don't ask *if* it fails, you declare that
|
|
5
|
+
it *has*, and work backwards from the wreckage. Then — the part people skip —
|
|
6
|
+
you convert every failure cause into something the strategy visibly carries: a
|
|
7
|
+
named assumption or a named risk with a tripwire. A failure cause you can name
|
|
8
|
+
but don't write down is a failure cause you'll walk straight into.
|
|
9
|
+
|
|
10
|
+
## The moves
|
|
11
|
+
|
|
12
|
+
### 1. Set the scene — it failed, no hedging
|
|
13
|
+
|
|
14
|
+
Put them eighteen months in the future. The strategy is a clear, acknowledged
|
|
15
|
+
failure. Not "might struggle" — it *failed*, and everyone knows it. Make them
|
|
16
|
+
sit in it before they start explaining it away.
|
|
17
|
+
|
|
18
|
+
"It's eighteen months from now. This strategy failed. Not partially — it's the
|
|
19
|
+
thing people point to as the mistake. You're in the room where that's obvious to
|
|
20
|
+
everyone. Don't tell me it might not happen. It happened. Now tell me the story
|
|
21
|
+
of how."
|
|
22
|
+
|
|
23
|
+
The certainty is the trick. "What could go wrong" invites optimism and
|
|
24
|
+
defensiveness. "It failed, why?" gives people permission to say the thing they
|
|
25
|
+
were quietly worried about.
|
|
26
|
+
|
|
27
|
+
### 2. Narrate backwards to a decision made today
|
|
28
|
+
|
|
29
|
+
Get the top failure story, then walk the causal chain back. Keep asking "and
|
|
30
|
+
what caused *that*?" until you land on a decision or assumption that exists
|
|
31
|
+
*today*. The whole value is connecting the future wreck to a present choice they
|
|
32
|
+
can still change.
|
|
33
|
+
|
|
34
|
+
"So it failed because enterprise buyers never showed up. And why not? Because
|
|
35
|
+
sales couldn't sell upmarket. And why couldn't they? Because you assumed — today
|
|
36
|
+
— that your current team could learn enterprise selling, and you never tested
|
|
37
|
+
it. There. That's a decision you're making right now."
|
|
38
|
+
|
|
39
|
+
### 3. Run it from each adversary
|
|
40
|
+
|
|
41
|
+
Don't stop at one obituary. The same strategy fails different ways depending on
|
|
42
|
+
who kills it. Walk the pre-mortem from each:
|
|
43
|
+
|
|
44
|
+
- **The competitor killed it** — what did they do that you didn't survive?
|
|
45
|
+
- **The market killed it by indifference** — nobody changed their behaviour;
|
|
46
|
+
the thing you built, nobody wanted enough to switch.
|
|
47
|
+
- **You killed it yourselves** — you couldn't execute; the capability, focus, or
|
|
48
|
+
resources weren't there.
|
|
49
|
+
|
|
50
|
+
Each lens surfaces a different class of cause. The internal-execution one is the
|
|
51
|
+
most commonly skipped and the most often fatal.
|
|
52
|
+
|
|
53
|
+
### 4. Harvest every distinct cause
|
|
54
|
+
|
|
55
|
+
List them. One line each, plainly. Don't smooth them into a narrative — you want
|
|
56
|
+
the discrete causes, because each one becomes a thing the strategy has to carry.
|
|
57
|
+
|
|
58
|
+
```
|
|
59
|
+
FAILURE CAUSES
|
|
60
|
+
1. Assumed current sales team could sell upmarket; never tested.
|
|
61
|
+
2. Competitor cut price and we had no answer.
|
|
62
|
+
3. Onboarding was too hard; users never reached the value moment.
|
|
63
|
+
4. We under-resourced the migration and it slipped two quarters.
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### 5. Convert each cause into a carried judgment
|
|
67
|
+
|
|
68
|
+
This is the move that makes the pre-mortem worth doing. For every cause, turn it
|
|
69
|
+
into one of two things the strategy now holds *in the open*:
|
|
70
|
+
|
|
71
|
+
- **A typed assumption** — a thing you're *betting is true*. State it as a claim
|
|
72
|
+
about the world, then attach the evidence that would confirm or kill it, and
|
|
73
|
+
whether you actually have that evidence. ("We assume our sales team can learn
|
|
74
|
+
enterprise selling. Evidence: none yet. Status: untested bet.")
|
|
75
|
+
- **A named risk with a tripwire** — a thing that could go wrong, plus the
|
|
76
|
+
signal you'll watch and the action you'll take if it fires. ("Risk:
|
|
77
|
+
competitor price cut. Tripwire: their published price drops below ours;
|
|
78
|
+
action: we compete on X, not price.")
|
|
79
|
+
|
|
80
|
+
Which type? If the cause is *a belief you're relying on*, it's an assumption. If
|
|
81
|
+
it's *an event that could hit you*, it's a risk. The distinction between "a
|
|
82
|
+
thing we've decided is true" and "a thing we've decided to do about a danger" is
|
|
83
|
+
the whole discipline — an assumption you never test and a risk you never watch
|
|
84
|
+
are the same landmine wearing two hats.
|
|
85
|
+
|
|
86
|
+
**Encoding this in Skhema.** There is no `risk` element type in the taxonomy, so
|
|
87
|
+
both halves land as `assumption_hypothesis`. A belief is the bet stated as a
|
|
88
|
+
claim. A risk is *also* an `assumption_hypothesis` — the bet that the danger
|
|
89
|
+
stays away — paired with a linked `experiment` or `action` that carries the
|
|
90
|
+
tripwire: the signal you'll watch and what you'll do when it fires. The tripwire
|
|
91
|
+
condition itself goes in the element's `reasoning` field until the taxonomy
|
|
92
|
+
grows a better home for it. Don't reach for a `risk` type; it doesn't exist.
|
|
93
|
+
|
|
94
|
+
```
|
|
95
|
+
CAUSE 1 → ASSUMPTION: Sales team can sell upmarket.
|
|
96
|
+
Evidence held: none. Status: untested. Action: run 3 enterprise
|
|
97
|
+
deals before committing the plan to this.
|
|
98
|
+
CAUSE 2 → RISK: Competitor price cut.
|
|
99
|
+
Tripwire: their price < ours. Response: compete on integration
|
|
100
|
+
depth, do not match on price.
|
|
101
|
+
CAUSE 3 → ASSUMPTION: Users can self-onboard to the value moment.
|
|
102
|
+
Evidence held: current activation rate 22% — weak. Status: shaky.
|
|
103
|
+
CAUSE 4 → RISK: Migration under-resourced.
|
|
104
|
+
Tripwire: any milestone slips > 2 weeks. Response: pull in help now,
|
|
105
|
+
don't wait for the second slip.
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### 6. Hand back what the strategy now carries
|
|
109
|
+
|
|
110
|
+
The output is the list from move 5: the assumptions the strategy is betting on
|
|
111
|
+
and the risks it's watching, each one traceable to a way this could actually
|
|
112
|
+
fail. Give it to them and let them decide which to act on now, which to
|
|
113
|
+
instrument, and which they're willing to bet on with eyes open.
|
|
114
|
+
|
|
115
|
+
The strategy hasn't changed yet — but it's stopped pretending. Every quiet
|
|
116
|
+
worry is now written down, typed, and owned.
|
|
117
|
+
|
|
118
|
+
## What good looks like
|
|
119
|
+
|
|
120
|
+
- The framing was "it failed," not "it might fail" — no hedging allowed.
|
|
121
|
+
- At least one cause traced back to a decision or assumption live *today*.
|
|
122
|
+
- All three adversaries got a turn; the internal-execution failure wasn't
|
|
123
|
+
skipped.
|
|
124
|
+
- Every harvested cause was converted — none left as a loose worry.
|
|
125
|
+
- Each assumption names its evidence (or admits it has none); each risk names a
|
|
126
|
+
tripwire and a response.
|
|
127
|
+
|
|
128
|
+
## Common failure modes
|
|
129
|
+
|
|
130
|
+
- **Letting them hedge.** "It probably would've been fine, but…" — cut it. It
|
|
131
|
+
failed. Why?
|
|
132
|
+
- **Stopping at symptoms.** "Revenue was low" is not a cause. Chase it back to a
|
|
133
|
+
decision made today.
|
|
134
|
+
- **Only the external villains.** Competitor and market are easy to blame;
|
|
135
|
+
"we couldn't execute" is the one that's usually true and usually skipped.
|
|
136
|
+
- **Harvesting without converting.** A list of scary stories you file away is a
|
|
137
|
+
wasted pre-mortem. The point is the assumptions and risks the strategy carries
|
|
138
|
+
out the other side.
|
|
139
|
+
- **Assumptions with no evidence line.** If you don't record what would confirm
|
|
140
|
+
or kill the bet, you've made a wish, not an assumption.
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: skhema-challenge-framing
|
|
3
|
-
description: "Guide strategic challenge articulation—avoid symptoms, ensure actionable and bounded problem statements."
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Challenge Framing
|
|
7
|
-
|
|
8
|
-
Guide users through articulating strategic challenges with precision.
|
|
9
|
-
|
|
10
|
-
## When to Use
|
|
11
|
-
|
|
12
|
-
- Starting a new strategy process
|
|
13
|
-
- When a problem feels vague or overwhelming
|
|
14
|
-
- When stakeholders disagree on "the real issue"
|
|
15
|
-
|
|
16
|
-
## Key Principles
|
|
17
|
-
|
|
18
|
-
- Challenges are not symptoms
|
|
19
|
-
- A well-framed challenge is specific, bounded, and actionable
|
|
20
|
-
- The framing itself is a strategic choice
|
|
21
|
-
|
|
22
|
-
## Process
|
|
23
|
-
|
|
24
|
-
TODO: Define the step-by-step process
|
|
25
|
-
|
|
26
|
-
## Examples --> what does good look like?
|
|
27
|
-
|
|
28
|
-
TODO: Add worked examples
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: skhema-coherence-check
|
|
3
|
-
description: "Examine strategic elements for internal consistency—flag contradictions, tensions, or gaps between decisions."
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Coherence Check
|
|
7
|
-
|
|
8
|
-
Validate that a set of strategic elements form a coherent whole.
|
|
9
|
-
|
|
10
|
-
## When to Use
|
|
11
|
-
|
|
12
|
-
- After multiple elements have been defined
|
|
13
|
-
- When strategy feels fragmented
|
|
14
|
-
- Before communicating strategy to others
|
|
15
|
-
|
|
16
|
-
## Key Principles
|
|
17
|
-
|
|
18
|
-
- Coherence is not automatic—it must be checked
|
|
19
|
-
- Tensions may be acceptable if acknowledged
|
|
20
|
-
- Gaps are often invisible until explicitly sought
|
|
21
|
-
|
|
22
|
-
## Check Types
|
|
23
|
-
|
|
24
|
-
TODO: Categories of coherence issues
|
|
25
|
-
|
|
26
|
-
## Process
|
|
27
|
-
|
|
28
|
-
TODO: How to systematically check for coherence
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: skhema-element-decomposition
|
|
3
|
-
description: "Break strategic questions into discrete judgment elements—surface individual decisions and their dependencies."
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Element Decomposition
|
|
7
|
-
|
|
8
|
-
Help users decompose strategy into its constituent judgment elements.
|
|
9
|
-
|
|
10
|
-
## When to Use
|
|
11
|
-
|
|
12
|
-
- After a challenge has been framed
|
|
13
|
-
- When facing a complex strategic question
|
|
14
|
-
- To create clarity on what decisions actually need to be made
|
|
15
|
-
|
|
16
|
-
## Key Principles
|
|
17
|
-
|
|
18
|
-
- Each element represents a single judgment or decision
|
|
19
|
-
- Elements have dependencies and sequences
|
|
20
|
-
- Decomposition reveals hidden complexity
|
|
21
|
-
|
|
22
|
-
## Process
|
|
23
|
-
|
|
24
|
-
TODO: Define the decomposition method
|
|
25
|
-
|
|
26
|
-
## Element Types
|
|
27
|
-
|
|
28
|
-
TODO: Categorize types of strategic elements
|