Skip to content

Commit 07f25e1

Browse files
committed
Update README and code to reflect new skill directory structure for Codex
- Changed references from `.codex/skills/` to `.agents/skills/` in README and code files. - Updated skill discovery paths in `src/utils.js`, `src/commands/claude-code/setup.js`, and `src/commands/claude-code/skills.js` to align with the new structure. - Enhanced user guidance in CLI regarding skill installation locations.
1 parent 9504d6e commit 07f25e1

4 files changed

Lines changed: 12 additions & 9 deletions

File tree

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ npx portkey mcp add
5353
1. Run `npx portkey` → choose **Setup Codex**.
5454
2. Paste your Portkey API key when asked.
5555
3. Pick routing (**provider** or **config**). The CLI updates `.codex/config.toml` with `base_url`, `PORTKEY_API_KEY`, and `wire_api` (`chat` = Chat Completions, `responses` = Responses API — same as [Portkey's Codex guide](https://portkey.ai/docs)).
56-
4. Optionally add **MCP** (same Portkey registry) and sync **skills** into `.codex/skills/`.
56+
4. Optionally add **MCP** (same Portkey registry) and sync **skills** into `.agents/skills/` (Codex's skill discovery location).
5757

5858
If you have **several Model Catalog providers**, the wizard can append extra `[model_providers.portkey-<slug>]` tables (each with its own `wire_api`). Switch the active route by editing `model_provider` and `model` (`@<slug>/<model-id>`) at the top of the file.
5959

@@ -83,7 +83,7 @@ npx portkey skills sync --yes --agent codex
8383
| `npx portkey mcp add` | Pick **Claude Code** or **Codex**, then servers from Portkey |
8484

8585

86-
**Skills:** list comes from the **Portkey API** for your workspace. You choose **where files are written** (`.claude/skills`, `.codex/skills`, `.cursor/skills`, project vs `--global`).
86+
**Skills:** list comes from the **Portkey API** for your workspace. You choose **where files are written** (`.claude/skills`, `.agents/skills` for Codex, `.cursor/skills`, project vs `--global`).
8787

8888
**MCP:** same registry on Portkey; Claude uses `~/.claude.json` / `.mcp.json`, Codex `[mcp_servers.*]` in `.codex/config.toml`.
8989

src/commands/claude-code/setup.js

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1225,14 +1225,15 @@ async function runSkillsSelection(args, portkeyKey, gateway, projectRoot, defaul
12251225
let useGlobal = args.global || !projectRoot;
12261226
if (!args.yes && !args.global && projectRoot) {
12271227
// Show paths specific to the chosen agent (or generic if unknown)
1228+
// Codex reads skills from `.agents/skills`, not `.codex/skills`.
12281229
const agentDir = defaultAgent
1229-
? { claude: ".claude", cursor: ".cursor", codex: ".codex" }[defaultAgent] || ".claude"
1230+
? { claude: ".claude", cursor: ".cursor", codex: ".agents" }[defaultAgent] || ".claude"
12301231
: null;
12311232

1232-
const projectHint = agentDir ? `.${agentDir}/skills/` : ".claude/skills/ .cursor/skills/ .codex/skills/";
1233+
const projectHint = agentDir ? `${agentDir}/skills/` : ".claude/skills/ .cursor/skills/ .agents/skills/";
12331234
const personalHint = agentDir
12341235
? `~/${agentDir}/skills/`
1235-
: "~/.claude/skills/ ~/.cursor/skills/ ~/.codex/skills/";
1236+
: "~/.claude/skills/ ~/.cursor/skills/ ~/.agents/skills/";
12361237

12371238
const scopePick = await p.select({
12381239
message: "Where should skills be installed?",
@@ -1270,7 +1271,7 @@ async function runSkillsSelection(args, portkeyKey, gateway, projectRoot, defaul
12701271
const agentOptions = [
12711272
{ value: "claude", label: "Claude Code", hint: (useGlobal ? "~/.claude/skills/" : ".claude/skills/") + (installed.includes("claude") ? " ✓" : "") },
12721273
{ value: "cursor", label: "Cursor", hint: (useGlobal ? "~/.cursor/skills/" : ".cursor/skills/") + (installed.includes("cursor") ? " ✓" : "") },
1273-
{ value: "codex", label: "Codex", hint: (useGlobal ? "~/.codex/skills/" : ".codex/skills/") + (installed.includes("codex") ? " ✓" : "") },
1274+
{ value: "codex", label: "Codex", hint: (useGlobal ? "~/.agents/skills/" : ".agents/skills/") + (installed.includes("codex") ? " ✓" : "") },
12741275
];
12751276
p.note(
12761277
`${c.dim}${MULTISELECT_HINT}${c.reset}\n` +

src/commands/claude-code/skills.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ export async function doSkillsSync(args) {
6464
p.note(
6565
`${c.bold}Source:${c.reset} every skill is fetched from your ${c.bold}Portkey workspace${c.reset} (Prompt Partials API). ` +
6666
`Nothing is “synced” from random local folders — the CLI downloads the latest content from Portkey.\n` +
67-
`${c.bold}Destination:${c.reset} you choose which agent(s) get folders like ${c.dim}.claude/skills/<slug>/SKILL.md${c.reset} or ${c.dim}.codex/skills/...${c.reset}, ` +
67+
`${c.bold}Destination:${c.reset} you choose which agent(s) get folders like ${c.dim}.claude/skills/<slug>/SKILL.md${c.reset} or ${c.dim}.agents/skills/...${c.reset} (Codex), ` +
6868
`and whether that is ${c.bold}this repo${c.reset} or ${c.bold}--global${c.reset} (${c.dim}~/...${c.reset}).`,
6969
"What skills sync does"
7070
);

src/utils.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -278,9 +278,11 @@ export const AGENT_SKILLS_DIRS = {
278278
cursor: (root, global) => global
279279
? path.join(os.homedir(), ".cursor", "skills")
280280
: path.join(root || process.cwd(), ".cursor", "skills"),
281+
// Codex discovers skills at `~/.agents/skills` (USER) and `<repo>/.agents/skills` (REPO),
282+
// walking up to the repo root. See https://developers.openai.com/codex/skills
281283
codex: (root, global) => global
282-
? path.join(os.homedir(), ".codex", "skills")
283-
: path.join(root || process.cwd(), ".codex", "skills"),
284+
? path.join(os.homedir(), ".agents", "skills")
285+
: path.join(root || process.cwd(), ".agents", "skills"),
284286
};
285287

286288
/** Detect which of the supported agents are already configured. */

0 commit comments

Comments
 (0)