deliberate-cli 0.2.0-beta.1.1

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 (61) hide show
  1. package/AGENTS.md +40 -0
  2. package/LICENSE +174 -0
  3. package/README.md +89 -0
  4. package/package.json +51 -0
  5. package/roles/analyst/frame/instructions.md +88 -0
  6. package/roles/analyst/frame/output-template.md +52 -0
  7. package/roles/analyst/launch/instructions.md +63 -0
  8. package/roles/analyst/launch/output-template.md +50 -0
  9. package/roles/analyst/one-pager/instructions.md +75 -0
  10. package/roles/analyst/one-pager/output-template.md +38 -0
  11. package/roles/analyst/shape/instructions.md +63 -0
  12. package/roles/analyst/shape/output-template.md +52 -0
  13. package/roles/briefer/brief/instructions.md +77 -0
  14. package/roles/briefer/brief/output-template.md +37 -0
  15. package/roles/config.yaml +130 -0
  16. package/roles/evaluator/score/instructions.md +84 -0
  17. package/roles/evaluator/score/output-template.md +11 -0
  18. package/roles/initiator/init/instructions.md +111 -0
  19. package/roles/initiator/init/output-template-competitors.md +16 -0
  20. package/roles/initiator/init/output-template-ecosystem.md +19 -0
  21. package/roles/initiator/init/output-template-product.md +136 -0
  22. package/roles/prototyper/prototype/instructions.md +146 -0
  23. package/roles/prototyper/prototype/output-template.md +10 -0
  24. package/roles/reporter/readout/instructions.md +54 -0
  25. package/roles/reporter/readout/output-template.md +37 -0
  26. package/roles/scout/matchup/instructions.md +74 -0
  27. package/roles/scout/matchup/output-template.md +115 -0
  28. package/roles/skills/README.md +19 -0
  29. package/roles/skills/critique.md +64 -0
  30. package/roles/skills/head-to-head.md +88 -0
  31. package/roles/skills/jtbd.md +43 -0
  32. package/roles/skills/landscape-scan.md +77 -0
  33. package/roles/skills/metrics.md +58 -0
  34. package/roles/skills/positioning.md +44 -0
  35. package/roles/skills/prioritization.md +101 -0
  36. package/roles/skills/product-readout.md +98 -0
  37. package/roles/skills/tech-constraints.md +27 -0
  38. package/roles/skills/ux-principles.md +24 -0
  39. package/roles/skills/win-conditions.md +68 -0
  40. package/skill/SKILL.md +231 -0
  41. package/skill/scripts/deliberate.mjs +44 -0
  42. package/src/cli/deliberate.mjs +628 -0
  43. package/src/engine/app-boot.mjs +17 -0
  44. package/src/engine/briefs.mjs +101 -0
  45. package/src/engine/cases.mjs +17 -0
  46. package/src/engine/commands.mjs +75 -0
  47. package/src/engine/init.mjs +34 -0
  48. package/src/engine/layout.mjs +37 -0
  49. package/src/engine/log.mjs +22 -0
  50. package/src/engine/matchups.mjs +87 -0
  51. package/src/engine/onepager.mjs +51 -0
  52. package/src/engine/pipeline.mjs +134 -0
  53. package/src/engine/projects.mjs +17 -0
  54. package/src/engine/prompts.mjs +28 -0
  55. package/src/engine/prototype.mjs +86 -0
  56. package/src/engine/readout-charts.mjs +217 -0
  57. package/src/engine/readouts.mjs +132 -0
  58. package/src/engine/roles.mjs +137 -0
  59. package/src/engine/scaffold.mjs +54 -0
  60. package/src/engine/score.mjs +66 -0
  61. package/src/engine/service.mjs +18 -0
@@ -0,0 +1,115 @@
1
+ # Matchup — _<Product>_ vs _<Us>_
2
+
3
+ As of _<Month D, YYYY — the date this read was true>_.
4
+
5
+ ## Bottom line
6
+
7
+ _2–3 sentences: what this rival is, where it collides with us (and at which layer — platform vs product),
8
+ and the single most important strategic implication. Then the one-line takeaway as a blockquote — the
9
+ sentence a reader keeps if they read nothing else._
10
+
11
+ > _**The one-line takeaway.**_
12
+
13
+ ## At a glance
14
+
15
+ _The head-to-head in one scannable table. Pick the 6–10 factors that actually decide this contest. `Edge`
16
+ is an honest call — `us`, `them`, or `even` — never a home-team default._
17
+
18
+ | Factor | _<Product>_ | _<Us>_ | Edge |
19
+ |---|---|---|---|
20
+ | _factor_ | _their state_ | _our state_ | _us / them / even_ |
21
+
22
+ ## Strengths & weaknesses
23
+
24
+ _Honest SWOT for both sides. Each side's real weakness is the other's opening — name them plainly._
25
+
26
+ - **Their strengths (our threats):** _≤3 — what they genuinely do better._
27
+ - **Their weaknesses (our openings):** _≤3 — where they're structurally or currently weak._
28
+ - **Our strengths (their threats):** _≤3._
29
+ - **Our weaknesses (their openings):** _≤3 — be candid; the deck loses in Q&A otherwise._
30
+
31
+ ## Dimension-by-dimension
32
+
33
+ _One tight block per dimension — 1–3 sentences each. End every block with **Edge: us / them / even —
34
+ because…**. Drop a dimension only if it genuinely doesn't apply (say so)._
35
+
36
+ ### User journey
37
+ _First-run to habitual use for each; where onboarding / activation is smoother. **Edge:** …_
38
+
39
+ ### UX / interaction
40
+ _Interaction model, polish, the moments that delight or grate. **Edge:** …_
41
+
42
+ ### Functional
43
+ _What each has that the other doesn't; parity / WIP on both sides. **Edge:** …_
44
+
45
+ ### Supported scenarios
46
+ _The genres / use-cases each covers; the omission on each side. **Edge:** …_
47
+
48
+ ### Strategic
49
+ _The real threat (commoditization? substitution?) and the real opportunity. **Edge:** …_
50
+
51
+ ### Marketing & positioning
52
+ _How each is sold — audience, message, tone; the risk of a head-to-head we'd lose. **Edge:** …_
53
+
54
+ ### Pricing & business model
55
+ _How each monetizes (free/OSS, PLG, sales, tiers); where the wedge is. **Edge:** …_
56
+
57
+ ### Distribution & GTM motion
58
+ _How each acquires and where that's strong or brittle (stars, community, sales, embeds). **Edge:** …_
59
+
60
+ ### Implementation approach
61
+ _Architecture / stack / runtime and the trade-offs it buys or costs each side. **Edge:** …_
62
+
63
+ ### Ecosystem & interoperability
64
+ _Integrations, standards, partners; whether the two can coexist / migrate between. **Edge:** …_
65
+
66
+ ### Maturity & momentum
67
+ _Version, cadence, adoption, funding, team size, bus factor — who's accelerating. **Edge:** …_
68
+
69
+ ## Jobs-to-be-done coverage
70
+
71
+ _The core jobs in this space; who gets each done and where the gap is. Keep to the jobs that matter._
72
+
73
+ | Job (`I want to _[job]_, so I can _[outcome]_`) | _<Product>_ | _<Us>_ | Gap |
74
+ |---|---|---|---|
75
+ | _job_ | _covers / partial / no_ | _covers / partial / no_ | _the opening_ |
76
+
77
+ ## Battlecard
78
+
79
+ - **Why we win:** _≤3 themes — the durable reasons a buyer chooses us. Each with a proof point._
80
+ - **Why we lose:** _≤3 — the honest reasons a buyer chooses them._
81
+ - **Landmines / traps:** _≤3 — where competing on their terms is a mistake (our do-not-compete), and
82
+ their claims we must not walk into._
83
+ - **Objection handling:** _≤3 — their strongest pitch line, and our grounded answer to it._
84
+
85
+ ## Positioning against them
86
+
87
+ _2–4 sentences: the frame that makes their strengths matter less and moves the fight to our ground
88
+ (who-it's-for, the category, the wedge). Then the explicit **do-not-compete**: the arena we deliberately
89
+ cede._
90
+
91
+ ## Opportunities
92
+
93
+ _Prioritized responses. `Borrow` ranked by value ÷ effort; `Partner` = interop / coexistence angles;
94
+ `Respond` = roadmap / positioning moves. ≤3 per lane, only what's genuinely warranted._
95
+
96
+ - **Borrow:** _capability worth adopting — why it fits, value ÷ effort. (Learn, don't copy — note their
97
+ license.)_
98
+ - **Partner / interop:** _a coexistence, migration, or partnership angle._
99
+ - **Respond:** _a feature, spike, positioning, or pricing move — tied to the finding that motivates it._
100
+
101
+ ## Strategy canvas
102
+
103
+ _The value-curve inputs for a comparison chart. List the competing factors buyers weigh; rate each
104
+ `high / medium / low` for both. Where the two lines diverge is the story._
105
+
106
+ | Factor | _<Product>_ | _<Us>_ |
107
+ |---|---|---|
108
+ | _factor_ | _high / medium / low_ | _high / medium / low_ |
109
+
110
+ ## Sources
111
+
112
+ _Every claim above traces here. First-party where possible; date each; mark confidence
113
+ (**fact** first-party ▪ **inferred** ▪ **assumption**)._
114
+
115
+ - _[Source name](https://…) — <what it grounds> · <date> · fact / inferred / assumption_
@@ -0,0 +1,19 @@
1
+ # Skills — reusable method and craft
2
+
3
+ These files are shared, product-agnostic methods injected into role prompts alongside the current project's context. They teach roles how to do the craft; they must not describe a specific product. Product-specific grounding is written by the host during `init` under `deliberate/context/` and supplied separately.
4
+
5
+ | File | Purpose | Used by |
6
+ | --- | --- | --- |
7
+ | `jtbd.md` | Jobs-to-be-Done analysis: situation, motivation, desired progress, alternatives, outcomes, and evidence | Init, Frame, Shape, Launch, Prototype, One-pager, Matchup |
8
+ | `positioning.md` | State the competitive alternative, unique attributes, value, audience, category, positioning statement, and defensible differentiator | Init, Launch, One-pager, Matchup |
9
+ | `metrics.md` | Select outcome measures, leading inputs, and counter-metric guardrails without confusing activity for value | Init, Launch |
10
+ | `product-readout.md` | Produce a defensible periodic read of configured metrics and customer evidence, including comparisons, evidence gaps, causality, and actions | Readout |
11
+ | `ux-principles.md` | Surface-neutral experience principles for clear, accessible, trustworthy product journeys | Shape, Prototype |
12
+ | `win-conditions.md` | Evaluate durable demand, value, fit, adoption, distribution, trust, and compounding advantage as build-toward goals | Score, Shape, Launch, Prototype |
13
+ | `prioritization.md` | Apply gates and a weakest-link rubric to produce an evidence-based 0–10 score and lean verdict, excluding effort | Score, Matchup |
14
+ | `critique.md` | Constructive, bounded criticism that strengthens a decision without creating endless review loops | Score |
15
+ | `landscape-scan.md` | Scan market and competitive evidence with source discipline, breadth, time-window filtering, and change detection | Init, Brief, Matchup |
16
+ | `head-to-head.md` | Research one named rival deeply across evidence, dimensions, SWOT, JTBD, battlecard, positioning, and opportunities | Matchup |
17
+ | `tech-constraints.md` | Keep prototypes, artifacts, and implementation guidance self-contained and integration-ready | Shape, Prototype, Matchup |
18
+
19
+ `roles/config.yaml` is the source of truth for which role receives each method. The engine re-reads it on every invocation, so changes apply to the next prompt.
@@ -0,0 +1,64 @@
1
+ # Critique
2
+
3
+ > How the **Critic** pushes every stage toward greatness **in a single pass**. The engine
4
+ > allows the Critic exactly **one** automatic revise loop, then the pipeline always
5
+ > proceeds (`src/engine/pipeline.mjs`). So this is not a conversation — it is one
6
+ > high-leverage intervention. Make it count; never bank on a second round.
7
+
8
+ ## The economics: one shot, so bundle everything
9
+ There is **no back-and-forth**. You do not get to raise issue A, see it fixed, then raise
10
+ issue B. Therefore:
11
+ - **Front-load every concern in one critique.** If three things are wrong, name all three
12
+ now — don't hold the second-order issues for a round that will never come.
13
+ - **Make each ask self-contained and checkable.** Request only changes the producer can
14
+ fully make and you could verify in the *same* artifact — never "explore X and report
15
+ back," never "let's iterate on Y."
16
+ - **Right-size the ask.** A `revise` must be completable in one pass. If a fix is too big
17
+ for that, say so plainly (`block`, or note it as a follow-up) rather than triggering a
18
+ revise you know can't land in one go.
19
+
20
+ ## Two altitudes: floor, then ceiling
21
+ Great criticism does two jobs at once. Do both, in this order:
22
+
23
+ **1. The floor — must-fix (gates the verdict).** Correctness, grounding, alignment,
24
+ stage-rubric compliance. These are things that make the work *wrong* — fabricated demand,
25
+ drift from strategy/non-goals, a Prototype that doesn't run, a Case scored on solution
26
+ effort. Any of these → `revise` (or `block` if unrecoverable in one pass).
27
+
28
+ **2. The ceiling — the single biggest lift (elevates).** Beyond "not wrong," name the
29
+ **one** change that would take the work from *fine* to *exceptional* — the sharper insight,
30
+ the more ambitious framing, the missing move a great operator would make. Offer it even
31
+ when the floor is clean (on a `proceed`), as an **optional** lift labelled as such. Exactly
32
+ one — the highest-leverage one — so it's actionable, not a wish-list.
33
+
34
+ ## How to make it constructive (not destructive)
35
+ - **Point to the fix, not just the flaw.** Every concern = *what's wrong* → *why it changes
36
+ the decision* → *the specific change that resolves it*. A flaw with no direction is noise.
37
+ - **Raise the bar, don't rewrite the work.** You judge and direct; you don't produce the
38
+ artifact. Give the sharpest possible instruction, then let the producer execute.
39
+ - **Be specific and evidential.** Quote the line, name the missing evidence, cite the rubric
40
+ or skill it violates. Vague criticism can't be acted on in one pass.
41
+ - **Prioritize ruthlessly.** Lead with what matters most. Cap it: **≤ 3 must-fix + 1
42
+ elevation.** A long list dilutes the signal and can't be resolved in one revise.
43
+
44
+ ## When to stop (don't manufacture work)
45
+ - If it is grounded, aligned, and meets the rubric, say **`proceed`** — plainly. Do not
46
+ invent concerns to look rigorous.
47
+ - The bar for `revise` is **"this is materially wrong or changes the decision,"** not "I'd
48
+ have done it differently." Taste disagreements are at most an optional elevation note.
49
+ - Never withhold a `proceed` to force another lap. One pass is the design, not a failure.
50
+
51
+ ## Verdict discipline
52
+ - **`proceed`** — floor is clean. May carry one optional elevation.
53
+ - **`revise`** — one or more must-fix issues that are *fixable in a single pass*; bundle
54
+ every fix into this one critique.
55
+ - **`block`** — a fatal, unrecoverable-in-one-pass problem (e.g., the whole artifact is
56
+ ungrounded, or built for a different product). Reserve for genuine dead-ends; the human
57
+ gate handles the rest.
58
+
59
+ ## Anti-patterns
60
+ - Nitpicking style, wording, or formatting that doesn't change the decision.
61
+ - Drip-feeding concerns across "rounds" that don't exist — one shot, all issues.
62
+ - Requesting open-ended exploration or anything you can't verify in the same artifact.
63
+ - A wall of low-priority notes; a `revise` with no specific, one-pass fix.
64
+ - Manufacturing concerns on solid work instead of saying `proceed`.
@@ -0,0 +1,88 @@
1
+ # Head-to-Head — Method
2
+
3
+ > Use this whenever you produce a **single-competitor matchup** — a full, sourced read of one named
4
+ > product against ours, on demand. It is the sibling of `landscape-scan`: that skill scans the *field*
5
+ > for *change over time* (breadth); this one goes *deep on one named rival* at a point in time (depth).
6
+ > Reuse `landscape-scan` §2 (source discipline) verbatim; everything else here is matchup-specific. The
7
+ > goal is a document a PM can defend in a board review and assemble a competing deck from without
8
+ > re-researching.
9
+
10
+ ## 0. Point-in-time, not a time series
11
+ A matchup is **the current read on one rival**, true as of a stated date — not a log of changes (that's
12
+ `brief`). Stamp the `as_of` date (in the body **and** the frontmatter), ground the read in what's live
13
+ *now*, and **refresh the single canonical doc in place** when the rival moves — don't spawn a new dated
14
+ copy (git holds the history; `brief` owns the change-over-time series and signals when a refresh is due).
15
+ If a claim was true six months ago but isn't now, it doesn't belong.
16
+
17
+ ## 1. Steelman before you strike
18
+ **Argue the rival's case at its strongest first.** Per `AGENTS.md` ("do your stage's job objectively"),
19
+ a flattering matchup is worse than useless — it loses the deck in the Q&A. Establish, honestly, what they
20
+ do genuinely better and why a smart buyer picks them *before* you find the openings. Home-team bias is the
21
+ failure mode; catch it in yourself.
22
+
23
+ ## 2. Ground every claim in a source (from `landscape-scan` §2)
24
+ Each factual claim carries a **working link** to a first-party source — their site, docs, changelog, repo,
25
+ pricing page, a release tag, a filing. Name the source in the link text. Mark each claim's confidence:
26
+ **fact** (first-party, cited) ▪ **inferred** (reasoned from evidence) ▪ **assumption** (stated as such).
27
+ Never present an inference or assumption as a fact. If the project context or the rival's public surface is
28
+ thin, say what you could and couldn't ground — don't invent features, pricing, funding, or adoption.
29
+
30
+ Grounding sources: `deliberate/context/product.md` (our positioning, personas, JTBD, strategy) +
31
+ `deliberate/context/competitors.md` (if the rival is already tracked, its monitoring sources) + the
32
+ attached sources + your own first-party research of the rival. If the rival isn't tracked yet, **ask the
33
+ user whether to add it** (default yes) to the Competitors roster in `product.md` and its monitoring sources
34
+ in `competitors.md` so `brief` starts watching it — closing the loop between the two commands.
35
+
36
+ ## 3. Read across every dimension — who's ahead, and why
37
+ Work each dimension and end each with an honest **Edge: us / them / even — because…**. Cover, at minimum:
38
+
39
+ - **User journey** — first-run → habitual use; where activation is smoother.
40
+ - **UX / interaction** — model, polish, the moments that delight or grate.
41
+ - **Functional** — has / doesn't-have on both sides; parity and WIP.
42
+ - **Supported scenarios** — the genres each covers; the omission on each side.
43
+ - **Strategic** — the real threat (commoditization / substitution) and the real opportunity.
44
+ - **Marketing & positioning** — audience, message, tone; the head-to-head we'd lose.
45
+ - **Pricing & business model** — how each monetizes; where the wedge is.
46
+ - **Distribution & GTM** — how each acquires; where that's strong or brittle.
47
+ - **Implementation approach** — architecture / stack / runtime and its trade-offs.
48
+ - **Ecosystem & interoperability** — integrations, standards, partners; can they coexist / migrate?
49
+ - **Maturity & momentum** — version, cadence, adoption, funding, team size, bus factor, trajectory.
50
+
51
+ "Even" is a valid verdict. Don't manufacture contrast to look thorough.
52
+
53
+ ## 4. Synthesize — SWOT, JTBD, and the value curve
54
+ - **SWOT the pair:** each side's real weakness is the other's opening. Name our weaknesses candidly.
55
+ - **JTBD coverage:** apply the `jtbd` method — the core jobs in this space, who gets each done, and the
56
+ gap. Jobs, not features.
57
+ - **Strategy canvas:** rate the buyer's decision factors `high / medium / low` for both sides — the
58
+ value-curve inputs. Where the two lines diverge is the story.
59
+
60
+ ## 5. Turn the read into a decision
61
+ - **Battlecard:** **why we win** / **why we lose** (≤3 each, with proof), **landmines** (where competing on
62
+ their terms is a trap — our do-not-compete), and **objection handling** (their best pitch line + our
63
+ grounded answer).
64
+ - **Positioning against them** (apply `positioning`): the frame that moves the fight to our ground, plus
65
+ the arena we deliberately cede.
66
+ - **Opportunities** (apply `prioritization`): **Borrow** (value ÷ effort; learn, don't copy — respect
67
+ their license), **Partner / interop**, **Respond** (roadmap / pricing / positioning). Only what's
68
+ warranted.
69
+
70
+ ## 6. Leave it deck-ready (no separate deck section)
71
+ Don't add a slide outline or "deck kit" — the substance *is* the deck material. A good matchup already
72
+ carries everything a competing deck needs: a one-line thesis (Bottom line), the at-a-glance table, the
73
+ strategy canvas, the win/lose themes with proof, objection handling, and the prioritized bet — each
74
+ grounded and cited. Write those well and a human can assemble slides without re-researching.
75
+
76
+ ## 7. Be concise
77
+ Every bullet **≤ 3 sentences, ideally 1–2**. Hard caps: ≤3 per battlecard lane, ≤3 opportunities per lane,
78
+ one tight block per dimension, 6–10 factors in the at-a-glance and canvas tables. The fewer bullets, the
79
+ better — earn every line.
80
+
81
+ ## Anti-patterns (reject these)
82
+ - A home-team read that never says where we lose, or lists no real weakness of ours.
83
+ - A "fact" with no source link, or an inference/assumption dressed as a fact.
84
+ - Stale claims — anything not true as of the `as_of` date.
85
+ - Manufactured contrast where the honest answer is "even".
86
+ - Copying the rival's code/assets instead of learning from the pattern (mind their license).
87
+ - Padding every dimension to look exhaustive instead of cutting to what decides the contest.
88
+ - Bolting on a slide outline / "deck kit" — the substance already seeds the deck (§6).
@@ -0,0 +1,43 @@
1
+ # Jobs-to-be-Done (JTBD) — Method
2
+
3
+ > Use this whenever you **frame a problem** (Frame) or **design a surface** (Shape, Prototype).
4
+ > A job is the *progress a user is trying to make in a situation* — never a feature, never a demographic.
5
+
6
+ ## 0. Find the personas & jobs from evidence (don't invent them)
7
+ Before framing anything, **infer who the users are and what jobs they're doing from the evidence**: the attached **sources (code, docs)** and the **content of the case**. Read the repo/docs for the surfaces, roles, and workflows the product already serves; read the case for who is hurting and why. Each persona and job must trace to that material — never conjure a persona, job, or demographic the evidence doesn't support (label genuine inferences as assumptions).
8
+
9
+ Then **scan for additional affected personas**: who else feels the ripple effects of this problem? Look one step out from the obvious user — the **admin/approver upstream**, the **downstream consumer** of their output, the **teammate or peer** who depends on them. Include the ones whose jobs are **materially** affected (grounded the same way); skip incidental bystanders. For each, name *how* the problem touches their job.
10
+
11
+ ## 1. Job statement — the lean format (what Frame outputs)
12
+ **Group jobs under the persona who has them.** The persona line carries the *who* and the situation; each job is a single bullet, matching the Frame template:
13
+ **"I want to [job to be done], so I can [outcome]."**
14
+ - Keep it **solution-free** — no product or feature names.
15
+ - It's a *job*, not a feature request or a demographic. (Underneath, every job still answers "When [situation], I want to [motivation], so I can [outcome]" — but the situation lives in the persona framing, so the bullet stays lean.)
16
+ - A few **key** jobs per persona — don't bundle unrelated jobs into one line, and don't pad with minor ones.
17
+
18
+ ## Going deeper — for the design stages (Shape & Prototype)
19
+ > Frame stays lean: personas + their key jobs. The tools below are for the design stage (Shape), which must move a *specific* job through a real UX. Don't make Frame produce a full workup.
20
+
21
+ ### The struggling moment (optional)
22
+ When it fits the product/scenario, name the **specific, observable moment of friction** that makes the user start looking for a better way — concrete ("it's 11pm and I have 40 unread feedback items and a roadmap review tomorrow"), not abstract ("they're busy"). Some jobs are ongoing or ambient rather than triggered by a sharp moment; **don't force a struggling moment where there isn't one.**
23
+
24
+ ### Three dimensions
25
+ A job usually has three dimensions — cover the ones that matter for the design:
26
+ - **Functional** — the practical task to accomplish.
27
+ - **Emotional** — how they want to feel, or stop feeling (e.g., in control, not anxious, confident).
28
+ - **Social** — how they want to be *perceived* by others (their team, boss, peers, investors).
29
+
30
+ ### Job map — the steps of getting the job done
31
+ The job has stages even when no product exists. Use the steps that apply:
32
+ **Define → Locate → Prepare → Confirm → Execute → Monitor → Modify → Conclude.**
33
+ For each relevant step, note **today's friction**. Good UX supports the *steps of the job*, not just one button.
34
+
35
+ ### Forces of progress (why they switch — or don't)
36
+ - **Push** (pain of the current situation) + **Pull** (attraction of the new way) drive change.
37
+ - **Habit** (inertia of today) + **Anxiety** (fear of the new) resist it.
38
+ Design must **amplify pull and reduce anxiety** (e.g., show the evidence to build trust).
39
+
40
+ ## Anti-patterns (reject these)
41
+ - A persona is not a job. A feature is not a job. "Be more productive" is too vague to act on.
42
+ - A solution smuggled into the job statement ("I want a dashboard…").
43
+ - A persona or job invented without support in the sources or the case.
@@ -0,0 +1,77 @@
1
+ # Landscape Scan — Method
2
+
3
+ > Use this whenever you work the competitive + market landscape: **setting up a project's context**
4
+ > (`init` — map the *current* field of named competitors and their monitoring sources, the ecosystem
5
+ > players and theirs, and the market/space) or producing a periodic **Brief** (the *changes* within a
6
+ > time window). The competition + market **lenses** (§1) and the **source discipline** (§2) are shared;
7
+ > the **timeframe** (§0), the filtering to executive-worthy *change* (§3), and the decision framing (§4)
8
+ > apply to the **Brief**. For `init` you are cataloguing the field, not reporting change — skip §0 and use
9
+ > §1–§2 to find and record the real competitors, the ecosystem players, their first-party sources, and the
10
+ > market signals worth watching.
11
+
12
+ ## 0. Timeframe — the whole game (Brief only)
13
+ A brief reports **only what changed inside the window** you are given (`period_start → period_end`).
14
+ - The window is *since the last brief*, capped at **3 months**. If a change shipped, was announced, or
15
+ was reported **before `period_start`, it does not belong in this brief** — a prior brief already owned
16
+ it (or it is too old to be news).
17
+ - Date every finding against the window before you keep it. If you cannot establish that a change
18
+ happened inside the window, **drop it** — do not pad the brief with undated evergreen facts.
19
+ - "No change" is a valid, valuable answer. An honest empty section beats invented motion.
20
+
21
+ ## 1. Two lenses
22
+ **Competition** — the *named* competitors from the project context (`product.md` → Competitors, with
23
+ their monitoring sources in `competitors.md`). For each, scan the **first-party** signals in
24
+ `competitors.md` within the window:
25
+ - announcements / product blog, release notes / changelog, **roadmap** changes,
26
+ - **codebase activity** (public repos: notable commits, merged PRs, new modules, deprecations),
27
+ - pricing / packaging changes, docs for newly-shipped capabilities.
28
+
29
+ **Market & ecosystem** — the *space and players around the project*, one step wider than the named
30
+ competitors, grounded in `product.md` → **Ecosystem** (the named players — dependencies, complements,
31
+ channels, movers — each `current`/`potential`, with their monitoring sources in `ecosystem.md`) and
32
+ `product.md` → **Market** (the category, the standards & protocols the product participates in or depends on,
33
+ and the technologies/trends to watch). For each ecosystem player, scan its **first-party** signals in
34
+ `ecosystem.md` within the window (a dependency's releases / breaking changes / security advisories, a
35
+ complement's product & integration updates, a channel's marketplace or policy changes, a mover's spec /
36
+ roadmap / governance shifts); for the market, watch:
37
+ - new or upcoming **protocol / standard / spec** releases and version bumps,
38
+ - **new entrants** or adjacent players (including potential partners),
39
+ - **M&A, funding, partnerships, pivots, shutdowns**, and newly-relevant **technologies** or platform shifts.
40
+ Market events (funding, M&A) may cite a reputable secondary source when no first-party one exists;
41
+ competitor and ecosystem-player product claims should trace to their own channel wherever possible. If the
42
+ project context's Competitors, Ecosystem, or Market is thin, say what you could and could not ground — don't
43
+ invent players or standards to fill it.
44
+
45
+ ## 2. Ground every finding in a source
46
+ Each highlight carries a **working link** to where you saw it — a changelog entry, a blog post, a commit,
47
+ a release tag, a filing. No link, no highlight. Prefer official / first-party sources; name the source in
48
+ the link text so the reader knows what they're clicking (`[Changelog](…)`, `[GitHub PR](…)`).
49
+
50
+ ## 3. Filter hard — earn the executive's attention
51
+ The fewer bullets, the better. A finding only survives if it is **important, relevant to this project, and
52
+ potentially actionable**. Ruthlessly cut:
53
+ - routine dot-releases, dependency bumps, copy tweaks, minor bug fixes,
54
+ - vanity metrics and undirected "they posted a blog" noise,
55
+ - anything a manager would skim past.
56
+ Caps (hard limits, aim lower): **≤ 3 highlights per competitor**, **≤ 3 market highlights**, **≤ 3 Key
57
+ highlights** overall, and only the action items that are genuinely warranted. If a competitor had no
58
+ meaningful change, say **"No meaningful updates."** — don't manufacture one.
59
+
60
+ ## 4. From findings to a decision
61
+ - **Key highlights** = the top (≤3) changes across *both* lenses — what the reader must know if they read
62
+ nothing else. Draw them from the per-section findings; don't introduce new facts here.
63
+ - **Action items** = the *so-what* for THIS project, reasoned from the highlights: should a feature,
64
+ research spike, or investment be started? A partnership explored? A new technology or standard adopted?
65
+ A positioning or pricing response considered? Tie each action to the finding that motivates it. Only
66
+ include actions that are warranted — an empty action list is fine when the window was quiet.
67
+
68
+ ## 5. Be concise
69
+ Every bullet is **≤ 3 sentences, ideally 1–2** — straight to the point, no preamble, no hedging. The
70
+ brief is scanned in a minute; write it that way.
71
+
72
+ ## Anti-patterns (reject these)
73
+ - A finding with no date, or dated outside the window.
74
+ - A highlight with no source link, or a link to a non-authoritative source presented as first-party.
75
+ - Padding a quiet window with minor releases to look thorough.
76
+ - Repeating a change a previous brief already reported.
77
+ - Editorializing / speculation dressed as fact; inventing funding, partnerships, or competitors.
@@ -0,0 +1,58 @@
1
+ # Metrics — Method
2
+
3
+ > Use this whenever you must state **how a product's success is measured**: the Metrics & traction of a
4
+ > project's context (`init`) and the telemetry-grounded metrics of a go-to-market (`market`). A good metric
5
+ > is one number that, if it moves, tells you the product is delivering more value — and that a team can
6
+ > actually influence. Ground every metric in real evidence. Project context records durable definitions and
7
+ > comparison semantics, never time-sensitive values or targets copied during init.
8
+
9
+ ## The north-star — pick the one that matters
10
+ The **north-star metric (NSM)** is the single measure that best captures the value customers get (and that
11
+ the business captures in turn). Test a candidate against three checks:
12
+ - **Value:** does it go up only when customers get more of what they came for? (Not vanity — registrations,
13
+ raw pageviews, and "total users" usually fail this.)
14
+ - **Leading, not lagging:** does it move *before* revenue, predicting it? (Revenue itself is the lagging
15
+ result; the NSM is the input that drives it.)
16
+ - **Actionable:** can the team move it through the product? (Not a market-wide number nobody controls.)
17
+ Prefer a metric of *delivered value per unit time* (e.g. "weekly active teams that complete the core job")
18
+ over a stock ("total signups").
19
+
20
+ ## The metric tree — inputs beneath the NSM
21
+ Decompose the NSM into the **input metrics** that drive it, so the context shows *what to pull*:
22
+ - **Acquisition → Activation → Engagement → Retention → Revenue → Referral** (the AARRR spine) — keep the
23
+ stages that matter for this product.
24
+ - For each, name the **one** metric that best captures it (activation rate, D30/W4 retention, weekly active,
25
+ expansion, referral rate, …).
26
+ - Distinguish **leading vs lagging** (activation & retention lead; revenue & churn lag) so the reader knows
27
+ which are early signals.
28
+
29
+ ## Guardrails — what must NOT get worse
30
+ Name a **counter-metric** for the NSM (the thing a naive push on the NSM would break — quality, latency,
31
+ trust, unit cost, support load). A metric without a guardrail invites gaming.
32
+
33
+ ## The readout contract — make every read comparable
34
+
35
+ First record one project-level reporting contract:
36
+
37
+ - cadence and calendar alignment, defaulting to a completed Monday–Sunday calendar week;
38
+ - the project's named timezone;
39
+ - comparison with the immediately preceding equivalent completed period.
40
+
41
+ Then, for every metric, record the durable semantics needed to calculate it consistently over that shared period: exact definition, aggregation, source or query, unit, desired direction, and important segments. A user may override one readout with another completed calendar period or explicit date range; every metric and evidence source follows the override for that run, and the comparison becomes the immediately preceding equivalent period. The previous readout artifact is never the metric baseline.
42
+
43
+ ## Craft rules
44
+ - **One north-star, a handful of inputs.** A dashboard of 30 metrics is not a strategy.
45
+ - **Keep context durable.** Never copy a current value, dated baseline, target, or mutable numeric boundary
46
+ into init context. Link the live source that owns those values.
47
+ - **Compare like with like.** Preserve the report-level period, aggregation, alignment, timezone, and segment.
48
+ - **Tie metrics to the job.** The NSM should measure the persona's job-to-be-done getting done, not
49
+ activity for its own sake.
50
+ - **Per-value, not per-vanity.** Reach/impressions/registrations are vanity unless they map to value.
51
+
52
+ ## Anti-patterns (reject these)
53
+ - A vanity NSM (total users, pageviews, downloads) that rises without more value delivered.
54
+ - Revenue as the north-star (it's the lagging result; find the input that predicts it).
55
+ - A pile of metrics with no single north-star and no guardrail.
56
+ - A snapshot value or target copied into one-time init context where it will silently become stale.
57
+ - A metric calculated over a different period from the rest of the readout.
58
+ - A metric no one on the team can actually move.
@@ -0,0 +1,44 @@
1
+ # Positioning — Method
2
+
3
+ > Use this whenever you must state **what a product is, who it's for, and why it wins**: the
4
+ > Value proposition & positioning of a project's context (`init`), and the pitch of a go-to-market
5
+ > (`launch`). Positioning is a deliberate choice of the *context* in which a product is understood — not a
6
+ > tagline. Done well it makes the value obvious to the right buyer; done badly it makes a good product
7
+ > look irrelevant. Ground every element in real evidence — never borrow another product's story.
8
+
9
+ ## The five inputs (derive these first — April Dunford's frame)
10
+ Work them in order; each constrains the next:
11
+ 1. **Competitive alternatives** — what the customer would *actually* use if this didn't exist (a rival, a
12
+ spreadsheet, a manual process, "do nothing"). This sets the reference point the value is judged against.
13
+ 2. **Unique attributes** — the capabilities / assets this has that the alternatives **lack** (features,
14
+ data, integrations, model, distribution, license). Only real, verifiable ones.
15
+ 3. **Value** — the outcome those attributes enable that the customer cares about ("so they can __"). Map
16
+ each attribute → the concrete value; drop attributes that map to no value the buyer wants.
17
+ 4. **Target segment** — the customers who care **most** about that value (the ones for whom it's urgent,
18
+ frequent, or high-stakes). Positioning is sharpened by *who you exclude*, not just who you include.
19
+ 5. **Market category** — the frame of reference that makes the value obvious to that segment ("it's a
20
+ \_\_"). The category sets expectations; pick the one where the unique value reads as important, not the
21
+ biggest-sounding one.
22
+
23
+ ## The output — a positioning statement
24
+ Compose the inputs into one crisp line, then the sharpest differentiator:
25
+ - **"For [target segment] who [need/situation], [product] is a [market category] that [key value], unlike
26
+ [competitive alternative], because [unique attribute]."**
27
+ - **Differentiation / moat:** the single defensible reason this stays ahead — or, honestly, "table-stakes:
28
+ the alternatives already offer this" when there's no durable edge. Never inflate a parity feature into a moat.
29
+
30
+ ## Craft rules
31
+ - **Anchor on the alternative, not the feature.** Value is relative; "10× faster" means nothing without the
32
+ baseline the buyer compares against.
33
+ - **One segment, one category, one core value.** A statement that fits everyone positions for no one.
34
+ - **Attributes → value, always.** A list of features is not positioning; the value they unlock is.
35
+ - **Be specific and grounded.** Name the real segment, the real alternative, the real attribute — no
36
+ invented demand, no aspirational moat the evidence doesn't support (label an assumption if you must).
37
+ - **Keep it tight.** The statement is one sentence; the differentiator one or two bullets.
38
+
39
+ ## Anti-patterns (reject these)
40
+ - A feature list or a mission statement dressed up as positioning.
41
+ - "For everyone" / "the leading platform for X" (category-inflation with no chosen segment).
42
+ - A moat claim that's really table-stakes; or unique attributes that map to no buyer value.
43
+ - Positioning against a category ("we're not like legacy tools") instead of the concrete alternative the
44
+ customer would actually choose.
@@ -0,0 +1,101 @@
1
+ # Prioritization
2
+
3
+ > How **Score** turns the AI-era **win-conditions** (defined in the `win-conditions` skill)
4
+ > into a single go / no-go score. The win-conditions say what makes a **product** win over
5
+ > time; Score scores a single **Case** — so the test is whether the Case **advances or
6
+ > unblocks** those win-conditions, **not** whether one Case embodies all of them. Score
7
+ > **project-relative** (against *this* project's strategy/objective from the derived context),
8
+ > grounded in the Frame artifact (the problem + competitive landscape), on a **0–10** scale.
9
+ >
10
+ > **Reason fully, then explain clearly.** Work through the factors internally, then publish a
11
+ > short, **human-legible** brief (see "Output") — not the raw factor table or math.
12
+
13
+ ## The one rule: score the problem, not the solution
14
+ Score runs **before** anything is designed or built, so ignore every solution-side variable
15
+ — **effort, size, feasibility, build cost, and "how hard is it to build" are out of scope.**
16
+ When building is nearly free, that a thing *can* be built tells you nothing. Judge only the
17
+ **opportunity**.
18
+
19
+ ## What gates, and what only lifts
20
+ Not every good Case is a moat. Some **drive** a win-condition (build the flywheel, own a new
21
+ channel); many **enable** one (remove a limitation, reach parity, unblock or **broaden the
22
+ audience**). Both can be high-value — so separate the *necessary* conditions from the *value
23
+ multipliers*.
24
+
25
+ **Kill-gates — the case-level necessities (a Case must clear all three):**
26
+ - **Durable, AI-proof demand** — a real, important need that ubiquitous AI makes *more*
27
+ valuable, not obsolete. No real demand → dead.
28
+ - **Reachable audience** — the people who need it can actually get and adopt it (AI-era
29
+ distribution at the Case level). A Case that **broadens** the audience scores *well* here —
30
+ it is not penalised for it.
31
+ - **On-strategy & trust-safe** — it advances (or at least doesn't contradict) this project's
32
+ strategy, and it doesn't erode trust or violate a non-goal. A non-goal / hard-constraint
33
+ violation is an automatic **reject**.
34
+
35
+ **Value multipliers — raise a passing Case, never gate it:**
36
+ - **Compounding flywheel / moat** — how much durable, proprietary advantage it builds (data,
37
+ network, switching costs). Strong = big upside; **weak is fine for an enabler.**
38
+ - **Differentiation, taste & delight, agent-readiness, personalization, openness, "why now."**
39
+ (Full definitions in `win-conditions`.)
40
+
41
+ ## Credit enablers and table-stakes (don't punish parity)
42
+ A Case that removes a key limitation, reaches competitive parity, or **broadens the target
43
+ audience** is legitimately valuable **even with no standalone moat**. Score it on the demand
44
+ it unlocks and the audience it opens, and recognise it **raises the ceiling** for future
45
+ flywheel and differentiation. **Never reject or dock an enabler merely for "not being a moat
46
+ by itself"** — that is the wrong test for enabling work. Where useful, name the moat-builder
47
+ it sets up next, but do not hold its absence against the enabler.
48
+
49
+ ## Confidence is a modifier, not a factor
50
+ **Cap** any factor whose score rests on thin or second-hand evidence, and state the biggest
51
+ uncertainty. Strong scores need independent, grounded evidence — else the Evaluator will (rightly)
52
+ flag fabricated demand, reach, or advantage.
53
+
54
+ ## How to aggregate — gates, then weakest-link + multipliers (NOT a weighted average)
55
+ **Do not average the factors.** A weighted mean lets a strong factor paper over a fatal flaw
56
+ and rewards bland, well-rounded Cases over the spiky ones that matter. Instead:
57
+
58
+ **Step 1 — Kill-gates.** If any of the three necessities (demand · reachable audience ·
59
+ on-strategy/trust-safe) is essentially absent (≤ 3/10), or a non-goal / hard constraint is
60
+ violated → **reject**; the score is that low necessity's value. No multiplier buys it back.
61
+
62
+ **Step 2 — Floor by the weakest necessity, then lift with multipliers.** For a Case that
63
+ clears the gates, the floor is set by the weakest of the three necessities (a chain is only as
64
+ strong as its weakest link). From there the **multipliers raise the score** — a strong
65
+ moat/flywheel or sharp differentiation pushes toward the top; their **absence does not pull an
66
+ enabler down**. An enabler with strong demand + audience and a weak moat is a **good** Case,
67
+ not a weak one.
68
+
69
+ **Step 3 — Verdict.** Map to the bands. Prefer a defensible whole or half number — the gate
70
+ logic is the point, not the decimal.
71
+
72
+ ## Verdict bands (0–10)
73
+ Advisory input to the human's go/no-go decision:
74
+ - **≥ 7.0** → **advance** — real durable demand, a reachable (often broadened) audience,
75
+ on-strategy; either a genuine driver *or* a strong enabler that unlocks a lot.
76
+ - **5.0 – 6.9** → **shelve** — clears the gates but limited; name the single thing that would
77
+ move it (more demand evidence, a wider audience, or the moat it should set up).
78
+ - **< 5.0** → **reject** — fails a kill-gate: no real demand, no reachable audience, or
79
+ off-strategy / trust-eroding.
80
+
81
+ ## Output — a short, legible brief
82
+ Reason through everything internally, then emit a **structured, human-readable** summary
83
+ following the output template: a **Score + verdict**, a one-line "what this is," then **only the
84
+ 1–3 factors that actually drive the score** (the binding constraint and the biggest lift) —
85
+ **not** a roll-call of kill-gates that merely clear (a passing gate is a pass, not a reason), and
86
+ **no "Net" / synthesis line**. Then **at most two concrete, checkable risks** (the specific thing
87
+ that could be wrong and how you'd know — not an abstract caveat), kept separate from the strengths,
88
+ and the single thing that would change the call. Fewer, sharper points beat completeness; keep each
89
+ one a clear sentence. Do **not** dump the raw factor table, the per-factor numbers, or the math.
90
+
91
+ ## Anti-patterns
92
+ - **Punishing an enabler / table-stakes Case for lacking a standalone moat or flywheel** —
93
+ removing a limitation and broadening the audience *is* the value; score it on that.
94
+ - **Citing kill-gates that merely clear as justification for the score** — a passing gate is a
95
+ pass, not a driver; name only the factors that actually move the number.
96
+ - **A "Net" / synthesis line, more than three drivers, or abstract non-actionable risks** — cut them.
97
+ - **Computing a weighted average / summing the factors** — use gates + weakest-link + multipliers.
98
+ - Letting a strong multiplier (moat, taste) paper over **no real demand or no reachable audience**.
99
+ - Scoring how easy/cheap the solution is to build (effort — out of scope).
100
+ - Importing another product's metric or strategy — score against **this** project's.
101
+ - A verdict with no score; a dense, self-conflicting paragraph instead of the structured brief.