odd-studio 3.3.5 → 3.3.7

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/README.md CHANGED
@@ -45,9 +45,15 @@ npx odd-studio init my-project --agent codex
45
45
  cd my-project
46
46
  ```
47
47
 
48
- In Codex, start ODD by saying `use ODD` or `start ODD`.
49
- Codex reads `AGENTS.md`, which routes the session to `plugins/odd-studio/skills/odd/SKILL.md`.
50
- Once ODD is active, the same starred flow works there too, including commands like `*plan`, `*build`, and `*status`.
48
+ In Codex, start ODD with a natural-language kickoff such as `use ODD`, `start ODD`, or `begin ODD`.
49
+ For a state check, use `ODD status`. To continue building, use `ODD build`.
50
+ ODD now ships Codex skill-discovery metadata so these prompts can match the plugin directly instead of relying only on `AGENTS.md`.
51
+
52
+ If this project was originally set up for Claude Code or OpenCode and you want to add Codex later, run:
53
+
54
+ ```bash
55
+ npx odd-studio upgrade --agent codex
56
+ ```
51
57
 
52
58
  ### For Claude Code and OpenCode on the same machine
53
59
 
@@ -77,7 +83,7 @@ That single command:
77
83
  **Then open your project in your AI coding agent and start ODD:**
78
84
  ```
79
85
  Claude Code / OpenCode: /odd
80
- Codex: use ODD
86
+ Codex: `use ODD`
81
87
  ```
82
88
 
83
89
  ---
@@ -88,7 +94,7 @@ Codex: use ODD
88
94
  |-------|-------------------|---------------|
89
95
  | **Claude Code** | Project-local skills (`.claude/skills/`), hooks (`.claude/settings.local.json`), odd-flow MCP (`.mcp.json`) | Claude (Opus, Sonnet, Haiku) |
90
96
  | **OpenCode** | Project-local commands (`.opencode/commands/`), JS plugin (`.opencode/plugins/`), odd-flow MCP (`opencode.json`) | Any provider — Ollama (Qwen3-Coder, MiniMax M2.7, DeepSeek), OpenAI, Anthropic, Google, Groq, and 75+ more |
91
- | **Codex** | Project-local plugin (`plugins/odd-studio/`), local marketplace registration (`.agents/plugins/marketplace.json`), plugin MCP (`plugins/odd-studio/.mcp.json`) | Codex |
97
+ | **Codex** | Project-local plugin (`plugins/odd-studio/`), skill-discovery metadata in `SKILL.md`, local marketplace registration (`.agents/plugins/marketplace.json`), plugin MCP (`plugins/odd-studio/.mcp.json`) | Codex |
92
98
 
93
99
  All supported agents get the same methodology, the same safety enforcement, and the same odd-flow-powered cross-session memory. The only difference is the delivery mechanism.
94
100
 
@@ -101,7 +107,7 @@ Your AI coding agent loads the ODD orchestrator. It checks whether you have an e
101
107
  - **New project:** Welcomes you, explains what you're about to build together, and starts with the first question: *Who uses this system, and what do they actually need?*
102
108
  - **Returning project:** Shows you exactly where you left off and resumes from there. Nothing is lost between sessions.
103
109
 
104
- From there, use the dedicated direct commands listed below in Claude Code or OpenCode, or type sub-commands inside the active ODD session.
110
+ From there, use the dedicated direct commands in Claude Code or OpenCode, natural-language ODD prompts in Codex, or type sub-commands inside the active ODD session once ODD is active.
105
111
 
106
112
  ---
107
113
 
@@ -158,8 +164,7 @@ ODD Studio installs safety gates that run automatically throughout your build. T
158
164
 
159
165
  **Claude Code:** Implemented as shell hooks registered in `.claude/settings.local.json` (project-local).
160
166
  **OpenCode:** Implemented as a JS plugin (`odd-studio-plugin.js`) in `.opencode/plugins/` (project-local).
161
- **Codex:** Implemented as a project-local plugin in `plugins/odd-studio/` with `hooks.json` and plugin-local skills.
162
- Codex starts through `AGENTS.md` instructions (`use ODD` / `start ODD`) rather than a guaranteed `/odd` composer command.
167
+ **Codex:** Implemented as a project-local plugin in `plugins/odd-studio/` with `hooks.json`, plugin-local skills, and Codex skill-discovery metadata for prompts such as `use ODD`, `ODD status`, and `ODD build`.
163
168
 
164
169
  ---
165
170
 
@@ -218,7 +218,7 @@ function printNextSteps({ isClaude, isOpenCode, isCodex, projectName }) {
218
218
  }
219
219
  if (isCodex) {
220
220
  console.log(` ${stepN++}. Open your project in Codex`);
221
- console.log(` ${stepN++}. Start ODD by saying: ` + chalk.cyan('use ODD') + chalk.dim(' (Codex reads AGENTS.md automatically no /odd command needed)'));
221
+ console.log(` ${stepN++}. Start ODD in Codex: ` + chalk.cyan('use ODD') + chalk.dim(' (or say ODD status to inspect state first)'));
222
222
  }
223
223
  if (isClaude || isOpenCode) {
224
224
  console.log(` ${stepN++}. Start your ODD session: ` + chalk.cyan('/odd'));
@@ -43,7 +43,7 @@ export function registerStatus(program, deps) {
43
43
  }
44
44
 
45
45
  print.blank();
46
- console.log(chalk.dim(' Open your AI coding agent and type /odd to resume.'));
46
+ console.log(chalk.dim(' Open your AI coding agent and resume with /odd in Claude/OpenCode or by saying use ODD in Codex. Say ODD status in Codex for a state-only check.'));
47
47
  print.blank();
48
48
  });
49
49
  }
package/bin/odd-studio.js CHANGED
@@ -15,7 +15,7 @@ import { registerUninstall } from './commands/uninstall.js';
15
15
  const __filename = fileURLToPath(import.meta.url);
16
16
  const __dirname = path.dirname(__filename);
17
17
  const require = createRequire(import.meta.url);
18
- const pkg = require('../package.json'); // v3.3.5
18
+ const pkg = require('../package.json'); // v3.3.7
19
19
 
20
20
  const PACKAGE_ROOT = path.resolve(__dirname, '..');
21
21
  const deps = { PACKAGE_ROOT, print };
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "odd-studio",
3
- "version": "3.3.3",
3
+ "version": "3.3.7",
4
4
  "description": "Outcome-Driven Development planning and build harness for domain experts building serious software with AI.",
5
5
  "author": {
6
6
  "name": "ODD Studio"
@@ -21,7 +21,7 @@
21
21
  "interface": {
22
22
  "displayName": "ODD Studio",
23
23
  "shortDescription": "Guide planning, build sequencing, and verification with Outcome-Driven Development",
24
- "longDescription": "Use ODD Studio to plan around personas, outcomes, contracts, and phased delivery, then run a disciplined build and verification flow with odd-flow memory and safety gates.",
24
+ "longDescription": "Use ODD Studio to plan around personas, outcomes, contracts, and phased delivery, then run a disciplined build and verification flow with odd-flow memory, safety gates, and Codex-native skill matching for prompts such as use ODD, ODD status, and ODD build.",
25
25
  "developerName": "ODD Studio",
26
26
  "category": "Coding",
27
27
  "capabilities": [
@@ -32,7 +32,7 @@
32
32
  "websiteURL": "https://github.com/odd-studio/odd-studio",
33
33
  "privacyPolicyURL": "https://github.com/odd-studio/odd-studio",
34
34
  "termsOfServiceURL": "https://github.com/odd-studio/odd-studio",
35
- "defaultPrompt": "Start or resume an ODD Studio planning and build session for this project",
35
+ "defaultPrompt": "Use ODD to start or resume this ODD Studio project, or say ODD status to inspect the current state",
36
36
  "brandColor": "#111111",
37
37
  "screenshots": []
38
38
  }
@@ -1,3 +1,6 @@
1
1
  # ODD Studio for Codex
2
2
 
3
3
  This plugin installs the ODD Studio planning and build harness into Codex as a project-local plugin.
4
+
5
+ Primary entrypoints in Codex are natural-language prompts such as `use ODD`, `start ODD`, `ODD status`, and `ODD build`.
6
+ This plugin includes Codex skill-discovery metadata so ODD can be matched from those prompts. `AGENTS.md` reinforces the workflow, but the goal is native skill pickup rather than a fake slash-command surface.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "odd-studio",
3
- "version": "3.3.5",
3
+ "version": "3.3.7",
4
4
  "description": "Outcome-Driven Development for AI coding agents — a planning and build harness for domain experts building serious software with AI. Works with Claude Code, OpenCode, and Codex.",
5
5
  "keywords": [
6
6
  "claude-code",
@@ -5,6 +5,7 @@ import { COMMANDS } from './command-definitions.js';
5
5
  import { CODEX_PLUGIN_NAME } from './assets.js';
6
6
 
7
7
  const CODEX_ODD_ROOT = `plugins/${CODEX_PLUGIN_NAME}/skills/odd/`;
8
+ const CODEX_COMMAND_PREFIX = `/${CODEX_PLUGIN_NAME}:`;
8
9
 
9
10
  export default async function installCodexCommands(pluginDest) {
10
11
  const commandsDest = path.join(pluginDest, 'commands');
@@ -26,7 +27,7 @@ function buildMainCommand(cmd) {
26
27
  `description: "${cmd.description}"`,
27
28
  '---',
28
29
  '',
29
- '# /odd',
30
+ `# ${CODEX_COMMAND_PREFIX}${cmd.name}`,
30
31
  '',
31
32
  'You are now operating as the ODD Studio coach.',
32
33
  '',
@@ -44,7 +45,7 @@ function buildSubcommand(cmd) {
44
45
  `description: "${cmd.description}"`,
45
46
  '---',
46
47
  '',
47
- `# /${cmd.name}`,
48
+ `# ${CODEX_COMMAND_PREFIX}${cmd.name}`,
48
49
  '',
49
50
  rewriteBody(cmd.body),
50
51
  '',
package/skill/SKILL.md CHANGED
@@ -1,7 +1,68 @@
1
1
  ---
2
2
  name: "odd"
3
- version: "3.3.5"
3
+ version: "3.3.7"
4
4
  description: "Outcome-Driven Development planning and build coach. Use /odd to start or resume an ODD project — building personas, writing outcomes, mapping contracts, creating a Master Implementation Plan, and directing a odd-flow-powered build. Designed for domain experts who are not developers. Works with Claude Code, OpenCode, and Codex."
5
+ metadata:
6
+ priority: 10
7
+ pathPatterns:
8
+ - '.odd/state.json'
9
+ - 'docs/plan.md'
10
+ - 'docs/outcomes/**'
11
+ - 'docs/personas/**'
12
+ - 'docs/contract-map.md'
13
+ - 'docs/session-brief*.md'
14
+ - 'AGENTS.md'
15
+ bashPatterns:
16
+ - '\bnpx\s+odd-studio\s+status\b'
17
+ - '\bnpx\s+odd-studio\s+upgrade\b'
18
+ - '\bnpx\s+odd-studio\s+export\b'
19
+ promptSignals:
20
+ phrases:
21
+ - "use odd"
22
+ - "start odd"
23
+ - "begin odd"
24
+ - "resume odd"
25
+ - "continue odd"
26
+ - "odd studio"
27
+ - "outcome-driven development"
28
+ - "odd status"
29
+ - "odd build"
30
+ - "odd plan"
31
+ - "show odd status"
32
+ - "resume odd project"
33
+ allOf:
34
+ - [odd, status]
35
+ - [odd, build]
36
+ - [odd, plan]
37
+ - [outcome, driven]
38
+ anyOf:
39
+ - "odd"
40
+ - "outcome-driven"
41
+ - "persona"
42
+ - "outcome"
43
+ - "contract map"
44
+ - "phase brief"
45
+ noneOf: []
46
+ minScore: 5
47
+ retrieval:
48
+ aliases:
49
+ - odd
50
+ - odd studio
51
+ - outcome-driven development
52
+ - odd kickoff
53
+ - odd coach
54
+ intents:
55
+ - start odd
56
+ - resume odd project
57
+ - show odd status
58
+ - continue odd planning
59
+ - continue odd build
60
+ entities:
61
+ - personas
62
+ - outcomes
63
+ - contracts
64
+ - master implementation plan
65
+ - phase brief
5
66
  ---
6
67
 
7
68
  # ODD Studio — Outcome-Driven Development Coach
@@ -35,7 +96,7 @@ Display this when no existing state is found:
35
96
 
36
97
  ---
37
98
 
38
- Welcome to ODD Studio v3.3.5.
99
+ Welcome to ODD Studio v3.3.7.
39
100
 
40
101
  You are about to plan and build something real — using a methodology called Outcome-Driven Development. Before we write a single line of code, we are going to get precise about three things:
41
102
 
@@ -49,7 +110,7 @@ Once your personas, outcomes, and contracts are documented, we generate a Master
49
110
 
50
111
  This process takes longer than just asking Claude to "build a platform". It is also the reason projects built this way actually work — and why projects that skip it usually get rebuilt from scratch.
51
112
 
52
- Ready? Type `/odd-plan` (or `*plan`) to begin, or `/odd-help` (or `*help`) to see all available commands.
113
+ Ready? Type `*plan` to begin, or `*help` to see all available commands.
53
114
 
54
115
  ---
55
116
 
@@ -59,7 +120,7 @@ Display this when existing state is found. Replace the bracketed values with act
59
120
 
60
121
  ---
61
122
 
62
- Welcome back to ODD Studio v3.3.5.
123
+ Welcome back to ODD Studio v3.3.7.
63
124
 
64
125
  **Project:** [project.name]
65
126
  **Current Phase:** [state.currentPhase]
@@ -75,7 +136,7 @@ Welcome back to ODD Studio v3.3.5.
75
136
 
76
137
  **What's next:** [state.nextStep]
77
138
 
78
- Type `/odd-plan` (or `*plan`) to continue planning, `/odd-build` (or `*build`) to enter build mode, or `/odd-status` (or `*status`) for full detail.
139
+ Type `*plan` to continue planning, `*build` to enter build mode, or `*status` for full detail.
79
140
 
80
141
  ---
81
142
 
@@ -129,7 +190,7 @@ Route to the correct planning stage based on current state:
129
190
  - If plan is approved but `techStackDecided` is false: explain the transition to technical architecture, then load `docs/planning/build-planner.md` and activate Rachel for Step 9.
130
191
  - If `techStackDecided` is true but `designApproachDecided` is false: explain the transition to design, then load `docs/planning/build-planner.md` and activate Rachel for Step 9b.
131
192
  - If `designApproachDecided` is true but `architectureDocGenerated` is not true: explain the transition to document generation, then load `docs/planning/build-planner.md` and activate Rachel for Step 9d. Rachel will generate `docs/architecture.md` and `docs/ui/design-system.md` — the authoritative reference documents that build agents read before writing any code.
132
- - If `architectureDocGenerated` is true: congratulate the user and suggest `/odd-build` or `*export`.
193
+ - If `architectureDocGenerated` is true: congratulate the user and suggest `*build` or `*export`.
133
194
 
134
195
  Always announce which stage you are routing to and why before loading the sub-document.
135
196
 
@@ -341,7 +402,7 @@ Checkpoint: clear.
341
402
 
342
403
  **Next:** [next outcome name and one-sentence description]
343
404
 
344
- Type `/odd-build` to begin, or `/odd-status` to see the full phase progress.
405
+ Type `*build` to begin, or `*status` to see the full phase progress.
345
406
 
346
407
  ---
347
408
 
@@ -438,7 +499,10 @@ Display this reference:
438
499
 
439
500
  **ODD Studio Commands**
440
501
 
441
- You can use either format: `*command` (within an `/odd` session) or `/odd-command` (as a direct slash command).
502
+ You can use either format:
503
+ - `*command` within an active ODD session
504
+ - direct slash commands in hosts that support them
505
+ - natural-language kickoff phrases in Codex such as `use ODD`, `start ODD`, `ODD status`, or `ODD build`
442
506
 
443
507
  | Within `/odd` | Direct command | What it does |
444
508
  |---|---|---|
@@ -2,6 +2,39 @@
2
2
  name: "odd-build"
3
3
  version: "1.0.0"
4
4
  description: "ODD Studio build command. Reads project state from odd-flow memory and executes the *build protocol from the ODD Studio coach. Use /odd-build to start or continue a build session."
5
+ metadata:
6
+ priority: 9
7
+ pathPatterns:
8
+ - '.odd/state.json'
9
+ - 'docs/plan.md'
10
+ - 'docs/outcomes/**'
11
+ - 'docs/session-brief*.md'
12
+ promptSignals:
13
+ phrases:
14
+ - "odd build"
15
+ - "start odd build"
16
+ - "continue odd build"
17
+ - "begin odd build"
18
+ - "resume odd build"
19
+ allOf:
20
+ - [odd, build]
21
+ anyOf:
22
+ - "build"
23
+ - "phase"
24
+ - "verification"
25
+ - "outcome"
26
+ noneOf: []
27
+ minScore: 5
28
+ retrieval:
29
+ aliases:
30
+ - odd build
31
+ - build with odd
32
+ intents:
33
+ - start odd build
34
+ - continue odd build
35
+ entities:
36
+ - current build phase
37
+ - phase brief
5
38
  ---
6
39
 
7
40
  # /odd-build
@@ -2,6 +2,41 @@
2
2
  name: "odd-plan"
3
3
  version: "1.0.0"
4
4
  description: "ODD Studio planning command. Start or continue the planning phase — personas, outcomes, contracts, and Master Implementation Plan."
5
+ metadata:
6
+ priority: 9
7
+ pathPatterns:
8
+ - '.odd/state.json'
9
+ - 'docs/plan.md'
10
+ - 'docs/personas/**'
11
+ - 'docs/outcomes/**'
12
+ - 'docs/contract-map.md'
13
+ promptSignals:
14
+ phrases:
15
+ - "odd plan"
16
+ - "start odd planning"
17
+ - "continue odd planning"
18
+ - "begin odd planning"
19
+ - "resume odd planning"
20
+ allOf:
21
+ - [odd, plan]
22
+ anyOf:
23
+ - "persona"
24
+ - "outcome"
25
+ - "contract"
26
+ - "plan"
27
+ noneOf: []
28
+ minScore: 5
29
+ retrieval:
30
+ aliases:
31
+ - odd plan
32
+ - plan with odd
33
+ intents:
34
+ - start odd planning
35
+ - continue odd planning
36
+ entities:
37
+ - persona
38
+ - outcome
39
+ - contract map
5
40
  ---
6
41
 
7
42
  # /odd-plan
@@ -2,6 +2,38 @@
2
2
  name: "odd-status"
3
3
  version: "1.0.0"
4
4
  description: "ODD Studio status command. Show full project state, phase progress, and what comes next."
5
+ metadata:
6
+ priority: 9
7
+ pathPatterns:
8
+ - '.odd/state.json'
9
+ - 'docs/plan.md'
10
+ - 'docs/session-brief*.md'
11
+ promptSignals:
12
+ phrases:
13
+ - "odd status"
14
+ - "show odd status"
15
+ - "resume odd status"
16
+ - "where are we in odd"
17
+ - "what is the odd status"
18
+ allOf:
19
+ - [odd, status]
20
+ anyOf:
21
+ - "status"
22
+ - "progress"
23
+ - "phase"
24
+ - "resume"
25
+ noneOf: []
26
+ minScore: 5
27
+ retrieval:
28
+ aliases:
29
+ - odd status
30
+ - odd progress
31
+ intents:
32
+ - show odd status
33
+ - inspect odd progress
34
+ entities:
35
+ - current phase
36
+ - next step
5
37
  ---
6
38
 
7
39
  # /odd-status
@@ -5,13 +5,13 @@
5
5
 
6
6
  This project uses ODD Studio for planning and building. To activate the ODD coach:
7
7
 
8
- **In Codex:** Say `use ODD` or `start ODD` there is no `/odd` slash command in Codex.
9
- The agent will read the coaching protocol below and guide you through planning or building.
8
+ **In Codex:** Type `use ODD`, `start ODD`, or `begin ODD` to start.
9
+ Use `ODD status` to check the current state before resuming, or `ODD build` to continue the build flow.
10
10
 
11
11
  **In OpenCode:** Type `/odd` to start.
12
12
 
13
13
  When activated, read the full coaching protocol:
14
- - `plugins/odd-studio/skills/odd/SKILL.md` (Codex) or `.opencode/commands/odd/SKILL.md` (OpenCode)
14
+ - `plugins/odd-studio/skills/odd/SKILL.md` (Codex) or `.opencode/odd/SKILL.md` (OpenCode)
15
15
 
16
16
  Then execute the startup state check documented in that file.
17
17
 
@@ -148,8 +148,10 @@ _Until then, the ODD defaults apply:_
148
148
  _This section is populated by Rachel during Step 9b of the planning phase._
149
149
 
150
150
  ## Session Start Protocol
151
- Every new session begins with the user saying **"use ODD"** or **"start ODD"**.
152
- When you see this, read the full coaching protocol from the skill file (see "How to Start ODD" above),
151
+ Every new session begins with an explicit ODD kickoff.
152
+ In OpenCode, the primary entrypoint is `/odd`. In Codex, the primary triggers are `use ODD`, `start ODD`, or `begin ODD`.
153
+ Treat `ODD status` as the status check and `ODD build` as the build kickoff.
154
+ When you see one of these triggers, read the full coaching protocol from the skill file (see "How to Start ODD" above),
153
155
  then execute the startup state check from that skill exactly as written.
154
156
 
155
157
  Do not skip straight to persona naming or build questions.