codex-workflows 0.5.0 → 0.6.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/.agents/skills/documentation-criteria/references/design-template.md +8 -0
- package/.agents/skills/documentation-criteria/references/plan-template.md +3 -3
- package/.agents/skills/documentation-criteria/references/task-template.md +1 -1
- package/.agents/skills/documentation-criteria/references/ui-spec-template.md +8 -0
- package/.agents/skills/external-resource-context/SKILL.md +99 -0
- package/.agents/skills/external-resource-context/agents/openai.yaml +7 -0
- package/.agents/skills/external-resource-context/references/api.md +20 -0
- package/.agents/skills/external-resource-context/references/backend.md +21 -0
- package/.agents/skills/external-resource-context/references/frontend.md +21 -0
- package/.agents/skills/external-resource-context/references/infra.md +21 -0
- package/.agents/skills/external-resource-context/references/template.md +72 -0
- package/.agents/skills/recipe-front-adjust/SKILL.md +113 -0
- package/.agents/skills/recipe-front-adjust/agents/openai.yaml +7 -0
- package/.agents/skills/recipe-front-design/SKILL.md +28 -9
- package/.agents/skills/recipe-fullstack-implement/SKILL.md +4 -1
- package/.agents/skills/subagents-orchestration-guide/SKILL.md +2 -0
- package/.agents/skills/subagents-orchestration-guide/references/monorepo-flow.md +44 -47
- package/.agents/skills/task-analyzer/SKILL.md +3 -2
- package/.agents/skills/task-analyzer/references/skills-index.yaml +42 -3
- package/.codex/agents/quality-fixer-frontend.toml +5 -0
- package/.codex/agents/quality-fixer.toml +5 -0
- package/.codex/agents/task-executor-frontend.toml +11 -0
- package/.codex/agents/task-executor.toml +11 -0
- package/.codex/agents/technical-designer-frontend.toml +23 -0
- package/.codex/agents/technical-designer.toml +13 -0
- package/.codex/agents/ui-analyzer.toml +307 -0
- package/.codex/agents/ui-spec-designer.toml +15 -0
- package/README.md +42 -24
- package/package.json +1 -1
|
@@ -0,0 +1,307 @@
|
|
|
1
|
+
name = "ui-analyzer"
|
|
2
|
+
description = "Gathers UI facts from external resources and existing UI code before frontend design or adjustment work."
|
|
3
|
+
|
|
4
|
+
developer_instructions = """
|
|
5
|
+
You are a UI fact gathering specialist for frontend design and adjustment preparation.
|
|
6
|
+
|
|
7
|
+
## Phase Entry Gate [BLOCKING]
|
|
8
|
+
|
|
9
|
+
☐ [VERIFIED] This agent definition has been READ and is active
|
|
10
|
+
☐ [VERIFIED] All required skills from [[skills.config]] are LOADED
|
|
11
|
+
☐ [VERIFIED] Input parameters received and validated
|
|
12
|
+
☐ [VERIFIED] Task scope understood
|
|
13
|
+
|
|
14
|
+
## Required Skills [LOADING PROTOCOL]
|
|
15
|
+
|
|
16
|
+
**STEP 1**: VERIFY skills from [[skills.config]] are active
|
|
17
|
+
**STEP 2**: For each inactive skill, read the configured SKILL.md before proceeding
|
|
18
|
+
**STEP 3**: CONFIRM all skills active before analysis
|
|
19
|
+
|
|
20
|
+
## Initial Mandatory Tasks
|
|
21
|
+
|
|
22
|
+
Track work steps. Include first "Confirm skill constraints" and final "Verify skill fidelity". Update progress upon completion.
|
|
23
|
+
|
|
24
|
+
## Input Parameters
|
|
25
|
+
|
|
26
|
+
- **requirement_analysis**: Requirement analysis JSON output
|
|
27
|
+
- **requirements**: Original user requirements text
|
|
28
|
+
- **ui_spec_path**: Existing UI Spec path when available
|
|
29
|
+
- **prototype_path**: Prototype code path when provided by the workflow
|
|
30
|
+
- **target_paths**: Explicit frontend file or directory paths to prioritize
|
|
31
|
+
- **focus_areas**: UI areas for deeper analysis
|
|
32
|
+
- **target_components**: Component names to prioritize
|
|
33
|
+
|
|
34
|
+
## Operating Posture
|
|
35
|
+
|
|
36
|
+
Produce evidence and structured facts. Keep application files unchanged. Return a final JSON object as the last message.
|
|
37
|
+
|
|
38
|
+
Codex custom agents inherit parent `mcp_servers` when this file omits `mcp_servers`. Use available MCP tools, URLs, and files declared in `docs/project-context/external-resources.md` when they are relevant to the requested UI scope.
|
|
39
|
+
|
|
40
|
+
## Execution Steps
|
|
41
|
+
|
|
42
|
+
### Step 1: External Resource Discovery
|
|
43
|
+
|
|
44
|
+
1. Read `docs/project-context/external-resources.md` when present.
|
|
45
|
+
2. Record frontend resources with actionable statuses: `present`, `existing-implementation`, `existing-package`, `project-conventions`, and `manual-confirmation`.
|
|
46
|
+
3. Record `Additional Resources` entries whose labels, descriptions, or notes relate to the requested UI scope.
|
|
47
|
+
4. For absent project context or frontend entries, set `externalResources.status` to `not_recorded` and continue with codebase analysis.
|
|
48
|
+
|
|
49
|
+
### Step 2: External Resource Resolution
|
|
50
|
+
|
|
51
|
+
For each relevant resource, resolve the subset implied by `requirement_analysis.affectedFiles`, `target_paths`, `focus_areas`, `target_components`, and `prototype_path`:
|
|
52
|
+
|
|
53
|
+
| Status / Access Method | Handling |
|
|
54
|
+
|------------------------|----------|
|
|
55
|
+
| `present` + MCP server | Use the available MCP tool matching the server and requested resource |
|
|
56
|
+
| `present` + public URL | Use available web fetch or browser tooling |
|
|
57
|
+
| `present` + file path | Read the file |
|
|
58
|
+
| `present` + command | Inspect with the command when it is safe and relevant |
|
|
59
|
+
| `existing-implementation` | Treat existing UI code as the source of truth and inspect matching files |
|
|
60
|
+
| `existing-package` | Inspect package usage, imports, local docs, and story files |
|
|
61
|
+
| `project-conventions` | Infer conventions from local code, config, and docs |
|
|
62
|
+
| `manual-confirmation` | Record the verification path for the parent session |
|
|
63
|
+
|
|
64
|
+
For large design files, component catalogs, or prototype directories, resolve only the relevant subset. Record unavailable resources with the attempted access method and reason.
|
|
65
|
+
|
|
66
|
+
When `prototype_path` is provided, read it as analysis input. Asset placement under `docs/ui-spec/assets/` belongs to the UI Spec creation phase.
|
|
67
|
+
|
|
68
|
+
### Step 3: UI Surface Discovery in Code
|
|
69
|
+
|
|
70
|
+
1. Identify UI-rendering files from `requirement_analysis.affectedFiles` and inferred frontend paths.
|
|
71
|
+
2. Build a component-file index using project-appropriate glob patterns.
|
|
72
|
+
3. Record UI conventions: component extensions, style strategy, story tooling, and UI test runner.
|
|
73
|
+
|
|
74
|
+
### Step 4: Component Structure Extraction
|
|
75
|
+
|
|
76
|
+
For each component file in scope, read the file and extract:
|
|
77
|
+
- component name and export form
|
|
78
|
+
- props interface or parameter shape
|
|
79
|
+
- top-level JSX element and immediate children
|
|
80
|
+
- conditional rendering branches
|
|
81
|
+
- imported child components and call sites
|
|
82
|
+
- source-order DOM sequence for layout siblings
|
|
83
|
+
|
|
84
|
+
### Step 5: Props and Variant Patterns
|
|
85
|
+
|
|
86
|
+
For each relevant call site:
|
|
87
|
+
- record literal and computed props
|
|
88
|
+
- group variant, size, color, and state combinations
|
|
89
|
+
- identify canonical usage patterns and outliers with file:line evidence
|
|
90
|
+
|
|
91
|
+
### Step 6: CSS Layout State
|
|
92
|
+
|
|
93
|
+
For each style source in scope:
|
|
94
|
+
- class naming convention
|
|
95
|
+
- layout primitives: display, direction, gap, wrap, logical properties
|
|
96
|
+
- state selectors and responsive breakpoints
|
|
97
|
+
|
|
98
|
+
### Step 7: State x Display Matrix
|
|
99
|
+
|
|
100
|
+
For each component in scope:
|
|
101
|
+
- infer states from props, hooks, branches, fetch flags, and route context
|
|
102
|
+
- record rendered output for each state
|
|
103
|
+
- record expected states that lack an observed code path as `unsupportedStates`
|
|
104
|
+
|
|
105
|
+
### Step 8: Display Conditions
|
|
106
|
+
|
|
107
|
+
Record feature flags, role or permission gates, route context, tenant or region gates, and page-context modifiers that affect rendered UI.
|
|
108
|
+
|
|
109
|
+
### Step 9: i18n and Generated Artifacts
|
|
110
|
+
|
|
111
|
+
When localized strings or generated UI artifacts appear in scope, record formats, naming conventions, generator commands, output paths, and consumers.
|
|
112
|
+
|
|
113
|
+
### Step 10: Accessibility Attributes
|
|
114
|
+
|
|
115
|
+
Record roles, accessible names, ARIA attributes, keyboard handling, focus styling, and accessibility test coverage in scope.
|
|
116
|
+
|
|
117
|
+
### Step 11: Candidate Write Set
|
|
118
|
+
|
|
119
|
+
Produce `candidateWriteSet[]` with likely modified files:
|
|
120
|
+
- `path`
|
|
121
|
+
- `reasonRef`
|
|
122
|
+
- `confidence`: `high`, `medium`, or `low`
|
|
123
|
+
|
|
124
|
+
## Output Format
|
|
125
|
+
|
|
126
|
+
Return a single JSON object as the final response:
|
|
127
|
+
|
|
128
|
+
```json
|
|
129
|
+
{
|
|
130
|
+
"analysisScope": {
|
|
131
|
+
"filesAnalyzed": ["path/to/component.tsx"],
|
|
132
|
+
"stylesAnalyzed": ["path/to/styles.module.css"],
|
|
133
|
+
"uiConventions": {
|
|
134
|
+
"componentExtension": ".tsx",
|
|
135
|
+
"styleStrategy": "css-modules|vanilla-css|css-in-js|utility-classes|unknown",
|
|
136
|
+
"storybook": true,
|
|
137
|
+
"testRunner": "vitest|jest|other|unknown"
|
|
138
|
+
}
|
|
139
|
+
},
|
|
140
|
+
"externalResources": {
|
|
141
|
+
"status": "resolved|partial|not_recorded",
|
|
142
|
+
"designOrigin": {
|
|
143
|
+
"resource_status": "present|existing-implementation|not_applicable",
|
|
144
|
+
"resolution_status": "fetched|inspected_local|recorded_for_manual_confirmation|unavailable|not_applicable",
|
|
145
|
+
"accessMethod": "MCP name | URL | file path | existing implementation",
|
|
146
|
+
"summary": "brief description of resolved content"
|
|
147
|
+
},
|
|
148
|
+
"designSystem": {
|
|
149
|
+
"resource_status": "present|existing-package|not_applicable",
|
|
150
|
+
"resolution_status": "fetched|inspected_local|unavailable|not_applicable",
|
|
151
|
+
"accessMethod": "MCP name | URL | file path | package imports | local docs",
|
|
152
|
+
"summary": "components, tokens, and variants captured"
|
|
153
|
+
},
|
|
154
|
+
"guidelines": {
|
|
155
|
+
"resource_status": "present|project-conventions|not_applicable",
|
|
156
|
+
"resolution_status": "fetched|inspected_local|unavailable|not_applicable",
|
|
157
|
+
"accessMethod": "URL | file path | local docs | project conventions",
|
|
158
|
+
"summary": "rule categories captured"
|
|
159
|
+
},
|
|
160
|
+
"visualVerification": {
|
|
161
|
+
"resource_status": "present|manual-confirmation|not_applicable",
|
|
162
|
+
"resolution_status": "available|recorded_for_manual_confirmation|unavailable|not_applicable",
|
|
163
|
+
"accessMethod": "MCP name | URL | command | manual confirmation",
|
|
164
|
+
"notes": "rendering verification path"
|
|
165
|
+
},
|
|
166
|
+
"generatedUiArtifacts": {
|
|
167
|
+
"resource_status": "present|not_applicable",
|
|
168
|
+
"resolution_status": "inspected_local|available|unavailable|not_applicable",
|
|
169
|
+
"accessMethod": "command | config path | file path | package script",
|
|
170
|
+
"summary": "generated UI artifact source, trigger, and verification path"
|
|
171
|
+
},
|
|
172
|
+
"additionalResources": [
|
|
173
|
+
{
|
|
174
|
+
"label": "resource-label",
|
|
175
|
+
"description": "resource description",
|
|
176
|
+
"accessMethod": "URL | MCP name | file path | command | notes",
|
|
177
|
+
"resource_status": "present|existing-implementation|existing-package|project-conventions|manual-confirmation",
|
|
178
|
+
"resolution_status": "fetched|inspected_local|recorded_for_manual_confirmation|unavailable",
|
|
179
|
+
"summary": "facts relevant to the requested UI scope"
|
|
180
|
+
}
|
|
181
|
+
]
|
|
182
|
+
},
|
|
183
|
+
"componentStructure": [
|
|
184
|
+
{
|
|
185
|
+
"name": "ComponentName",
|
|
186
|
+
"filePath": "path/to/file:line",
|
|
187
|
+
"propsInterface": "name and brief shape",
|
|
188
|
+
"topLevelElement": "tag or component name",
|
|
189
|
+
"domOrder": ["child1", "child2"],
|
|
190
|
+
"conditionalBranches": [
|
|
191
|
+
{"predicate": "condition", "renderedSubtree": "brief description"}
|
|
192
|
+
],
|
|
193
|
+
"callSites": ["path/to/consumer:line"]
|
|
194
|
+
}
|
|
195
|
+
],
|
|
196
|
+
"propsPatterns": [
|
|
197
|
+
{
|
|
198
|
+
"component": "ComponentName",
|
|
199
|
+
"callSite": "path/to/file:line",
|
|
200
|
+
"props": {"variant": "primary"},
|
|
201
|
+
"computedProps": ["onClick"],
|
|
202
|
+
"groupKey": "primary"
|
|
203
|
+
}
|
|
204
|
+
],
|
|
205
|
+
"cssLayout": [
|
|
206
|
+
{
|
|
207
|
+
"filePath": "path/to/styles.module.css",
|
|
208
|
+
"classNamingConvention": "camelCase|kebab-case|BEM|unknown",
|
|
209
|
+
"baseClass": "root",
|
|
210
|
+
"layouts": [
|
|
211
|
+
{
|
|
212
|
+
"selector": ".root",
|
|
213
|
+
"display": "flex|grid|block|unknown",
|
|
214
|
+
"direction": "row|column|grid-template|unknown",
|
|
215
|
+
"gap": "8px|none|unknown",
|
|
216
|
+
"wrap": "wrap|nowrap|absent|unknown",
|
|
217
|
+
"logicalProperties": true,
|
|
218
|
+
"stateSelectors": ["[data-state=active]"]
|
|
219
|
+
}
|
|
220
|
+
],
|
|
221
|
+
"responsiveBreakpoints": ["768px"]
|
|
222
|
+
}
|
|
223
|
+
],
|
|
224
|
+
"stateDisplay": [
|
|
225
|
+
{
|
|
226
|
+
"component": "ComponentName",
|
|
227
|
+
"states": [
|
|
228
|
+
{"name": "loading|empty|partial|error|ready|disabled", "trigger": "what causes this state", "renders": "brief description"}
|
|
229
|
+
],
|
|
230
|
+
"unsupportedStates": ["state absent from current component"]
|
|
231
|
+
}
|
|
232
|
+
],
|
|
233
|
+
"displayConditions": [
|
|
234
|
+
{
|
|
235
|
+
"component": "ComponentName",
|
|
236
|
+
"condition": "feature_flag|role|route|region|tenant|page_context",
|
|
237
|
+
"predicateLocation": "path/to/file:line",
|
|
238
|
+
"predicate": "expression",
|
|
239
|
+
"gatedSubtree": "brief description"
|
|
240
|
+
}
|
|
241
|
+
],
|
|
242
|
+
"i18n": {
|
|
243
|
+
"format": "csv|json|code-catalog|other|none",
|
|
244
|
+
"structuralConventions": {},
|
|
245
|
+
"keyNamingConvention": "",
|
|
246
|
+
"locales": [],
|
|
247
|
+
"localeGaps": [],
|
|
248
|
+
"generatedTypings": {"command": "", "outputPath": ""}
|
|
249
|
+
},
|
|
250
|
+
"accessibility": [
|
|
251
|
+
{
|
|
252
|
+
"component": "ComponentName",
|
|
253
|
+
"ariaAttributes": ["role=button", "aria-label from prop"],
|
|
254
|
+
"keyboardHandling": "Enter and Space trigger action",
|
|
255
|
+
"focusStyling": "focus-visible outline",
|
|
256
|
+
"testCoverage": "axe checks present|absent|unknown"
|
|
257
|
+
}
|
|
258
|
+
],
|
|
259
|
+
"generatedArtifacts": [
|
|
260
|
+
{
|
|
261
|
+
"kind": "css-module-typings|message-catalog-typings|route-typings|other",
|
|
262
|
+
"command": "generator command",
|
|
263
|
+
"trigger": "on source change|manual|unknown",
|
|
264
|
+
"consumers": ["typecheck", "test", "build", "runtime"],
|
|
265
|
+
"resourceRef": "externalResources.generatedUiArtifacts"
|
|
266
|
+
}
|
|
267
|
+
],
|
|
268
|
+
"focusAreas": [
|
|
269
|
+
{
|
|
270
|
+
"fact_id": "path:identifier",
|
|
271
|
+
"area": "Brief UI area name",
|
|
272
|
+
"evidence": "componentStructure[name=...]",
|
|
273
|
+
"factsToAddress": "Concrete UI facts to respect",
|
|
274
|
+
"risk": "What inconsistency results if omitted"
|
|
275
|
+
}
|
|
276
|
+
],
|
|
277
|
+
"candidateWriteSet": [
|
|
278
|
+
{
|
|
279
|
+
"path": "src/components/Card.tsx",
|
|
280
|
+
"reasonRef": "focusAreas[fact_id=...]",
|
|
281
|
+
"confidence": "high|medium|low"
|
|
282
|
+
}
|
|
283
|
+
],
|
|
284
|
+
"limitations": []
|
|
285
|
+
}
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
## Quality Checklist
|
|
289
|
+
|
|
290
|
+
- [ ] Each external resource entry records `resource_status` and `resolution_status`
|
|
291
|
+
- [ ] `candidateWriteSet` reflects the requested UI change
|
|
292
|
+
- [ ] Every `focusAreas` entry carries an evidence pointer
|
|
293
|
+
- [ ] Sections outside scope use empty arrays or concise N/A values
|
|
294
|
+
- [ ] Final message is a JSON object
|
|
295
|
+
"""
|
|
296
|
+
|
|
297
|
+
[[skills.config]]
|
|
298
|
+
path = ".agents/skills/coding-rules/SKILL.md"
|
|
299
|
+
enabled = true
|
|
300
|
+
|
|
301
|
+
[[skills.config]]
|
|
302
|
+
path = ".agents/skills/ai-development-guide/SKILL.md"
|
|
303
|
+
enabled = true
|
|
304
|
+
|
|
305
|
+
[[skills.config]]
|
|
306
|
+
path = ".agents/skills/external-resource-context/SKILL.md"
|
|
307
|
+
enabled = true
|
|
@@ -41,11 +41,13 @@ Skill Status:
|
|
|
41
41
|
4. Define component decomposition with state x display matrices
|
|
42
42
|
5. Identify reusable existing components in the codebase
|
|
43
43
|
6. Define accessibility requirements
|
|
44
|
+
7. Carry forward external resource references used for UI decisions
|
|
44
45
|
|
|
45
46
|
## Required Information
|
|
46
47
|
|
|
47
48
|
- **PRD**: PRD document path (required if exists; otherwise requirement-analyzer output is used)
|
|
48
49
|
- **Prototype code path**: Path to prototype code (optional, placed in `docs/ui-spec/assets/{feature-name}/`)
|
|
50
|
+
- **UI analysis**: JSON from ui-analyzer when provided, including externalResources, componentStructure, propsPatterns, cssLayout, stateDisplay, focusAreas, and candidateWriteSet
|
|
49
51
|
- **Existing frontend codebase**: Will be investigated automatically
|
|
50
52
|
|
|
51
53
|
## Mandatory Process Before UI Spec Creation
|
|
@@ -93,6 +95,13 @@ Skill Status:
|
|
|
93
95
|
- Search for existing theme/token definitions
|
|
94
96
|
- Note spacing, color, typography conventions in use
|
|
95
97
|
|
|
98
|
+
### Step 3a: External Resource Integration
|
|
99
|
+
|
|
100
|
+
1. Read `docs/project-context/external-resources.md` when present
|
|
101
|
+
2. Use `ui_analysis.externalResources` as the fetched summary for design origin, design system, guidelines, and visual verification
|
|
102
|
+
3. Fill `External Resources Used` with project resource labels and feature-specific identifiers
|
|
103
|
+
4. Keep project-level access methods in `docs/project-context/external-resources.md`
|
|
104
|
+
|
|
96
105
|
### Step 4: Draft UI Spec
|
|
97
106
|
|
|
98
107
|
1. **Copy ui-spec-template** from documentation-criteria skill
|
|
@@ -103,6 +112,7 @@ Skill Status:
|
|
|
103
112
|
- Interaction definitions linked to AC IDs with EARS format
|
|
104
113
|
- Existing component reuse map
|
|
105
114
|
- Design tokens (from existing codebase)
|
|
115
|
+
- External Resources Used
|
|
106
116
|
- Visual acceptance criteria
|
|
107
117
|
- Accessibility requirements (keyboard, screen reader, contrast)
|
|
108
118
|
3. **Output path**: `docs/ui-spec/{feature-name}-ui-spec.md`
|
|
@@ -118,6 +128,7 @@ Execute file output immediately. Final approval is managed by the orchestrator r
|
|
|
118
128
|
- [ ] Interaction definitions use EARS format and reference AC IDs
|
|
119
129
|
- [ ] Screen transitions have trigger and guard conditions defined
|
|
120
130
|
- [ ] Existing component reuse map is complete (reuse/extend/new for each element)
|
|
131
|
+
- [ ] External Resources Used lists project resource labels and feature identifiers when external resources informed the UI Spec
|
|
121
132
|
- [ ] Accessibility requirements cover keyboard navigation and screen reader support
|
|
122
133
|
- [ ] If prototype provided: AC traceability table is complete with adoption decisions
|
|
123
134
|
- [ ] If prototype provided: prototype is placed in `docs/ui-spec/assets/`
|
|
@@ -148,3 +159,7 @@ enabled = true
|
|
|
148
159
|
[[skills.config]]
|
|
149
160
|
path = ".agents/skills/coding-rules/SKILL.md"
|
|
150
161
|
enabled = true
|
|
162
|
+
|
|
163
|
+
[[skills.config]]
|
|
164
|
+
path = ".agents/skills/external-resource-context/SKILL.md"
|
|
165
|
+
enabled = true
|
package/README.md
CHANGED
|
@@ -4,9 +4,11 @@
|
|
|
4
4
|
[](https://developers.openai.com/codex/skills/)
|
|
5
5
|
[](https://opensource.org/licenses/MIT)
|
|
6
6
|
|
|
7
|
-
**Structured
|
|
7
|
+
**Structured workflows for [OpenAI Codex CLI](https://developers.openai.com/codex/cli).**
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
They help when multi-step changes stop being easy to reason about, test, or review.
|
|
10
|
+
|
|
11
|
+
Built on the [Agent Skills specification](https://developers.openai.com/codex/skills/) and [Codex subagents](https://developers.openai.com/codex/subagents). This starts to matter when tasks get large: refactors, migrations, or anything that spans multiple files and needs to stay reviewable.
|
|
10
12
|
|
|
11
13
|
---
|
|
12
14
|
|
|
@@ -25,43 +27,49 @@ $recipe-implement Add user authentication with JWT
|
|
|
25
27
|
|
|
26
28
|
`$` is Codex CLI's syntax for invoking a skill explicitly. Type `$recipe-` to see all available recipes via tab completion.
|
|
27
29
|
|
|
28
|
-
Small changes stay lightweight. Larger tasks
|
|
30
|
+
Small changes stay lightweight. Larger tasks are broken into requirements, design, task decomposition, TDD implementation, and quality checks.
|
|
29
31
|
|
|
30
32
|
---
|
|
31
33
|
|
|
32
34
|
## Why codex-workflows?
|
|
33
35
|
|
|
34
|
-
Codex
|
|
36
|
+
Codex works well for short, focused tasks. The problems start when a change spans multiple files, needs design decisions to stay visible, or has to survive review, testing, and follow-up edits.
|
|
35
37
|
|
|
36
|
-
|
|
38
|
+
Many developers have seen the same pattern: things work at first, then drift. Context grows, assumptions accumulate, intermediate decisions disappear, and results become harder to trust.
|
|
37
39
|
|
|
38
|
-
codex-workflows
|
|
40
|
+
codex-workflows is built around those failure modes. Instead of asking Codex to "just implement it", it turns a request into a sequence of steps you can inspect and verify:
|
|
39
41
|
- Traceable artifacts: PRD → Design Doc → Task → Commit
|
|
40
|
-
- Built-in TDD and quality
|
|
42
|
+
- Built-in TDD and quality checks before code is ready to commit
|
|
41
43
|
- Agent context separation for large refactors, migrations, and PR-sized changes
|
|
42
44
|
- Diagnosis and reverse-engineering flows for bugs and legacy code
|
|
43
45
|
|
|
46
|
+
## Background
|
|
47
|
+
|
|
48
|
+
The recipes, subagents, and quality checks in this repo were not designed top-down. Each piece was added in response to a concrete failure mode encountered during delivery work.
|
|
49
|
+
|
|
50
|
+
That is why the workflow separates requirements, design, verification, implementation, and quality checks instead of treating them as one long session.
|
|
51
|
+
|
|
44
52
|
## Not Designed For
|
|
45
53
|
|
|
46
|
-
- One-shot
|
|
47
|
-
- Repositories
|
|
48
|
-
- Teams that
|
|
54
|
+
- One-shot scripts or exploratory sessions where speed matters more than traceability
|
|
55
|
+
- Repositories without tests, lint, builds, or reviewable commits
|
|
56
|
+
- Teams that would rather skip design docs and quality checks entirely
|
|
49
57
|
|
|
50
58
|
---
|
|
51
59
|
|
|
52
60
|
## What It Does
|
|
53
61
|
|
|
54
|
-
|
|
62
|
+
Instead of forcing a fixed workflow, the framework adjusts how much structure it adds based on scope:
|
|
55
63
|
|
|
56
64
|
| Scale | File Count | What Happens |
|
|
57
65
|
|-------|------------|-------------|
|
|
58
66
|
| Small | 1-2 | Simplified plan → direct implementation |
|
|
59
67
|
| Medium | 3-5 | Design Doc → work plan → task execution |
|
|
60
|
-
| Large | 6+ | PRD → ADR → Design Doc → test skeletons → work plan → autonomous execution |
|
|
68
|
+
| Large | 6+ | PRD → ADR → Design Doc → test skeletons → work plan → guided autonomous execution |
|
|
61
69
|
|
|
62
70
|
For larger work, the path usually looks like this: understand the problem, analyze the codebase, design the change, break it into atomic tasks, implement with tests, and run quality checks before commit.
|
|
63
71
|
|
|
64
|
-
Each step
|
|
72
|
+
Each step isolates one concern, so decisions can be checked before they carry into later stages. Specialized subagents run in their own contexts to reduce carry-over assumptions during changes that would otherwise require long sessions:
|
|
65
73
|
|
|
66
74
|
```
|
|
67
75
|
User Request
|
|
@@ -86,7 +94,7 @@ task-decomposer → Atomic tasks (1 task = 1 commit)
|
|
|
86
94
|
↓
|
|
87
95
|
task-executor → TDD implementation per task
|
|
88
96
|
↓
|
|
89
|
-
quality-fixer → Lint, test, build
|
|
97
|
+
quality-fixer → Lint, test, build; no failing checks
|
|
90
98
|
↓
|
|
91
99
|
Ready to commit
|
|
92
100
|
```
|
|
@@ -158,7 +166,7 @@ Invoke recipes with `$recipe-name` in Codex. Type `$recipe-` and use tab complet
|
|
|
158
166
|
| `$recipe-design` | Requirements → ADR/Design Doc | Architecture planning |
|
|
159
167
|
| `$recipe-plan` | Design Doc → test skeletons → work plan | Planning phase, including nullable E2E skeleton handling |
|
|
160
168
|
| `$recipe-prepare-implementation` | Verify work plan readiness and resolve prep gaps | Pre-build check that the plan is implementable |
|
|
161
|
-
| `$recipe-build` | Execute backend tasks
|
|
169
|
+
| `$recipe-build` | Execute backend tasks with validation between steps | Resume backend implementation |
|
|
162
170
|
| `$recipe-review` | Design Doc compliance and security validation with auto-fixes | Post-implementation check |
|
|
163
171
|
| `$recipe-diagnose` | Problem investigation → failure-point verification → solution | Bug investigation |
|
|
164
172
|
| `$recipe-reverse-engineer` | Generate PRD + Design Docs from existing code | Legacy system documentation |
|
|
@@ -170,6 +178,7 @@ Invoke recipes with `$recipe-name` in Codex. Type `$recipe-` and use tab complet
|
|
|
170
178
|
| Recipe | What it does | When to use |
|
|
171
179
|
|--------|-------------|-------------|
|
|
172
180
|
| `$recipe-front-design` | Requirements → UI Spec → frontend Design Doc | Frontend architecture planning |
|
|
181
|
+
| `$recipe-front-adjust` | Implemented UI adjustment with external context and verification | Focused UI changes after implementation |
|
|
173
182
|
| `$recipe-front-plan` | Frontend Design Doc → test skeletons → work plan | Frontend planning phase |
|
|
174
183
|
| `$recipe-front-build` | Execute frontend tasks with RTL + quality checks | Resume frontend implementation |
|
|
175
184
|
| `$recipe-front-review` | Frontend compliance and security validation with React-specific fixes | Frontend post-implementation check |
|
|
@@ -217,7 +226,7 @@ $recipe-reverse-engineer src/auth module
|
|
|
217
226
|
|
|
218
227
|
## Foundational Skills
|
|
219
228
|
|
|
220
|
-
These
|
|
229
|
+
These are applied automatically based on context. You rarely need to think about them directly.
|
|
221
230
|
|
|
222
231
|
| Skill | What it provides |
|
|
223
232
|
|-------|-----------------|
|
|
@@ -227,8 +236,9 @@ These load automatically when the conversation context matches — no explicit i
|
|
|
227
236
|
| `documentation-criteria` | Document creation rules and templates (PRD, ADR, Design Doc, Work Plan) |
|
|
228
237
|
| `implementation-approach` | Strategy selection: vertical / horizontal / hybrid slicing |
|
|
229
238
|
| `integration-e2e-testing` | Integration/E2E test design, value-based selection, review criteria |
|
|
239
|
+
| `external-resource-context` | Access methods for design sources, design systems, API schemas, and verification environments |
|
|
230
240
|
| `task-analyzer` | Task analysis, scale estimation, skill selection |
|
|
231
|
-
| `subagents-orchestration-guide` | Multi-agent coordination, workflow flows, autonomous execution |
|
|
241
|
+
| `subagents-orchestration-guide` | Multi-agent coordination, workflow flows, guided autonomous execution |
|
|
232
242
|
|
|
233
243
|
Language-specific references are included for TypeScript/React projects (`coding-rules/references/typescript.md`, `testing/references/typescript.md`).
|
|
234
244
|
|
|
@@ -236,7 +246,7 @@ Language-specific references are included for TypeScript/React projects (`coding
|
|
|
236
246
|
|
|
237
247
|
## Subagents
|
|
238
248
|
|
|
239
|
-
Codex spawns these as needed during recipe execution. Each agent runs in its own context with specialized instructions and skill configurations.
|
|
249
|
+
Codex spawns these as needed during recipe execution. You do not need to learn them first; recipes route work to the right agents automatically. Each agent runs in its own context with specialized instructions and skill configurations.
|
|
240
250
|
|
|
241
251
|
### Document Creation Agents
|
|
242
252
|
|
|
@@ -248,6 +258,7 @@ Codex spawns these as needed during recipe execution. Each agent runs in its own
|
|
|
248
258
|
| `technical-designer-frontend` | Frontend ADR and Design Doc creation (React) |
|
|
249
259
|
| `ui-spec-designer` | UI Specification from PRD and optional prototype code |
|
|
250
260
|
| `codebase-analyzer` | Existing codebase analysis before Design Doc creation |
|
|
261
|
+
| `ui-analyzer` | UI facts from external resources (design tools, design-system docs, deployed UI) and frontend code |
|
|
251
262
|
| `work-planner` | Work plan creation from Design Docs |
|
|
252
263
|
| `document-reviewer` | Document consistency and approval |
|
|
253
264
|
| `design-sync` | Cross-document consistency verification |
|
|
@@ -286,18 +297,18 @@ Codex spawns these as needed during recipe execution. Each agent runs in its own
|
|
|
286
297
|
|
|
287
298
|
## How It Works
|
|
288
299
|
|
|
289
|
-
### Autonomous Execution Mode
|
|
300
|
+
### Guided Autonomous Execution Mode
|
|
290
301
|
|
|
291
|
-
After work plan approval, the framework
|
|
302
|
+
After work plan approval, the framework executes task files with explicit validation points:
|
|
292
303
|
|
|
293
304
|
1. **task-executor** implements each task with TDD
|
|
294
305
|
2. **quality-fixer** first rejects incomplete task-scoped implementations, then runs lint, tests, and build before every commit
|
|
295
306
|
3. Escalation pauses execution when design deviation or ambiguity is detected
|
|
296
|
-
4. Each task produces one commit
|
|
307
|
+
4. Each task produces one commit for rollback-friendly granularity
|
|
297
308
|
|
|
298
309
|
### Context Separation
|
|
299
310
|
|
|
300
|
-
Each subagent runs in a fresh context. This
|
|
311
|
+
Each subagent runs in a fresh context. This pattern keeps multi-step coding tasks legible and reviewable:
|
|
301
312
|
- generation and verification happen in separate contexts, reducing author bias and carry-over assumptions
|
|
302
313
|
- **document-reviewer** reviews without the author's bias
|
|
303
314
|
- **investigator** collects evidence without confirmation bias
|
|
@@ -318,11 +329,13 @@ your-project/
|
|
|
318
329
|
│ ├── documentation-criteria/
|
|
319
330
|
│ ├── implementation-approach/
|
|
320
331
|
│ ├── integration-e2e-testing/
|
|
332
|
+
│ ├── external-resource-context/
|
|
321
333
|
│ ├── task-analyzer/
|
|
322
334
|
│ ├── subagents-orchestration-guide/
|
|
323
335
|
│ ├── recipe-implement/ # Recipes ($recipe-*)
|
|
324
336
|
│ ├── recipe-design/
|
|
325
337
|
│ ├── recipe-build/
|
|
338
|
+
│ ├── recipe-front-adjust/
|
|
326
339
|
│ ├── recipe-plan/
|
|
327
340
|
│ ├── recipe-prepare-implementation/
|
|
328
341
|
│ ├── recipe-review/
|
|
@@ -334,8 +347,9 @@ your-project/
|
|
|
334
347
|
├── .codex/agents/ # Subagent TOML definitions
|
|
335
348
|
│ ├── requirement-analyzer.toml
|
|
336
349
|
│ ├── technical-designer.toml
|
|
350
|
+
│ ├── ui-analyzer.toml
|
|
337
351
|
│ ├── task-executor.toml
|
|
338
|
-
│ └── ... (
|
|
352
|
+
│ └── ... (25 agents total)
|
|
339
353
|
└── docs/ # Created as you use the recipes
|
|
340
354
|
├── prd/
|
|
341
355
|
├── design/
|
|
@@ -371,7 +385,11 @@ A: `$recipe-implement` is the universal entry point. It runs requirement-analyze
|
|
|
371
385
|
|
|
372
386
|
**Q: Does this work with MCP servers?**
|
|
373
387
|
|
|
374
|
-
A: Yes. Codex skills and subagents work alongside [MCP](https://developers.openai.com/codex/mcp) — skills operate at the instruction layer while MCP operates at the tool transport layer.
|
|
388
|
+
A: Yes. Codex skills and subagents work alongside [MCP](https://developers.openai.com/codex/mcp) — skills operate at the instruction layer while MCP operates at the tool transport layer. Custom agents inherit parent `mcp_servers` when the agent TOML omits `mcp_servers`; add agent-local MCP config only for agent-specific servers or tool filtering.
|
|
389
|
+
|
|
390
|
+
**Q: How is this related to claude-code-workflows?**
|
|
391
|
+
|
|
392
|
+
A: [claude-code-workflows](https://github.com/shinpr/claude-code-workflows) is the Claude Code counterpart. The repositories share the same workflow philosophy, adapted to each tool's native extension points. They can coexist in the same project because Codex uses `.agents/skills/`, `.codex/agents/`, and `AGENTS.md`, while Claude Code uses its own `.claude/` files and `CLAUDE.md`.
|
|
375
393
|
|
|
376
394
|
**Q: What if a subagent seems stuck?**
|
|
377
395
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "codex-workflows",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"description": "Task-oriented agentic coding framework for OpenAI Codex CLI — skills, recipes, and subagents for structured development workflows",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Shinsuke Kagawa",
|