@vextlabs/theron-cli 0.3.0 → 0.4.0
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/dist/api.d.ts +8 -0
- package/dist/api.js +3 -0
- package/dist/api.js.map +1 -1
- package/dist/auth.js +51 -1
- package/dist/auth.js.map +1 -1
- package/dist/banner.js +3 -2
- package/dist/banner.js.map +1 -1
- package/dist/checkpoints.d.ts +32 -0
- package/dist/checkpoints.js +61 -0
- package/dist/checkpoints.js.map +1 -0
- package/dist/index.js +59 -4
- package/dist/index.js.map +1 -1
- package/dist/input.d.ts +61 -0
- package/dist/input.js +574 -0
- package/dist/input.js.map +1 -0
- package/dist/profiles/index.js +5 -0
- package/dist/profiles/index.js.map +1 -1
- package/dist/profiles/methodologies/operate_domains.d.ts +8 -0
- package/dist/profiles/methodologies/operate_domains.js +1239 -0
- package/dist/profiles/methodologies/operate_domains.js.map +1 -0
- package/dist/profiles/seeds.js +57 -36
- package/dist/profiles/seeds.js.map +1 -1
- package/dist/receipt.d.ts +17 -0
- package/dist/receipt.js +46 -0
- package/dist/receipt.js.map +1 -0
- package/dist/render.d.ts +4 -1
- package/dist/render.js +95 -28
- package/dist/render.js.map +1 -1
- package/dist/repl.d.ts +8 -1
- package/dist/repl.js +420 -62
- package/dist/repl.js.map +1 -1
- package/dist/sessions.d.ts +14 -0
- package/dist/sessions.js +100 -0
- package/dist/sessions.js.map +1 -1
- package/dist/ship.d.ts +2 -0
- package/dist/ship.js +62 -0
- package/dist/ship.js.map +1 -0
- package/dist/skills/catalog.d.ts +13 -0
- package/dist/skills/catalog.js +86 -0
- package/dist/skills/catalog.js.map +1 -0
- package/dist/tools/bash.js +81 -14
- package/dist/tools/bash.js.map +1 -1
- package/dist/tools/edit.js +21 -1
- package/dist/tools/edit.js.map +1 -1
- package/dist/tools/glob.js +4 -1
- package/dist/tools/glob.js.map +1 -1
- package/dist/tools/grep.d.ts +5 -0
- package/dist/tools/grep.js +101 -2
- package/dist/tools/grep.js.map +1 -1
- package/dist/tools/index.d.ts +22 -0
- package/dist/tools/index.js +177 -41
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/ls.d.ts +3 -0
- package/dist/tools/ls.js +23 -12
- package/dist/tools/ls.js.map +1 -1
- package/dist/tools/multiedit.d.ts +12 -0
- package/dist/tools/multiedit.js +79 -0
- package/dist/tools/multiedit.js.map +1 -0
- package/dist/tools/stoa.d.ts +1 -1
- package/dist/tools/stoa.js +7 -3
- package/dist/tools/stoa.js.map +1 -1
- package/dist/tools/task.d.ts +9 -0
- package/dist/tools/task.js +166 -0
- package/dist/tools/task.js.map +1 -0
- package/dist/tools/todowrite.d.ts +12 -0
- package/dist/tools/todowrite.js +38 -0
- package/dist/tools/todowrite.js.map +1 -0
- package/dist/tools/webfetch.d.ts +6 -0
- package/dist/tools/webfetch.js +98 -0
- package/dist/tools/webfetch.js.map +1 -0
- package/dist/tools/websearch.d.ts +7 -0
- package/dist/tools/websearch.js +83 -0
- package/dist/tools/websearch.js.map +1 -0
- package/dist/tools/write.js +17 -1
- package/dist/tools/write.js.map +1 -1
- package/dist/verifiers/confidence_marked.d.ts +2 -0
- package/dist/verifiers/confidence_marked.js +49 -0
- package/dist/verifiers/confidence_marked.js.map +1 -0
- package/dist/verifiers/disclaimer_gate.d.ts +2 -0
- package/dist/verifiers/disclaimer_gate.js +57 -0
- package/dist/verifiers/disclaimer_gate.js.map +1 -0
- package/dist/verifiers/index.d.ts +5 -0
- package/dist/verifiers/index.js +20 -7
- package/dist/verifiers/index.js.map +1 -1
- package/dist/verifiers/lint.js +4 -3
- package/dist/verifiers/lint.js.map +1 -1
- package/dist/verifiers/promoted_kernels.d.ts +8 -0
- package/dist/verifiers/promoted_kernels.js +190 -0
- package/dist/verifiers/promoted_kernels.js.map +1 -0
- package/dist/verifiers/source_gate.js +2 -3
- package/dist/verifiers/source_gate.js.map +1 -1
- package/dist/verifiers/test_smoke.js +30 -0
- package/dist/verifiers/test_smoke.js.map +1 -1
- package/dist/verifiers/types.d.ts +3 -0
- package/package.json +4 -2
- package/skills/README.md +123 -0
- package/skills/ab-test.md +89 -0
- package/skills/api-design.md +175 -0
- package/skills/architecture-design.md +185 -0
- package/skills/business-case.md +77 -0
- package/skills/causal-inference.md +77 -0
- package/skills/clinical-guideline.md +98 -0
- package/skills/code-review.md +98 -0
- package/skills/cold-outreach.md +268 -0
- package/skills/competitive-teardown.md +223 -0
- package/skills/component-spec.md +121 -0
- package/skills/content-calendar.md +280 -0
- package/skills/contract-review.md +155 -0
- package/skills/data-analysis.md +187 -0
- package/skills/debug.md +91 -0
- package/skills/design-audit.md +121 -0
- package/skills/differential-diagnosis.md +79 -0
- package/skills/discovery-call.md +206 -0
- package/skills/edit-pass.md +80 -0
- package/skills/engineering-calc.md +101 -0
- package/skills/estimate.md +70 -0
- package/skills/experiment-design.md +105 -0
- package/skills/fact-check.md +82 -0
- package/skills/financial-model.md +104 -0
- package/skills/grant-proposal.md +93 -0
- package/skills/harmony-analysis.md +93 -0
- package/skills/hypothesis-generation.md +99 -0
- package/skills/incident-response.md +134 -0
- package/skills/interview-loop.md +62 -0
- package/skills/job-scorecard.md +92 -0
- package/skills/kb-article.md +174 -0
- package/skills/launch-plan.md +85 -0
- package/skills/lease-review.md +93 -0
- package/skills/lesson-plan.md +198 -0
- package/skills/literature-review.md +69 -0
- package/skills/market-entry.md +137 -0
- package/skills/market-sizing.md +159 -0
- package/skills/meta-analysis.md +140 -0
- package/skills/migrate.md +117 -0
- package/skills/optimize.md +88 -0
- package/skills/options-strategy.md +166 -0
- package/skills/peer-review.md +96 -0
- package/skills/pentest-plan.md +193 -0
- package/skills/pitch-review.md +132 -0
- package/skills/plan.md +88 -0
- package/skills/policy-brief.md +124 -0
- package/skills/positioning.md +192 -0
- package/skills/postmortem.md +168 -0
- package/skills/prd.md +105 -0
- package/skills/prioritize.md +162 -0
- package/skills/proof.md +91 -0
- package/skills/property-underwrite.md +159 -0
- package/skills/recipe-develop.md +109 -0
- package/skills/red-team.md +142 -0
- package/skills/refactor.md +58 -0
- package/skills/reflection-session.md +115 -0
- package/skills/regulatory-compliance.md +136 -0
- package/skills/reproduce.md +87 -0
- package/skills/runbook.md +344 -0
- package/skills/security-audit.md +154 -0
- package/skills/seo-brief.md +201 -0
- package/skills/sql-query.md +161 -0
- package/skills/story-craft.md +163 -0
- package/skills/tdd.md +59 -0
- package/skills/term-sheet.md +298 -0
- package/skills/theory-of-change.md +88 -0
- package/skills/threat-model.md +104 -0
- package/skills/ticket-triage.md +200 -0
- package/skills/tolerance-analysis.md +149 -0
- package/skills/training-program.md +151 -0
- package/skills/translate.md +64 -0
- package/skills/unit-economics.md +238 -0
- package/skills/valuation.md +112 -0
- package/skills/write-tests.md +77 -0
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: term-sheet
|
|
3
|
+
description: Analyze a venture-capital or angel term sheet — decompose economics vs. control provisions, step-by-step dilution math (option-pool shuffle, SAFE conversion, liquidation waterfall, anti-dilution), flag founder-unfriendly deviations from NVCA/YC market standard, and surface negotiation priorities; outputs a structured red/yellow/green memo with a NOT LEGAL ADVICE footer.
|
|
4
|
+
allowed-tools: Read, Bash, Write
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
KEY PRINCIPLE: Every dollar of economics and every vote of control is negotiable before signing. The founder who internalizes the waterfall math, the option-pool shuffle cost, and the board-composition arithmetic will always negotiate better than the one who reads only the headline valuation. Understand the instrument first; negotiate second.
|
|
8
|
+
|
|
9
|
+
═══ HARD RULES ═══
|
|
10
|
+
1. NEVER state a legal conclusion as fact ("this clause is unenforceable") — flag it as a risk and direct the founder to verify with qualified counsel.
|
|
11
|
+
2. NEVER invent cap-table numbers, valuations, or market-standard percentages as if ground truth; show your arithmetic and label every assumption explicitly.
|
|
12
|
+
3. Do not conflate pre-money and post-money valuation — one sentence must explicitly re-anchor which basis is in use before any math.
|
|
13
|
+
4. Do not skip the option-pool-shuffle calculation; it is almost always present and almost always disadvantages founders silently.
|
|
14
|
+
5. Do not summarize control provisions as "standard" without confirming against the specific NVCA model documents or stated investor standard.
|
|
15
|
+
6. Flag every defined term that is used in economics without being defined in the term sheet itself (e.g., "Fully Diluted" without a definition, "Qualified Financing" without a dollar threshold).
|
|
16
|
+
7. If the instrument is a SAFE or convertible note, complete Phase B-SAFE before Phase B — the conversion math must be resolved before any preferred-round dilution analysis.
|
|
17
|
+
8. Close every analysis with the NOT LEGAL ADVICE disclaimer (Phase E7); never omit it.
|
|
18
|
+
|
|
19
|
+
═══ PHASE A — INTAKE & DOCUMENT MAP ═══
|
|
20
|
+
A1. Read the term sheet verbatim; build a term inventory table:
|
|
21
|
+
| Term | Section | Value/Text | Type (Econ / Control / Both / Admin) |
|
|
22
|
+
|
|
23
|
+
A2. Identify the round structure:
|
|
24
|
+
- Series (Seed/A/B) or pre-money SAFE / post-money SAFE / convertible note
|
|
25
|
+
- Security type: convertible note, SAFE (pre-money vs. post-money), or priced preferred equity
|
|
26
|
+
- Lead investor, total raise, pro-rata reserved amount, and closing mechanics
|
|
27
|
+
- SAFEs or notes converting in this round — list each with: principal, discount rate, valuation cap, MFN clause, and interest accrued
|
|
28
|
+
|
|
29
|
+
A3. Flag any undefined capitalized terms that carry economic or control weight.
|
|
30
|
+
Common offenders: "Fully Diluted," "Qualified Financing," "Qualified IPO," "Material Adverse Change."
|
|
31
|
+
|
|
32
|
+
A4. Note which law firm authored it and which NVCA model version (if stated) — this sets
|
|
33
|
+
the baseline for "market" comparisons. Absence of a stated standard is itself a flag.
|
|
34
|
+
|
|
35
|
+
═══ PHASE B-SAFE — SAFE / CONVERTIBLE NOTE CONVERSION (run before Phase B if applicable) ═══
|
|
36
|
+
Skip this phase only if the round is a first-close priced equity with no converting instruments.
|
|
37
|
+
|
|
38
|
+
S1. FOR EACH SAFE OR NOTE, compute conversion shares:
|
|
39
|
+
Post-money SAFE (YC standard post-2018):
|
|
40
|
+
Conversion shares = SAFE investment amount / conversion price
|
|
41
|
+
Conversion price = MIN(valuation cap / post-money cap-table shares, price per share in round × (1 − discount%))
|
|
42
|
+
Post-money cap-table shares = all shares outstanding AFTER the new round closes INCLUDING the SAFE conversion pool
|
|
43
|
+
|
|
44
|
+
Pre-money SAFE (YC pre-2018) or convertible note:
|
|
45
|
+
Conversion price = MIN(cap / pre-money fully-diluted shares, price per share × (1 − discount%))
|
|
46
|
+
Note: add accrued interest to principal before applying conversion formula for notes.
|
|
47
|
+
|
|
48
|
+
S2. MFN CLAUSE: If a SAFE has MFN, confirm whether the current round terms trigger an amendment.
|
|
49
|
+
Flag if the MFN is uncapped (no floor on what terms the investor can claim).
|
|
50
|
+
|
|
51
|
+
S3. Build a pre-round SAFE conversion table:
|
|
52
|
+
| Instrument | Principal + Interest | Cap | Discount | Conversion Price | Shares Issued | % FD Post |
|
|
53
|
+
|
|
54
|
+
S4. Flag: post-money SAFEs issued on different caps stack against the SAME post-money denominator —
|
|
55
|
+
they do not dilute each other, they dilute founders and employees proportionally.
|
|
56
|
+
Show the aggregate SAFE dilution as a single % before the new money enters.
|
|
57
|
+
|
|
58
|
+
═══ PHASE B — ECONOMICS DECOMPOSITION ═══
|
|
59
|
+
B1. PRE-MONEY / POST-MONEY ANCHOR
|
|
60
|
+
- State explicitly: post-money = pre-money + new investment (NOT including converting SAFEs/notes
|
|
61
|
+
unless investor explicitly states they are included — this is a frequent source of disagreement).
|
|
62
|
+
- Identify whether the option pool is carved from pre-money (founder-dilutive — the shuffle) or
|
|
63
|
+
post-money (investor bears proportionate cost — rare but exists).
|
|
64
|
+
|
|
65
|
+
B2. OPTION-POOL SHUFFLE — STEP-BY-STEP MATH
|
|
66
|
+
The "option-pool shuffle" occurs when an investor sets the pre-money valuation assuming the
|
|
67
|
+
option pool is already fully funded. Because the pool is created before money goes in, the
|
|
68
|
+
shares come from founders, not from the new investor's money.
|
|
69
|
+
|
|
70
|
+
Pool shares needed = target post-close FD shares × target pool %
|
|
71
|
+
NOTE: the denominator (post-close FD shares) must include SAFE conversion shares from Phase B-SAFE.
|
|
72
|
+
|
|
73
|
+
Populate this template with actual numbers:
|
|
74
|
+
Stated pre-money: $________
|
|
75
|
+
New investment: $________
|
|
76
|
+
Post-money: $________ (= pre + new)
|
|
77
|
+
Pool target (% of post-close FD): ____%
|
|
78
|
+
Post-close FD shares (est): ________ (founders + existing + SAFEs converted + new investors + new pool)
|
|
79
|
+
New pool shares created: ________ (= post-close FD × pool %)
|
|
80
|
+
Existing unallocated pool: ________
|
|
81
|
+
Incremental pool shares: ________ (= new pool − existing unallocated)
|
|
82
|
+
Price per share: $________ (= pre-money / [pre-close FD shares INCLUDING incremental pool])
|
|
83
|
+
Dollar cost of shuffle to founders: $________ (= incremental pool shares × price per share)
|
|
84
|
+
Effective pre-money founders see: $________ (= stated pre-money − shuffle cost)
|
|
85
|
+
|
|
86
|
+
Conclusion: explicitly state who bears the shuffle cost and by how many percentage points it
|
|
87
|
+
shifts effective ownership away from founders.
|
|
88
|
+
|
|
89
|
+
B3. OWNERSHIP TABLE — FULLY DILUTED POST-CLOSE
|
|
90
|
+
Build the cap table post-close including: founders, existing investors (common + preferred),
|
|
91
|
+
SAFE/note holders (converted), new investors, and option pool (full target size).
|
|
92
|
+
Show % before and after the round on a fully-diluted basis.
|
|
93
|
+
| Holder | Pre-round shares | New / converted shares | Post-round shares | % FD |
|
|
94
|
+
|
|
95
|
+
B4. PRICE PER SHARE & EFFECTIVE DILUTION PER FOUNDER
|
|
96
|
+
- Price per share = pre-money valuation / pre-close fully-diluted shares
|
|
97
|
+
CRITICAL: pre-close FD shares must include the incremental pool from B2 (post-shuffle denominator).
|
|
98
|
+
If you use pre-shuffle shares in the denominator, the price will be overstated.
|
|
99
|
+
- Each founder's dilution = new investor % + option shuffle % + SAFE conversion % allocated by ownership.
|
|
100
|
+
|
|
101
|
+
B5. LIQUIDATION WATERFALL — STEP-BY-STEP
|
|
102
|
+
Model three scenarios: (1) exit at 1× the total raise, (2) exit at 2×, (3) exit at 5×.
|
|
103
|
+
For each scenario execute these steps in order:
|
|
104
|
+
|
|
105
|
+
Step 1 — Pay senior debt, transaction expenses, and any redemption obligations.
|
|
106
|
+
Step 2 — Apply liquidation preference in seniority order (most recent series first unless pari passu):
|
|
107
|
+
Non-participating preferred:
|
|
108
|
+
Investor receives preference (= 1× or stated multiple × invested capital) OR converts to common,
|
|
109
|
+
whichever produces the higher proceeds. Compute the crossover point explicitly.
|
|
110
|
+
Participating preferred (no cap):
|
|
111
|
+
Investor receives preference AND retains pro-rata common equivalent shares.
|
|
112
|
+
Participation amount = (investor common-equivalent % × remainder after preference).
|
|
113
|
+
Capped participating preferred:
|
|
114
|
+
Investor receives preference + participation up to cap (typically 2×–3× invested).
|
|
115
|
+
At the cap crossover, preferred converts to common automatically — compute this threshold:
|
|
116
|
+
Crossover proceeds = cap amount / investor fully-diluted %
|
|
117
|
+
Below crossover: participating preferred formula applies.
|
|
118
|
+
Above crossover: investor acts as common; recompute all distributions.
|
|
119
|
+
Step 3 — Distribute remainder to common (founders + vested option pool).
|
|
120
|
+
Step 4 — Build a proceeds table for each scenario:
|
|
121
|
+
| Scenario | Total Proceeds | Investor Preference | Investor Participation | Investor Total | Founder Total | Pool Total | Investor IRR |
|
|
122
|
+
- Flag any stacked preferences (multiple series) and model them in strict seniority order.
|
|
123
|
+
- Flag if any series carries a multiple > 1× (e.g., 2× non-participating) — highly investor-favorable.
|
|
124
|
+
|
|
125
|
+
B6. ANTI-DILUTION PROVISION
|
|
126
|
+
- Identify: broad-based weighted-average (BBWA), narrow-based (NBWA), or full ratchet.
|
|
127
|
+
- BBWA is the current NVCA market standard for Series A+; full ratchet is heavily investor-favorable.
|
|
128
|
+
- BBWA adjusted conversion price formula:
|
|
129
|
+
CP2 = CP1 × (A + B) / (A + C)
|
|
130
|
+
where:
|
|
131
|
+
A = total common-equivalent shares outstanding immediately before the down round
|
|
132
|
+
B = aggregate consideration received in the down round / CP1 (i.e., shares that WOULD have been issued at original price)
|
|
133
|
+
C = actual new shares issued in the down round at the lower price
|
|
134
|
+
- Show the resulting new conversion price and recomputed ownership for a hypothetical 50% down-round.
|
|
135
|
+
- Flag if SAFEs or earlier notes reset their conversion price on anti-dilution — this compounds dilution.
|
|
136
|
+
|
|
137
|
+
B7. DIVIDEND RIGHTS
|
|
138
|
+
- Cumulative vs. non-cumulative; simple vs. compounding.
|
|
139
|
+
- Non-cumulative non-participating = market (effectively a formality).
|
|
140
|
+
- If cumulative: compute accrual over 3 / 5 / 7 years at stated rate and show how it affects
|
|
141
|
+
the liquidation waterfall (accrued dividends typically add to the preference amount in Step 2).
|
|
142
|
+
|
|
143
|
+
═══ PHASE C — CONTROL PROVISIONS ═══
|
|
144
|
+
C1. BOARD COMPOSITION
|
|
145
|
+
- Map: current board → post-close board → any future trigger that shifts control.
|
|
146
|
+
- Flag: do founders retain majority at close? At Series B dilution levels?
|
|
147
|
+
- Identify the tie-breaking mechanism and who controls it.
|
|
148
|
+
- Market for Series A: 2 founder seats / 2 investor seats / 1 mutual independent.
|
|
149
|
+
- OBSERVER SEATS: flag any observer seat granted beyond formal director seats.
|
|
150
|
+
Observers receive board materials, attend meetings, and exert social pressure even without votes.
|
|
151
|
+
More than 1 observer seat per investor is founder-unfriendly; observer rights should expire on
|
|
152
|
+
IPO/acquisition and carry standard confidentiality obligations.
|
|
153
|
+
|
|
154
|
+
C2. PROTECTIVE PROVISIONS (INVESTOR VETO RIGHTS)
|
|
155
|
+
- List every action requiring preferred-holder approval.
|
|
156
|
+
- NVCA market scope (flag anything beyond this list as potentially over-broad):
|
|
157
|
+
1. Amendments to charter or bylaws adversely affecting preferred
|
|
158
|
+
2. Issuance of securities senior or pari passu to preferred
|
|
159
|
+
3. Redemption or repurchase of common (other than standard repurchase rights)
|
|
160
|
+
4. Declaration of dividends
|
|
161
|
+
5. Liquidation, dissolution, or wind-down
|
|
162
|
+
6. Change of business materially outside the current scope
|
|
163
|
+
7. Sale, merger, or acquisition of the company
|
|
164
|
+
- Flag specifically: blocking acquisitions below a stated multiple (e.g., "below 3× invested"),
|
|
165
|
+
blocking new hires above a salary threshold, or requiring approval for budget variances >X%.
|
|
166
|
+
These are operational veto rights that go beyond standard protective provisions.
|
|
167
|
+
|
|
168
|
+
C3. DRAG-ALONG
|
|
169
|
+
- Who triggers drag? (majority preferred alone = bad; majority preferred + majority common = market)
|
|
170
|
+
- Is there a minimum price floor? A fiduciary-duty carve-out for the board?
|
|
171
|
+
- Flag if drag can be triggered at a price below the liquidation preference (investor drags founders
|
|
172
|
+
to a zero-proceeds exit for founders while collecting their preference).
|
|
173
|
+
|
|
174
|
+
C4. INFORMATION RIGHTS & INSPECTION
|
|
175
|
+
- Quarterly / annual financials, budget approval, inspection rights — standard.
|
|
176
|
+
- Flag: real-time system access, daily reporting obligations, or audit rights exercisable more than
|
|
177
|
+
once per year are operationally burdensome and unusual outside distressed situations.
|
|
178
|
+
- Flag if information rights do not terminate on IPO — they should.
|
|
179
|
+
|
|
180
|
+
C5. RIGHT OF FIRST REFUSAL (ROFR) & CO-SALE (TAG-ALONG)
|
|
181
|
+
- ROFR on founder secondary sales: market.
|
|
182
|
+
- Company ROFR exercises before investor ROFR: market.
|
|
183
|
+
- Flag if ROFR applies to all common transfers generally (not just founders) — unusual scope.
|
|
184
|
+
- Co-sale: investor right to participate pro-rata in any founder secondary sale — market.
|
|
185
|
+
- Flag if co-sale right does not terminate on IPO.
|
|
186
|
+
|
|
187
|
+
C6. PRO-RATA RIGHTS
|
|
188
|
+
- Right to participate in future rounds up to ownership % — market for "major investors" above
|
|
189
|
+
a defined threshold (e.g., $500K+ invested).
|
|
190
|
+
- Super pro-rata (right to invest MORE than ownership %) is investor-favorable; flag and quantify
|
|
191
|
+
the dilutive impact on founders if the investor exercises in a flat or down round.
|
|
192
|
+
|
|
193
|
+
C7. PAY-TO-PLAY
|
|
194
|
+
- Does non-participation in future rounds cause automatic conversion of preferred to common
|
|
195
|
+
or shadow preferred? Flag if absent at Series B+ — pay-to-play actually benefits founders by
|
|
196
|
+
forcing investors to support the company or lose their preference.
|
|
197
|
+
- Flag if the pay-to-play threshold is set so high that only the lead can realistically meet it.
|
|
198
|
+
|
|
199
|
+
C8. NO-SHOP & EXCLUSIVITY
|
|
200
|
+
- Duration: 30–45 days = market; 60+ days = flag; 90+ days = negotiate hard.
|
|
201
|
+
- Carve-outs for responding to unsolicited offers? For existing discussions already disclosed?
|
|
202
|
+
- Flag if no-shop binds the company's advisors (bankers, lawyers) in addition to the company.
|
|
203
|
+
|
|
204
|
+
C9. FOUNDER VESTING & ACCELERATION
|
|
205
|
+
- Market: 4-year total / 1-year cliff / monthly vesting thereafter.
|
|
206
|
+
- Credit for time served pre-close: market to receive partial or full credit; flag if zero credit offered.
|
|
207
|
+
- Single-trigger acceleration (change of control alone): investor-unfriendly — acquirer can demand
|
|
208
|
+
clawback or discount purchase price.
|
|
209
|
+
- Double-trigger acceleration (change of control + termination without cause or constructive dismissal
|
|
210
|
+
within 12 months): market standard; flag if absent.
|
|
211
|
+
- Flag if investors are requesting reverse vesting on shares already fully vested — this is unusual
|
|
212
|
+
and represents a significant founder value transfer.
|
|
213
|
+
|
|
214
|
+
C10. REDEMPTION RIGHTS
|
|
215
|
+
- Flag if present — redeemable preferred is rare in standard VC-backed startups.
|
|
216
|
+
- Signals: bridge financing at distressed terms, strategic investor with a put right, or
|
|
217
|
+
a structure designed to force an exit at the investor's preferred timing.
|
|
218
|
+
- If present, compute the redemption price at years 3, 5, and 7 (including accrued dividends)
|
|
219
|
+
and the cash burden on the company.
|
|
220
|
+
|
|
221
|
+
C11. REPRESENTATIONS, WARRANTIES & DISCLOSURE
|
|
222
|
+
- Identify any founder representations (as distinct from company representations).
|
|
223
|
+
- Flag personal indemnification obligations that survive closing without a cap or survival limit.
|
|
224
|
+
- Flag if the term sheet requires disclosure schedules by a date earlier than 5 business days
|
|
225
|
+
before closing — inadequate time creates warranty breach exposure.
|
|
226
|
+
|
|
227
|
+
═══ PHASE D — RED / YELLOW / GREEN SCORING ═══
|
|
228
|
+
D1. For each provision in Phases B and C, assign:
|
|
229
|
+
RED — materially founder-unfriendly vs. NVCA/YC market standard; negotiate hard before accepting.
|
|
230
|
+
YELLOW — present in some deals but worth pushing back; pick your battles based on leverage.
|
|
231
|
+
GREEN — market standard; accept without friction and preserve goodwill for RED items.
|
|
232
|
+
|
|
233
|
+
D2. Output a consolidated scorecard:
|
|
234
|
+
| Provision | Classification | Deviation from Market | Dollar/Vote Impact | Negotiation Priority |
|
|
235
|
+
|
|
236
|
+
D3. Rank the top 3 non-economic terms the founder should prioritize in negotiation.
|
|
237
|
+
Typical hierarchy (context-dependent): board composition and tie-breaking > drag-along trigger and
|
|
238
|
+
price floor > founder vesting credit for time served > scope of protective provisions.
|
|
239
|
+
|
|
240
|
+
D4. Identify the single highest-value economic improvement available. Quantify the dollar impact
|
|
241
|
+
at each exit scenario from Phase B5.
|
|
242
|
+
Typical candidates:
|
|
243
|
+
- Removing participation from participating preferred (converts to non-participating)
|
|
244
|
+
- Shrinking the option-pool shuffle by reducing post-close pool size or deferring creation
|
|
245
|
+
- Removing a liquidation preference multiple above 1×
|
|
246
|
+
- Converting full ratchet to BBWA anti-dilution
|
|
247
|
+
|
|
248
|
+
D5. Identify one trade worth offering: a provision the founder is willing to concede that costs
|
|
249
|
+
the investor little to receive but preserves founder value where it matters most.
|
|
250
|
+
Example: concede quarterly reporting cadence in exchange for removing the participation right.
|
|
251
|
+
|
|
252
|
+
═══ PHASE E — FINAL MEMO FORMAT ═══
|
|
253
|
+
KEY PRINCIPLE BEFORE WRITING: Structure the memo for a founder who has 30 minutes before a call
|
|
254
|
+
with the investor. Prioritize ruthlessly. Do not bury the RED items in section 4.
|
|
255
|
+
|
|
256
|
+
E1. Executive Summary (3–5 bullets):
|
|
257
|
+
- Effective pre-money (after shuffle and SAFE conversion)
|
|
258
|
+
- Founder ownership % post-close (fully diluted)
|
|
259
|
+
- Liquidation preference stack and participation structure
|
|
260
|
+
- Control posture (board majority? veto scope?)
|
|
261
|
+
- Single top risk and single top opportunity
|
|
262
|
+
|
|
263
|
+
E2. Economics section with all math shown (Phases B1–B7 and B-SAFE).
|
|
264
|
+
|
|
265
|
+
E3. Control section, provision-by-provision (Phase C), in order of RED → YELLOW → GREEN.
|
|
266
|
+
|
|
267
|
+
E4. Red/Yellow/Green scorecard (Phase D).
|
|
268
|
+
|
|
269
|
+
E5. Negotiation playbook:
|
|
270
|
+
PUSH HARD (RED items — these are your opening positions):
|
|
271
|
+
- List each RED item with: what you ask for, the market standard you cite, and why it matters.
|
|
272
|
+
TRADE (YELLOW items — concede these to win the RED items):
|
|
273
|
+
- List each Yellow item you will concede and what you expect in return.
|
|
274
|
+
ACCEPT WITHOUT COMMENT (GREEN items):
|
|
275
|
+
- List Green items; accepting quickly signals reasonableness and builds goodwill.
|
|
276
|
+
INVESTOR RESPONSE PATTERNS TO ANTICIPATE:
|
|
277
|
+
- "This is our standard document" → response: "I understand; counsel has flagged [specific RED item]
|
|
278
|
+
as outside NVCA market — here is the market language."
|
|
279
|
+
- "Everyone accepts participating preferred at Series A" → response: "YC's Series A standard and the
|
|
280
|
+
NVCA model both use non-participating; here is the crossover math showing the founder impact."
|
|
281
|
+
- "The option pool size is non-negotiable" → response: "Understood on size; can we agree the pool
|
|
282
|
+
is created post-close rather than pre-close to eliminate the shuffle?"
|
|
283
|
+
|
|
284
|
+
E6. Open questions for the investor / counsel before signing:
|
|
285
|
+
- List undefined capitalized terms from A3 requiring definition.
|
|
286
|
+
- List any math that requires the actual cap table to verify (e.g., exact SAFE conversion shares).
|
|
287
|
+
- List any representations or disclosure obligations requiring legal review.
|
|
288
|
+
|
|
289
|
+
E7. Footer (mandatory, verbatim):
|
|
290
|
+
|
|
291
|
+
─────────────────────────────────────────────────────────────────
|
|
292
|
+
NOT LEGAL ADVICE. This analysis is for informational and
|
|
293
|
+
illustrative purposes only. It does not constitute legal,
|
|
294
|
+
tax, or financial advice and does not create an attorney-client
|
|
295
|
+
relationship. All math is based on stated assumptions and should
|
|
296
|
+
be independently verified. Consult qualified legal counsel before
|
|
297
|
+
signing any financing document.
|
|
298
|
+
─────────────────────────────────────────────────────────────────
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: theory-of-change
|
|
3
|
+
description: Build a rigorous theory of change for a program, product, or initiative: map the long-term impact goal backward through causal preconditions to activities, make every causal arrow's assumptions explicit and testable, assign indicators per outcome, and cite the evidence base that validates each assumption — invoked when asked to develop, stress-test, or document a theory of change, logic model, impact pathway, or results framework.
|
|
4
|
+
allowed-tools: Read, Write
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
═══ HARD RULES ═══
|
|
8
|
+
1. NEVER state an assumption as a fact. Every causal arrow carries an explicit assumption; label it [ASSUMPTION].
|
|
9
|
+
2. NEVER invent statistics, citations, or effect sizes to validate assumptions. State "evidence: weak / moderate / strong / empirical gap" with a one-line rationale; leave gaps visible so the team knows what to test.
|
|
10
|
+
3. NEVER conflate outputs (what you produced) with outcomes (what changed in the world). Outputs are deliverables. Outcomes are behavioral or systemic shifts. Impact is long-run change at population, market, or system scale.
|
|
11
|
+
4. NEVER skip the backward-mapping pass (Phase A). Building the forward chain first produces activity-driven rationalization, not a causal theory.
|
|
12
|
+
5. NEVER omit a counterfactual check: for each outcome, ask what would have happened without the intervention. If the answer is "the same," the activity is not load-bearing.
|
|
13
|
+
6. One theory of change per distinct target population, user segment, or causal mechanism. If two segments have different preconditions, write two chains.
|
|
14
|
+
7. Indicators must be SMART (specific, measurable, attributable to this intervention, relevant to the outcome, time-bound). Reject vague proxies such as "increased awareness," "better engagement," or "improved outcomes."
|
|
15
|
+
8. Stress-test every assumption in Phase D before declaring the theory complete. A theory with zero challenged assumptions has not been examined.
|
|
16
|
+
9. At Phase A, identify the domain type and let it govern timeframes, actor vocabulary, and evidence standards throughout — do not impose social-sector framing on a product or policy context, nor product-cycle framing on a systems-change initiative.
|
|
17
|
+
|
|
18
|
+
═══ PHASE A — ANCHOR THE LONG-TERM IMPACT GOAL ═══
|
|
19
|
+
A1. State the impact goal in one sentence: WHO experiences WHAT change BY WHEN at WHAT SCALE.
|
|
20
|
+
Format: "By [year/horizon], [population / user segment / market] will experience [measurable systemic, behavioral, or market-structural change] at [scale/geography/scope]."
|
|
21
|
+
A2. Identify the domain type. This governs all downstream vocabulary, timeframes, and evidence standards:
|
|
22
|
+
- SOCIAL/POLICY: target population, systemic change, 5–15 year horizon, RCT / quasi-experimental evidence standard, equity and exclusion checks mandatory.
|
|
23
|
+
- PRODUCT/MARKET: user segment, adoption and retention curves, 1–3 year horizon, A/B and cohort evidence standard, competitive displacement and switching-cost checks mandatory.
|
|
24
|
+
- ORGANIZATIONAL/INTERNAL: team or process, capability or culture shift, 1–2 year horizon, before/after operational metrics, dependency and change-fatigue checks mandatory.
|
|
25
|
+
If the initiative spans domains, state the primary domain and note where secondary-domain logic applies.
|
|
26
|
+
A3. Identify the system this goal sits inside (economic, regulatory, ecological, social, competitive market, organizational). Name it explicitly — it defines what counts as a precondition versus a confound.
|
|
27
|
+
A4. State the counterfactual: what does the system default to without this intervention? This is the baseline against which attribution is measured. For a product: what do users do today, and what alternatives exist? For a policy: what is the status quo trajectory?
|
|
28
|
+
A5. Identify 2–4 alternative pathways that could also reach the same impact goal (competitor theories or approaches). State why yours is preferred — mechanism, feasibility, cost, evidence — or acknowledge it is not yet preferred and explain the bet.
|
|
29
|
+
|
|
30
|
+
═══ PHASE B — BACKWARD-MAP THE CAUSAL PRECONDITIONS ═══
|
|
31
|
+
B1. Starting from the impact goal, ask: "For this to be true, what must be true one step earlier?" Write that as an intermediate outcome. Repeat until you reach conditions your activities can directly influence. This is the theory's spine.
|
|
32
|
+
B2. For each arrow between preconditions, write the [ASSUMPTION] explicitly:
|
|
33
|
+
"[Precondition N] leads to [Precondition N+1] ASSUMING [specific mechanism, behavioral pattern, market condition, or institutional context]."
|
|
34
|
+
Domain examples:
|
|
35
|
+
- Product: "Users who complete onboarding will return within 7 days ASSUMING the core action delivers perceived value on first use."
|
|
36
|
+
- Social program: "Skill training completion leads to wage gain ASSUMING local labor markets have unfilled demand at that skill level."
|
|
37
|
+
- Policy: "Regulatory change leads to market entry ASSUMING compliance costs drop below the profit threshold for new entrants."
|
|
38
|
+
B3. Rate each assumption on two axes:
|
|
39
|
+
- Plausibility (low / medium / high) — based on mechanistic reasoning, not hope.
|
|
40
|
+
- Evidence base (empirical gap / weak / moderate / strong) — cite source type (RCT, quasi-experimental, cohort study, A/B test, case study, expert consensus, theoretical only). No invented citations.
|
|
41
|
+
B4. Flag load-bearing assumptions: any assumption rated low plausibility OR empirical gap that sits on the critical path is a risk node. Mark [RISK NODE]. These require either evidence-gathering or design mitigation before launch.
|
|
42
|
+
B5. Check for missing preconditions: for each arrow, ask whether additional enabling conditions must hold simultaneously (infrastructure access, regulatory permission, organizational capacity, market liquidity, user literacy, financing). If yes, add them as parallel preconditions feeding the same arrow.
|
|
43
|
+
|
|
44
|
+
═══ PHASE C — BUILD THE FORWARD ACTIVITIES → OUTPUTS → OUTCOMES → IMPACT CHAIN ═══
|
|
45
|
+
C1. List activities: the discrete things the program, product, or initiative does (feature shipped, session delivered, policy brief submitted, service rendered, partnership formed). Activities consume inputs and produce outputs. Be exhaustive — omitted activities whose outputs you rely on are theory gaps.
|
|
46
|
+
C2. For each activity, state the output: the tangible, countable deliverable (N users onboarded, N sessions delivered, N briefs published, N integrations live). Outputs are fully within the team's control. Do not claim them as outcomes.
|
|
47
|
+
C3. Map outputs to short-term outcomes (timeframe set by domain in A2): what changes in knowledge, attitude, skill, behavior, adoption, or system access for the target population or user segment as a direct result? Each output-to-outcome arrow carries an [ASSUMPTION] about uptake, adoption, or behavioral response.
|
|
48
|
+
C4. Map short-term outcomes to medium-term outcomes: what structural, market, or systemic changes become possible because short-term outcomes held? These are the hardest arrows to evidence; mark assumption quality rigorously.
|
|
49
|
+
C5. Map medium-term outcomes to the long-term impact goal (Phase A). Confirm the chain connects without teleological leaps. If a leap exists, either add intermediate outcomes or acknowledge the evidence gap explicitly.
|
|
50
|
+
C6. For each outcome (short and medium), write 1–3 SMART indicators:
|
|
51
|
+
- Indicator name
|
|
52
|
+
- Measurement method (survey, administrative data, direct observation, platform telemetry, third-party audit, regulatory filing, cohort analysis)
|
|
53
|
+
- Baseline value (state "unknown — baseline study required" if genuinely unknown)
|
|
54
|
+
- Target value and timeframe (use the domain-appropriate cycle from A2)
|
|
55
|
+
- Attribution note: what share of the indicator's movement is attributable to this program vs. external context or market trends?
|
|
56
|
+
|
|
57
|
+
═══ PHASE D — STRESS-TEST ASSUMPTIONS AND SCOPE ═══
|
|
58
|
+
D1. Red-team the three highest-risk assumptions (from Phase B4). For each: what is the strongest case that it is WRONG? Who would make that case (a competitor, a regulator, a skeptical user, an affected community)? What evidence would settle it?
|
|
59
|
+
D2. Boundary conditions: under what population, user segment, scale, context, geography, or time conditions does the theory break? State these explicitly. A theory that claims universal applicability is not a theory; it is a wish. Examples:
|
|
60
|
+
- Product: "The retention assumption breaks for users who enter via paid acquisition with low intent."
|
|
61
|
+
- Social: "The wage-gain assumption breaks in rural economies without formal employer networks."
|
|
62
|
+
- Policy: "The market-entry assumption breaks when incumbent lobbying raises compliance costs post-passage."
|
|
63
|
+
D3. Exclusion and access audit (scope to domain): identify which sub-populations, user segments, or market actors are systematically excluded by preconditions the theory takes for granted (digital access, financial capacity, institutional trust, legal status, language, organizational readiness). If exclusion exists: either adapt the theory to address it, create a parallel chain for excluded groups, or document the exclusion honestly with its implications.
|
|
64
|
+
D4. Unintended consequences scan: for each activity, name one plausible harmful second-order effect and whether the design mitigates it. Domain examples:
|
|
65
|
+
- Product: perverse incentives from metric gaming; dependency on a platform you do not control; privacy exposure from data collection.
|
|
66
|
+
- Social program: crowding out local providers; dependency creation; diverting capable individuals from alternative pathways.
|
|
67
|
+
- Policy: regulatory capture; compliance burden falling disproportionately on small actors; enforcement gaps creating two-tier systems.
|
|
68
|
+
D5. Falsifiability test: state two observable conditions that, if true at the first major review checkpoint, would indicate the theory has failed and the program should pivot or stop. A theory with no falsification conditions is unfalsifiable and therefore unimprovable.
|
|
69
|
+
|
|
70
|
+
═══ PHASE E — EVIDENCE INTEGRATION PLAN ═══
|
|
71
|
+
E1. For each empirical gap identified in Phase B, specify the minimum viable evidence-gathering activity: what study design, sample, timeline, and budget would fill it? Prioritize by risk-node status.
|
|
72
|
+
E2. Design the learning loop: at what intervals (sprint review, quarterly, annually) will the team review indicator data against the theory's predictions? Use domain-appropriate cadences — a product team running weekly sprints should not wait annually to test assumptions; a policy initiative with 5-year horizons should not over-index on quarterly noise. Who has authority to revise assumptions, and through what process?
|
|
73
|
+
E3. Distinguish between formative learning (revising activities and outputs mid-implementation) and summative evaluation (testing whether the theory's outcome predictions held). Both are required; neither substitutes for the other.
|
|
74
|
+
E4. Document the theory version: date, author, domain type, iteration number. A theory of change is a living hypothesis, not a founding document. Every revision is evidence the team is learning.
|
|
75
|
+
|
|
76
|
+
═══ OUTPUT FORMAT ═══
|
|
77
|
+
Deliver the completed theory of change as a structured document with these labeled sections:
|
|
78
|
+
1. Impact Goal Statement (A1) with Domain Type declared (A2)
|
|
79
|
+
2. System Context and Counterfactual (A3–A4)
|
|
80
|
+
3. Alternative Pathways Considered (A5)
|
|
81
|
+
4. Backward Causal Map — table: Precondition | Arrow Assumption | Plausibility | Evidence Base | Risk Node?
|
|
82
|
+
5. Activities → Outputs → Outcomes → Impact — chain in text or table form, with domain-appropriate timeframes
|
|
83
|
+
6. Indicators Table — Outcome | Indicator | Method | Baseline | Target | Attribution Note
|
|
84
|
+
7. Stress-Test Results — D1–D5 findings, including boundary conditions and exclusion audit
|
|
85
|
+
8. Evidence Integration Plan — E1–E4 with domain-calibrated cadences
|
|
86
|
+
9. Open Questions — ranked by criticality; each with a proposed resolution path and owner
|
|
87
|
+
|
|
88
|
+
KEY PRINCIPLE: A theory of change is only as honest as its weakest assumption — make every assumption visible, every evidence gap named, every boundary condition explicit, and every falsification condition stated before any team, funder, user, or affected population bears the cost of an untested belief. Domain determines vocabulary and timeframe; rigor is non-negotiable across all domains.
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: threat-model
|
|
3
|
+
description: Threat-model a system — assets + trust boundaries, STRIDE enumeration, attack trees, risk-rated threats mapped to mitigations, and explicit residual risk.
|
|
4
|
+
allowed-tools: Read, Write, Grep, Glob
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
You are a senior security architect performing a structured threat model. Work through every phase below in order. Do not skip phases. Do not produce generic output — every finding must be specific to THIS system.
|
|
8
|
+
|
|
9
|
+
## PHASE 1 — SYSTEM DEFINITION (do this first, do not proceed until complete)
|
|
10
|
+
|
|
11
|
+
1. Ask the user (or read from context) to describe: (a) what the system does, (b) who its users are, (c) where it runs (cloud/on-prem/edge/mobile), (d) what tech stack it uses.
|
|
12
|
+
2. Identify and list ASSETS — everything worth protecting. Classify each:
|
|
13
|
+
- **CRITICAL**: loss causes existential/regulatory/financial catastrophe (PII, auth credentials, signing keys, payment data, health records)
|
|
14
|
+
- **HIGH**: loss causes significant harm (session tokens, internal configs, audit logs, business logic)
|
|
15
|
+
- **MEDIUM**: loss causes operational disruption (cached data, non-sensitive metadata, feature flags)
|
|
16
|
+
- **LOW**: loss is a nuisance (public static assets, benign telemetry)
|
|
17
|
+
3. State SECURITY OBJECTIVES in concrete terms (e.g. "no unauthenticated principal may read another user's receipts", "signing keys must never leave the HSM", "audit log is append-only and tamper-evident").
|
|
18
|
+
4. State ASSUMPTIONS explicitly (e.g. "TLS termination at load balancer is correctly configured", "OS is patched", "developer laptops are not in scope").
|
|
19
|
+
5. State OUT-OF-SCOPE items explicitly (e.g. "physical data-center attacks", "nation-state APT", "supply-chain compromise of npm registry").
|
|
20
|
+
|
|
21
|
+
## PHASE 2 — DATA-FLOW DIAGRAM + TRUST BOUNDARIES
|
|
22
|
+
|
|
23
|
+
6. Enumerate every COMPONENT: browsers, mobile apps, CDN, API gateway, microservices, queues, databases, caches, third-party APIs, CI/CD pipeline, admin consoles, monitoring systems.
|
|
24
|
+
7. Enumerate every DATA FLOW between components (e.g. "browser → API gateway: HTTPS POST /login with credentials").
|
|
25
|
+
8. Draw trust boundaries as ASCII or text: a boundary exists wherever privilege level changes — e.g. public internet → DMZ, DMZ → internal network, internal → database tier, user-space → kernel, tenant A → tenant B. Label each boundary with the trust delta.
|
|
26
|
+
9. **Rule**: threats live at trust-boundary crossings. Every crossing becomes a threat candidate in Phase 3.
|
|
27
|
+
10. Annotate each flow with: protocol, authentication mechanism, encryption in transit, data classification of payload.
|
|
28
|
+
|
|
29
|
+
## PHASE 3 — STRIDE ENUMERATION PER ELEMENT
|
|
30
|
+
|
|
31
|
+
11. For EVERY component and EVERY trust-boundary crossing, apply STRIDE systematically. Produce a row for each non-trivially-absent threat. Do not skip elements; state "N/A — reason" when a category truly does not apply.
|
|
32
|
+
|
|
33
|
+
- **S — Spoofing**: Can an attacker impersonate a user, service, or component? Check: auth mechanisms, certificate validation, API key entropy, OAuth flows, service-to-service auth.
|
|
34
|
+
- **T — Tampering**: Can data or code be modified in transit or at rest? Check: integrity controls, signed payloads, DB permissions, pipeline artifact signing, config drift.
|
|
35
|
+
- **R — Repudiation**: Can an actor deny performing an action? Check: audit logs, log integrity, non-repudiation in receipts/signatures, log shipping to append-only store.
|
|
36
|
+
- **I — Information Disclosure**: Can an attacker read data they should not? Check: authorization (not just authentication), error messages leaking internals, side channels, over-permissive APIs, log scrubbing.
|
|
37
|
+
- **D — Denial of Service**: Can an attacker degrade or halt the system? Check: rate limiting, resource exhaustion, amplification vectors, single points of failure, queue flooding.
|
|
38
|
+
- **E — Elevation of Privilege**: Can an attacker gain capabilities beyond their role? Check: IDOR, SSRF, injection (SQL/command/template), insecure deserialization, role-escalation paths, confused deputy.
|
|
39
|
+
|
|
40
|
+
12. Format each threat as:
|
|
41
|
+
- **ID**: T-001 (sequential)
|
|
42
|
+
- **Element**: which component or flow
|
|
43
|
+
- **STRIDE category**: one letter
|
|
44
|
+
- **Threat statement**: concrete one-sentence description of the attack
|
|
45
|
+
- **Attack vector**: how an attacker executes it
|
|
46
|
+
|
|
47
|
+
## PHASE 4 — ATTACK TREES FOR HIGH-VALUE TARGETS
|
|
48
|
+
|
|
49
|
+
13. Select the 2–4 highest-value targets (CRITICAL assets + their controlling components).
|
|
50
|
+
14. For each target, build an attack tree:
|
|
51
|
+
- Root node = attacker's goal (e.g. "Exfiltrate all user PII")
|
|
52
|
+
- Second level = independent attack paths (OR nodes)
|
|
53
|
+
- Third level = prerequisite steps within each path (AND nodes)
|
|
54
|
+
- Leaf nodes = primitive attacker actions
|
|
55
|
+
15. Label each leaf: feasibility (Low/Med/High), required attacker capability (Script Kiddie / Skilled / Nation-State).
|
|
56
|
+
16. **Rule**: only model attacker capability realistic for the deployment context. A consumer SaaS does not need to model nation-state hardware implants. A government secrets system does.
|
|
57
|
+
|
|
58
|
+
## PHASE 5 — RISK RATING
|
|
59
|
+
|
|
60
|
+
17. Rate every threat from Phase 3 using a simple LIKELIHOOD × IMPACT matrix:
|
|
61
|
+
- LIKELIHOOD: 1 (theoretical), 2 (known technique, uncommon), 3 (common attack, easy tooling)
|
|
62
|
+
- IMPACT: 1 (nuisance), 2 (significant, recoverable), 3 (severe, regulatory/financial/existential)
|
|
63
|
+
- RISK SCORE = L × I (1–9); map to: 1–2 LOW, 3–4 MEDIUM, 6 HIGH, 9 CRITICAL
|
|
64
|
+
18. Alternatively, if DREAD is preferred: rate Damage, Reproducibility, Exploitability, Affected users, Discoverability each 0–3, sum to 0–15, map to LOW/MED/HIGH/CRITICAL.
|
|
65
|
+
19. Document the rating rationale in one sentence. Do not inflate scores to look thorough — under-inflation of low-probability theoretical attacks is correct.
|
|
66
|
+
|
|
67
|
+
## PHASE 6 — MITIGATIONS + SECURITY CONTROLS
|
|
68
|
+
|
|
69
|
+
20. For EVERY threat rated MEDIUM or above, define a mitigation:
|
|
70
|
+
- **Control type**: Preventive / Detective / Corrective / Deterrent
|
|
71
|
+
- **Control**: specific, implementable action (e.g. "add HMAC-SHA256 signature to every webhook payload and verify before processing" not "add integrity checks")
|
|
72
|
+
- **Maps to**: threat ID(s) it addresses
|
|
73
|
+
- **Owner**: which team/role owns implementation
|
|
74
|
+
- **Effort**: S (hours), M (days), L (weeks)
|
|
75
|
+
21. For LOW threats, note "accepted" or "monitor" — do not assign engineering work without justification.
|
|
76
|
+
22. Map controls to standard frameworks where helpful (OWASP Top 10, NIST 800-53, CIS Controls) — but the mapping is secondary to the control being concrete.
|
|
77
|
+
23. Flag QUICK WINS: HIGH/CRITICAL threats addressable with S-effort controls. These are the first action items.
|
|
78
|
+
|
|
79
|
+
## PHASE 7 — RESIDUAL RISK + ACCEPTED RISK REGISTER
|
|
80
|
+
|
|
81
|
+
24. After mitigations, re-rate each threat's residual risk (post-control likelihood × impact).
|
|
82
|
+
25. Explicitly list ACCEPTED RISKS: threats where residual risk is non-zero and the team is consciously accepting it. Each entry must state: threat ID, residual risk level, reason for acceptance, owner who accepted it, review date.
|
|
83
|
+
26. **Rule**: "we'll fix it later" is not an acceptance. Acceptance requires a named owner and a review date.
|
|
84
|
+
27. Flag any threats where no adequate mitigation exists (i.e. residual risk remains HIGH/CRITICAL after best available controls) — these require architectural change or product-level risk decisions.
|
|
85
|
+
|
|
86
|
+
## PHASE 8 — THREAT REGISTER OUTPUT
|
|
87
|
+
|
|
88
|
+
28. Produce the final THREAT REGISTER as a structured table with columns:
|
|
89
|
+
ID | Element | STRIDE | Threat | Risk (pre) | Mitigation | Control Type | Effort | Residual Risk | Status
|
|
90
|
+
29. Sort by pre-mitigation risk score descending (CRITICAL first).
|
|
91
|
+
30. Append a PRIORITIZED ACTION LIST: top 10 items the team should do in order, with effort estimate and owner.
|
|
92
|
+
31. Append the ACCEPTED RISK REGISTER as a separate table.
|
|
93
|
+
32. Append ARCHITECTURE RECOMMENDATIONS: systemic changes (e.g. "adopt mTLS between all internal services", "move signing keys to a dedicated HSM/KMS") that address clusters of threats rather than individual ones.
|
|
94
|
+
|
|
95
|
+
## HARD RULES (never violate these)
|
|
96
|
+
|
|
97
|
+
- R1: Never skip a STRIDE category without an explicit "N/A — reason" note.
|
|
98
|
+
- R2: Never produce a generic mitigation ("use encryption", "validate input") — always name the specific mechanism, algorithm, or library.
|
|
99
|
+
- R3: Never model attackers above the realistic capability ceiling for the deployment context.
|
|
100
|
+
- R4: Every accepted risk must have a named owner and review date or it is not accepted — it is ignored.
|
|
101
|
+
- R5: Residual risk must be re-rated after mitigations, not assumed to drop to zero.
|
|
102
|
+
- R6: Data classification must drive threat prioritization — CRITICAL assets get attack trees; LOW assets do not.
|
|
103
|
+
- R7: Trust boundaries are non-negotiable analysis units — every boundary crossing gets STRIDE applied.
|
|
104
|
+
- R8: If the system processes auth credentials, payment data, or health records, CRITICAL/HIGH threats in those flows must have QUICK WIN mitigations identified before the output is considered complete.
|