diff --git a/README.md b/README.md index 447b7c9..78a70bd 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # coding-tutor-skill -A learning toolkit for AI coding agents. Turns Claude Code, Cursor, OpenCode, or any supported agent into a programming mentor that guides without doing the work for you. +A learning toolkit for AI coding agents. Turns Claude Code, Cursor, OpenCode, Codex, or any supported agent into a programming mentor that guides without doing the work for you. ## Skills @@ -32,6 +32,29 @@ Auto-detects your agent. Or specify one explicitly: npx coding-tutor-skill --skill tutor --agent claude-code npx coding-tutor-skill --skill tutor --agent cursor npx coding-tutor-skill --skill tutor --agent opencode +npx coding-tutor-skill --skill tutor --agent codex +``` + +Install from a cloned repository: + +```bash +git clone https://github.com/zeufack/coding-tutor.git +cd coding-tutor +node ./bin/install.js --skill tutor --agent codex +``` + +Use this local install path when testing repository changes or when you want to install without `npx`. + +For Codex, the installer writes the skill to: + +```text +$CODEX_HOME/skills//SKILL.md +``` + +If `CODEX_HOME` is not set, it falls back to: + +```text +~/.codex/skills//SKILL.md ``` List available skills: @@ -100,4 +123,5 @@ coding-tutor/ | Claude Code | Supported | | Cursor | Supported | | OpenCode | Supported | +| Codex | Supported | | Other | Use `--print` for manual install | diff --git a/bin/install.js b/bin/install.js index 5cde15c..21b6217 100755 --- a/bin/install.js +++ b/bin/install.js @@ -7,6 +7,7 @@ import { fileURLToPath } from 'url' const __dirname = path.dirname(fileURLToPath(import.meta.url)) const projectRoot = path.join(__dirname, '..') const home = process.env.HOME || process.env.USERPROFILE +const codexHome = process.env.CODEX_HOME || path.join(home, '.codex') const agents = { 'claude-code': { @@ -14,18 +15,28 @@ const agents = { target: (skillName) => path.join(home, '.claude', 'commands'), filename: (skillName) => `${skillName}.md`, label: 'Claude Code', + usage: (skillName) => `Use /${skillName} to start a session.`, }, cursor: { detect: path.join(home, '.cursor'), target: (skillName) => path.join(home, '.cursor', 'skills'), filename: (skillName) => `${skillName}.md`, label: 'Cursor', + usage: (skillName) => `Use /${skillName} to start a session.`, }, opencode: { detect: path.join(home, '.config', 'opencode'), target: (skillName) => path.join(home, '.config', 'opencode', 'skills', skillName), filename: () => 'SKILL.md', label: 'OpenCode', + usage: (skillName) => `Use /${skillName} to start a session.`, + }, + codex: { + detect: codexHome, + target: (skillName) => path.join(codexHome, 'skills', skillName), + filename: () => 'SKILL.md', + label: 'Codex', + usage: (skillName) => `Mention ${skillName} in your next Codex prompt to use this skill.`, }, } @@ -54,6 +65,7 @@ function showHelp() { console.log('\nExamples:') console.log(' npx coding-tutor-skill --skill tutor') console.log(' npx coding-tutor-skill --skill tutor --agent claude-code') + console.log(' npx coding-tutor-skill --skill tutor --agent codex') console.log(' npx coding-tutor-skill --skill tutor --print\n') process.exit(1) } @@ -92,7 +104,7 @@ function install(agentKey) { fs.copyFileSync(skillSrc, path.join(targetDir, targetFile)) console.log(`\n✓ ${skillName} skill installed for ${agent.label}`) - console.log(` Use /${skillName} to start a session.\n`) + console.log(` ${agent.usage(skillName)}\n`) } if (forcedAgent) { @@ -112,7 +124,8 @@ if (forcedAgent) { console.log('\nSpecify an agent:') console.log(` npx coding-tutor-skill --skill ${skillName} --agent claude-code`) console.log(` npx coding-tutor-skill --skill ${skillName} --agent cursor`) - console.log(` npx coding-tutor-skill --skill ${skillName} --agent opencode\n`) + console.log(` npx coding-tutor-skill --skill ${skillName} --agent opencode`) + console.log(` npx coding-tutor-skill --skill ${skillName} --agent codex\n`) process.exit(1) } } diff --git a/package.json b/package.json index 7c82268..902617e 100644 --- a/package.json +++ b/package.json @@ -8,10 +8,15 @@ }, "files": [ "bin", - "skills", - "prompts", - "adapters" + "challenger", + "course-builder", + "debugger", + "explainer", + "interviewer", + "lecture", + "reviewer", + "tutor" ], "keywords": ["claude", "cursor", "ai", "tutor", "skill", "coding"], "license": "MIT" - } \ No newline at end of file + }