@polderlabs/bizar 10.7.1 → 10.7.2
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/.claude/agents/_shared/AGENT_BASELINE.md +266 -0
- package/.claude/agents/_shared/CLAUDE_TOOLS.md +412 -0
- package/.claude/agents/_shared/SKILLS.md +109 -0
- package/.claude/agents/brand-designer.md +55 -0
- package/.claude/agents/exec-assistant.md +34 -0
- package/.claude/agents/help-desk.md +44 -0
- package/.claude/agents/it-lead.md +53 -0
- package/.claude/agents/knowledge-manager.md +49 -0
- package/.claude/agents/office-coordinator.md +39 -0
- package/.claude/agents/office-greeter.md +53 -0
- package/.claude/agents/office-manager.md +287 -0
- package/.claude/agents/principal-engineer.md +58 -0
- package/.claude/agents/qa-reviewer.md +51 -0
- package/.claude/agents/research-analyst.md +53 -0
- package/.claude/agents/senior-engineer.md +55 -0
- package/.claude/agents/support-tech.md +87 -0
- package/.claude/agents/vp-engineering.md +54 -0
- package/.claude/commands/audit.md +48 -0
- package/.claude/commands/bizar.md +22 -0
- package/.claude/commands/cron.md +36 -0
- package/.claude/commands/explain.md +17 -0
- package/.claude/commands/goal.md +99 -0
- package/.claude/commands/init.md +15 -0
- package/.claude/commands/learn.md +46 -0
- package/.claude/commands/plan.md +35 -0
- package/.claude/commands/plow-through.md +50 -0
- package/.claude/commands/pr-review.md +49 -0
- package/.claude/commands/setup-provider.md +96 -0
- package/.claude/commands/spec.md +47 -0
- package/.claude/commands/sprint.md +43 -0
- package/.claude/commands/tailscale-serve.md +100 -0
- package/.claude/commands/team.md +132 -0
- package/.claude/commands/test.md +62 -0
- package/.claude/commands/validate.md +68 -0
- package/.claude/commands/visual-plan.md +24 -0
- package/.claude/hooks/README.md +108 -0
- package/.claude/hooks/__tests__/pretooluse-editwrite.test.mjs +146 -0
- package/.claude/hooks/__tests__/sessionend-recall.test.mjs +256 -0
- package/.claude/hooks/__tests__/sessionstart-prime.test.mjs +325 -0
- package/.claude/hooks/__tests__/thinking-route.test.mjs +319 -0
- package/.claude/hooks/auto-instinct.sh +81 -0
- package/.claude/hooks/learning-extract.mjs +92 -0
- package/.claude/hooks/post-merge-audit.sh +93 -0
- package/.claude/hooks/posttooluse-editwrite.mjs +91 -0
- package/.claude/hooks/pretooluse-bash.mjs +87 -0
- package/.claude/hooks/pretooluse-editwrite.mjs +117 -0
- package/.claude/hooks/sessionend-recall.mjs +384 -0
- package/.claude/hooks/sessionstart-prime.mjs +278 -0
- package/.claude/hooks/thinking-route.mjs +314 -0
- package/.claude/hooks/worker-suggest.mjs +110 -0
- package/.claude/settings.json +167 -0
- package/.claude/skills/9router/SKILL.md +80 -0
- package/.claude/skills/9router-chat/SKILL.md +73 -0
- package/.claude/skills/9router-embeddings/SKILL.md +69 -0
- package/.claude/skills/9router-image/SKILL.md +86 -0
- package/.claude/skills/9router-stt/SKILL.md +79 -0
- package/.claude/skills/9router-tts/SKILL.md +80 -0
- package/.claude/skills/9router-web-fetch/SKILL.md +99 -0
- package/.claude/skills/9router-web-search/SKILL.md +91 -0
- package/.claude/skills/agent-browser/SKILL.md +64 -0
- package/.claude/skills/bizar/README.md +9 -0
- package/.claude/skills/bizar/SKILL.md +447 -0
- package/.claude/skills/cpp-coding-standards/README.md +28 -0
- package/.claude/skills/cpp-coding-standards/SKILL.md +634 -0
- package/.claude/skills/cpp-coding-standards/references/concurrency.md +320 -0
- package/.claude/skills/cpp-coding-standards/references/error-handling.md +229 -0
- package/.claude/skills/cpp-coding-standards/references/memory-safety.md +216 -0
- package/.claude/skills/cpp-coding-standards/references/modern-idioms.md +282 -0
- package/.claude/skills/cpp-coding-standards/references/review-checklist.md +96 -0
- package/.claude/skills/cpp-testing/README.md +28 -0
- package/.claude/skills/cpp-testing/SKILL.md +304 -0
- package/.claude/skills/cpp-testing/references/coverage.md +370 -0
- package/.claude/skills/cpp-testing/references/framework-compare.md +175 -0
- package/.claude/skills/cpp-testing/references/host-test-for-embedded.md +499 -0
- package/.claude/skills/cpp-testing/references/mocking.md +364 -0
- package/.claude/skills/cpp-testing/references/tdd-workflow.md +308 -0
- package/.claude/skills/cubesandbox/SKILL.md +148 -0
- package/.claude/skills/de-sloppify/SKILL.md +38 -0
- package/.claude/skills/de-sloppify/cleanup.mjs +253 -0
- package/.claude/skills/de-sloppify/cleanup.test.mjs +189 -0
- package/.claude/skills/embedded-esp-idf/README.md +41 -0
- package/.claude/skills/embedded-esp-idf/SKILL.md +439 -0
- package/.claude/skills/embedded-esp-idf/references/freertos-patterns.md +214 -0
- package/.claude/skills/embedded-esp-idf/references/host-tests.md +164 -0
- package/.claude/skills/embedded-esp-idf/references/idf-py-commands.md +157 -0
- package/.claude/skills/embedded-esp-idf/references/kconfig.md +159 -0
- package/.claude/skills/embedded-esp-idf/references/logging-discipline.md +118 -0
- package/.claude/skills/embedded-esp-idf/references/memory-and-iram.md +137 -0
- package/.claude/skills/embedded-esp-idf/references/nvs.md +121 -0
- package/.claude/skills/embedded-esp-idf/references/packed-structs.md +192 -0
- package/.claude/skills/embedded-esp-idf/scripts/idf_env.sh +47 -0
- package/.claude/skills/embedded-esp-idf/scripts/size_check.sh +77 -0
- package/.claude/skills/glyph/SKILL.md +163 -0
- package/.claude/skills/harness-engineering/SKILL.md +142 -0
- package/.claude/skills/lightrag/SKILL.md +81 -0
- package/.claude/skills/memory-protocol/SKILL.md +105 -0
- package/.claude/skills/obsidian/SKILL.md +306 -0
- package/.claude/skills/read-the-damn-docs/SKILL.md +113 -0
- package/.claude/skills/self-improvement/SKILL.md +64 -0
- package/.claude/skills/skillopt/SKILL.md +129 -0
- package/.claude/skills/thinking-archetypes/SKILL.md +90 -0
- package/.claude/skills/thinking-bayesian/SKILL.md +267 -0
- package/.claude/skills/thinking-bounded-rationality/SKILL.md +406 -0
- package/.claude/skills/thinking-circle-of-competence/SKILL.md +216 -0
- package/.claude/skills/thinking-cynefin/SKILL.md +70 -0
- package/.claude/skills/thinking-debiasing/SKILL.md +192 -0
- package/.claude/skills/thinking-dual-process/SKILL.md +282 -0
- package/.claude/skills/thinking-effectuation/SKILL.md +366 -0
- package/.claude/skills/thinking-feedback-loops/SKILL.md +464 -0
- package/.claude/skills/thinking-fermi-estimation/SKILL.md +263 -0
- package/.claude/skills/thinking-first-principles/SKILL.md +167 -0
- package/.claude/skills/thinking-five-whys-plus/SKILL.md +139 -0
- package/.claude/skills/thinking-inversion/SKILL.md +195 -0
- package/.claude/skills/thinking-jobs-to-be-done/SKILL.md +363 -0
- package/.claude/skills/thinking-kepner-tregoe/SKILL.md +154 -0
- package/.claude/skills/thinking-leverage-points/SKILL.md +390 -0
- package/.claude/skills/thinking-lindy-effect/SKILL.md +331 -0
- package/.claude/skills/thinking-map-territory/SKILL.md +111 -0
- package/.claude/skills/thinking-margin-of-safety/SKILL.md +330 -0
- package/.claude/skills/thinking-model-combination/SKILL.md +406 -0
- package/.claude/skills/thinking-model-router/SKILL.md +360 -0
- package/.claude/skills/thinking-model-selection/SKILL.md +341 -0
- package/.claude/skills/thinking-occams-razor/SKILL.md +129 -0
- package/.claude/skills/thinking-ooda/SKILL.md +127 -0
- package/.claude/skills/thinking-opportunity-cost/SKILL.md +360 -0
- package/.claude/skills/thinking-pre-mortem/SKILL.md +170 -0
- package/.claude/skills/thinking-probabilistic/SKILL.md +324 -0
- package/.claude/skills/thinking-red-team/SKILL.md +142 -0
- package/.claude/skills/thinking-regret-minimization/SKILL.md +335 -0
- package/.claude/skills/thinking-reversibility/SKILL.md +326 -0
- package/.claude/skills/thinking-scientific-method/SKILL.md +162 -0
- package/.claude/skills/thinking-second-order/SKILL.md +184 -0
- package/.claude/skills/thinking-socratic/SKILL.md +198 -0
- package/.claude/skills/thinking-steel-manning/SKILL.md +332 -0
- package/.claude/skills/thinking-systems/SKILL.md +238 -0
- package/.claude/skills/thinking-theory-of-constraints/SKILL.md +338 -0
- package/.claude/skills/thinking-thought-experiment/SKILL.md +354 -0
- package/.claude/skills/thinking-triz/SKILL.md +171 -0
- package/.claude/skills/thinking-via-negativa/SKILL.md +358 -0
- package/cli/install/postinstall.mjs +54 -28
- package/cli/install/postinstall.test.mjs +98 -0
- package/package.json +7 -2
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: thinking-scientific-method
|
|
3
|
+
description: Use when a symptom could have several causes and you must find the faulty code by ranking falsifiable hypotheses and checking the cheapest discriminating observation first.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Hypothesis-Differential Debugging
|
|
7
|
+
|
|
8
|
+
## Overview
|
|
9
|
+
|
|
10
|
+
The scientific method's payoff for an agent is not narrating "observe -> question." It is the **differential**: when a symptom could come from several places, enumerate competing falsifiable hypotheses and spend your cheapest observation on the one that best discriminates between them.
|
|
11
|
+
|
|
12
|
+
This is the proven replacement for the old broad scientific-method skill. In SWE-bench fault localization, the original was flat; this agent-native version turned it into the strongest measured debugging lift in the current eval set.
|
|
13
|
+
|
|
14
|
+
**Core Principle:** Don't guess-and-patch. Enumerate competing causes, then make the cheapest observation that would falsify the most likely one.
|
|
15
|
+
|
|
16
|
+
## When to Use
|
|
17
|
+
|
|
18
|
+
- A bug or incident symptom could plausibly come from more than one place
|
|
19
|
+
- You have read access to code, logs, diffs, traces, or tests
|
|
20
|
+
- You need to localize the faulty file, function, branch, config, or invariant before fixing
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
Symptom has several plausible causes?
|
|
24
|
+
-> no -> test or fix the obvious cause directly
|
|
25
|
+
-> yes -> can you make cheap observations now?
|
|
26
|
+
-> no -> gather access/evidence first
|
|
27
|
+
-> yes -> apply hypothesis-differential debugging
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## When NOT to Use
|
|
31
|
+
|
|
32
|
+
- The cause is already obvious from a single trace, failing test, or recent diff -> fix directly.
|
|
33
|
+
- Only one plausible hypothesis exists -> test it directly.
|
|
34
|
+
- You cannot make any observation -> get access first; don't speculate.
|
|
35
|
+
- You are designing an A/B test, canary, or multi-week experiment -> this skill is for observations an agent can make now.
|
|
36
|
+
|
|
37
|
+
## The Procedure
|
|
38
|
+
|
|
39
|
+
### Step 1: Enumerate competing hypotheses
|
|
40
|
+
|
|
41
|
+
List 3-5 specific, falsifiable hypotheses. Name the likely file, function, subsystem, input condition, or invariant. Avoid vague buckets like "backend issue" or "race condition somewhere."
|
|
42
|
+
|
|
43
|
+
```markdown
|
|
44
|
+
| # | Hypothesis | Why plausible? |
|
|
45
|
+
|---|------------|----------------|
|
|
46
|
+
| H1 | `auth/session.py:refresh` drops rotated tokens | failures start after token rotation |
|
|
47
|
+
| H2 | cache TTL mismatch in `session_cache` | stale sessions persist across deploys |
|
|
48
|
+
| H3 | frontend retries reuse expired cookie | only browser flow is affected |
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
If you can only think of one hypothesis, you are guessing. Force alternatives before inspecting deeper.
|
|
52
|
+
|
|
53
|
+
### Step 2: Name the cheapest discriminating observation
|
|
54
|
+
|
|
55
|
+
For each hypothesis, name one observation you can make now that would separate it from the others.
|
|
56
|
+
|
|
57
|
+
Good observations:
|
|
58
|
+
- read the function the stack trace names
|
|
59
|
+
- grep callers of a parser or config key
|
|
60
|
+
- inspect the recent diff touching the failing path
|
|
61
|
+
- compare two log lines across working and broken cases
|
|
62
|
+
- check a test fixture or schema invariant
|
|
63
|
+
|
|
64
|
+
Bad observations:
|
|
65
|
+
- deploy a canary
|
|
66
|
+
- run a long experiment
|
|
67
|
+
- ask users to wait
|
|
68
|
+
- inspect every file in the subsystem
|
|
69
|
+
|
|
70
|
+
### Step 3: State falsifiers before looking
|
|
71
|
+
|
|
72
|
+
For each hypothesis, write what result would make you drop it. This prevents confirmation search.
|
|
73
|
+
|
|
74
|
+
```markdown
|
|
75
|
+
| Hypothesis | Falsified if... |
|
|
76
|
+
|------------|-----------------|
|
|
77
|
+
| H1 token refresh | refresh path never reads rotated token state |
|
|
78
|
+
| H2 cache TTL | cache entry expires before the observed stale window |
|
|
79
|
+
| H3 frontend retry | same failure occurs in API-only reproduction |
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### Step 4: Rank by likelihood x cheapness
|
|
83
|
+
|
|
84
|
+
Test the observation with the best expected information per unit of effort. Start with the cheapest observation that separates your top hypotheses, not the most elaborate investigation.
|
|
85
|
+
|
|
86
|
+
```
|
|
87
|
+
For each hypothesis → name falsifier → rank by likelihood x cheapness → observe → update/drop → localize fault
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### Step 5: Stop on direct localization
|
|
91
|
+
|
|
92
|
+
Stop when one hypothesis is supported by direct evidence and the key alternatives are ruled out. Name the file/function/config to change and the evidence that localizes it.
|
|
93
|
+
|
|
94
|
+
## Investigation Template
|
|
95
|
+
|
|
96
|
+
```markdown
|
|
97
|
+
## Symptom
|
|
98
|
+
[Specific failing behavior, scope, timing, and known constraints]
|
|
99
|
+
|
|
100
|
+
## Hypotheses
|
|
101
|
+
| # | Hypothesis | Why plausible? | Cheapest observation | Falsified if... |
|
|
102
|
+
|---|------------|----------------|----------------------|-----------------|
|
|
103
|
+
| H1 | [specific file/function/config cause] | [evidence] | [read/grep/diff/check] | [drop condition] |
|
|
104
|
+
| H2 | [specific alternate cause] | [evidence] | [read/grep/diff/check] | [drop condition] |
|
|
105
|
+
| H3 | [specific alternate cause] | [evidence] | [read/grep/diff/check] | [drop condition] |
|
|
106
|
+
|
|
107
|
+
## Test Order
|
|
108
|
+
1. [Cheapest discriminating observation]
|
|
109
|
+
2. [Next observation if H1 is falsified]
|
|
110
|
+
3. [Deferred only if cheap observations do not localize]
|
|
111
|
+
|
|
112
|
+
## Localization
|
|
113
|
+
[Supported hypothesis, ruled-out alternatives, and the file/function/config to change]
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
## Worked Shape
|
|
117
|
+
|
|
118
|
+
```markdown
|
|
119
|
+
Symptom: intermittent 500s on /export, only eu-west, started three days ago.
|
|
120
|
+
|
|
121
|
+
Hypotheses:
|
|
122
|
+
1. recent diff to export serializer
|
|
123
|
+
Observation: inspect commits touching `export_serializer`
|
|
124
|
+
Falsified if: no diff touches the failing codepath
|
|
125
|
+
2. eu-west Redis rotation broke a cache key
|
|
126
|
+
Observation: read cache key construction + region config
|
|
127
|
+
Falsified if: key and TTL match healthy regions
|
|
128
|
+
3. upstream timeout under load
|
|
129
|
+
Observation: compare timeout logs during failure window
|
|
130
|
+
Falsified if: no upstream latency spike
|
|
131
|
+
|
|
132
|
+
Test order: H1, H2, H3.
|
|
133
|
+
Result: H1 diff changed nested export handling and matches stack trace.
|
|
134
|
+
Localized fault: `app/export/serializer.py`.
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
## Anti-Patterns
|
|
138
|
+
|
|
139
|
+
- Narrating the scientific method without proposing competing causes
|
|
140
|
+
- Looking only for evidence that supports your first guess
|
|
141
|
+
- Calling an expensive experiment a "test" when a cheap observation exists
|
|
142
|
+
- Stopping at a plausible explanation before ruling out alternatives
|
|
143
|
+
- Continuing to analyze after the faulty file/function is localized
|
|
144
|
+
|
|
145
|
+
## Verification Checklist
|
|
146
|
+
|
|
147
|
+
- [ ] Listed 3-5 specific hypotheses
|
|
148
|
+
- [ ] Each hypothesis has a cheap observation available now
|
|
149
|
+
- [ ] Each hypothesis has a stated falsifier
|
|
150
|
+
- [ ] Observations are ranked by likelihood x cheapness
|
|
151
|
+
- [ ] Final answer names the localized file/function/config and the evidence
|
|
152
|
+
|
|
153
|
+
## Key Questions
|
|
154
|
+
|
|
155
|
+
- What would I see if this hypothesis were false?
|
|
156
|
+
- Which observation best separates the top two hypotheses?
|
|
157
|
+
- Am I testing a hypothesis or confirming my first guess?
|
|
158
|
+
- Can I localize the fault with a cheaper observation?
|
|
159
|
+
|
|
160
|
+
## Feynman's Wisdom
|
|
161
|
+
|
|
162
|
+
"The first principle is that you must not fool yourself - and you are the easiest person to fool." Your intuition generates hypotheses; the differential tests them.
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: thinking-second-order
|
|
3
|
+
description: When a change has effects past the immediate fix (incentives, scale, feedback loops), ask "and then what?" across horizons before committing — the obvious fix often backfires downstream.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Second-Order Thinking
|
|
7
|
+
|
|
8
|
+
## Overview
|
|
9
|
+
Second-order thinking, articulated by Howard Marks, moves beyond immediate effects to consider what happens next, and what that leads to. First-order thinking is simplistic ("This action solves the problem"); second-order thinking asks "And then what?" repeatedly.
|
|
10
|
+
|
|
11
|
+
**Core Principle:** The obvious answer to "What should I do?" is often wrong because it ignores downstream effects.
|
|
12
|
+
|
|
13
|
+
## When to Use
|
|
14
|
+
- Making strategic or architectural decisions
|
|
15
|
+
- Evaluating policy or process changes
|
|
16
|
+
- Considering incentive structures
|
|
17
|
+
- Planning features that change user behavior
|
|
18
|
+
- Decisions with long-term consequences
|
|
19
|
+
- When the "obvious" solution feels too easy
|
|
20
|
+
|
|
21
|
+
Decision flow:
|
|
22
|
+
```
|
|
23
|
+
Decision with consequences beyond immediate? → yes → APPLY SECOND-ORDER THINKING
|
|
24
|
+
↘ no → First-order may suffice
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## When NOT to Use
|
|
28
|
+
- The change is local and reversible (a two-way door) with no downstream coupling — just make it and observe.
|
|
29
|
+
- The first-order fix is also the correct one and the chain is obvious; don't manufacture speculative cascades.
|
|
30
|
+
- You'd be inventing implausible third- and fourth-order effects to seem thorough — stop at the first effect that actually changes the decision.
|
|
31
|
+
- Pure mechanical edits (rename, format, dependency bump) with no behavioral or incentive change.
|
|
32
|
+
|
|
33
|
+
## First vs Second-Order Thinking
|
|
34
|
+
|
|
35
|
+
| Situation | First-Order | Second-Order |
|
|
36
|
+
|-----------|-------------|--------------|
|
|
37
|
+
| Team is slow | Add more engineers | More engineers → more coordination → slower decisions → may get slower |
|
|
38
|
+
| Users complain | Add the feature they request | Feature → complexity → more support load → less time for core work |
|
|
39
|
+
| Costs too high | Cut spending | Cuts → reduced quality → customer churn → revenue drop → worse situation |
|
|
40
|
+
| Bug in prod | Hotfix immediately | Hotfix → skip testing → more bugs → trust erosion → slower deployments |
|
|
41
|
+
|
|
42
|
+
## The Process
|
|
43
|
+
|
|
44
|
+
### Step 1: Identify the Decision and First-Order Effect
|
|
45
|
+
```
|
|
46
|
+
Decision: Add a feature flag system
|
|
47
|
+
First-order: Teams can ship features independently ✓
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### Step 2: Ask "And Then What?"
|
|
51
|
+
Chain the consequences:
|
|
52
|
+
```
|
|
53
|
+
Feature flags → More flags created → Flag debt accumulates
|
|
54
|
+
→ Teams don't clean up → Combinatorial testing complexity
|
|
55
|
+
→ Bugs from flag interactions → "Turn it off" becomes risky
|
|
56
|
+
→ Flags become permanent → Codebase complexity explodes
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### Step 3: Evaluate Across Engineering Horizons
|
|
60
|
+
Trace the effect at three concrete horizons (not emotional ones):
|
|
61
|
+
|
|
62
|
+
| Horizon | Question | Analysis |
|
|
63
|
+
|---------|----------|----------|
|
|
64
|
+
| Immediate | What happens on the next request/run? | Problem solved—flag ships the feature |
|
|
65
|
+
| Next deploy / weeks | What does the team do because of this? | Flag sprawl, more flags created |
|
|
66
|
+
| At scale / months+ | Where does the trajectory lead at 10x usage or adoption? | Combinatorial flag debt, fragile codebase |
|
|
67
|
+
|
|
68
|
+
### Step 4: Consider Systemic Effects
|
|
69
|
+
Ask: "What if everyone did this?"
|
|
70
|
+
```
|
|
71
|
+
Decision: Skip code review for urgent fixes
|
|
72
|
+
If everyone: All urgent fixes skip review
|
|
73
|
+
Result: Definition of "urgent" expands → most things skip review
|
|
74
|
+
Outcome: Quality collapses, more urgent fixes needed
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### Step 5: Map the Consequence Chain
|
|
78
|
+
```
|
|
79
|
+
┌─────────────────┐
|
|
80
|
+
│ Decision: X │
|
|
81
|
+
└────────┬────────┘
|
|
82
|
+
▼
|
|
83
|
+
┌─────────────────┐
|
|
84
|
+
│ 1st Order: A │ ← Obvious, intended
|
|
85
|
+
└────────┬────────┘
|
|
86
|
+
▼
|
|
87
|
+
┌─────────────────┐
|
|
88
|
+
│ 2nd Order: B │ ← Less obvious
|
|
89
|
+
└────────┬────────┘
|
|
90
|
+
▼
|
|
91
|
+
┌─────────────────┐
|
|
92
|
+
│ 3rd Order: C │ ← Often counterintuitive
|
|
93
|
+
└────────┬────────┘
|
|
94
|
+
▼
|
|
95
|
+
┌─────────────────┐
|
|
96
|
+
│ Feedback Loop │ ← May reinforce or counteract
|
|
97
|
+
└─────────────────┘
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
## Common Second-Order Effects in Software
|
|
101
|
+
|
|
102
|
+
### Optimization
|
|
103
|
+
```
|
|
104
|
+
1st: Optimize critical path → Faster
|
|
105
|
+
2nd: Team focuses on optimization → Less feature work
|
|
106
|
+
3rd: Premature optimization spreads → Complexity increases
|
|
107
|
+
4th: Maintenance burden grows → Slower overall
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
### Hiring
|
|
111
|
+
```
|
|
112
|
+
1st: Hire senior engineers → More capacity
|
|
113
|
+
2nd: Salary expectations rise → Budget pressure
|
|
114
|
+
3rd: Junior engineers feel stuck → Attrition
|
|
115
|
+
4th: Knowledge concentrated in seniors → Bus factor risk
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### Process Addition
|
|
119
|
+
```
|
|
120
|
+
1st: Add approval process → More oversight
|
|
121
|
+
2nd: Approvals create bottleneck → Slower delivery
|
|
122
|
+
3rd: People route around process → Shadow processes
|
|
123
|
+
4th: Formal process becomes theater → Worst of both worlds
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
### Technical Shortcuts
|
|
127
|
+
```
|
|
128
|
+
1st: Skip tests to ship faster → Feature delivered
|
|
129
|
+
2nd: Bugs emerge → Support load increases
|
|
130
|
+
3rd: Team fights fires → Less time for features
|
|
131
|
+
4th: More shortcuts taken → Quality death spiral
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
## Application Framework
|
|
135
|
+
|
|
136
|
+
For any significant decision, fill out:
|
|
137
|
+
|
|
138
|
+
```markdown
|
|
139
|
+
## Second-Order Analysis: [Decision]
|
|
140
|
+
|
|
141
|
+
### Immediate Effect (1st Order)
|
|
142
|
+
[What happens right away]
|
|
143
|
+
|
|
144
|
+
### Near-Term Consequences (2nd Order)
|
|
145
|
+
[What does the immediate effect cause? 1-3 months]
|
|
146
|
+
|
|
147
|
+
### Medium-Term Consequences (3rd Order)
|
|
148
|
+
[What do the near-term effects cause? 3-12 months]
|
|
149
|
+
|
|
150
|
+
### Long-Term Trajectory
|
|
151
|
+
[Where does this path lead? 1+ years]
|
|
152
|
+
|
|
153
|
+
### Feedback Loops
|
|
154
|
+
[Does this create reinforcing or balancing dynamics?]
|
|
155
|
+
|
|
156
|
+
### If Scaled
|
|
157
|
+
[What happens if this becomes standard practice?]
|
|
158
|
+
|
|
159
|
+
### Revised Decision
|
|
160
|
+
[Given analysis, what should we actually do?]
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
## Questions to Surface Second-Order Effects
|
|
164
|
+
- "And then what?"
|
|
165
|
+
- "Who else is affected, and how will they respond?"
|
|
166
|
+
- "What incentives does this create?"
|
|
167
|
+
- "What behavior does this encourage/discourage?"
|
|
168
|
+
- "If this works, what problems does success create?"
|
|
169
|
+
- "What will we wish we had done differently in a year?"
|
|
170
|
+
- "What does this look like if everyone does it?"
|
|
171
|
+
|
|
172
|
+
## Verification Checklist
|
|
173
|
+
- [ ] Identified first-order effect clearly
|
|
174
|
+
- [ ] Asked "and then what?" at least 3 times
|
|
175
|
+
- [ ] Traced effects across immediate / next-deploy / at-scale horizons
|
|
176
|
+
- [ ] Considered systemic/scaled effects
|
|
177
|
+
- [ ] Identified potential feedback loops
|
|
178
|
+
- [ ] Revised decision based on full consequence chain
|
|
179
|
+
- [ ] Documented reasoning for future reference
|
|
180
|
+
|
|
181
|
+
## Marks' Warning
|
|
182
|
+
"First-level thinking is simplistic and superficial, and just about everyone can do it. Second-level thinking is deep, complex, and convoluted."
|
|
183
|
+
|
|
184
|
+
The crowd uses first-order thinking. Competitive advantage comes from thinking one level deeper—seeing what happens after the obvious effect.
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: thinking-socratic
|
|
3
|
+
description: Use before building when a request is vague, assumption-laden, or "obvious." Ask the clarifying questions that surface hidden requirements and false premises instead of guessing.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Socratic Questioning
|
|
7
|
+
|
|
8
|
+
## Overview
|
|
9
|
+
The Socratic Method, developed by the ancient Greek philosopher Socrates, uses systematic questioning to stimulate critical thinking and illuminate ideas. Rather than providing answers, it draws out knowledge by challenging assumptions and exploring implications.
|
|
10
|
+
|
|
11
|
+
**Core Principle:** A vague or assumption-laden request is cheaper to clarify than to misbuild. The right question up front surfaces the hidden requirement or false premise that would otherwise be discovered only after the work is done.
|
|
12
|
+
|
|
13
|
+
Use this as a **pre-build clarification tool**: when a task is underspecified, ambiguous, or rests on an unstated assumption, ask the targeted question before writing code or committing to an approach — don't fill the gap with a guess.
|
|
14
|
+
|
|
15
|
+
## When to Use
|
|
16
|
+
- A request is vague ("make it fast", "add a dashboard", "fix the bug") and you'd otherwise guess the spec
|
|
17
|
+
- The request rests on an unstated assumption that might be the actual problem
|
|
18
|
+
- Someone asserts something is "obvious" or "everyone knows" — exactly when premises go unchecked
|
|
19
|
+
- A proposal jumps to a solution before the problem is defined
|
|
20
|
+
- Debugging, to trace a claim ("the system is slow") back to a checkable specific
|
|
21
|
+
|
|
22
|
+
Decision flow:
|
|
23
|
+
```
|
|
24
|
+
About to build/commit on an underspecified request? → yes → ASK CLARIFYING QUESTIONS FIRST
|
|
25
|
+
Request rests on an unexamined assumption? → yes → PROBE THE ASSUMPTION
|
|
26
|
+
Stated problem is a vague symptom? → yes → QUESTION DOWN TO A SPECIFIC
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## When NOT to Use
|
|
30
|
+
- **The request is already clear and specified.** Don't interrogate a well-defined task — just do it. Question-asking theater wastes the user's time.
|
|
31
|
+
- **You can answer the question yourself by checking.** If the ambiguity is resolvable by reading the code, running a command, or consulting the docs, do that instead of asking the user.
|
|
32
|
+
- **During execution of an agreed plan.** Clarify before building; once the spec is settled, stopping to re-question every step is friction, not rigor.
|
|
33
|
+
- **A genuine emergency / time-pressured incident** where acting on 70% understanding beats a round of questions — clarify the one thing that's load-bearing, then act.
|
|
34
|
+
|
|
35
|
+
## The Six Types of Socratic Questions
|
|
36
|
+
|
|
37
|
+
### 1. Clarification Questions
|
|
38
|
+
**Purpose:** Ensure clear understanding of the claim or concept
|
|
39
|
+
|
|
40
|
+
| Question | Use When |
|
|
41
|
+
|----------|----------|
|
|
42
|
+
| "What do you mean by X?" | Term is ambiguous |
|
|
43
|
+
| "Can you give me an example?" | Concept is abstract |
|
|
44
|
+
| "How does this relate to Y?" | Connection unclear |
|
|
45
|
+
| "Can you rephrase that?" | Statement is confusing |
|
|
46
|
+
| "What is the main point?" | Discussion is scattered |
|
|
47
|
+
|
|
48
|
+
**Example:**
|
|
49
|
+
> "The system needs to be fast."
|
|
50
|
+
> → "What do you mean by 'fast'? What latency is acceptable?"
|
|
51
|
+
> → "Fast for whom? End users? Batch processes?"
|
|
52
|
+
|
|
53
|
+
### 2. Assumption-Probing Questions
|
|
54
|
+
**Purpose:** Expose underlying beliefs that may be unexamined
|
|
55
|
+
|
|
56
|
+
| Question | Use When |
|
|
57
|
+
|----------|----------|
|
|
58
|
+
| "What are we assuming here?" | Conclusion seems too pam |
|
|
59
|
+
| "Is this always true?" | Generalization made |
|
|
60
|
+
| "What if that assumption is wrong?" | Testing robustness |
|
|
61
|
+
| "Why do we believe this?" | Basis unclear |
|
|
62
|
+
| "What would have to change for this to be false?" | Finding conditions |
|
|
63
|
+
|
|
64
|
+
**Example:**
|
|
65
|
+
> "We need microservices for scale."
|
|
66
|
+
> → "What are we assuming about our scale requirements?"
|
|
67
|
+
> → "Is it always true that microservices scale better?"
|
|
68
|
+
> → "What if a modular monolith could meet our needs?"
|
|
69
|
+
|
|
70
|
+
### 3. Reason & Evidence Questions
|
|
71
|
+
**Purpose:** Examine the support for a claim
|
|
72
|
+
|
|
73
|
+
| Question | Use When |
|
|
74
|
+
|----------|----------|
|
|
75
|
+
| "What evidence supports this?" | Claim is asserted |
|
|
76
|
+
| "How do we know this?" | Source unclear |
|
|
77
|
+
| "Are there other explanations?" | Causation assumed |
|
|
78
|
+
| "What would prove this wrong?" | Testing falsifiability |
|
|
79
|
+
| "Is this evidence sufficient?" | Conclusion seems strong |
|
|
80
|
+
|
|
81
|
+
**Example:**
|
|
82
|
+
> "Users don't want feature X."
|
|
83
|
+
> → "What evidence do we have for this?"
|
|
84
|
+
> → "How many users did we ask? How were they selected?"
|
|
85
|
+
> → "Could there be other explanations for the feedback?"
|
|
86
|
+
|
|
87
|
+
### 4. Perspective & Viewpoint Questions
|
|
88
|
+
**Purpose:** Consider alternative angles and stakeholders
|
|
89
|
+
|
|
90
|
+
| Question | Use When |
|
|
91
|
+
|----------|----------|
|
|
92
|
+
| "How would X see this?" | Single perspective dominates |
|
|
93
|
+
| "What's the opposite view?" | No alternatives considered |
|
|
94
|
+
| "Who disagrees, and why?" | Consensus seems too easy |
|
|
95
|
+
| "What are we not seeing?" | Blind spots suspected |
|
|
96
|
+
| "How does this look from [role]?" | Stakeholder impact unclear |
|
|
97
|
+
|
|
98
|
+
**Example:**
|
|
99
|
+
> "This API design is intuitive."
|
|
100
|
+
> → "How would a new developer view this?"
|
|
101
|
+
> → "What would someone from a different language background expect?"
|
|
102
|
+
> → "Who might find this confusing, and why?"
|
|
103
|
+
|
|
104
|
+
### 5. Implication & Consequence Questions
|
|
105
|
+
**Purpose:** Explore downstream effects and logical conclusions
|
|
106
|
+
|
|
107
|
+
| Question | Use When |
|
|
108
|
+
|----------|----------|
|
|
109
|
+
| "What follows from this?" | Implications unexplored |
|
|
110
|
+
| "If this is true, what else must be true?" | Testing consistency |
|
|
111
|
+
| "What are the consequences?" | Impact unclear |
|
|
112
|
+
| "How does this affect X?" | Ripple effects not considered |
|
|
113
|
+
| "What are the second-order effects?" | Only immediate effects seen |
|
|
114
|
+
|
|
115
|
+
**Example:**
|
|
116
|
+
> "We'll add this field to the API response."
|
|
117
|
+
> → "What follows from adding this field?"
|
|
118
|
+
> → "How does this affect clients that don't need it?"
|
|
119
|
+
> → "What are the implications for backward compatibility?"
|
|
120
|
+
|
|
121
|
+
### 6. Questions About the Question
|
|
122
|
+
**Purpose:** Reflect on the inquiry itself; meta-level examination
|
|
123
|
+
|
|
124
|
+
| Question | Use When |
|
|
125
|
+
|----------|----------|
|
|
126
|
+
| "Why is this question important?" | Purpose unclear |
|
|
127
|
+
| "What would answering this tell us?" | Value of question unclear |
|
|
128
|
+
| "Is this the right question?" | May be missing the point |
|
|
129
|
+
| "What question should we be asking?" | Reframing needed |
|
|
130
|
+
| "Why are we asking this now?" | Timing or priority unclear |
|
|
131
|
+
|
|
132
|
+
**Example:**
|
|
133
|
+
> "Which database should we use?"
|
|
134
|
+
> → "Why is this question important right now?"
|
|
135
|
+
> → "What would answering this tell us that we don't know?"
|
|
136
|
+
> → "Is the real question about database, or about data modeling?"
|
|
137
|
+
|
|
138
|
+
## Application Patterns
|
|
139
|
+
|
|
140
|
+
### For Requirements Gathering
|
|
141
|
+
```
|
|
142
|
+
Stakeholder: "We need a dashboard."
|
|
143
|
+
Clarification: "What decisions will the dashboard help you make?"
|
|
144
|
+
Assumptions: "What are we assuming about who will use this?"
|
|
145
|
+
Evidence: "What data shows this is the highest priority?"
|
|
146
|
+
Perspective: "How do different user roles need different views?"
|
|
147
|
+
Implications: "If we build this, what won't we build?"
|
|
148
|
+
Meta: "Is a dashboard the best solution, or is there another approach?"
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
### For Debugging
|
|
152
|
+
```
|
|
153
|
+
Report: "The system is slow."
|
|
154
|
+
Clarification: "Which operations are slow? How slow?"
|
|
155
|
+
Assumptions: "What are we assuming about where the bottleneck is?"
|
|
156
|
+
Evidence: "What metrics/traces support this?"
|
|
157
|
+
Perspective: "Is it slow for all users or specific patterns?"
|
|
158
|
+
Implications: "If we fix this, what else might change?"
|
|
159
|
+
Meta: "Is 'slow' the right frame? Could it be 'inconsistent'?"
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
### For Design Review
|
|
163
|
+
```
|
|
164
|
+
Proposal: "We should use event sourcing."
|
|
165
|
+
Clarification: "What do you mean by event sourcing in this context?"
|
|
166
|
+
Assumptions: "What are we assuming about our query patterns?"
|
|
167
|
+
Evidence: "What evidence suggests this fits our use case?"
|
|
168
|
+
Perspective: "How would ops view this? New team members?"
|
|
169
|
+
Implications: "What are the consequences for debugging? Storage?"
|
|
170
|
+
Meta: "Is the real question about event sourcing or auditability?"
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
## How to Ask Well
|
|
174
|
+
- **Ask the load-bearing question first**: lead with the one whose answer most changes what you'll build.
|
|
175
|
+
- **One or two questions, not an interrogation**: batch the few that actually gate the work; don't run all six categories for show.
|
|
176
|
+
- **Follow the thread**: let each answer narrow the next question instead of working from a fixed script.
|
|
177
|
+
- **Resolve what you can yourself**: only ask the user what you can't determine by reading the code, running a command, or checking the docs.
|
|
178
|
+
- **Make the assumption explicit**: "This assumes X — is that right?" beats silently guessing X.
|
|
179
|
+
|
|
180
|
+
## Verification Checklist
|
|
181
|
+
- [ ] Used questions from at least 3 of the 6 categories
|
|
182
|
+
- [ ] Probed assumptions underlying the topic
|
|
183
|
+
- [ ] Explored at least one alternative perspective
|
|
184
|
+
- [ ] Examined implications and consequences
|
|
185
|
+
- [ ] Reached deeper understanding than starting point
|
|
186
|
+
- [ ] Documented key insights from questioning
|
|
187
|
+
|
|
188
|
+
## Key Meta-Questions
|
|
189
|
+
- "What do I think I know, and how do I know it?"
|
|
190
|
+
- "What question am I not asking?"
|
|
191
|
+
- "What would change my mind about this?"
|
|
192
|
+
- "Who knows more about this than I do?"
|
|
193
|
+
- "What's the question behind the question?"
|
|
194
|
+
|
|
195
|
+
## Socrates' Reminder
|
|
196
|
+
"I know that I know nothing."
|
|
197
|
+
|
|
198
|
+
The goal is not to prove others wrong but to discover truth together. The best questions reveal what everyone—including the questioner—doesn't yet understand.
|