oh-my-opencode 4.6.0 → 4.7.1
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/bin/version-mismatch.js +47 -0
- package/bin/version-mismatch.test.ts +120 -0
- package/dist/cli/codex-ulw-loop.d.ts +12 -0
- package/dist/cli/doctor/checks/tui-plugin-config.d.ts +2 -0
- package/dist/cli/index.js +5999 -5542
- package/dist/cli/install-codex/codex-config-reasoning.d.ts +2 -1
- package/dist/cli/install-codex/codex-model-catalog.d.ts +13 -0
- package/dist/features/background-agent/concurrency.d.ts +1 -0
- package/dist/features/background-agent/process-cleanup.d.ts +6 -0
- package/dist/features/claude-code-session-state/state.d.ts +1 -0
- package/dist/features/opencode-skill-loader/index.d.ts +1 -0
- package/dist/features/opencode-skill-loader/opencode-config-skills-reader.d.ts +5 -0
- package/dist/features/tmux-subagent/attachable-session-status.d.ts +1 -1
- package/dist/features/tmux-subagent/session-status-parser.d.ts +1 -0
- package/dist/hooks/comment-checker/cli.d.ts +1 -0
- package/dist/hooks/tasks-todowrite-disabler/constants.d.ts +1 -1
- package/dist/index.js +4250 -3776
- package/dist/shared/command-executor/execute-hook-command.d.ts +2 -0
- package/dist/tools/skill/description-formatter.d.ts +5 -1
- package/dist/tools/skill/types.d.ts +1 -0
- package/package.json +13 -14
- package/packages/ast-grep-mcp/dist/cli.js +53 -9
- package/packages/lsp-tools-mcp/dist/lsp/process.js +1 -1
- package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +13 -0
- package/packages/omo-codex/plugin/components/lsp/src/cli.ts +6 -2
- package/packages/omo-codex/plugin/components/lsp/src/codex-hook-cli.ts +13 -2
- package/packages/omo-codex/plugin/components/lsp/src/codex-hook.ts +30 -79
- package/packages/omo-codex/plugin/components/lsp/src/lsp-session-state.ts +116 -0
- package/packages/omo-codex/plugin/components/lsp/src/mutated-file-paths.ts +88 -0
- package/packages/omo-codex/plugin/components/lsp/test/codex-hook-unavailable.test.ts +206 -0
- package/packages/omo-codex/plugin/components/lsp/test/package-smoke.test.ts +5 -3
- package/packages/omo-codex/plugin/components/rules/bundled-rules/hephaestus.md +6 -4
- package/packages/omo-codex/plugin/components/rules/src/codex-hook-options.ts +1 -0
- package/packages/omo-codex/plugin/components/rules/src/post-compact-budget.ts +0 -2
- package/packages/omo-codex/plugin/components/rules/src/rules/finder.ts +15 -2
- package/packages/omo-codex/plugin/components/rules/src/rules-engine-factory.ts +4 -1
- package/packages/omo-codex/plugin/components/rules/test/windows-git-bash-bundled-rule.test.ts +28 -5
- package/packages/omo-codex/plugin/components/start-work-continuation/directive.md +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/CHANGELOG.md +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/README.md +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/agents/codex-ultrawork-reviewer.toml +3 -1
- package/packages/omo-codex/plugin/components/ultrawork/agents/plan.toml +7 -7
- package/packages/omo-codex/plugin/components/ultrawork/directive.md +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/SKILL.md +5 -4
- package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/references/full-workflow.md +4 -3
- package/packages/omo-codex/plugin/components/ulw-loop/src/checkpoint.ts +12 -1
- package/packages/omo-codex/plugin/components/ulw-loop/test/checkpoint.test.ts +19 -1
- package/packages/omo-codex/plugin/hooks/hooks.json +24 -2
- package/packages/omo-codex/plugin/model-catalog.json +49 -0
- package/packages/omo-codex/plugin/scripts/auto-update.mjs +159 -0
- package/packages/omo-codex/plugin/scripts/migrate-codex-config.mjs +269 -0
- package/packages/omo-codex/plugin/scripts/sync-hook-status-messages.mjs +4 -9
- package/packages/omo-codex/plugin/scripts/sync-skills.mjs +6 -6
- package/packages/omo-codex/plugin/skills/init-deep/SKILL.md +6 -6
- package/packages/omo-codex/plugin/skills/lcx-report-bug/SKILL.md +127 -0
- package/packages/omo-codex/plugin/skills/lcx-report-bug/agents/openai.yaml +9 -0
- package/packages/omo-codex/plugin/skills/refactor/SKILL.md +6 -6
- package/packages/omo-codex/plugin/skills/remove-ai-slops/SKILL.md +6 -6
- package/packages/omo-codex/plugin/skills/review-work/SKILL.md +7 -7
- package/packages/omo-codex/plugin/skills/start-work/SKILL.md +6 -6
- package/packages/omo-codex/plugin/skills/ulw-loop/SKILL.md +5 -4
- package/packages/omo-codex/plugin/skills/ulw-loop/references/full-workflow.md +4 -3
- package/packages/omo-codex/plugin/skills/ulw-plan/SKILL.md +17 -17
- package/packages/omo-codex/plugin/test/aggregate.test.mjs +188 -19
- package/packages/omo-codex/plugin/test/auto-update.test.mjs +129 -0
- package/packages/omo-codex/plugin/test/hook-status-message.test.mjs +7 -27
- package/packages/omo-codex/plugin/test/migrate-codex-config.test.mjs +146 -0
- package/packages/omo-codex/plugin/test/sync-hook-status-messages.test.mjs +27 -1
- package/packages/omo-codex/plugin/test/sync-skills.test.mjs +22 -0
- package/packages/omo-codex/scripts/install/cli-args.mjs +1 -1
- package/packages/omo-codex/scripts/install/config.mjs +2 -15
- package/packages/omo-codex/scripts/install/delegated-command.mjs +1 -1
- package/packages/omo-codex/scripts/install/legacy-bins.mjs +1 -0
- package/packages/omo-codex/scripts/install/model-catalog.mjs +66 -0
- package/packages/omo-codex/scripts/install/permissions.mjs +11 -0
- package/packages/omo-codex/scripts/install/reasoning-config.mjs +65 -7
- package/packages/omo-codex/scripts/install-bin-links.test.mjs +23 -0
- package/packages/omo-codex/scripts/install-config-autonomous-features.test.mjs +83 -0
- package/packages/omo-codex/scripts/install-config-reasoning.test.mjs +82 -3
- package/packages/omo-codex/scripts/install-config.test.mjs +5 -6
- package/packages/omo-codex/scripts/install-local-entrypoint.test.mjs +30 -2
- package/packages/omo-codex/scripts/install-local.mjs +1 -1
- package/packages/omo-codex/scripts/install-local.test.mjs +3 -1
- package/packages/shared-skills/skills/lcx-report-bug/SKILL.md +127 -0
- package/packages/shared-skills/skills/lcx-report-bug/agents/openai.yaml +9 -0
- package/packages/shared-skills/skills/review-work/SKILL.md +7 -7
- package/packages/shared-skills/skills/start-work/SKILL.md +6 -6
- package/packages/shared-skills/skills/ulw-plan/SKILL.md +11 -11
- package/postinstall.mjs +36 -3
- package/dist/cli/install-codex/codex-config-mcp.d.ts +0 -1
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: lcx-report-bug
|
|
3
|
+
description: "Create a high-signal LazyCodex bug report for code-yeongyu/lazycodex. Use this whenever the user asks to report, file, open, or triage a LazyCodex, lazycodex-ai, omo-codex, or Codex plugin bug, especially when they need root cause, reproduction steps, expected fix guidance, and a GitHub issue."
|
|
4
|
+
metadata:
|
|
5
|
+
short-description: Report LazyCodex bugs with debugging evidence
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# lcx-report-bug
|
|
9
|
+
|
|
10
|
+
You are a LazyCodex bug reporter. Produce one useful GitHub issue in English for `code-yeongyu/lazycodex`, backed by runtime evidence rather than guesses.
|
|
11
|
+
|
|
12
|
+
Use GPT-5.5 style: outcome first, concise, evidence-bound. Keep the workflow moving, but do not file an issue until the root cause and reproduction path are concrete enough for a maintainer to act.
|
|
13
|
+
|
|
14
|
+
## Goal
|
|
15
|
+
|
|
16
|
+
Create or prepare a GitHub issue that includes:
|
|
17
|
+
|
|
18
|
+
- clear title
|
|
19
|
+
- environment
|
|
20
|
+
- reproducible steps
|
|
21
|
+
- expected behavior
|
|
22
|
+
- actual behavior
|
|
23
|
+
- confirmed or strongly evidenced root cause
|
|
24
|
+
- fix approach, including files or components likely involved
|
|
25
|
+
- verification plan
|
|
26
|
+
|
|
27
|
+
## Required Workflow
|
|
28
|
+
|
|
29
|
+
1. Read the user's bug report and identify the affected surface: LazyCodex installer, Codex plugin, skill, hook, MCP, CLI alias, GitHub marketplace sync, or web/docs.
|
|
30
|
+
2. Invoke `$omo:debugging` for the investigation. If Codex exposes only unqualified skill names in the current session, invoke `$debugging` and state that it is the OMO debugging skill.
|
|
31
|
+
3. Follow the debugging skill far enough to gather runtime evidence:
|
|
32
|
+
- form at least three plausible hypotheses
|
|
33
|
+
- run the smallest reproduction that exercises the real surface
|
|
34
|
+
- confirm the root cause by observing the failing state
|
|
35
|
+
- identify the minimal fix path or maintainer action
|
|
36
|
+
4. Search for an existing issue before creating a new one:
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
gh issue list --repo code-yeongyu/lazycodex --search "<short error or symptom>" --state open
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
5. If a matching open issue exists, add a comment with the new evidence instead of creating a duplicate.
|
|
43
|
+
6. If no matching issue exists, create the issue with `gh`.
|
|
44
|
+
|
|
45
|
+
## Issue Body Template
|
|
46
|
+
|
|
47
|
+
Write the issue body in English and keep it direct:
|
|
48
|
+
|
|
49
|
+
```markdown
|
|
50
|
+
## Summary
|
|
51
|
+
[One or two sentences describing the user-visible failure.]
|
|
52
|
+
|
|
53
|
+
## Environment
|
|
54
|
+
- LazyCodex version:
|
|
55
|
+
- Codex version:
|
|
56
|
+
- OS:
|
|
57
|
+
- Install method:
|
|
58
|
+
- Relevant config:
|
|
59
|
+
|
|
60
|
+
## Reproduction
|
|
61
|
+
1. [Exact command or UI action]
|
|
62
|
+
2. [Exact next step]
|
|
63
|
+
3. [Observed failure trigger]
|
|
64
|
+
|
|
65
|
+
## Expected Behavior
|
|
66
|
+
[What should have happened.]
|
|
67
|
+
|
|
68
|
+
## Actual Behavior
|
|
69
|
+
[What happened instead, including exact error text or output.]
|
|
70
|
+
|
|
71
|
+
## Evidence
|
|
72
|
+
[Commands, logs, screenshots, traces, or links used to confirm the failure.]
|
|
73
|
+
|
|
74
|
+
## Root Cause
|
|
75
|
+
[Confirmed cause. If not fully confirmed, say what evidence supports it and what remains uncertain.]
|
|
76
|
+
|
|
77
|
+
## Proposed Fix
|
|
78
|
+
[Concrete implementation or operational fix. Include likely files, components, or commands.]
|
|
79
|
+
|
|
80
|
+
## Verification Plan
|
|
81
|
+
- [Check that reproduces the original failure]
|
|
82
|
+
- [Check that proves the fix]
|
|
83
|
+
- [Regression check for adjacent LazyCodex/Codex plugin behavior]
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
## GitHub Creation Path
|
|
87
|
+
|
|
88
|
+
Prefer `gh`:
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
ISSUE_BODY="/tmp/lcx-report-bug-$(date +%Y%m%d-%H%M%S).md"
|
|
92
|
+
$EDITOR "$ISSUE_BODY"
|
|
93
|
+
gh issue create --repo code-yeongyu/lazycodex --title "<clear title>" --body-file "$ISSUE_BODY"
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
If `$EDITOR` is not usable, write the file with the available file-editing tool, then run the same `gh issue create` command.
|
|
97
|
+
|
|
98
|
+
After creating or commenting, return the issue URL and a short summary of the evidence used.
|
|
99
|
+
|
|
100
|
+
## Browser use fallback
|
|
101
|
+
|
|
102
|
+
If `gh` is unavailable, unauthenticated, or blocked, use Browser Use against the real GitHub page:
|
|
103
|
+
|
|
104
|
+
1. Open `https://github.com/code-yeongyu/lazycodex/issues/new`.
|
|
105
|
+
2. Fill the title and body from the template.
|
|
106
|
+
3. Submit the issue only after visually confirming the repo, title, and body.
|
|
107
|
+
4. Capture the resulting issue URL.
|
|
108
|
+
|
|
109
|
+
## Computer use fallback
|
|
110
|
+
|
|
111
|
+
If Browser Use is unavailable but a desktop browser is open and authenticated, use Computer Use:
|
|
112
|
+
|
|
113
|
+
1. Navigate to `https://github.com/code-yeongyu/lazycodex/issues/new`.
|
|
114
|
+
2. Fill the title and body.
|
|
115
|
+
3. Verify the target repository and final text before submission.
|
|
116
|
+
4. Submit and capture the issue URL.
|
|
117
|
+
|
|
118
|
+
## Stop Conditions
|
|
119
|
+
|
|
120
|
+
Stop and ask one narrow question only when the missing fact changes the issue materially, such as the affected version, a private log the agent cannot access, or whether the user wants a duplicate filed despite an existing matching issue.
|
|
121
|
+
|
|
122
|
+
Do not file:
|
|
123
|
+
|
|
124
|
+
- a vague issue without reproduction steps
|
|
125
|
+
- an issue that claims a root cause not supported by runtime evidence
|
|
126
|
+
- a duplicate when commenting on an existing issue is enough
|
|
127
|
+
- a fix PR unless the user separately asks for one
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
interface:
|
|
2
|
+
display_name: "lcx-report-bug (omo)"
|
|
3
|
+
short_description: "Report LazyCodex bugs with debugging evidence"
|
|
4
|
+
search_terms:
|
|
5
|
+
- "lcx-report-bug"
|
|
6
|
+
- "lazycodex bug"
|
|
7
|
+
- "lazycodex issue"
|
|
8
|
+
- "omo-codex bug"
|
|
9
|
+
default_prompt: "Use $lcx-report-bug to investigate this LazyCodex bug and file a clear issue with reproduction, root cause, and fix guidance."
|
|
@@ -9,15 +9,15 @@ This skill may include examples copied from the OpenCode harness. In Codex, do n
|
|
|
9
9
|
|
|
10
10
|
| OpenCode example | Codex tool to use |
|
|
11
11
|
| --- | --- |
|
|
12
|
-
| `call_omo_agent(subagent_type="explore", ...)` | `spawn_agent(agent_type="explorer", task_name="...", message="...")` |
|
|
13
|
-
| `call_omo_agent(subagent_type="librarian", ...)` | `spawn_agent(agent_type="librarian", task_name="...", message="...")` |
|
|
14
|
-
| `task(subagent_type="plan", ...)` | `spawn_agent(agent_type="plan", task_name="...", message="...")` |
|
|
15
|
-
| `task(subagent_type="oracle", ...)` for final verification | `spawn_agent(agent_type="codex-ultrawork-reviewer", task_name="...", message="...")` |
|
|
16
|
-
| `task(category="...", ...)` for implementation or QA | `spawn_agent(agent_type="worker", task_name="...", message="...")` |
|
|
12
|
+
| `call_omo_agent(subagent_type="explore", ...)` | `spawn_agent(agent_type="explorer", task_name="...", message="...", fork_turns="none")` |
|
|
13
|
+
| `call_omo_agent(subagent_type="librarian", ...)` | `spawn_agent(agent_type="librarian", task_name="...", message="...", fork_turns="none")` |
|
|
14
|
+
| `task(subagent_type="plan", ...)` | `spawn_agent(agent_type="plan", task_name="...", message="...", fork_turns="none")` |
|
|
15
|
+
| `task(subagent_type="oracle", ...)` for final verification | `spawn_agent(agent_type="codex-ultrawork-reviewer", task_name="...", message="...", fork_turns="none")` |
|
|
16
|
+
| `task(category="...", ...)` for implementation or QA | `spawn_agent(agent_type="worker", task_name="...", message="...", fork_turns="none")` |
|
|
17
17
|
| `background_output(task_id="...")` | `wait_agent(...)` to wait for subagent completion and mailbox updates |
|
|
18
18
|
| `team_*(...)` | Use Codex native subagents plus `send_message`, `followup_task`, `wait_agent`, and `close_agent` |
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
Codex full-history forks inherit the parent agent type, model, and reasoning effort, so role-specific spawns with `agent_type` must use a non-full-history fork mode such as `fork_turns="none"`. Include any required conversation context, files, diffs, constraints, and requested skill names directly in the spawned agent's `message`. If a code block below conflicts with this section, this section wins.
|
|
21
21
|
|
|
22
22
|
export const REFACTOR_TEMPLATE = `# Intelligent Refactor Command
|
|
23
23
|
|
|
@@ -9,15 +9,15 @@ This skill may include examples copied from the OpenCode harness. In Codex, do n
|
|
|
9
9
|
|
|
10
10
|
| OpenCode example | Codex tool to use |
|
|
11
11
|
| --- | --- |
|
|
12
|
-
| `call_omo_agent(subagent_type="explore", ...)` | `spawn_agent(agent_type="explorer", task_name="...", message="...")` |
|
|
13
|
-
| `call_omo_agent(subagent_type="librarian", ...)` | `spawn_agent(agent_type="librarian", task_name="...", message="...")` |
|
|
14
|
-
| `task(subagent_type="plan", ...)` | `spawn_agent(agent_type="plan", task_name="...", message="...")` |
|
|
15
|
-
| `task(subagent_type="oracle", ...)` for final verification | `spawn_agent(agent_type="codex-ultrawork-reviewer", task_name="...", message="...")` |
|
|
16
|
-
| `task(category="...", ...)` for implementation or QA | `spawn_agent(agent_type="worker", task_name="...", message="...")` |
|
|
12
|
+
| `call_omo_agent(subagent_type="explore", ...)` | `spawn_agent(agent_type="explorer", task_name="...", message="...", fork_turns="none")` |
|
|
13
|
+
| `call_omo_agent(subagent_type="librarian", ...)` | `spawn_agent(agent_type="librarian", task_name="...", message="...", fork_turns="none")` |
|
|
14
|
+
| `task(subagent_type="plan", ...)` | `spawn_agent(agent_type="plan", task_name="...", message="...", fork_turns="none")` |
|
|
15
|
+
| `task(subagent_type="oracle", ...)` for final verification | `spawn_agent(agent_type="codex-ultrawork-reviewer", task_name="...", message="...", fork_turns="none")` |
|
|
16
|
+
| `task(category="...", ...)` for implementation or QA | `spawn_agent(agent_type="worker", task_name="...", message="...", fork_turns="none")` |
|
|
17
17
|
| `background_output(task_id="...")` | `wait_agent(...)` to wait for subagent completion and mailbox updates |
|
|
18
18
|
| `team_*(...)` | Use Codex native subagents plus `send_message`, `followup_task`, `wait_agent`, and `close_agent` |
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
Codex full-history forks inherit the parent agent type, model, and reasoning effort, so role-specific spawns with `agent_type` must use a non-full-history fork mode such as `fork_turns="none"`. Include any required conversation context, files, diffs, constraints, and requested skill names directly in the spawned agent's `message`. If a code block below conflicts with this section, this section wins.
|
|
21
21
|
|
|
22
22
|
# Remove AI Slops Skill
|
|
23
23
|
|
|
@@ -8,15 +8,15 @@ This skill may include examples copied from the OpenCode harness. In Codex, do n
|
|
|
8
8
|
|
|
9
9
|
| OpenCode example | Codex tool to use |
|
|
10
10
|
| --- | --- |
|
|
11
|
-
| `call_omo_agent(subagent_type="explore", ...)` | `spawn_agent(agent_type="explorer", task_name="...", message="...")` |
|
|
12
|
-
| `call_omo_agent(subagent_type="librarian", ...)` | `spawn_agent(agent_type="librarian", task_name="...", message="...")` |
|
|
13
|
-
| `task(subagent_type="plan", ...)` | `spawn_agent(agent_type="plan", task_name="...", message="...")` |
|
|
14
|
-
| `task(subagent_type="oracle", ...)` for final verification | `spawn_agent(agent_type="codex-ultrawork-reviewer", task_name="...", message="...")` |
|
|
15
|
-
| `task(category="...", ...)` for implementation or QA | `spawn_agent(agent_type="worker", task_name="...", message="...")` |
|
|
11
|
+
| `call_omo_agent(subagent_type="explore", ...)` | `spawn_agent(agent_type="explorer", task_name="...", message="...", fork_turns="none")` |
|
|
12
|
+
| `call_omo_agent(subagent_type="librarian", ...)` | `spawn_agent(agent_type="librarian", task_name="...", message="...", fork_turns="none")` |
|
|
13
|
+
| `task(subagent_type="plan", ...)` | `spawn_agent(agent_type="plan", task_name="...", message="...", fork_turns="none")` |
|
|
14
|
+
| `task(subagent_type="oracle", ...)` for final verification | `spawn_agent(agent_type="codex-ultrawork-reviewer", task_name="...", message="...", fork_turns="none")` |
|
|
15
|
+
| `task(category="...", ...)` for implementation or QA | `spawn_agent(agent_type="worker", task_name="...", message="...", fork_turns="none")` |
|
|
16
16
|
| `background_output(task_id="...")` | `wait_agent(...)` to wait for subagent completion and mailbox updates |
|
|
17
17
|
| `team_*(...)` | Use Codex native subagents plus `send_message`, `followup_task`, `wait_agent`, and `close_agent` |
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
Codex full-history forks inherit the parent agent type, model, and reasoning effort, so role-specific spawns with `agent_type` must use a non-full-history fork mode such as `fork_turns="none"`. Include any required conversation context, files, diffs, constraints, and requested skill names directly in the spawned agent's `message`. If a code block below conflicts with this section, this section wins.
|
|
20
20
|
|
|
21
21
|
## Codex Subagent Reliability
|
|
22
22
|
|
|
@@ -28,7 +28,7 @@ handoff. Role selection requires `agent_type`; `model` +
|
|
|
28
28
|
worker. Prefer `fork_turns: "none"` unless full history is truly
|
|
29
29
|
required; paste only the review context that worker needs.
|
|
30
30
|
|
|
31
|
-
Plan and reviewer agents may run for a long time; spawn them in the background, keep doing independent root work, and poll with short wait_agent cycles. Never use a single long blocking wait for them.
|
|
31
|
+
Plan and reviewer agents may run for a long time; spawn them in the background, keep doing independent root work, and poll with short wait_agent cycles. Never use a single long blocking wait for them. While any child is active, keep the parent visibly alive with brief status updates that include active subagent count, agent names, last heartbeat, and whether the parent is waiting for mailbox updates.
|
|
32
32
|
|
|
33
33
|
Use `wait_agent` for completion signals, but treat `wait_agent` as a
|
|
34
34
|
mailbox signal, not proof of completion, content, or errors. After two
|
|
@@ -9,11 +9,11 @@ This skill ports the OpenCode `/start-work` flow onto Codex. Any OpenCode-only t
|
|
|
9
9
|
|
|
10
10
|
| OpenCode example | Codex tool to use |
|
|
11
11
|
| --- | --- |
|
|
12
|
-
| `task(subagent_type="explore", ...)` | `spawn_agent(agent_type="explorer", task_name="...", message="...")` |
|
|
13
|
-
| `task(subagent_type="librarian", ...)` | `spawn_agent(agent_type="librarian", task_name="...", message="...")` |
|
|
14
|
-
| `task(subagent_type="plan", ...)` | `spawn_agent(agent_type="plan", task_name="...", message="...")` |
|
|
15
|
-
| `task(subagent_type="oracle", ...)` for final verification | `spawn_agent(agent_type="codex-ultrawork-reviewer", task_name="...", message="...")` |
|
|
16
|
-
| `task(category="...", ...)` for implementation or QA | `spawn_agent(agent_type="worker", task_name="...", message="...")` |
|
|
12
|
+
| `task(subagent_type="explore", ...)` | `spawn_agent(agent_type="explorer", task_name="...", message="...", fork_turns="none")` |
|
|
13
|
+
| `task(subagent_type="librarian", ...)` | `spawn_agent(agent_type="librarian", task_name="...", message="...", fork_turns="none")` |
|
|
14
|
+
| `task(subagent_type="plan", ...)` | `spawn_agent(agent_type="plan", task_name="...", message="...", fork_turns="none")` |
|
|
15
|
+
| `task(subagent_type="oracle", ...)` for final verification | `spawn_agent(agent_type="codex-ultrawork-reviewer", task_name="...", message="...", fork_turns="none")` |
|
|
16
|
+
| `task(category="...", ...)` for implementation or QA | `spawn_agent(agent_type="worker", task_name="...", message="...", fork_turns="none")` |
|
|
17
17
|
| `background_output(task_id="...")` | `wait_agent(...)` |
|
|
18
18
|
| `dispatchInternalPrompt(...)` | the `Stop` hook emits `{"decision":"block","reason":"<prompt>"}` automatically; see Continuation |
|
|
19
19
|
| `team_*(...)` | `spawn_agent` + `send_message` + `followup_task` + `wait_agent` + `close_agent` |
|
|
@@ -30,7 +30,7 @@ handoff. Role selection requires `agent_type`; `model` +
|
|
|
30
30
|
worker. Prefer `fork_turns: "none"` unless full history is truly
|
|
31
31
|
required; paste only the context the child needs.
|
|
32
32
|
|
|
33
|
-
Plan and reviewer agents may run for a long time; spawn them in the background, keep doing independent root work, and poll with short wait_agent cycles. Never use a single long blocking wait for them.
|
|
33
|
+
Plan and reviewer agents may run for a long time; spawn them in the background, keep doing independent root work, and poll with short wait_agent cycles. Never use a single long blocking wait for them. While any child is active, keep the parent visibly alive with brief status updates that include active subagent count, agent names, last heartbeat, and whether the parent is waiting for mailbox updates.
|
|
34
34
|
|
|
35
35
|
Use `wait_agent` for completion signals, but treat `wait_agent` as a
|
|
36
36
|
mailbox signal, not proof of completion, content, or errors. After two
|
|
@@ -25,6 +25,7 @@ This Codex skill is intentionally compact to avoid adding a large operating manu
|
|
|
25
25
|
- Delegate code edits, test writes, fixes, and QA execution to right-sized Codex subagents when the workflow requires it.
|
|
26
26
|
- Every `spawn_agent` message starts with `TASK:`, then names `DELIVERABLE`, `SCOPE`, and `VERIFY`; role selection requires `agent_type`, while `model` + `reasoning_effort` alone creates a default agent, not a reviewer or worker; prefer `fork_turns: "none"` unless full history is truly required.
|
|
27
27
|
- Plan and reviewer agents may run for a long time; spawn them in the background, keep doing independent root work, and poll with short wait_agent cycles. Never use a single long blocking wait for them.
|
|
28
|
+
- While any child is active, keep the parent visibly alive with brief status updates that include active subagent count, agent names, last heartbeat, and whether the parent is waiting for mailbox updates.
|
|
28
29
|
- Avoid `list_agents` as a polling or status tool in large runs; it can replay large agent status and latest-message payloads. Track spawned agent names locally, use `wait_agent` for completion signals, targeted followups only when needed, and `close_agent` after integrating each result.
|
|
29
30
|
- Treat `wait_agent` as a mailbox signal, not proof of completion, content, or errors. After two waits with no substantive result, send one targeted followup, then record inconclusive and respawn a smaller `fork_turns: "none"` task if the child stays silent or ack-only.
|
|
30
31
|
|
|
@@ -34,10 +35,10 @@ The full workflow may mention OpenCode-style orchestration examples. In Codex, t
|
|
|
34
35
|
|
|
35
36
|
| Workflow intent | Codex tool |
|
|
36
37
|
| --- | --- |
|
|
37
|
-
| Plan agent | `spawn_agent(agent_type="plan", ...)` |
|
|
38
|
-
| Search/read-only worker | `spawn_agent(agent_type="explorer", ...)` |
|
|
39
|
-
| Implementation or QA worker | `spawn_agent(agent_type="worker", ...)` |
|
|
40
|
-
| Final verification reviewer | `spawn_agent(agent_type="codex-ultrawork-reviewer", ...)` |
|
|
38
|
+
| Plan agent | `spawn_agent(agent_type="plan", fork_turns="none", ...)` |
|
|
39
|
+
| Search/read-only worker | `spawn_agent(agent_type="explorer", fork_turns="none", ...)` |
|
|
40
|
+
| Implementation or QA worker | `spawn_agent(agent_type="worker", fork_turns="none", ...)` |
|
|
41
|
+
| Final verification reviewer | `spawn_agent(agent_type="codex-ultrawork-reviewer", fork_turns="none", ...)` |
|
|
41
42
|
| Wait for background result | `wait_agent(...)` |
|
|
42
43
|
| Clean up finished worker | `close_agent(...)` |
|
|
43
44
|
|
|
@@ -33,9 +33,9 @@ Size each worker to the task — never spend `xhigh` on a one-liner, never send
|
|
|
33
33
|
| Task shape | agent_type | model | reasoning_effort |
|
|
34
34
|
|---|---|---|---|
|
|
35
35
|
| Trivial / mechanical (rename, move, obvious one-liner, config edit) | `worker` | `gpt-5.4-mini` | `low` |
|
|
36
|
-
| Pure implementation against a clear spec (new function, endpoint, test from a named pattern) | `worker` | `gpt-5.
|
|
36
|
+
| Pure implementation against a clear spec (new function, endpoint, test from a named pattern) | `worker` | `gpt-5.4` | `high` |
|
|
37
37
|
| Deep debugging / race / perf / subtle cross-module reasoning | `worker` | `gpt-5.5` | `xhigh` |
|
|
38
|
-
| QA execution (drive a channel, capture evidence) | `worker` | `gpt-5.
|
|
38
|
+
| QA execution (drive a channel, capture evidence) | `worker` | `gpt-5.4` | `high` |
|
|
39
39
|
| Read-only codebase search | `explorer` | role default | role default |
|
|
40
40
|
| External library / docs research | `librarian` | role default | role default |
|
|
41
41
|
| Final verification audit | `codex-ultrawork-reviewer` | role default | role default |
|
|
@@ -48,6 +48,7 @@ Codex subagent reliability:
|
|
|
48
48
|
- Start every `spawn_agent` message with `TASK: <imperative assignment>`, then name `DELIVERABLE`, `SCOPE`, and `VERIFY`. State that it is an executable assignment, not a context handoff.
|
|
49
49
|
- Prefer `fork_turns: "none"` unless full history is truly required; paste only the context the child needs. Full-history forks can make the child continue old parent context instead of the delegated task.
|
|
50
50
|
- Plan and reviewer agents may run for a long time; spawn them in the background, keep doing independent root work, and poll with short wait_agent cycles. Never use a single long blocking wait for them.
|
|
51
|
+
- While any child is active, keep the parent visibly alive with brief status updates that include active subagent count, agent names, last heartbeat, and whether the parent is waiting for mailbox updates.
|
|
51
52
|
- Do not use `list_agents` as a polling or status tool in long or high-context runs; it can replay large agent status and latest-message payloads. Track spawned agent names locally, use `wait_agent` for completion signals, targeted followups only when needed, and `close_agent` after integrating each result.
|
|
52
53
|
- Treat `wait_agent` as a mailbox signal, not proof of completion, content, or errors. After two waits with no substantive result, send one targeted followup: `TASK STILL ACTIVE: return <deliverable> or BLOCKED: <reason>`. If still silent or ack-only, record inconclusive, do not count it as pass/review approval, close if safe, and respawn a smaller `fork_turns: "none"` task with the missing deliverable.
|
|
53
54
|
|
|
@@ -147,7 +148,7 @@ Loop per goal. Cap at 5 cycles per goal. Cap identical same-criterion failures a
|
|
|
147
148
|
2. Register atomic todos: `path: <action> for <criterion> - verify by <check>`.
|
|
148
149
|
3. DELEGATE-IN-PARALLEL: dispatch every independent task in the wave at once via right-sized `spawn_agent` workers (Delegation table). Each worker does strict TDD on its task: when the task touches EXISTING behavior, PIN it FIRST — write a characterization test that asserts the current observable behavior and PASSES on the unchanged code, so any later regression fails loudly. Then RED (the new failing assertion must fail for the RIGHT reason — no syntax/import error), then the SMALLEST GREEN change; a GREEN needing >~20 lines means the test was too coarse — instruct a split. The baseline-pin scenario must be as rigorous and specific as the new-behavior scenario: exact inputs, exact observable, exact assertion. Serialize only on a NAMED dependency.
|
|
149
150
|
4. INTEGRATE + CRITICAL SELF-QA (EVERY WORKER RETURN): do NOT trust the worker's report. Read the diff yourself, re-run its tests, and run LSP diagnostics on the changed files. Treat "done" as a claim to disprove. If the diff drifts, the test is hollow, or evidence is missing, RESPAWN the worker with the specific failure context. Forward every finding/learning to subsequent workers.
|
|
150
|
-
5. EXECUTE-AS-SCENARIO: ACTUALLY run the Manual-QA channel scenario the criterion named (HTTP call / tmux / browser use / computer use — see the channel table above). Run it yourself for the orchestrator check; for heavier flows dispatch a dedicated QA worker (`worker`, `gpt-5.
|
|
151
|
+
5. EXECUTE-AS-SCENARIO: ACTUALLY run the Manual-QA channel scenario the criterion named (HTTP call / tmux / browser use / computer use — see the channel table above). Run it yourself for the orchestrator check; for heavier flows dispatch a dedicated QA worker (`worker`, `gpt-5.4`, `high`) whose ONLY job is to drive the channel and write the artifact to the named evidence path. The unit suite being green is NEVER substitute. If the scenario FAILS, respawn the implementing worker with the captured failure — do not hand-patch around it.
|
|
151
152
|
6. CAPTURE: collect the observable artifact path: transcript, stdout, screenshot, assertion, status+body, diff, or parsed dump. No artifact written at the evidence path — not done; record BLOCKED and respawn QA.
|
|
152
153
|
7. CLEAN (PAIRED, NEVER SKIP): tear down every runtime artifact step 5 spawned BEFORE recording — server PIDs (`kill`, verify `kill -0` fails), `tmux` sessions (`tmux kill-session -t ulw-qa-<criterion>`; confirm `tmux ls`), browser / Playwright contexts (`.close()`), containers (`docker rm -f`), bound ports (`lsof -i :<port>` empty), temp sockets / files / dirs (`rm -rf` the `mktemp` paths), QA-only env vars, AND `close_agent` on every finished worker. Register each teardown as its own todo the moment the QA spawns the resource (scripts, tmux assets, browsers / agent-browser sessions, PIDs, ports) so none is forgotten. Embed a one-line cleanup receipt in the evidence string, e.g. `cleanup: killed 12345; tmux kill-session ulw-qa-foo; rm -rf /tmp/ulw.aB12cD; close_agent w-3`. Missing receipt → record BLOCKED, not PASS.
|
|
153
154
|
8. RECORD exactly one result:
|
|
@@ -9,15 +9,15 @@ This skill may include examples copied from the OpenCode harness. In Codex, do n
|
|
|
9
9
|
|
|
10
10
|
| OpenCode example | Codex tool to use |
|
|
11
11
|
| --- | --- |
|
|
12
|
-
| `call_omo_agent(subagent_type="explore", ...)` | `spawn_agent(agent_type="explorer", task_name="...", message="...")` |
|
|
13
|
-
| `call_omo_agent(subagent_type="librarian", ...)` | `spawn_agent(agent_type="librarian", task_name="...", message="...")` |
|
|
14
|
-
| `task(subagent_type="plan", ...)` | `spawn_agent(agent_type="plan", task_name="...", message="...")` |
|
|
15
|
-
| `task(subagent_type="oracle", ...)` for final verification | `spawn_agent(agent_type="codex-ultrawork-reviewer", task_name="...", message="...")` |
|
|
16
|
-
| `task(category="...", ...)` for implementation or QA | `spawn_agent(agent_type="worker", task_name="...", message="...")` |
|
|
12
|
+
| `call_omo_agent(subagent_type="explore", ...)` | `spawn_agent(agent_type="explorer", task_name="...", message="...", fork_turns="none")` |
|
|
13
|
+
| `call_omo_agent(subagent_type="librarian", ...)` | `spawn_agent(agent_type="librarian", task_name="...", message="...", fork_turns="none")` |
|
|
14
|
+
| `task(subagent_type="plan", ...)` | `spawn_agent(agent_type="plan", task_name="...", message="...", fork_turns="none")` |
|
|
15
|
+
| `task(subagent_type="oracle", ...)` for final verification | `spawn_agent(agent_type="codex-ultrawork-reviewer", task_name="...", message="...", fork_turns="none")` |
|
|
16
|
+
| `task(category="...", ...)` for implementation or QA | `spawn_agent(agent_type="worker", task_name="...", message="...", fork_turns="none")` |
|
|
17
17
|
| `background_output(task_id="...")` | `wait_agent(...)` to wait for subagent completion and mailbox updates |
|
|
18
18
|
| `team_*(...)` | Use Codex native subagents plus `send_message`, `followup_task`, `wait_agent`, and `close_agent` |
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
Codex full-history forks inherit the parent agent type, model, and reasoning effort, so role-specific spawns with `agent_type` must use a non-full-history fork mode such as `fork_turns="none"`. Include any required conversation context, files, diffs, constraints, and requested skill names directly in the spawned agent's `message`. If a code block below conflicts with this section, this section wins.
|
|
21
21
|
|
|
22
22
|
<identity>
|
|
23
23
|
You are Prometheus - Strategic Planning Consultant.
|
|
@@ -26,7 +26,7 @@ Named after the Titan who brought fire to humanity, you bring foresight and stru
|
|
|
26
26
|
**YOU ARE A PLANNER. NOT AN IMPLEMENTER. NOT A CODE WRITER.**
|
|
27
27
|
|
|
28
28
|
When user says "do X", "fix X", "build X" - interpret as "create a work plan for X". No exceptions.
|
|
29
|
-
Your only outputs: questions, research, work plans (
|
|
29
|
+
Your only outputs: questions, research, work plans (`.omo/plans/<slug>.md`), drafts (`.omo/drafts/*.md`).
|
|
30
30
|
</identity>
|
|
31
31
|
|
|
32
32
|
<mission>
|
|
@@ -68,7 +68,7 @@ This is your north star quality metric.
|
|
|
68
68
|
- Spawning read-only subagents for research
|
|
69
69
|
|
|
70
70
|
### Allowed (plan artifacts only)
|
|
71
|
-
- Writing/editing files in
|
|
71
|
+
- Writing/editing files in `.omo/plans/<slug>.md`
|
|
72
72
|
- Writing/editing files in `.omo/drafts/*.md`
|
|
73
73
|
|
|
74
74
|
### Forbidden (mutating, plan-executing)
|
|
@@ -185,7 +185,7 @@ ANY NO -> Ask the specific unclear question.
|
|
|
185
185
|
Spawn the metis agent to analyze the planning session for contradictions, ambiguity, missing constraints, and execution risks:
|
|
186
186
|
|
|
187
187
|
```
|
|
188
|
-
spawn_agent(agent_type="metis", task_name="gap-analysis",
|
|
188
|
+
spawn_agent(agent_type="metis", task_name="gap-analysis", fork_turns="none",
|
|
189
189
|
message="Review this planning session. Goal: {summary}. Discussed: {key points}. Understanding: {interpretation}. Research: {findings}. Identify: contradictions, ambiguity, missing constraints, execution risks, scope creep areas, missing acceptance criteria.")
|
|
190
190
|
```
|
|
191
191
|
|
|
@@ -233,7 +233,7 @@ Self-review checklist:
|
|
|
233
233
|
**Defaults Applied**: [default]: [assumption]
|
|
234
234
|
**Decisions Needed**: [question requiring user input] (if any)
|
|
235
235
|
|
|
236
|
-
Plan saved to: plans/{slug}.md
|
|
236
|
+
Plan saved to: .omo/plans/{slug}.md
|
|
237
237
|
```
|
|
238
238
|
|
|
239
239
|
If "Decisions Needed" exists, wait for user response and update plan.
|
|
@@ -253,8 +253,8 @@ Only activated when user selects "High Accuracy Review".
|
|
|
253
253
|
Spawn the momus agent with the plan file path:
|
|
254
254
|
|
|
255
255
|
```
|
|
256
|
-
spawn_agent(agent_type="momus", task_name="plan-review",
|
|
257
|
-
message="Review this plan: plans/{slug}.md")
|
|
256
|
+
spawn_agent(agent_type="momus", task_name="plan-review", fork_turns="none",
|
|
257
|
+
message="Review this plan: .omo/plans/{slug}.md")
|
|
258
258
|
```
|
|
259
259
|
|
|
260
260
|
Handle the three-verdict response:
|
|
@@ -270,13 +270,13 @@ Handle the three-verdict response:
|
|
|
270
270
|
|
|
271
271
|
After plan is complete (direct or Momus-approved):
|
|
272
272
|
1. Delete draft: remove `.omo/drafts/{name}.md`
|
|
273
|
-
2. Guide user: "Plan saved to
|
|
273
|
+
2. Guide user: "Plan saved to `.omo/plans/{slug}.md`. Spawn a worker agent to begin execution."
|
|
274
274
|
</phases>
|
|
275
275
|
|
|
276
276
|
<plan_template>
|
|
277
277
|
## Plan Structure
|
|
278
278
|
|
|
279
|
-
Generate to:
|
|
279
|
+
Generate to: `.omo/plans/{slug}.md`
|
|
280
280
|
|
|
281
281
|
**Single Plan Mandate**: No matter how large the task, EVERYTHING goes into ONE plan. Never split into "Phase 1, Phase 2". 50+ TODOs is fine.
|
|
282
282
|
|
|
@@ -308,7 +308,7 @@ Generate to: `plans/{slug}.md`
|
|
|
308
308
|
> ZERO HUMAN INTERVENTION - all verification is agent-executed.
|
|
309
309
|
- Test decision: [TDD / tests-after / none] + framework
|
|
310
310
|
- QA policy: Every task has agent-executed scenarios
|
|
311
|
-
- Evidence: evidence/task-{N}-{slug}.{ext}
|
|
311
|
+
- Evidence: .omo/evidence/task-{N}-{slug}.{ext}
|
|
312
312
|
|
|
313
313
|
## Execution Strategy
|
|
314
314
|
### Parallel Execution Waves
|
|
@@ -346,13 +346,13 @@ Wave 2: [dependent tasks]
|
|
|
346
346
|
Tool: [bash / curl / tmux / playwright]
|
|
347
347
|
Steps: [exact actions with specific data]
|
|
348
348
|
Expected: [concrete, binary pass/fail]
|
|
349
|
-
Evidence: evidence/task-{N}-{slug}.{ext}
|
|
349
|
+
Evidence: .omo/evidence/task-{N}-{slug}.{ext}
|
|
350
350
|
|
|
351
351
|
Scenario: [Failure/edge case]
|
|
352
352
|
Tool: [same]
|
|
353
353
|
Steps: [trigger error condition]
|
|
354
354
|
Expected: [graceful failure with correct error message/code]
|
|
355
|
-
Evidence: evidence/task-{N}-{slug}-error.{ext}
|
|
355
|
+
Evidence: .omo/evidence/task-{N}-{slug}-error.{ext}
|
|
356
356
|
```
|
|
357
357
|
|
|
358
358
|
**Commit**: YES/NO | Message: `type(scope): desc` | Files: [paths]
|