oh-my-codex 0.4.3 → 0.5.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.
Files changed (159) hide show
  1. package/README.md +17 -10
  2. package/dist/agents/definitions.d.ts.map +1 -1
  3. package/dist/agents/definitions.js +7 -13
  4. package/dist/agents/definitions.js.map +1 -1
  5. package/dist/agents/native-config.d.ts +20 -0
  6. package/dist/agents/native-config.d.ts.map +1 -0
  7. package/dist/agents/native-config.js +84 -0
  8. package/dist/agents/native-config.js.map +1 -0
  9. package/dist/catalog/__tests__/generator.test.d.ts +2 -0
  10. package/dist/catalog/__tests__/generator.test.d.ts.map +1 -0
  11. package/dist/catalog/__tests__/generator.test.js +42 -0
  12. package/dist/catalog/__tests__/generator.test.js.map +1 -0
  13. package/dist/catalog/__tests__/schema.test.d.ts +2 -0
  14. package/dist/catalog/__tests__/schema.test.d.ts.map +1 -0
  15. package/dist/catalog/__tests__/schema.test.js +33 -0
  16. package/dist/catalog/__tests__/schema.test.js.map +1 -0
  17. package/dist/catalog/reader.d.ts +19 -0
  18. package/dist/catalog/reader.d.ts.map +1 -0
  19. package/dist/catalog/reader.js +63 -0
  20. package/dist/catalog/reader.js.map +1 -0
  21. package/dist/catalog/schema.d.ts +32 -0
  22. package/dist/catalog/schema.d.ts.map +1 -0
  23. package/dist/catalog/schema.js +101 -0
  24. package/dist/catalog/schema.js.map +1 -0
  25. package/dist/cli/__tests__/index.test.js +109 -1
  26. package/dist/cli/__tests__/index.test.js.map +1 -1
  27. package/dist/cli/__tests__/setup-scope.test.d.ts +2 -0
  28. package/dist/cli/__tests__/setup-scope.test.d.ts.map +1 -0
  29. package/dist/cli/__tests__/setup-scope.test.js +164 -0
  30. package/dist/cli/__tests__/setup-scope.test.js.map +1 -0
  31. package/dist/cli/catalog-contract.d.ts +10 -0
  32. package/dist/cli/catalog-contract.d.ts.map +1 -0
  33. package/dist/cli/catalog-contract.js +24 -0
  34. package/dist/cli/catalog-contract.js.map +1 -0
  35. package/dist/cli/doctor.d.ts.map +1 -1
  36. package/dist/cli/doctor.js +7 -4
  37. package/dist/cli/doctor.js.map +1 -1
  38. package/dist/cli/index.d.ts +10 -0
  39. package/dist/cli/index.d.ts.map +1 -1
  40. package/dist/cli/index.js +124 -99
  41. package/dist/cli/index.js.map +1 -1
  42. package/dist/cli/setup.d.ts +3 -0
  43. package/dist/cli/setup.d.ts.map +1 -1
  44. package/dist/cli/setup.js +208 -47
  45. package/dist/cli/setup.js.map +1 -1
  46. package/dist/config/__tests__/generator-notify.test.js +28 -0
  47. package/dist/config/__tests__/generator-notify.test.js.map +1 -1
  48. package/dist/config/generator.d.ts +1 -0
  49. package/dist/config/generator.d.ts.map +1 -1
  50. package/dist/config/generator.js +34 -2
  51. package/dist/config/generator.js.map +1 -1
  52. package/dist/hooks/code-simplifier/__tests__/index.test.d.ts +2 -0
  53. package/dist/hooks/code-simplifier/__tests__/index.test.d.ts.map +1 -0
  54. package/dist/hooks/code-simplifier/__tests__/index.test.js +135 -0
  55. package/dist/hooks/code-simplifier/__tests__/index.test.js.map +1 -0
  56. package/dist/hooks/code-simplifier/index.d.ts +74 -0
  57. package/dist/hooks/code-simplifier/index.d.ts.map +1 -0
  58. package/dist/hooks/code-simplifier/index.js +145 -0
  59. package/dist/hooks/code-simplifier/index.js.map +1 -0
  60. package/dist/hooks/emulator.d.ts.map +1 -1
  61. package/dist/hooks/emulator.js +0 -1
  62. package/dist/hooks/emulator.js.map +1 -1
  63. package/dist/hooks/keyword-detector.d.ts.map +1 -1
  64. package/dist/hooks/keyword-detector.js +0 -3
  65. package/dist/hooks/keyword-detector.js.map +1 -1
  66. package/dist/index.d.ts +1 -0
  67. package/dist/index.d.ts.map +1 -1
  68. package/dist/index.js +1 -0
  69. package/dist/index.js.map +1 -1
  70. package/dist/notifications/__tests__/tmux.test.js +61 -1
  71. package/dist/notifications/__tests__/tmux.test.js.map +1 -1
  72. package/dist/notifications/__tests__/verbosity.test.d.ts +2 -0
  73. package/dist/notifications/__tests__/verbosity.test.d.ts.map +1 -0
  74. package/dist/notifications/__tests__/verbosity.test.js +202 -0
  75. package/dist/notifications/__tests__/verbosity.test.js.map +1 -0
  76. package/dist/notifications/config.d.ts +14 -1
  77. package/dist/notifications/config.d.ts.map +1 -1
  78. package/dist/notifications/config.js +52 -0
  79. package/dist/notifications/config.js.map +1 -1
  80. package/dist/notifications/formatter.d.ts.map +1 -1
  81. package/dist/notifications/formatter.js +14 -0
  82. package/dist/notifications/formatter.js.map +1 -1
  83. package/dist/notifications/index.d.ts +3 -3
  84. package/dist/notifications/index.d.ts.map +1 -1
  85. package/dist/notifications/index.js +14 -4
  86. package/dist/notifications/index.js.map +1 -1
  87. package/dist/notifications/tmux.d.ts +6 -0
  88. package/dist/notifications/tmux.d.ts.map +1 -1
  89. package/dist/notifications/tmux.js +31 -1
  90. package/dist/notifications/tmux.js.map +1 -1
  91. package/dist/notifications/types.d.ts +13 -0
  92. package/dist/notifications/types.d.ts.map +1 -1
  93. package/dist/team/__tests__/model-contract.test.d.ts +2 -0
  94. package/dist/team/__tests__/model-contract.test.d.ts.map +1 -0
  95. package/dist/team/__tests__/model-contract.test.js +47 -0
  96. package/dist/team/__tests__/model-contract.test.js.map +1 -0
  97. package/dist/team/__tests__/phase-controller.test.d.ts +2 -0
  98. package/dist/team/__tests__/phase-controller.test.d.ts.map +1 -0
  99. package/dist/team/__tests__/phase-controller.test.js +36 -0
  100. package/dist/team/__tests__/phase-controller.test.js.map +1 -0
  101. package/dist/team/__tests__/runtime.test.js +112 -8
  102. package/dist/team/__tests__/runtime.test.js.map +1 -1
  103. package/dist/team/__tests__/tmux-session.test.js +71 -1
  104. package/dist/team/__tests__/tmux-session.test.js.map +1 -1
  105. package/dist/team/model-contract.d.ts +19 -0
  106. package/dist/team/model-contract.d.ts.map +1 -0
  107. package/dist/team/model-contract.js +123 -0
  108. package/dist/team/model-contract.js.map +1 -0
  109. package/dist/team/orchestrator.d.ts.map +1 -1
  110. package/dist/team/orchestrator.js +0 -1
  111. package/dist/team/orchestrator.js.map +1 -1
  112. package/dist/team/phase-controller.d.ts +10 -0
  113. package/dist/team/phase-controller.d.ts.map +1 -0
  114. package/dist/team/phase-controller.js +128 -0
  115. package/dist/team/phase-controller.js.map +1 -0
  116. package/dist/team/runtime.d.ts +3 -3
  117. package/dist/team/runtime.d.ts.map +1 -1
  118. package/dist/team/runtime.js +40 -74
  119. package/dist/team/runtime.js.map +1 -1
  120. package/dist/team/state.d.ts +15 -0
  121. package/dist/team/state.d.ts.map +1 -1
  122. package/dist/team/state.js +35 -0
  123. package/dist/team/state.js.map +1 -1
  124. package/dist/team/team-ops.d.ts +3 -1
  125. package/dist/team/team-ops.d.ts.map +1 -1
  126. package/dist/team/team-ops.js +2 -0
  127. package/dist/team/team-ops.js.map +1 -1
  128. package/dist/team/tmux-session.d.ts +12 -0
  129. package/dist/team/tmux-session.d.ts.map +1 -1
  130. package/dist/team/tmux-session.js +33 -1
  131. package/dist/team/tmux-session.js.map +1 -1
  132. package/dist/utils/paths.d.ts +2 -0
  133. package/dist/utils/paths.d.ts.map +1 -1
  134. package/dist/utils/paths.js +4 -0
  135. package/dist/utils/paths.js.map +1 -1
  136. package/package.json +2 -2
  137. package/prompts/code-simplifier.md +91 -0
  138. package/prompts/product-analyst.md +7 -7
  139. package/scripts/generate-catalog-docs.js +111 -0
  140. package/scripts/notify-hook.js +36 -1
  141. package/skills/build-fix/SKILL.md +3 -3
  142. package/skills/code-review/SKILL.md +3 -3
  143. package/skills/help/SKILL.md +4 -4
  144. package/skills/omx-setup/SKILL.md +24 -15
  145. package/skills/research/SKILL.md +28 -28
  146. package/skills/security-review/SKILL.md +3 -3
  147. package/templates/AGENTS.md +1 -8
  148. package/templates/catalog-manifest.json +397 -0
  149. package/prompts/deep-executor.md +0 -19
  150. package/prompts/scientist.md +0 -89
  151. package/skills/deepinit/SKILL.md +0 -320
  152. package/skills/learn-about-omx/SKILL.md +0 -37
  153. package/skills/learner/SKILL.md +0 -135
  154. package/skills/pipeline/SKILL.md +0 -407
  155. package/skills/project-session-manager/SKILL.md +0 -560
  156. package/skills/psm/SKILL.md +0 -20
  157. package/skills/release/SKILL.md +0 -83
  158. package/skills/ultrapilot/SKILL.md +0 -627
  159. package/skills/writer-memory/SKILL.md +0 -443
@@ -0,0 +1,397 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "catalogVersion": "2026.02.20.1",
4
+ "skills": [
5
+ {
6
+ "name": "autopilot",
7
+ "category": "execution",
8
+ "status": "active",
9
+ "core": true,
10
+ "internalRequired": false
11
+ },
12
+ {
13
+ "name": "ralph",
14
+ "category": "execution",
15
+ "status": "active",
16
+ "core": true,
17
+ "internalRequired": false
18
+ },
19
+ {
20
+ "name": "ultrawork",
21
+ "category": "execution",
22
+ "status": "active",
23
+ "core": true,
24
+ "internalRequired": false
25
+ },
26
+ {
27
+ "name": "team",
28
+ "category": "execution",
29
+ "status": "active",
30
+ "core": true,
31
+ "internalRequired": false
32
+ },
33
+ {
34
+ "name": "ecomode",
35
+ "category": "execution",
36
+ "status": "merged",
37
+ "canonical": "ultrawork",
38
+ "core": false,
39
+ "internalRequired": false
40
+ },
41
+ {
42
+ "name": "ultraqa",
43
+ "category": "execution",
44
+ "status": "merged",
45
+ "canonical": "ralph",
46
+ "core": false,
47
+ "internalRequired": false
48
+ },
49
+ {
50
+ "name": "swarm",
51
+ "category": "execution",
52
+ "status": "alias",
53
+ "canonical": "team",
54
+ "core": false,
55
+ "internalRequired": false
56
+ },
57
+ {
58
+ "name": "plan",
59
+ "category": "planning",
60
+ "status": "active",
61
+ "core": false,
62
+ "internalRequired": false
63
+ },
64
+ {
65
+ "name": "ralplan",
66
+ "category": "planning",
67
+ "status": "active",
68
+ "canonical": "plan",
69
+ "core": true,
70
+ "internalRequired": false
71
+ },
72
+ {
73
+ "name": "analyze",
74
+ "category": "shortcut",
75
+ "status": "alias",
76
+ "canonical": "debugger",
77
+ "core": false,
78
+ "internalRequired": false
79
+ },
80
+ {
81
+ "name": "deepsearch",
82
+ "category": "shortcut",
83
+ "status": "alias",
84
+ "canonical": "explore",
85
+ "core": false,
86
+ "internalRequired": false
87
+ },
88
+ {
89
+ "name": "tdd",
90
+ "category": "shortcut",
91
+ "status": "alias",
92
+ "canonical": "test-engineer",
93
+ "core": false,
94
+ "internalRequired": false
95
+ },
96
+ {
97
+ "name": "build-fix",
98
+ "category": "shortcut",
99
+ "status": "alias",
100
+ "canonical": "build-fixer",
101
+ "core": false,
102
+ "internalRequired": false
103
+ },
104
+ {
105
+ "name": "code-review",
106
+ "category": "shortcut",
107
+ "status": "active",
108
+ "canonical": "code-reviewer",
109
+ "core": false,
110
+ "internalRequired": false
111
+ },
112
+ {
113
+ "name": "security-review",
114
+ "category": "shortcut",
115
+ "status": "active",
116
+ "canonical": "security-reviewer",
117
+ "core": false,
118
+ "internalRequired": false
119
+ },
120
+ {
121
+ "name": "frontend-ui-ux",
122
+ "category": "shortcut",
123
+ "status": "alias",
124
+ "canonical": "designer",
125
+ "core": false,
126
+ "internalRequired": false
127
+ },
128
+ {
129
+ "name": "git-master",
130
+ "category": "shortcut",
131
+ "status": "alias",
132
+ "canonical": "git-master",
133
+ "core": false,
134
+ "internalRequired": false
135
+ },
136
+ {
137
+ "name": "review",
138
+ "category": "shortcut",
139
+ "status": "alias",
140
+ "canonical": "plan --review",
141
+ "core": false,
142
+ "internalRequired": false
143
+ },
144
+ {
145
+ "name": "cancel",
146
+ "category": "utility",
147
+ "status": "active",
148
+ "core": false,
149
+ "internalRequired": false
150
+ },
151
+ {
152
+ "name": "doctor",
153
+ "category": "utility",
154
+ "status": "active",
155
+ "core": false,
156
+ "internalRequired": false
157
+ },
158
+ {
159
+ "name": "help",
160
+ "category": "utility",
161
+ "status": "active",
162
+ "core": false,
163
+ "internalRequired": false
164
+ },
165
+ {
166
+ "name": "note",
167
+ "category": "utility",
168
+ "status": "active",
169
+ "core": false,
170
+ "internalRequired": false
171
+ },
172
+ {
173
+ "name": "trace",
174
+ "category": "utility",
175
+ "status": "active",
176
+ "core": false,
177
+ "internalRequired": false
178
+ },
179
+ {
180
+ "name": "skill",
181
+ "category": "utility",
182
+ "status": "active",
183
+ "core": false,
184
+ "internalRequired": false
185
+ },
186
+ {
187
+ "name": "research",
188
+ "category": "utility",
189
+ "status": "merged",
190
+ "canonical": "researcher",
191
+ "core": false,
192
+ "internalRequired": false
193
+ },
194
+ {
195
+ "name": "hud",
196
+ "category": "utility",
197
+ "status": "active",
198
+ "core": false,
199
+ "internalRequired": false
200
+ },
201
+ {
202
+ "name": "omx-setup",
203
+ "category": "utility",
204
+ "status": "active",
205
+ "core": false,
206
+ "internalRequired": false
207
+ },
208
+ {
209
+ "name": "configure-telegram",
210
+ "category": "utility",
211
+ "status": "merged",
212
+ "canonical": "omx-setup",
213
+ "core": false,
214
+ "internalRequired": false
215
+ },
216
+ {
217
+ "name": "configure-discord",
218
+ "category": "utility",
219
+ "status": "merged",
220
+ "canonical": "omx-setup",
221
+ "core": false,
222
+ "internalRequired": false
223
+ },
224
+ {
225
+ "name": "ralph-init",
226
+ "category": "utility",
227
+ "status": "merged",
228
+ "canonical": "plan",
229
+ "core": false,
230
+ "internalRequired": false
231
+ },
232
+ {
233
+ "name": "worker",
234
+ "category": "utility",
235
+ "status": "internal",
236
+ "core": false,
237
+ "internalRequired": true
238
+ }
239
+ ],
240
+ "agents": [
241
+ {
242
+ "name": "explore",
243
+ "category": "build",
244
+ "status": "active"
245
+ },
246
+ {
247
+ "name": "analyst",
248
+ "category": "build",
249
+ "status": "active"
250
+ },
251
+ {
252
+ "name": "planner",
253
+ "category": "build",
254
+ "status": "active"
255
+ },
256
+ {
257
+ "name": "architect",
258
+ "category": "build",
259
+ "status": "active"
260
+ },
261
+ {
262
+ "name": "debugger",
263
+ "category": "build",
264
+ "status": "active"
265
+ },
266
+ {
267
+ "name": "executor",
268
+ "category": "build",
269
+ "status": "active"
270
+ },
271
+ {
272
+ "name": "verifier",
273
+ "category": "build",
274
+ "status": "active"
275
+ },
276
+ {
277
+ "name": "style-reviewer",
278
+ "category": "review",
279
+ "status": "merged",
280
+ "canonical": "code-reviewer"
281
+ },
282
+ {
283
+ "name": "quality-reviewer",
284
+ "category": "review",
285
+ "status": "merged",
286
+ "canonical": "code-reviewer"
287
+ },
288
+ {
289
+ "name": "api-reviewer",
290
+ "category": "review",
291
+ "status": "merged",
292
+ "canonical": "code-reviewer"
293
+ },
294
+ {
295
+ "name": "security-reviewer",
296
+ "category": "review",
297
+ "status": "active"
298
+ },
299
+ {
300
+ "name": "performance-reviewer",
301
+ "category": "review",
302
+ "status": "merged",
303
+ "canonical": "code-reviewer"
304
+ },
305
+ {
306
+ "name": "code-reviewer",
307
+ "category": "review",
308
+ "status": "active"
309
+ },
310
+ {
311
+ "name": "dependency-expert",
312
+ "category": "domain",
313
+ "status": "active"
314
+ },
315
+ {
316
+ "name": "test-engineer",
317
+ "category": "domain",
318
+ "status": "active"
319
+ },
320
+ {
321
+ "name": "quality-strategist",
322
+ "category": "domain",
323
+ "status": "merged",
324
+ "canonical": "verifier"
325
+ },
326
+ {
327
+ "name": "build-fixer",
328
+ "category": "domain",
329
+ "status": "active"
330
+ },
331
+ {
332
+ "name": "designer",
333
+ "category": "domain",
334
+ "status": "active"
335
+ },
336
+ {
337
+ "name": "writer",
338
+ "category": "domain",
339
+ "status": "active"
340
+ },
341
+ {
342
+ "name": "qa-tester",
343
+ "category": "domain",
344
+ "status": "merged",
345
+ "canonical": "test-engineer"
346
+ },
347
+ {
348
+ "name": "git-master",
349
+ "category": "domain",
350
+ "status": "active"
351
+ },
352
+ {
353
+ "name": "code-simplifier",
354
+ "category": "domain",
355
+ "status": "internal"
356
+ },
357
+ {
358
+ "name": "researcher",
359
+ "category": "domain",
360
+ "status": "active"
361
+ },
362
+ {
363
+ "name": "product-manager",
364
+ "category": "product",
365
+ "status": "merged",
366
+ "canonical": "analyst"
367
+ },
368
+ {
369
+ "name": "ux-researcher",
370
+ "category": "product",
371
+ "status": "merged",
372
+ "canonical": "designer"
373
+ },
374
+ {
375
+ "name": "information-architect",
376
+ "category": "product",
377
+ "status": "merged",
378
+ "canonical": "designer"
379
+ },
380
+ {
381
+ "name": "product-analyst",
382
+ "category": "product",
383
+ "status": "merged",
384
+ "canonical": "analyst"
385
+ },
386
+ {
387
+ "name": "critic",
388
+ "category": "coordination",
389
+ "status": "active"
390
+ },
391
+ {
392
+ "name": "vision",
393
+ "category": "coordination",
394
+ "status": "active"
395
+ }
396
+ ]
397
+ }
@@ -1,19 +0,0 @@
1
- ---
2
- description: "DEPRECATED: deep-executor now aliases to executor"
3
- argument-hint: "task description"
4
- ---
5
- ## Deprecation Notice
6
-
7
- `/prompts:deep-executor` is deprecated.
8
-
9
- Use `/prompts:executor` for all implementation work, including complex autonomous multi-file tasks.
10
-
11
- ## Compatibility Behavior
12
-
13
- If invoked through `deep-executor`, continue by following the **Executor** prompt behavior exactly:
14
- - Explore first
15
- - Implement end-to-end
16
- - Verify with diagnostics/tests/build evidence
17
- - Deliver concise completion summary
18
-
19
- Do not maintain separate deep-executor-only behavior.
@@ -1,89 +0,0 @@
1
- ---
2
- description: "Data analysis and research execution specialist"
3
- argument-hint: "task description"
4
- ---
5
- ## Role
6
-
7
- You are Scientist. Your mission is to execute data analysis and research tasks using Python, producing evidence-backed findings.
8
- You are responsible for data loading/exploration, statistical analysis, hypothesis testing, visualization, and report generation.
9
- You are not responsible for feature implementation, code review, security analysis, or external research (use researcher for that).
10
-
11
- ## Why This Matters
12
-
13
- Data analysis without statistical rigor produces misleading conclusions. These rules exist because findings without confidence intervals are speculation, visualizations without context mislead, and conclusions without limitations are dangerous. Every finding must be backed by evidence, and every limitation must be acknowledged.
14
-
15
- ## Success Criteria
16
-
17
- - Every [FINDING] is backed by at least one statistical measure: confidence interval, effect size, p-value, or sample size
18
- - Analysis follows hypothesis-driven structure: Objective -> Data -> Findings -> Limitations
19
- - All Python code executed via python_repl (never Bash heredocs)
20
- - Output uses structured markers: [OBJECTIVE], [DATA], [FINDING], [STAT:*], [LIMITATION]
21
- - Report saved to `.omx/scientist/reports/` with visualizations in `.omx/scientist/figures/`
22
-
23
- ## Constraints
24
-
25
- - Execute ALL Python code via python_repl. Never use Bash for Python (no `python -c`, no heredocs).
26
- - Use Bash ONLY for shell commands: ls, pip, mkdir, git, python3 --version.
27
- - Never install packages. Use stdlib fallbacks or inform user of missing capabilities.
28
- - Never output raw DataFrames. Use .head(), .describe(), aggregated results.
29
- - Work ALONE. No delegation to other agents.
30
- - Use matplotlib with Agg backend. Always plt.savefig(), never plt.show(). Always plt.close() after saving.
31
-
32
- ## Investigation Protocol
33
-
34
- 1) SETUP: Verify Python/packages, create working directory (.omx/scientist/), identify data files, state [OBJECTIVE].
35
- 2) EXPLORE: Load data, inspect shape/types/missing values, output [DATA] characteristics. Use .head(), .describe().
36
- 3) ANALYZE: Execute statistical analysis. For each insight, output [FINDING] with supporting [STAT:*] (ci, effect_size, p_value, n). Hypothesis-driven: state the hypothesis, test it, report result.
37
- 4) SYNTHESIZE: Summarize findings, output [LIMITATION] for caveats, generate report, clean up.
38
-
39
- ## Tool Usage
40
-
41
- - Use python_repl for ALL Python code (persistent variables across calls, session management via researchSessionID).
42
- - Use Read to load data files and analysis scripts.
43
- - Use Glob to find data files (CSV, JSON, parquet, pickle).
44
- - Use Grep to search for patterns in data or code.
45
- - Use Bash for shell commands only (ls, pip list, mkdir, git status).
46
-
47
- ## Execution Policy
48
-
49
- - Default effort: medium (thorough analysis proportional to data complexity).
50
- - Quick inspections (haiku tier): .head(), .describe(), value_counts. Speed over depth.
51
- - Deep analysis (sonnet tier): multi-step analysis, statistical testing, visualization, full report.
52
- - Stop when findings answer the objective and evidence is documented.
53
-
54
- ## Output Format
55
-
56
- [OBJECTIVE] Identify correlation between price and sales
57
-
58
- [DATA] 10,000 rows, 15 columns, 3 columns with missing values
59
-
60
- [FINDING] Strong positive correlation between price and sales
61
- [STAT:ci] 95% CI: [0.75, 0.89]
62
- [STAT:effect_size] r = 0.82 (large)
63
- [STAT:p_value] p < 0.001
64
- [STAT:n] n = 10,000
65
-
66
- [LIMITATION] Missing values (15%) may introduce bias. Correlation does not imply causation.
67
-
68
- Report saved to: .omx/scientist/reports/{timestamp}_report.md
69
-
70
- ## Failure Modes To Avoid
71
-
72
- - Speculation without evidence: Reporting a "trend" without statistical backing. Every [FINDING] needs a [STAT:*] within 10 lines.
73
- - Bash Python execution: Using `python -c "..."` or heredocs instead of python_repl. This loses variable persistence and breaks the workflow.
74
- - Raw data dumps: Printing entire DataFrames. Use .head(5), .describe(), or aggregated summaries.
75
- - Missing limitations: Reporting findings without acknowledging caveats (missing data, sample bias, confounders).
76
- - No visualizations saved: Using plt.show() (which doesn't work) instead of plt.savefig(). Always save to file with Agg backend.
77
-
78
- ## Examples
79
-
80
- **Good:** [FINDING] Users in cohort A have 23% higher retention. [STAT:effect_size] Cohen's d = 0.52 (medium). [STAT:ci] 95% CI: [18%, 28%]. [STAT:p_value] p = 0.003. [STAT:n] n = 2,340. [LIMITATION] Self-selection bias: cohort A opted in voluntarily.
81
- **Bad:** "Cohort A seems to have better retention." No statistics, no confidence interval, no sample size, no limitations.
82
-
83
- ## Final Checklist
84
-
85
- - Did I use python_repl for all Python code?
86
- - Does every [FINDING] have supporting [STAT:*] evidence?
87
- - Did I include [LIMITATION] markers?
88
- - Are visualizations saved (not shown) with Agg backend?
89
- - Did I avoid raw data dumps?