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
@@ -1,320 +0,0 @@
1
- ---
2
- name: deepinit
3
- description: Deep codebase initialization with hierarchical AGENTS.md documentation
4
- ---
5
-
6
- # Deep Init Skill
7
-
8
- Creates comprehensive, hierarchical AGENTS.md documentation across the entire codebase.
9
-
10
- ## Core Concept
11
-
12
- AGENTS.md files serve as **AI-readable documentation** that helps agents understand:
13
- - What each directory contains
14
- - How components relate to each other
15
- - Special instructions for working in that area
16
- - Dependencies and relationships
17
-
18
- ## Hierarchical Tagging System
19
-
20
- Every AGENTS.md (except root) includes a parent reference tag:
21
-
22
- ```markdown
23
- <!-- Parent: ../AGENTS.md -->
24
- ```
25
-
26
- This creates a navigable hierarchy:
27
- ```
28
- /AGENTS.md ← Root (no parent tag)
29
- ├── src/AGENTS.md ← <!-- Parent: ../AGENTS.md -->
30
- │ ├── src/components/AGENTS.md ← <!-- Parent: ../AGENTS.md -->
31
- │ └── src/utils/AGENTS.md ← <!-- Parent: ../AGENTS.md -->
32
- └── docs/AGENTS.md ← <!-- Parent: ../AGENTS.md -->
33
- ```
34
-
35
- ## AGENTS.md Template
36
-
37
- ```markdown
38
- <!-- Parent: {relative_path_to_parent}/AGENTS.md -->
39
- <!-- Generated: {timestamp} | Updated: {timestamp} -->
40
-
41
- # {Directory Name}
42
-
43
- ## Purpose
44
- {One-paragraph description of what this directory contains and its role}
45
-
46
- ## Key Files
47
- {List each significant file with a one-line description}
48
-
49
- | File | Description |
50
- |------|-------------|
51
- | `file.ts` | Brief description of purpose |
52
-
53
- ## Subdirectories
54
- {List each subdirectory with brief purpose}
55
-
56
- | Directory | Purpose |
57
- |-----------|---------|
58
- | `subdir/` | What it contains (see `subdir/AGENTS.md`) |
59
-
60
- ## For AI Agents
61
-
62
- ### Working In This Directory
63
- {Special instructions for AI agents modifying files here}
64
-
65
- ### Testing Requirements
66
- {How to test changes in this directory}
67
-
68
- ### Common Patterns
69
- {Code patterns or conventions used here}
70
-
71
- ## Dependencies
72
-
73
- ### Internal
74
- {References to other parts of the codebase this depends on}
75
-
76
- ### External
77
- {Key external packages/libraries used}
78
-
79
- <!-- MANUAL: Any manually added notes below this line are preserved on regeneration -->
80
- ```
81
-
82
- ## Execution Workflow
83
-
84
- ### Step 1: Map Directory Structure
85
-
86
- ```
87
- spawn_sub_agent(subagent_type="explore", model="haiku",
88
- prompt="List all directories recursively. Exclude: node_modules, .git, dist, build, __pycache__, .venv, coverage, .next, .nuxt")
89
- ```
90
-
91
- ### Step 2: Create Work Plan
92
-
93
- Generate todo items for each directory, organized by depth level:
94
-
95
- ```
96
- Level 0: / (root)
97
- Level 1: /src, /docs, /tests
98
- Level 2: /src/components, /src/utils, /docs/api
99
- ...
100
- ```
101
-
102
- ### Step 3: Generate Level by Level
103
-
104
- **IMPORTANT**: Generate parent levels before child levels to ensure parent references are valid.
105
-
106
- For each directory:
107
- 1. Read all files in the directory
108
- 2. Analyze purpose and relationships
109
- 3. Generate AGENTS.md content
110
- 4. Write file with proper parent reference
111
-
112
- ### Step 4: Compare and Update (if exists)
113
-
114
- When AGENTS.md already exists:
115
-
116
- 1. **Read existing content**
117
- 2. **Identify sections**:
118
- - Auto-generated sections (can be updated)
119
- - Manual sections (`<!-- MANUAL -->` preserved)
120
- 3. **Compare**:
121
- - New files added?
122
- - Files removed?
123
- - Structure changed?
124
- 4. **Merge**:
125
- - Update auto-generated content
126
- - Preserve manual annotations
127
- - Update timestamp
128
-
129
- ### Step 5: Validate Hierarchy
130
-
131
- After generation, run validation checks:
132
-
133
- | Check | How to Verify | Corrective Action |
134
- |-------|--------------|-------------------|
135
- | Parent references resolve | Read each AGENTS.md, check `<!-- Parent: -->` path exists | Fix path or remove orphan |
136
- | No orphaned AGENTS.md | Compare AGENTS.md locations to directory structure | Delete orphaned files |
137
- | Completeness | List all directories, check for AGENTS.md | Generate missing files |
138
- | Timestamps current | Check `<!-- Generated: -->` dates | Regenerate outdated files |
139
-
140
- Validation script pattern:
141
- ```bash
142
- # Find all AGENTS.md files
143
- find . -name "AGENTS.md" -type f
144
-
145
- # Check parent references
146
- grep -r "<!-- Parent:" --include="AGENTS.md" .
147
- ```
148
-
149
- ## Smart Delegation
150
-
151
- | Task | Agent |
152
- |------|-------|
153
- | Directory mapping | `explore` |
154
- | File analysis | `architect-low` |
155
- | Content generation | `writer` |
156
- | AGENTS.md writes | `writer` |
157
-
158
- ## Empty Directory Handling
159
-
160
- When encountering empty or near-empty directories:
161
-
162
- | Condition | Action |
163
- |-----------|--------|
164
- | No files, no subdirectories | **Skip** - do not create AGENTS.md |
165
- | No files, has subdirectories | Create minimal AGENTS.md with subdirectory listing only |
166
- | Has only generated files (*.min.js, *.map) | Skip or minimal AGENTS.md |
167
- | Has only config files | Create AGENTS.md describing configuration purpose |
168
-
169
- Example minimal AGENTS.md for directory-only containers:
170
- ```markdown
171
- <!-- Parent: ../AGENTS.md -->
172
- # {Directory Name}
173
-
174
- ## Purpose
175
- Container directory for organizing related modules.
176
-
177
- ## Subdirectories
178
- | Directory | Purpose |
179
- |-----------|---------|
180
- | `subdir/` | Description (see `subdir/AGENTS.md`) |
181
- ```
182
-
183
- ## Parallelization Rules
184
-
185
- 1. **Same-level directories**: Process in parallel
186
- 2. **Different levels**: Sequential (parent first)
187
- 3. **Large directories**: Spawn dedicated agent per directory
188
- 4. **Small directories**: Batch multiple into one agent
189
-
190
- ## Quality Standards
191
-
192
- ### Must Include
193
- - [ ] Accurate file descriptions
194
- - [ ] Correct parent references
195
- - [ ] Subdirectory links
196
- - [ ] AI agent instructions
197
-
198
- ### Must Avoid
199
- - [ ] Generic boilerplate
200
- - [ ] Incorrect file names
201
- - [ ] Broken parent references
202
- - [ ] Missing important files
203
-
204
- ## Example Output
205
-
206
- ### Root AGENTS.md
207
- ```markdown
208
- <!-- Generated: 2024-01-15 | Updated: 2024-01-15 -->
209
-
210
- # my-project
211
-
212
- ## Purpose
213
- A web application for managing user tasks with real-time collaboration features.
214
-
215
- ## Key Files
216
- | File | Description |
217
- |------|-------------|
218
- | `package.json` | Project dependencies and scripts |
219
- | `tsconfig.json` | TypeScript configuration |
220
- | `.env.example` | Environment variable template |
221
-
222
- ## Subdirectories
223
- | Directory | Purpose |
224
- |-----------|---------|
225
- | `src/` | Application source code (see `src/AGENTS.md`) |
226
- | `docs/` | Documentation (see `docs/AGENTS.md`) |
227
- | `tests/` | Test suites (see `tests/AGENTS.md`) |
228
-
229
- ## For AI Agents
230
-
231
- ### Working In This Directory
232
- - Always install dependencies after modifying the project manifest
233
- - Use TypeScript strict mode
234
- - Follow ESLint rules
235
-
236
- ### Testing Requirements
237
- - Run tests before committing
238
- - Ensure >80% coverage
239
-
240
- ### Common Patterns
241
- - Use barrel exports (index.ts)
242
- - Prefer functional components
243
-
244
- ## Dependencies
245
-
246
- ### External
247
- - React 18.x - UI framework
248
- - TypeScript 5.x - Type safety
249
- - Vite - Build tool
250
-
251
- <!-- MANUAL: Custom project notes can be added below -->
252
- ```
253
-
254
- ### Nested AGENTS.md
255
- ```markdown
256
- <!-- Parent: ../AGENTS.md -->
257
- <!-- Generated: 2024-01-15 | Updated: 2024-01-15 -->
258
-
259
- # components
260
-
261
- ## Purpose
262
- Reusable React components organized by feature and complexity.
263
-
264
- ## Key Files
265
- | File | Description |
266
- |------|-------------|
267
- | `index.ts` | Barrel export for all components |
268
- | `Button.tsx` | Primary button component |
269
- | `Modal.tsx` | Modal dialog component |
270
-
271
- ## Subdirectories
272
- | Directory | Purpose |
273
- |-----------|---------|
274
- | `forms/` | Form-related components (see `forms/AGENTS.md`) |
275
- | `layout/` | Layout components (see `layout/AGENTS.md`) |
276
-
277
- ## For AI Agents
278
-
279
- ### Working In This Directory
280
- - Each component has its own file
281
- - Use CSS modules for styling
282
- - Export via index.ts
283
-
284
- ### Testing Requirements
285
- - Unit tests in `__tests__/` subdirectory
286
- - Use React Testing Library
287
-
288
- ### Common Patterns
289
- - Props interfaces defined above component
290
- - Use forwardRef for DOM-exposing components
291
-
292
- ## Dependencies
293
-
294
- ### Internal
295
- - `src/hooks/` - Custom hooks used by components
296
- - `src/utils/` - Utility functions
297
-
298
- ### External
299
- - `clsx` - Conditional class names
300
- - `lucide-react` - Icons
301
-
302
- <!-- MANUAL: -->
303
- ```
304
-
305
- ## Triggering Update Mode
306
-
307
- When running on an existing codebase with AGENTS.md files:
308
-
309
- 1. Detect existing files first
310
- 2. Read and parse existing content
311
- 3. Analyze current directory state
312
- 4. Generate diff between existing and current
313
- 5. Apply updates while preserving manual sections
314
-
315
- ## Performance Considerations
316
-
317
- - **Cache directory listings** - Don't re-scan same directories
318
- - **Batch small directories** - Process multiple at once
319
- - **Skip unchanged** - If directory hasn't changed, skip regeneration
320
- - **Parallel writes** - Multiple agents writing different files simultaneously
@@ -1,37 +0,0 @@
1
- ---
2
- name: learn-about-omx
3
- description: Learn about your OMX usage patterns and get personalized recommendations
4
- ---
5
-
6
- # Learn About OMX
7
-
8
- Analyze your OMX usage patterns and provide personalized recommendations for getting more out of oh-my-codex.
9
-
10
- ## Usage
11
-
12
- ```
13
- /learn-about-omx
14
- ```
15
-
16
- ## Behavior
17
-
18
- 1. **Scan usage data** from:
19
- - `.omx/sessions/` for session history
20
- - `.omx/state/` for mode usage patterns
21
- - `.omx/notepad.md` for working memory
22
- - `.omx/project-memory.json` for project context
23
- - Agent flow traces for tool and agent usage
24
- 2. **Analyze patterns**:
25
- - Most-used modes and skills
26
- - Agent types spawned most frequently
27
- - Common workflows and task types
28
- - Session durations and completion rates
29
- 3. **Generate recommendations**:
30
- - Underused features that match your workflow
31
- - More efficient skill combinations
32
- - Configuration optimizations
33
- - Tips based on your usage profile
34
-
35
- ## Output
36
-
37
- A personalized report with usage statistics and actionable recommendations for improving your OMX workflow.
@@ -1,135 +0,0 @@
1
- ---
2
- name: learner
3
- description: Extract a learned skill from the current conversation
4
- ---
5
-
6
- # Learner Skill
7
-
8
- ## The Insight
9
-
10
- Reusable skills are not code snippets to copy-paste, but **principles and decision-making heuristics** that teach Codex HOW TO THINK about a class of problems.
11
-
12
- **The difference:**
13
- - BAD (mimicking): "When you see ConnectionResetError, add this try/except block"
14
- - GOOD (reusable skill): "In async network code, any I/O operation can fail independently due to client/server lifecycle mismatches. The principle: wrap each I/O operation separately, because failure between operations is the common case, not the exception."
15
-
16
- A good skill changes how Codex APPROACHES problems, not just what code it produces.
17
-
18
- ## Why This Matters
19
-
20
- Before extracting a skill, ask yourself:
21
- - "Could someone Google this in 5 minutes?" → If yes, STOP. Don't extract.
22
- - "Is this specific to THIS codebase?" → If no, STOP. Don't extract.
23
- - "Did this take real debugging effort to discover?" → If no, STOP. Don't extract.
24
-
25
- If a potential skill fails any of these questions, it's not worth saving.
26
-
27
- ## Recognition Pattern
28
-
29
- Use /learner ONLY after:
30
- - Solving a tricky bug that required deep investigation
31
- - Discovering a non-obvious workaround specific to this codebase
32
- - Finding a hidden gotcha that wastes time when forgotten
33
- - Uncovering undocumented behavior that affects this project
34
-
35
- ## The Approach
36
-
37
- ### Extraction Process
38
-
39
- **Step 1: Gather Required Information**
40
-
41
- - **Problem Statement**: The SPECIFIC error, symptom, or confusion that occurred
42
- - Include actual error messages, file paths, line numbers
43
- - Example: "TypeError in src/hooks/session.ts:45 when sessionId is undefined after restart"
44
-
45
- - **Solution**: The EXACT fix, not general advice
46
- - Include code snippets, file paths, configuration changes
47
- - Example: "Add null check before accessing session.user, regenerate session on 401"
48
-
49
- - **Triggers**: Keywords that would appear when hitting this problem again
50
- - Use error message fragments, file names, symptom descriptions
51
- - Example: ["sessionId undefined", "session.ts TypeError", "401 session"]
52
-
53
- - **Scope**: Almost always Project-level unless it's a truly universal insight
54
-
55
- **Step 2: Quality Validation**
56
-
57
- The system REJECTS skills that are:
58
- - Too generic (no file paths, line numbers, or specific error messages)
59
- - Easily Googleable (standard patterns, library usage)
60
- - Vague solutions (no code snippets or precise instructions)
61
- - Poor triggers (generic words that match everything)
62
-
63
- **Step 3: Save Location**
64
-
65
- - **User-level**: ~/.codex/skills/omc-learned/ - Rare. Only for truly portable insights.
66
- - **Project-level**: .omx/skills/ - Default. Version-controlled with repo.
67
-
68
- ### What Makes a USEFUL Skill
69
-
70
- **CRITICAL**: Not every solution is worth saving. A good skill is:
71
-
72
- 1. **Non-Googleable**: Something you couldn't easily find via search
73
- - BAD: "How to read files in TypeScript" ❌
74
- - GOOD: "This codebase uses custom path resolution in ESM that requires fileURLToPath + specific relative paths" ✓
75
-
76
- 2. **Context-Specific**: References actual files, error messages, or patterns from THIS codebase
77
- - BAD: "Use try/catch for error handling" ❌
78
- - GOOD: "The aiohttp proxy in server.py:42 crashes on ClientDisconnectedError - wrap StreamResponse in try/except" ✓
79
-
80
- 3. **Actionable with Precision**: Tells you exactly WHAT to do and WHERE
81
- - BAD: "Handle edge cases" ❌
82
- - GOOD: "When seeing 'Cannot find module' in dist/, check tsconfig.json moduleResolution matches package.json type field" ✓
83
-
84
- 4. **Hard-Won**: Took significant debugging effort to discover
85
- - BAD: Generic programming patterns ❌
86
- - GOOD: "Race condition in worker.ts - the Promise.all at line 89 needs await before the map callback returns" ✓
87
-
88
- ### Anti-Patterns (DO NOT EXTRACT)
89
-
90
- - Generic programming patterns (use documentation instead)
91
- - Refactoring techniques (these are universal)
92
- - Library usage examples (use library docs)
93
- - Type definitions or boilerplate
94
- - Anything a junior dev could Google in 5 minutes
95
-
96
- ## Skill Format
97
-
98
- Skills are saved as markdown with this structure:
99
-
100
- ### YAML Frontmatter
101
-
102
- Standard metadata fields:
103
- - id, name, description, source, triggers, quality
104
-
105
- ### Body Structure (Required)
106
-
107
- ```markdown
108
- # [Skill Name]
109
-
110
- ## The Insight
111
- What is the underlying PRINCIPLE you discovered? Not the code, but the mental model.
112
- Example: "Async I/O operations are independently failable. Client lifecycle != server lifecycle."
113
-
114
- ## Why This Matters
115
- What goes wrong if you don't know this? What symptom led you here?
116
- Example: "Proxy server crashes on client disconnect, taking down other requests."
117
-
118
- ## Recognition Pattern
119
- How do you know when this skill applies? What are the signs?
120
- Example: "Building any long-lived connection handler (proxy, websocket, SSE)"
121
-
122
- ## The Approach
123
- The decision-making heuristic, not just code. How should Codex THINK about this?
124
- Example: "For each I/O operation, ask: what if this fails right now? Handle it locally."
125
-
126
- ## Example (Optional)
127
- If code helps, show it - but as illustration of the principle, not copy-paste material.
128
- ```
129
-
130
- **Key**: A skill is REUSABLE if Codex can apply it to NEW situations, not just identical ones.
131
-
132
- ## Related Commands
133
-
134
- - /note - Save quick notes that survive compaction (less formal than skills)
135
- - /ralph - Start a development loop with learning capture