odd-studio 3.3.6 → 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,9 @@ npx odd-studio init my-project --agent codex
45
45
  cd my-project
46
46
  ```
47
47
 
48
- In Codex, start ODD with `/odd`.
49
- Use `/odd-status` when you want the current project state without entering the full planning or build flow.
50
- `AGENTS.md` remains supporting context, but the Codex plugin command is the primary entrypoint.
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
51
 
52
52
  If this project was originally set up for Claude Code or OpenCode and you want to add Codex later, run:
53
53
 
@@ -83,7 +83,7 @@ That single command:
83
83
  **Then open your project in your AI coding agent and start ODD:**
84
84
  ```
85
85
  Claude Code / OpenCode: /odd
86
- Codex: /odd
86
+ Codex: `use ODD`
87
87
  ```
88
88
 
89
89
  ---
@@ -94,7 +94,7 @@ Codex: /odd
94
94
  |-------|-------------------|---------------|
95
95
  | **Claude Code** | Project-local skills (`.claude/skills/`), hooks (`.claude/settings.local.json`), odd-flow MCP (`.mcp.json`) | Claude (Opus, Sonnet, Haiku) |
96
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 |
97
- | **Codex** | Project-local plugin (`plugins/odd-studio/`), slash-command entrypoints (`plugins/odd-studio/commands/`), 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 |
98
98
 
99
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.
100
100
 
@@ -107,7 +107,7 @@ Your AI coding agent loads the ODD orchestrator. It checks whether you have an e
107
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?*
108
108
  - **Returning project:** Shows you exactly where you left off and resumes from there. Nothing is lost between sessions.
109
109
 
110
- From there, use the dedicated direct commands listed below in Claude Code, OpenCode, or Codex, 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.
111
111
 
112
112
  ---
113
113
 
@@ -164,7 +164,7 @@ ODD Studio installs safety gates that run automatically throughout your build. T
164
164
 
165
165
  **Claude Code:** Implemented as shell hooks registered in `.claude/settings.local.json` (project-local).
166
166
  **OpenCode:** Implemented as a JS plugin (`odd-studio-plugin.js`) in `.opencode/plugins/` (project-local).
167
- **Codex:** Implemented as a project-local plugin in `plugins/odd-studio/` with `hooks.json`, plugin-local skills, and slash commands such as `/odd` and `/odd-status`.
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`.
168
168
 
169
169
  ---
170
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 in Codex: ` + chalk.cyan('/odd') + chalk.dim(' (use /odd-status to inspect state first)'));
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. Use /odd-status for a state-only check.'));
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.6
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.6",
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, safety gates, and Codex slash commands such as /odd and /odd-status.",
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": "Run /odd to start or resume this ODD Studio project, or /odd-status to inspect the current state",
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
  }
@@ -2,5 +2,5 @@
2
2
 
3
3
  This plugin installs the ODD Studio planning and build harness into Codex as a project-local plugin.
4
4
 
5
- Primary entrypoints in Codex are `/odd` to start or resume and `/odd-status` to inspect the current project state.
6
- `AGENTS.md` can reinforce the workflow, but the plugin command is the canonical startup path.
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.6",
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.6"
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.6.
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.6.
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.6.
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,8 +5,8 @@
5
5
 
6
6
  This project uses ODD Studio for planning and building. To activate the ODD coach:
7
7
 
8
- **In Codex:** Type `/odd` to start, or `/odd-status` to check the current state before resuming.
9
- If slash commands are unavailable in this workspace, `use ODD`, `start ODD`, or `begin ODD` are acceptable fallbacks.
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
 
@@ -148,9 +148,9 @@ _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 an explicit ODD command.
152
- In Codex and OpenCode, the primary entrypoint is `/odd`. In Codex, `/odd-status` is the status-only entrypoint.
153
- If Codex slash commands are unavailable, treat `use ODD`, `start ODD`, or `begin ODD` as `/odd`, `ODD status` as `/odd-status`, and `ODD build` as `/odd-build`.
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
154
  When you see one of these triggers, read the full coaching protocol from the skill file (see "How to Start ODD" above),
155
155
  then execute the startup state check from that skill exactly as written.
156
156