oh-my-customcodex 0.1.0
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/LICENSE +21 -0
- package/README.md +327 -0
- package/dist/cli/index.js +32054 -0
- package/dist/index.js +5469 -0
- package/package.json +89 -0
- package/templates/.claude/agents/arch-documenter.md +38 -0
- package/templates/.claude/agents/arch-speckit-agent.md +66 -0
- package/templates/.claude/agents/be-django-expert.md +47 -0
- package/templates/.claude/agents/be-express-expert.md +31 -0
- package/templates/.claude/agents/be-fastapi-expert.md +45 -0
- package/templates/.claude/agents/be-go-backend-expert.md +45 -0
- package/templates/.claude/agents/be-nestjs-expert.md +29 -0
- package/templates/.claude/agents/be-springboot-expert.md +42 -0
- package/templates/.claude/agents/db-alembic-expert.md +73 -0
- package/templates/.claude/agents/db-postgres-expert.md +38 -0
- package/templates/.claude/agents/db-redis-expert.md +38 -0
- package/templates/.claude/agents/db-supabase-expert.md +37 -0
- package/templates/.claude/agents/de-airflow-expert.md +48 -0
- package/templates/.claude/agents/de-dbt-expert.md +36 -0
- package/templates/.claude/agents/de-kafka-expert.md +83 -0
- package/templates/.claude/agents/de-pipeline-expert.md +34 -0
- package/templates/.claude/agents/de-snowflake-expert.md +38 -0
- package/templates/.claude/agents/de-spark-expert.md +38 -0
- package/templates/.claude/agents/fe-design-expert.md +120 -0
- package/templates/.claude/agents/fe-flutter-agent.md +48 -0
- package/templates/.claude/agents/fe-svelte-agent.md +33 -0
- package/templates/.claude/agents/fe-vercel-agent.md +40 -0
- package/templates/.claude/agents/fe-vuejs-agent.md +34 -0
- package/templates/.claude/agents/infra-aws-expert.md +49 -0
- package/templates/.claude/agents/infra-docker-expert.md +49 -0
- package/templates/.claude/agents/lang-golang-expert.md +46 -0
- package/templates/.claude/agents/lang-java21-expert.md +42 -0
- package/templates/.claude/agents/lang-kotlin-expert.md +45 -0
- package/templates/.claude/agents/lang-python-expert.md +45 -0
- package/templates/.claude/agents/lang-rust-expert.md +45 -0
- package/templates/.claude/agents/lang-typescript-expert.md +45 -0
- package/templates/.claude/agents/mgr-claude-code-bible.md +62 -0
- package/templates/.claude/agents/mgr-creator.md +57 -0
- package/templates/.claude/agents/mgr-gitnerd.md +50 -0
- package/templates/.claude/agents/mgr-sauron.md +163 -0
- package/templates/.claude/agents/mgr-supplier.md +39 -0
- package/templates/.claude/agents/mgr-updater.md +40 -0
- package/templates/.claude/agents/qa-engineer.md +36 -0
- package/templates/.claude/agents/qa-planner.md +78 -0
- package/templates/.claude/agents/qa-writer.md +32 -0
- package/templates/.claude/agents/sec-codeql-expert.md +56 -0
- package/templates/.claude/agents/slack-cli-expert.md +98 -0
- package/templates/.claude/agents/souls/lang-golang-expert.soul.md +21 -0
- package/templates/.claude/agents/sys-memory-keeper.md +123 -0
- package/templates/.claude/agents/sys-naggy.md +76 -0
- package/templates/.claude/agents/tool-bun-expert.md +26 -0
- package/templates/.claude/agents/tool-npm-expert.md +31 -0
- package/templates/.claude/agents/tool-optimizer.md +37 -0
- package/templates/.claude/agents/wiki-curator.md +72 -0
- package/templates/.claude/config/required-plugins.json +30 -0
- package/templates/.claude/contexts/dev.md +20 -0
- package/templates/.claude/contexts/ecomode.md +110 -0
- package/templates/.claude/contexts/index.yaml +41 -0
- package/templates/.claude/contexts/research.md +28 -0
- package/templates/.claude/contexts/review.md +23 -0
- package/templates/.claude/hooks/hooks.json +533 -0
- package/templates/.claude/hooks/scripts/adaptive-harness-scan.sh +45 -0
- package/templates/.claude/hooks/scripts/agent-start-recorder.sh +40 -0
- package/templates/.claude/hooks/scripts/agent-teams-advisor.sh +76 -0
- package/templates/.claude/hooks/scripts/audit-log.sh +64 -0
- package/templates/.claude/hooks/scripts/auto-continue-guard.sh +33 -0
- package/templates/.claude/hooks/scripts/content-hash-validator.sh +75 -0
- package/templates/.claude/hooks/scripts/context-budget-advisor.sh +107 -0
- package/templates/.claude/hooks/scripts/cost-cap-advisor.sh +71 -0
- package/templates/.claude/hooks/scripts/cwd-change-detector.sh +36 -0
- package/templates/.claude/hooks/scripts/eval-core-batch-save.sh +46 -0
- package/templates/.claude/hooks/scripts/feedback-collector.sh +92 -0
- package/templates/.claude/hooks/scripts/file-change-validator.sh +26 -0
- package/templates/.claude/hooks/scripts/git-delegation-guard.sh +57 -0
- package/templates/.claude/hooks/scripts/model-escalation-advisor.sh +106 -0
- package/templates/.claude/hooks/scripts/omcodex-auto-update.sh +4 -0
- package/templates/.claude/hooks/scripts/omcustom-auto-update.sh +177 -0
- package/templates/.claude/hooks/scripts/rtk-intercept.sh +77 -0
- package/templates/.claude/hooks/scripts/rule-deletion-guard.sh +60 -0
- package/templates/.claude/hooks/scripts/schema-validator.sh +106 -0
- package/templates/.claude/hooks/scripts/secret-filter.sh +100 -0
- package/templates/.claude/hooks/scripts/session-autofix-prompt.sh +34 -0
- package/templates/.claude/hooks/scripts/session-autofix.sh +146 -0
- package/templates/.claude/hooks/scripts/session-env-check.sh +254 -0
- package/templates/.claude/hooks/scripts/skill-extractor-analyzer.sh +49 -0
- package/templates/.claude/hooks/scripts/stage-blocker.sh +16 -0
- package/templates/.claude/hooks/scripts/stale-todo-scanner.sh +91 -0
- package/templates/.claude/hooks/scripts/stall-detection-advisor.sh +112 -0
- package/templates/.claude/hooks/scripts/stop-console-audit.sh +46 -0
- package/templates/.claude/hooks/scripts/stuck-detector.sh +199 -0
- package/templates/.claude/hooks/scripts/task-outcome-recorder.sh +119 -0
- package/templates/.claude/hooks/scripts/task-state-precompact.sh +58 -0
- package/templates/.claude/hooks/scripts/user-prompt-preprocessor.sh +32 -0
- package/templates/.claude/hooks/skill-count-reminder.sh +34 -0
- package/templates/.claude/install-hooks.sh +100 -0
- package/templates/.claude/ontology/agents.yaml +546 -0
- package/templates/.claude/ontology/graphs/agent-skill.json +102 -0
- package/templates/.claude/ontology/graphs/full-graph.json +629 -0
- package/templates/.claude/ontology/graphs/routing.json +112 -0
- package/templates/.claude/ontology/graphs/skill-rule.json +78 -0
- package/templates/.claude/ontology/rules.yaml +251 -0
- package/templates/.claude/ontology/schema.yaml +144 -0
- package/templates/.claude/ontology/skills.yaml +575 -0
- package/templates/.claude/rules/MAY-optimization.md +42 -0
- package/templates/.claude/rules/MUST-agent-design.md +340 -0
- package/templates/.claude/rules/MUST-agent-identification.md +77 -0
- package/templates/.claude/rules/MUST-agent-teams.md +293 -0
- package/templates/.claude/rules/MUST-completion-verification.md +112 -0
- package/templates/.claude/rules/MUST-continuous-improvement.md +69 -0
- package/templates/.claude/rules/MUST-enforcement-policy.md +50 -0
- package/templates/.claude/rules/MUST-intent-transparency.md +74 -0
- package/templates/.claude/rules/MUST-language-policy.md +28 -0
- package/templates/.claude/rules/MUST-orchestrator-coordination.md +399 -0
- package/templates/.claude/rules/MUST-parallel-execution.md +184 -0
- package/templates/.claude/rules/MUST-permissions.md +32 -0
- package/templates/.claude/rules/MUST-safety.md +23 -0
- package/templates/.claude/rules/MUST-sync-verification.md +145 -0
- package/templates/.claude/rules/MUST-tool-identification.md +97 -0
- package/templates/.claude/rules/SHOULD-ecomode.md +123 -0
- package/templates/.claude/rules/SHOULD-error-handling.md +33 -0
- package/templates/.claude/rules/SHOULD-hud-statusline.md +51 -0
- package/templates/.claude/rules/SHOULD-interaction.md +77 -0
- package/templates/.claude/rules/SHOULD-memory-integration.md +371 -0
- package/templates/.claude/rules/SHOULD-ontology-rag-routing.md +49 -0
- package/templates/.claude/rules/SHOULD-wiki-sync.md +73 -0
- package/templates/.claude/rules/index.yaml +141 -0
- package/templates/.claude/schemas/tool-inputs.json +62 -0
- package/templates/.claude/skills/action-validator/SKILL.md +89 -0
- package/templates/.claude/skills/adaptive-harness/SKILL.md +335 -0
- package/templates/.claude/skills/adversarial-review/SKILL.md +80 -0
- package/templates/.claude/skills/agora/SKILL.md +194 -0
- package/templates/.claude/skills/airflow-best-practices/SKILL.md +94 -0
- package/templates/.claude/skills/alembic-best-practices/SKILL.md +295 -0
- package/templates/.claude/skills/ambiguity-gate/SKILL.md +94 -0
- package/templates/.claude/skills/analysis/SKILL.md +223 -0
- package/templates/.claude/skills/audit-agents/SKILL.md +118 -0
- package/templates/.claude/skills/aws-best-practices/SKILL.md +281 -0
- package/templates/.claude/skills/claude-code-bible/SKILL.md +93 -0
- package/templates/.claude/skills/claude-code-bible/scripts/fetch-docs.js +244 -0
- package/templates/.claude/skills/claude-native/SKILL.md +215 -0
- package/templates/.claude/skills/codex-exec/SKILL.md +206 -0
- package/templates/.claude/skills/codex-exec/scripts/codex-wrapper.cjs +430 -0
- package/templates/.claude/skills/create-agent/SKILL.md +94 -0
- package/templates/.claude/skills/cve-triage/SKILL.md +91 -0
- package/templates/.claude/skills/dag-orchestration/SKILL.md +201 -0
- package/templates/.claude/skills/dbt-best-practices/SKILL.md +55 -0
- package/templates/.claude/skills/de-lead-routing/SKILL.md +230 -0
- package/templates/.claude/skills/deep-plan/SKILL.md +344 -0
- package/templates/.claude/skills/deep-verify/SKILL.md +111 -0
- package/templates/.claude/skills/dev-lead-routing/SKILL.md +161 -0
- package/templates/.claude/skills/dev-refactor/SKILL.md +234 -0
- package/templates/.claude/skills/dev-review/SKILL.md +172 -0
- package/templates/.claude/skills/django-best-practices/SKILL.md +334 -0
- package/templates/.claude/skills/docker-best-practices/SKILL.md +276 -0
- package/templates/.claude/skills/evaluator-optimizer/SKILL.md +421 -0
- package/templates/.claude/skills/fastapi-best-practices/SKILL.md +271 -0
- package/templates/.claude/skills/fix-refs/SKILL.md +109 -0
- package/templates/.claude/skills/flutter-best-practices/SKILL.md +325 -0
- package/templates/.claude/skills/gemini-exec/SKILL.md +215 -0
- package/templates/.claude/skills/gemini-exec/scripts/gemini-wrapper.cjs +485 -0
- package/templates/.claude/skills/go-backend-best-practices/SKILL.md +135 -0
- package/templates/.claude/skills/go-best-practices/SKILL.md +204 -0
- package/templates/.claude/skills/hada-scout/SKILL.md +92 -0
- package/templates/.claude/skills/harness-eval/SKILL.md +95 -0
- package/templates/.claude/skills/harness-synthesizer/SKILL.md +145 -0
- package/templates/.claude/skills/help/SKILL.md +127 -0
- package/templates/.claude/skills/idea/SKILL.md +88 -0
- package/templates/.claude/skills/impeccable-design/SKILL.md +173 -0
- package/templates/.claude/skills/intent-detection/SKILL.md +293 -0
- package/templates/.claude/skills/intent-detection/patterns/agent-triggers.yaml +438 -0
- package/templates/.claude/skills/java21-best-practices/SKILL.md +190 -0
- package/templates/.claude/skills/jinja2-prompts/SKILL.md +86 -0
- package/templates/.claude/skills/kafka-best-practices/SKILL.md +53 -0
- package/templates/.claude/skills/kotlin-best-practices/SKILL.md +257 -0
- package/templates/.claude/skills/lists/SKILL.md +80 -0
- package/templates/.claude/skills/memory-management/SKILL.md +196 -0
- package/templates/.claude/skills/memory-recall/SKILL.md +172 -0
- package/templates/.claude/skills/memory-save/SKILL.md +128 -0
- package/templates/.claude/skills/model-escalation/SKILL.md +62 -0
- package/templates/.claude/skills/monitoring-setup/SKILL.md +215 -0
- package/templates/.claude/skills/multi-model-verification/SKILL.md +130 -0
- package/templates/.claude/skills/npm-audit/SKILL.md +74 -0
- package/templates/.claude/skills/npm-publish/SKILL.md +65 -0
- package/templates/.claude/skills/npm-version/SKILL.md +104 -0
- package/templates/.claude/skills/omcodex-auto-improve/SKILL.md +136 -0
- package/templates/.claude/skills/omcodex-feedback/SKILL.md +205 -0
- package/templates/.claude/skills/omcodex-improve-report/SKILL.md +65 -0
- package/templates/.claude/skills/omcodex-loop/SKILL.md +45 -0
- package/templates/.claude/skills/omcodex-release-notes/SKILL.md +117 -0
- package/templates/.claude/skills/omcodex-takeover/SKILL.md +115 -0
- package/templates/.claude/skills/omcodex-web/SKILL.md +95 -0
- package/templates/.claude/skills/optimize-analyze/SKILL.md +57 -0
- package/templates/.claude/skills/optimize-bundle/SKILL.md +69 -0
- package/templates/.claude/skills/optimize-report/SKILL.md +76 -0
- package/templates/.claude/skills/peer-messaging/SKILL.md +59 -0
- package/templates/.claude/skills/pipeline/SKILL.md +103 -0
- package/templates/.claude/skills/pipeline-architecture-patterns/SKILL.md +84 -0
- package/templates/.claude/skills/pipeline-guards/SKILL.md +173 -0
- package/templates/.claude/skills/post-release-followup/SKILL.md +134 -0
- package/templates/.claude/skills/postgres-best-practices/SKILL.md +67 -0
- package/templates/.claude/skills/pr-auto-improve/SKILL.md +129 -0
- package/templates/.claude/skills/professor-triage/SKILL.md +321 -0
- package/templates/.claude/skills/python-best-practices/SKILL.md +223 -0
- package/templates/.claude/skills/qa-lead-routing/SKILL.md +104 -0
- package/templates/.claude/skills/react-best-practices/SKILL.md +102 -0
- package/templates/.claude/skills/reasoning-sandwich/SKILL.md +64 -0
- package/templates/.claude/skills/redis-best-practices/SKILL.md +84 -0
- package/templates/.claude/skills/release-plan/SKILL.md +207 -0
- package/templates/.claude/skills/research/SKILL.md +493 -0
- package/templates/.claude/skills/result-aggregation/SKILL.md +165 -0
- package/templates/.claude/skills/rtk-exec/SKILL.md +199 -0
- package/templates/.claude/skills/rtk-exec/scripts/rtk-wrapper.cjs +377 -0
- package/templates/.claude/skills/rust-best-practices/SKILL.md +268 -0
- package/templates/.claude/skills/sauron-watch/SKILL.md +239 -0
- package/templates/.claude/skills/scout/SKILL.md +250 -0
- package/templates/.claude/skills/sdd/SKILL.md +24 -0
- package/templates/.claude/skills/sdd-dev/SKILL.md +257 -0
- package/templates/.claude/skills/sdd-development/SKILL.md +24 -0
- package/templates/.claude/skills/secretary-routing/SKILL.md +132 -0
- package/templates/.claude/skills/skill-extractor/SKILL.md +155 -0
- package/templates/.claude/skills/skills-sh-search/SKILL.md +210 -0
- package/templates/.claude/skills/snowflake-best-practices/SKILL.md +66 -0
- package/templates/.claude/skills/spark-best-practices/SKILL.md +53 -0
- package/templates/.claude/skills/springboot-best-practices/SKILL.md +74 -0
- package/templates/.claude/skills/springboot-best-practices/examples/config-properties-example.java +22 -0
- package/templates/.claude/skills/springboot-best-practices/examples/controller-example.java +28 -0
- package/templates/.claude/skills/springboot-best-practices/examples/controller-test-example.java +33 -0
- package/templates/.claude/skills/springboot-best-practices/examples/entity-example.java +22 -0
- package/templates/.claude/skills/springboot-best-practices/examples/exception-handler-example.java +30 -0
- package/templates/.claude/skills/springboot-best-practices/examples/repository-example.java +17 -0
- package/templates/.claude/skills/springboot-best-practices/examples/repository-test-example.java +23 -0
- package/templates/.claude/skills/springboot-best-practices/examples/security-config-example.java +27 -0
- package/templates/.claude/skills/springboot-best-practices/examples/service-example.java +33 -0
- package/templates/.claude/skills/status/SKILL.md +155 -0
- package/templates/.claude/skills/structured-dev-cycle/SKILL.md +200 -0
- package/templates/.claude/skills/stuck-recovery/SKILL.md +80 -0
- package/templates/.claude/skills/supabase-postgres-best-practices/SKILL.md +100 -0
- package/templates/.claude/skills/systematic-debugging/SKILL.md +288 -0
- package/templates/.claude/skills/systematic-debugging/condition-based-waiting-example.ts +278 -0
- package/templates/.claude/skills/systematic-debugging/condition-based-waiting.md +240 -0
- package/templates/.claude/skills/systematic-debugging/defense-in-depth.md +252 -0
- package/templates/.claude/skills/systematic-debugging/find-polluter.sh +147 -0
- package/templates/.claude/skills/systematic-debugging/root-cause-tracing.md +87 -0
- package/templates/.claude/skills/task-decomposition/SKILL.md +197 -0
- package/templates/.claude/skills/typescript-best-practices/SKILL.md +322 -0
- package/templates/.claude/skills/update-docs/SKILL.md +142 -0
- package/templates/.claude/skills/update-external/SKILL.md +169 -0
- package/templates/.claude/skills/vercel-deploy/SKILL.md +75 -0
- package/templates/.claude/skills/web-design-guidelines/SKILL.md +119 -0
- package/templates/.claude/skills/wiki/SKILL.md +426 -0
- package/templates/.claude/skills/wiki-rag/SKILL.md +154 -0
- package/templates/.claude/skills/worker-reviewer-pipeline/SKILL.md +165 -0
- package/templates/.claude/skills/writing-clearly-and-concisely/SKILL.md +66 -0
- package/templates/.claude/statusline.sh +380 -0
- package/templates/.claude/uninstall-hooks.sh +52 -0
- package/templates/.github/workflows/wiki-sync.yml +132 -0
- package/templates/AGENTS.md.en +255 -0
- package/templates/AGENTS.md.ko +255 -0
- package/templates/CLAUDE.md +263 -0
- package/templates/CLAUDE.md.en +256 -0
- package/templates/CLAUDE.md.ko +256 -0
- package/templates/deprecated-files.json +10 -0
- package/templates/guides/agents-md-quality/README.md +110 -0
- package/templates/guides/airflow/README.md +47 -0
- package/templates/guides/alembic/README.md +438 -0
- package/templates/guides/aws/common-patterns.md +169 -0
- package/templates/guides/aws/index.yaml +26 -0
- package/templates/guides/aws/well-architected.md +143 -0
- package/templates/guides/cc-token-saver/README.md +97 -0
- package/templates/guides/claude-code/01-overview.md +42 -0
- package/templates/guides/claude-code/03-tools.md +107 -0
- package/templates/guides/claude-code/04-agent-skills.md +90 -0
- package/templates/guides/claude-code/05-agent-sdk.md +129 -0
- package/templates/guides/claude-code/06-mcp.md +165 -0
- package/templates/guides/claude-code/07-prompt-engineering.md +100 -0
- package/templates/guides/claude-code/08-testing.md +56 -0
- package/templates/guides/claude-code/09-guardrails.md +78 -0
- package/templates/guides/claude-code/10-monitoring.md +87 -0
- package/templates/guides/claude-code/11-sub-agents.md +159 -0
- package/templates/guides/claude-code/12-workflow-patterns.md +182 -0
- package/templates/guides/claude-code/13-cli-flags.md +151 -0
- package/templates/guides/claude-code/index.yaml +61 -0
- package/templates/guides/dbt/README.md +32 -0
- package/templates/guides/django-best-practices/README.md +476 -0
- package/templates/guides/docker/compose-best-practices.md +284 -0
- package/templates/guides/docker/dockerfile-best-practices.md +262 -0
- package/templates/guides/docker/index.yaml +26 -0
- package/templates/guides/drizzle-orm/README.md +69 -0
- package/templates/guides/elements-of-style/elements-of-style.html +2609 -0
- package/templates/guides/fastapi/best-practices.md +232 -0
- package/templates/guides/fastapi/index.yaml +21 -0
- package/templates/guides/flutter/architecture.md +141 -0
- package/templates/guides/flutter/fundamentals.md +119 -0
- package/templates/guides/flutter/index.yaml +44 -0
- package/templates/guides/flutter/performance.md +119 -0
- package/templates/guides/flutter/security.md +120 -0
- package/templates/guides/flutter/state-management.md +144 -0
- package/templates/guides/flutter/testing.md +155 -0
- package/templates/guides/git-worktree-workflow/README.md +138 -0
- package/templates/guides/go-backend/index.yaml +26 -0
- package/templates/guides/go-backend/project-layout.md +243 -0
- package/templates/guides/go-backend/uber-style.md +212 -0
- package/templates/guides/golang/concurrency.md +282 -0
- package/templates/guides/golang/effective-go.md +309 -0
- package/templates/guides/golang/error-handling.md +250 -0
- package/templates/guides/golang/index.yaml +27 -0
- package/templates/guides/hook-data-flow/README.md +135 -0
- package/templates/guides/iceberg/README.md +49 -0
- package/templates/guides/impeccable-design/color-and-contrast.md +278 -0
- package/templates/guides/impeccable-design/index.yaml +12 -0
- package/templates/guides/impeccable-design/motion-design.md +390 -0
- package/templates/guides/impeccable-design/typography.md +386 -0
- package/templates/guides/impeccable-design/ux-writing.md +400 -0
- package/templates/guides/index.yaml +265 -0
- package/templates/guides/java21/index.yaml +29 -0
- package/templates/guides/java21/java-style-guide.md +248 -0
- package/templates/guides/java21/modern-java21.md +303 -0
- package/templates/guides/kafka/README.md +32 -0
- package/templates/guides/kotlin/coding-conventions.md +247 -0
- package/templates/guides/kotlin/idioms.md +234 -0
- package/templates/guides/kotlin/index.yaml +26 -0
- package/templates/guides/multi-model-routing/README.md +101 -0
- package/templates/guides/multi-provider-exec/README.md +83 -0
- package/templates/guides/postgres/README.md +58 -0
- package/templates/guides/python/index.yaml +26 -0
- package/templates/guides/python/pep8-style-guide.md +202 -0
- package/templates/guides/python/zen-of-python.md +79 -0
- package/templates/guides/redis/README.md +50 -0
- package/templates/guides/rust/error-handling.md +262 -0
- package/templates/guides/rust/index.yaml +26 -0
- package/templates/guides/rust/ownership.md +180 -0
- package/templates/guides/skill-bundle-design/README.md +106 -0
- package/templates/guides/slack-cli/README.md +145 -0
- package/templates/guides/snowflake/README.md +32 -0
- package/templates/guides/spark/README.md +32 -0
- package/templates/guides/springboot/best-practices.md +361 -0
- package/templates/guides/springboot/index.yaml +22 -0
- package/templates/guides/supabase-postgres/README.md +32 -0
- package/templates/guides/supabase-postgres/index.yaml +19 -0
- package/templates/guides/typescript/advanced-types.md +225 -0
- package/templates/guides/typescript/index.yaml +26 -0
- package/templates/guides/typescript/type-system.md +219 -0
- package/templates/guides/web-design/accessibility.md +66 -0
- package/templates/guides/web-design/index.yaml +20 -0
- package/templates/guides/web-design/performance.md +102 -0
- package/templates/guides/web-scraping/README.md +926 -0
- package/templates/guides/web-scraping/index.yaml +19 -0
- package/templates/guides/worktree-lifecycle/README.md +104 -0
- package/templates/index.yaml +18 -0
- package/templates/manifest.json +49 -0
- package/templates/workflows/auto-dev.yaml +46 -0
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* fetch-docs.js
|
|
5
|
+
*
|
|
6
|
+
* Fetches Claude Code official documentation from code.claude.com
|
|
7
|
+
* and saves it locally for reference.
|
|
8
|
+
*
|
|
9
|
+
* Usage:
|
|
10
|
+
* node fetch-docs.js [--force] [--output <dir>]
|
|
11
|
+
*
|
|
12
|
+
* Options:
|
|
13
|
+
* --force Skip 24-hour cache check
|
|
14
|
+
* --output <dir> Output directory (default: ~/.claude/references/claude-code/)
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
const https = require('https');
|
|
18
|
+
const fs = require('fs');
|
|
19
|
+
const path = require('path');
|
|
20
|
+
const { homedir } = require('os');
|
|
21
|
+
|
|
22
|
+
// Configuration
|
|
23
|
+
const LLMS_TXT_URL = 'https://code.claude.com/docs/llms.txt';
|
|
24
|
+
const DEFAULT_OUTPUT_DIR = path.join(homedir(), '.claude', 'references', 'claude-code');
|
|
25
|
+
const FETCH_DELAY_MS = 200;
|
|
26
|
+
const CACHE_HOURS = 24;
|
|
27
|
+
|
|
28
|
+
// Parse CLI arguments
|
|
29
|
+
function parseArgs() {
|
|
30
|
+
const args = {
|
|
31
|
+
force: false,
|
|
32
|
+
outputDir: DEFAULT_OUTPUT_DIR,
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
for (let i = 2; i < process.argv.length; i++) {
|
|
36
|
+
const arg = process.argv[i];
|
|
37
|
+
if (arg === '--force') {
|
|
38
|
+
args.force = true;
|
|
39
|
+
} else if (arg === '--output' && i + 1 < process.argv.length) {
|
|
40
|
+
args.outputDir = process.argv[++i];
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
return args;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// Check if cache is fresh
|
|
48
|
+
function isCacheFresh(outputDir) {
|
|
49
|
+
const lastUpdatedPath = path.join(outputDir, 'last-updated.txt');
|
|
50
|
+
|
|
51
|
+
if (!fs.existsSync(lastUpdatedPath)) {
|
|
52
|
+
return false;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
try {
|
|
56
|
+
const content = fs.readFileSync(lastUpdatedPath, 'utf-8').trim();
|
|
57
|
+
const lastUpdated = new Date(content);
|
|
58
|
+
const now = new Date();
|
|
59
|
+
const hoursSince = (now - lastUpdated) / (1000 * 60 * 60);
|
|
60
|
+
|
|
61
|
+
return hoursSince < CACHE_HOURS;
|
|
62
|
+
} catch (error) {
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
// Fetch URL with redirect support
|
|
68
|
+
function fetchUrl(url) {
|
|
69
|
+
return new Promise((resolve, reject) => {
|
|
70
|
+
https.get(url, (res) => {
|
|
71
|
+
// Handle redirects
|
|
72
|
+
if (res.statusCode >= 300 && res.statusCode < 400 && res.headers.location) {
|
|
73
|
+
return fetchUrl(res.headers.location).then(resolve).catch(reject);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
if (res.statusCode !== 200) {
|
|
77
|
+
return reject(new Error(`HTTP ${res.statusCode}: ${url}`));
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
let data = '';
|
|
81
|
+
res.on('data', (chunk) => data += chunk);
|
|
82
|
+
res.on('end', () => resolve(data));
|
|
83
|
+
}).on('error', reject);
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
// Extract documentation URLs from llms.txt
|
|
88
|
+
function extractDocUrls(llmsTxtContent) {
|
|
89
|
+
const urls = [];
|
|
90
|
+
|
|
91
|
+
// Match URLs in markdown links: [title](url) and bare URLs
|
|
92
|
+
const markdownLinkRegex = /\(https?:\/\/code\.claude\.com\/docs\/[^)]+\)/g;
|
|
93
|
+
const bareLinkRegex = /^https?:\/\/code\.claude\.com\/docs\/\S+/gm;
|
|
94
|
+
|
|
95
|
+
let match;
|
|
96
|
+
while ((match = markdownLinkRegex.exec(llmsTxtContent)) !== null) {
|
|
97
|
+
// Remove surrounding parentheses
|
|
98
|
+
urls.push(match[0].slice(1, -1));
|
|
99
|
+
}
|
|
100
|
+
while ((match = bareLinkRegex.exec(llmsTxtContent)) !== null) {
|
|
101
|
+
urls.push(match[0]);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
return [...new Set(urls)]; // Remove duplicates
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
// Convert URL to filename
|
|
108
|
+
function urlToFilename(url) {
|
|
109
|
+
const urlObj = new URL(url);
|
|
110
|
+
let filename = urlObj.pathname.replace(/^\/docs\//, '').replace(/\/$/, '');
|
|
111
|
+
|
|
112
|
+
if (!filename) {
|
|
113
|
+
filename = 'index';
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
// Remove language prefix (e.g., "en/") to keep filenames clean
|
|
117
|
+
filename = filename.replace(/^en\//, '');
|
|
118
|
+
|
|
119
|
+
// Replace remaining slashes with dashes for nested paths
|
|
120
|
+
filename = filename.replace(/\//g, '-');
|
|
121
|
+
|
|
122
|
+
if (!filename.endsWith('.md')) {
|
|
123
|
+
filename += '.md';
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
return filename;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
// Sleep utility
|
|
130
|
+
function sleep(ms) {
|
|
131
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
// Ensure directory exists
|
|
135
|
+
function ensureDir(dirPath) {
|
|
136
|
+
if (!fs.existsSync(dirPath)) {
|
|
137
|
+
fs.mkdirSync(dirPath, { recursive: true });
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
// Main execution
|
|
142
|
+
async function main() {
|
|
143
|
+
const args = parseArgs();
|
|
144
|
+
const { force, outputDir } = args;
|
|
145
|
+
|
|
146
|
+
console.log('Claude Code Documentation Fetcher');
|
|
147
|
+
console.log('==================================\n');
|
|
148
|
+
|
|
149
|
+
// Check cache freshness
|
|
150
|
+
if (!force && isCacheFresh(outputDir)) {
|
|
151
|
+
console.log('✓ Cache is fresh (less than 24 hours old)');
|
|
152
|
+
console.log(' Use --force to bypass cache check\n');
|
|
153
|
+
console.log(`Output directory: ${outputDir}`);
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
// Ensure output directory exists
|
|
158
|
+
ensureDir(outputDir);
|
|
159
|
+
|
|
160
|
+
const stats = {
|
|
161
|
+
total: 0,
|
|
162
|
+
success: 0,
|
|
163
|
+
failed: 0,
|
|
164
|
+
failures: [],
|
|
165
|
+
};
|
|
166
|
+
|
|
167
|
+
try {
|
|
168
|
+
// Step 1: Fetch llms.txt
|
|
169
|
+
console.log('Fetching llms.txt...');
|
|
170
|
+
const llmsTxtContent = await fetchUrl(LLMS_TXT_URL);
|
|
171
|
+
console.log('✓ llms.txt fetched\n');
|
|
172
|
+
|
|
173
|
+
// Save llms.txt itself
|
|
174
|
+
const llmsTxtPath = path.join(outputDir, 'llms.txt');
|
|
175
|
+
fs.writeFileSync(llmsTxtPath, llmsTxtContent, 'utf-8');
|
|
176
|
+
|
|
177
|
+
// Step 2: Extract documentation URLs
|
|
178
|
+
const docUrls = extractDocUrls(llmsTxtContent);
|
|
179
|
+
|
|
180
|
+
if (docUrls.length === 0) {
|
|
181
|
+
console.log('⚠ No documentation URLs found in llms.txt');
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
console.log(`Found ${docUrls.length} documentation URL(s)\n`);
|
|
186
|
+
stats.total = docUrls.length;
|
|
187
|
+
|
|
188
|
+
// Step 3: Fetch each documentation page
|
|
189
|
+
for (let i = 0; i < docUrls.length; i++) {
|
|
190
|
+
const url = docUrls[i];
|
|
191
|
+
const filename = urlToFilename(url);
|
|
192
|
+
const filepath = path.join(outputDir, filename);
|
|
193
|
+
|
|
194
|
+
try {
|
|
195
|
+
console.log(`[${i + 1}/${docUrls.length}] Fetching ${url}...`);
|
|
196
|
+
const content = await fetchUrl(url);
|
|
197
|
+
fs.writeFileSync(filepath, content, 'utf-8');
|
|
198
|
+
console.log(` ✓ Saved to ${filename}`);
|
|
199
|
+
stats.success++;
|
|
200
|
+
} catch (error) {
|
|
201
|
+
console.log(` ✗ Failed: ${error.message}`);
|
|
202
|
+
stats.failed++;
|
|
203
|
+
stats.failures.push({ url, error: error.message });
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
// Delay between requests
|
|
207
|
+
if (i < docUrls.length - 1) {
|
|
208
|
+
await sleep(FETCH_DELAY_MS);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
// Step 4: Write last-updated timestamp
|
|
213
|
+
const timestamp = new Date().toISOString();
|
|
214
|
+
const lastUpdatedPath = path.join(outputDir, 'last-updated.txt');
|
|
215
|
+
fs.writeFileSync(lastUpdatedPath, timestamp, 'utf-8');
|
|
216
|
+
|
|
217
|
+
// Summary
|
|
218
|
+
console.log('\n==================================');
|
|
219
|
+
console.log('Summary:');
|
|
220
|
+
console.log(` Total URLs: ${stats.total}`);
|
|
221
|
+
console.log(` Downloaded: ${stats.success}`);
|
|
222
|
+
console.log(` Failed: ${stats.failed}`);
|
|
223
|
+
console.log(` Save location: ${outputDir}`);
|
|
224
|
+
console.log(` Last updated: ${timestamp}`);
|
|
225
|
+
|
|
226
|
+
if (stats.failures.length > 0) {
|
|
227
|
+
console.log('\nFailures:');
|
|
228
|
+
stats.failures.forEach(({ url, error }) => {
|
|
229
|
+
console.log(` - ${url}`);
|
|
230
|
+
console.log(` ${error}`);
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
} catch (error) {
|
|
235
|
+
console.error('\n✗ Fatal error:', error.message);
|
|
236
|
+
process.exit(1);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
// Run
|
|
241
|
+
main().catch(error => {
|
|
242
|
+
console.error('Unexpected error:', error);
|
|
243
|
+
process.exit(1);
|
|
244
|
+
});
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: claude-native
|
|
3
|
+
description: Monitor Claude Code releases and auto-generate GitHub issues for each new version
|
|
4
|
+
scope: core
|
|
5
|
+
user-invocable: true
|
|
6
|
+
argument-hint: "[--backfill] [--dry-run]"
|
|
7
|
+
version: 1.0.0
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Claude Native Skill
|
|
11
|
+
|
|
12
|
+
Monitor Claude Code (the CLI tool) release history and auto-generate GitHub issues for each new version that has not yet been tracked. Replaces the deprecated customclaw Airflow-based monitoring (deprecated 2026-03-18).
|
|
13
|
+
|
|
14
|
+
## Options
|
|
15
|
+
|
|
16
|
+
```
|
|
17
|
+
--backfill Process ALL versions >= v2.1.86 (default behavior when flag is present)
|
|
18
|
+
Without flag: only check the latest 5 releases
|
|
19
|
+
--dry-run Show what issues would be created without actually creating them
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Workflow
|
|
23
|
+
|
|
24
|
+
### Phase 1: Fetch CC Releases
|
|
25
|
+
|
|
26
|
+
Fetch all Claude Code releases from the GitHub API:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
gh api repos/anthropics/claude-code/releases \
|
|
30
|
+
--paginate \
|
|
31
|
+
--jq '.[] | {tag_name: .tag_name, published_at: .published_at, html_url: .html_url, body: .body}'
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
- Without `--backfill`: fetch only the latest 5 releases (`--limit 5` or first 5 results)
|
|
35
|
+
- With `--backfill`: fetch all releases (use `--paginate`)
|
|
36
|
+
- Filter: only process versions >= v2.1.86 (monitoring stopped after v2.1.85 / issue #683)
|
|
37
|
+
|
|
38
|
+
### Phase 2: Check Existing Issues
|
|
39
|
+
|
|
40
|
+
Search for existing tracking issues to avoid duplicates:
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
gh issue list \
|
|
44
|
+
--state all \
|
|
45
|
+
--search "[Claude Code v" \
|
|
46
|
+
--json number,title \
|
|
47
|
+
--limit 100
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Build a set of already-tracked versions by extracting version strings from issue titles matching the pattern `[Claude Code v{version}]`.
|
|
51
|
+
|
|
52
|
+
### Phase 3: Dedup
|
|
53
|
+
|
|
54
|
+
For each fetched release version:
|
|
55
|
+
- Parse the version string from `tag_name` (e.g., `v2.1.86`)
|
|
56
|
+
- If a matching issue title already exists → skip (already tracked)
|
|
57
|
+
- If no matching issue → add to "needs issue" list
|
|
58
|
+
|
|
59
|
+
### Phase 4: Create Issues (or Dry-Run Report)
|
|
60
|
+
|
|
61
|
+
#### Dry-Run Mode (`--dry-run`)
|
|
62
|
+
|
|
63
|
+
Print a report of what would be created:
|
|
64
|
+
|
|
65
|
+
```
|
|
66
|
+
[Dry Run] Would create issues for:
|
|
67
|
+
- v2.1.86 (published: 2026-01-15)
|
|
68
|
+
- v2.1.87 (published: 2026-01-22)
|
|
69
|
+
...
|
|
70
|
+
No issues were created.
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
#### Live Mode
|
|
74
|
+
|
|
75
|
+
For each version in the "needs issue" list, create a GitHub issue:
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
gh issue create \
|
|
79
|
+
--title "[Claude Code v{version}] New release detected" \
|
|
80
|
+
--label "automated,claude-code-release" \
|
|
81
|
+
--body "{body}"
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Issue body format (matching the pattern established by issue #683):
|
|
85
|
+
|
|
86
|
+
```markdown
|
|
87
|
+
# Claude Code v{version}
|
|
88
|
+
|
|
89
|
+
**Release:** v{version}
|
|
90
|
+
**Published:** {published_at}
|
|
91
|
+
**Link:** {html_url}
|
|
92
|
+
|
|
93
|
+
## Release Summary
|
|
94
|
+
|
|
95
|
+
{release_notes_body — truncated to first 2000 chars if too long}
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
## Action Items
|
|
100
|
+
|
|
101
|
+
- [ ] Review release notes for impact on oh-my-customcodex
|
|
102
|
+
- [ ] Update agent definitions if new Claude Code features affect agents
|
|
103
|
+
- [ ] Test compatibility with current oh-my-customcodex version
|
|
104
|
+
- [ ] Update AGENTS.md if new capabilities are relevant
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
_This issue was created by the `/omcodex:claude-native` skill._
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
**Notes:**
|
|
112
|
+
- If `body` from the release is empty, use `_No release notes provided._`
|
|
113
|
+
- Truncate release body at 2000 characters and append `... (truncated)` if needed
|
|
114
|
+
- The `automated` and `claude-code-release` labels must exist in the repository; create them if missing:
|
|
115
|
+
```bash
|
|
116
|
+
gh label create "automated" --color "#0075ca" --description "Automated issue" 2>/dev/null || true
|
|
117
|
+
gh label create "claude-code-release" --color "#e4e669" --description "Claude Code release tracking" 2>/dev/null || true
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
### Phase 5: Report Results
|
|
121
|
+
|
|
122
|
+
After processing all versions:
|
|
123
|
+
|
|
124
|
+
```
|
|
125
|
+
[claude-native] Scan complete
|
|
126
|
+
|
|
127
|
+
Versions checked: {N}
|
|
128
|
+
New issues created: {M}
|
|
129
|
+
|
|
130
|
+
Created:
|
|
131
|
+
- #1234 [Claude Code v2.1.86] New release detected
|
|
132
|
+
- #1235 [Claude Code v2.1.87] New release detected
|
|
133
|
+
|
|
134
|
+
Already tracked (skipped):
|
|
135
|
+
- v2.1.85 → #683
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
If no new releases found:
|
|
139
|
+
|
|
140
|
+
```
|
|
141
|
+
[claude-native] No new releases found. All versions >= v2.1.86 are already tracked.
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
## Version Filtering Logic
|
|
145
|
+
|
|
146
|
+
```
|
|
147
|
+
MIN_VERSION = "2.1.86"
|
|
148
|
+
|
|
149
|
+
For each release:
|
|
150
|
+
version = strip_v_prefix(tag_name) # "v2.1.86" → "2.1.86"
|
|
151
|
+
parts = split(version, ".") # ["2", "1", "86"]
|
|
152
|
+
if compare_semver(version, MIN_VERSION) >= 0:
|
|
153
|
+
include
|
|
154
|
+
else:
|
|
155
|
+
skip
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
Semver comparison: major → minor → patch (all numeric). Pre-release suffixes (e.g., `-beta`) are included and compared lexicographically after numeric parts.
|
|
159
|
+
|
|
160
|
+
## Error Handling
|
|
161
|
+
|
|
162
|
+
| Error | Action |
|
|
163
|
+
|-------|--------|
|
|
164
|
+
| `gh` not authenticated | Report: "Error: gh CLI not authenticated. Run `gh auth login` first." |
|
|
165
|
+
| Rate limit hit | Report current status, list remaining versions |
|
|
166
|
+
| Label creation fails | Warn and continue (issue created without label) |
|
|
167
|
+
| Release body parse error | Use empty body fallback, continue |
|
|
168
|
+
|
|
169
|
+
## Integration Options
|
|
170
|
+
|
|
171
|
+
### Manual
|
|
172
|
+
|
|
173
|
+
```
|
|
174
|
+
/omcodex:claude-native
|
|
175
|
+
/omcodex:claude-native --backfill
|
|
176
|
+
/omcodex:claude-native --dry-run
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
### Automatic (SessionStart Hook)
|
|
180
|
+
|
|
181
|
+
Can be integrated into the SessionStart hook to check for new releases at session start:
|
|
182
|
+
|
|
183
|
+
```json
|
|
184
|
+
{
|
|
185
|
+
"SessionStart": [
|
|
186
|
+
{
|
|
187
|
+
"command": "bash .codex/hooks/scripts/claude-native-check.sh"
|
|
188
|
+
}
|
|
189
|
+
]
|
|
190
|
+
}
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
A lightweight wrapper script can run a `--dry-run` check and notify if new releases exist.
|
|
194
|
+
|
|
195
|
+
### Scheduled (CronCreate)
|
|
196
|
+
|
|
197
|
+
Can be set up as a scheduled remote agent using `/schedule`:
|
|
198
|
+
|
|
199
|
+
```
|
|
200
|
+
/schedule "daily at 9am: /omcodex:claude-native"
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
Or via CronCreate MCP tool for programmatic scheduling.
|
|
204
|
+
|
|
205
|
+
## Prerequisites
|
|
206
|
+
|
|
207
|
+
- `gh` CLI installed and authenticated (`gh auth status`)
|
|
208
|
+
- Repository: `baekenough/oh-my-customcodex` (default, detected from git remote)
|
|
209
|
+
- Labels `automated` and `claude-code-release` (auto-created if missing)
|
|
210
|
+
|
|
211
|
+
## Background
|
|
212
|
+
|
|
213
|
+
- Last manually tracked release: v2.1.85 (issue #683)
|
|
214
|
+
- Monitoring gap: v2.1.86 onwards (customclaw deprecated 2026-03-18)
|
|
215
|
+
- This skill fills the monitoring gap and provides ongoing tracking
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: codex-exec
|
|
3
|
+
description: Execute OpenAI Codex CLI prompts and return results
|
|
4
|
+
scope: core
|
|
5
|
+
argument-hint: "<prompt> [--json] [--output <path>] [--model <name>] [--timeout <ms>] [--effort <level>]"
|
|
6
|
+
user-invocable: true
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Codex Exec Skill
|
|
10
|
+
|
|
11
|
+
Execute OpenAI Codex CLI prompts in non-interactive mode and return structured results. Enables Claude + Codex hybrid workflows.
|
|
12
|
+
|
|
13
|
+
## Options
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
<prompt> Required. The prompt to send to Codex CLI
|
|
17
|
+
--json Return structured JSON Lines output
|
|
18
|
+
--output <path> Save final message to file
|
|
19
|
+
--model <name> Model override (default: Codex CLI default model)
|
|
20
|
+
--timeout <ms> Execution timeout (default: 120000, max: 600000)
|
|
21
|
+
--full-auto Enable auto-approval mode (codex -a full-auto)
|
|
22
|
+
--working-dir Working directory for Codex execution
|
|
23
|
+
--effort <level> Set reasoning effort level (minimal, low, medium, high, xhigh)
|
|
24
|
+
Maps to Codex CLI's model_reasoning_effort config
|
|
25
|
+
Default: uses Codex CLI's configured default
|
|
26
|
+
Recommended: xhigh for research/analysis tasks
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Workflow
|
|
30
|
+
|
|
31
|
+
```
|
|
32
|
+
1. Pre-checks
|
|
33
|
+
- Verify `codex` binary is installed (which codex || npx codex --version)
|
|
34
|
+
- Verify authentication (OPENAI_API_KEY or logged in)
|
|
35
|
+
2. Build command
|
|
36
|
+
- Base: codex exec --ephemeral "<prompt>"
|
|
37
|
+
- Apply options: --json, --model, --full-auto, -C <dir>
|
|
38
|
+
- Set --working-dir if specified
|
|
39
|
+
3. Execute
|
|
40
|
+
- Run via Bash tool with timeout (default 2min, max 10min)
|
|
41
|
+
- Or use helper script: node .codex/skills/codex-exec/scripts/codex-wrapper.cjs
|
|
42
|
+
4. Parse output
|
|
43
|
+
- Text mode: return raw stdout
|
|
44
|
+
- JSON mode: parse JSON Lines, extract final assistant message
|
|
45
|
+
5. Report results
|
|
46
|
+
- Format output with execution metadata
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Safety Defaults
|
|
50
|
+
|
|
51
|
+
- `--ephemeral`: No session persistence (conversations not saved)
|
|
52
|
+
- Default mode: Normal approval (Codex prompts for confirmation)
|
|
53
|
+
- Override with `--full-auto` only when explicitly requested
|
|
54
|
+
|
|
55
|
+
## Output Format
|
|
56
|
+
|
|
57
|
+
### Success (Text Mode)
|
|
58
|
+
```
|
|
59
|
+
[Codex Exec] Completed
|
|
60
|
+
|
|
61
|
+
Model: (default)
|
|
62
|
+
Duration: 23.4s
|
|
63
|
+
Working Dir: /path/to/project
|
|
64
|
+
|
|
65
|
+
--- Output ---
|
|
66
|
+
{codex response text}
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### Success (JSON Mode)
|
|
70
|
+
```
|
|
71
|
+
[Codex Exec] Completed (JSON)
|
|
72
|
+
|
|
73
|
+
Model: (default)
|
|
74
|
+
Duration: 23.4s
|
|
75
|
+
Events: 12
|
|
76
|
+
|
|
77
|
+
--- Final Message ---
|
|
78
|
+
{extracted final assistant message}
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### Failure
|
|
82
|
+
```
|
|
83
|
+
[Codex Exec] Failed
|
|
84
|
+
|
|
85
|
+
Error: {error_message}
|
|
86
|
+
Exit Code: {code}
|
|
87
|
+
Suggested Fix: {suggestion}
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
## Helper Script
|
|
91
|
+
|
|
92
|
+
For complex executions, use the wrapper script:
|
|
93
|
+
```bash
|
|
94
|
+
node .codex/skills/codex-exec/scripts/codex-wrapper.cjs --prompt "your prompt" [options]
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
The wrapper provides:
|
|
98
|
+
- Environment validation (binary + auth checks)
|
|
99
|
+
- Safe command construction
|
|
100
|
+
- JSON Lines parsing with event extraction
|
|
101
|
+
- Structured JSON output
|
|
102
|
+
- Timeout handling with graceful termination
|
|
103
|
+
|
|
104
|
+
## Examples
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
# Simple text prompt
|
|
108
|
+
codex-exec "explain what this project does"
|
|
109
|
+
|
|
110
|
+
# JSON output with model override
|
|
111
|
+
codex-exec "list all TODO items" --json
|
|
112
|
+
|
|
113
|
+
# Save output to file
|
|
114
|
+
codex-exec "generate a README" --output ./README.md
|
|
115
|
+
|
|
116
|
+
# Full auto mode with custom timeout
|
|
117
|
+
codex-exec "fix the failing tests" --full-auto --timeout 300000
|
|
118
|
+
|
|
119
|
+
# Specify working directory
|
|
120
|
+
codex-exec "analyze the codebase" --working-dir /path/to/project
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
## Integration
|
|
124
|
+
|
|
125
|
+
Works with the orchestrator pattern:
|
|
126
|
+
- Main conversation delegates Codex execution via this skill
|
|
127
|
+
- Results are returned to the main conversation for further processing
|
|
128
|
+
- Can be chained with other skills (e.g., dev-review after Codex generates code)
|
|
129
|
+
|
|
130
|
+
## Availability Check
|
|
131
|
+
|
|
132
|
+
codex-exec requires the Codex CLI binary to be installed and authenticated. The skill is only usable when:
|
|
133
|
+
|
|
134
|
+
1. `codex` binary is found in PATH (`which codex` succeeds)
|
|
135
|
+
2. Authentication is valid (OPENAI_API_KEY set or `codex` logged in)
|
|
136
|
+
|
|
137
|
+
If either check fails, this skill cannot be used. Fall back to Claude agents for the task.
|
|
138
|
+
|
|
139
|
+
> **Note**: This skill is invoked via `/codex-exec` command, delegated by the orchestrator, or suggested by routing skills when codex is available. The intent-detection system can trigger it for research (xhigh) and code generation (hybrid) workflows.
|
|
140
|
+
|
|
141
|
+
## Agent Teams Integration
|
|
142
|
+
|
|
143
|
+
When used within Agent Teams (requires explicit invocation):
|
|
144
|
+
|
|
145
|
+
1. **As delegated task**: orchestrator explicitly delegates codex-exec for code generation
|
|
146
|
+
2. **Hybrid workflow**: Claude team member analyzes → orchestrator invokes codex-exec → Claude reviews
|
|
147
|
+
3. **Iteration**: Team messaging enables review-fix cycles between Claude and Codex outputs
|
|
148
|
+
|
|
149
|
+
```
|
|
150
|
+
Orchestrator delegates generation task
|
|
151
|
+
→ /codex-exec invoked explicitly
|
|
152
|
+
→ Output returned to orchestrator
|
|
153
|
+
→ Reviewer validates quality
|
|
154
|
+
→ Iterate if needed
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
## Research Workflow
|
|
158
|
+
|
|
159
|
+
When the orchestrator or intent-detection detects a research/information gathering request (routing_rule in agent-triggers.yaml):
|
|
160
|
+
|
|
161
|
+
1. **Check Codex availability**: Verify `codex` binary and `OPENAI_API_KEY`
|
|
162
|
+
2. **If available**: Execute with xhigh reasoning effort for thorough research
|
|
163
|
+
3. **If unavailable**: Fall back to Claude's WebFetch/WebSearch
|
|
164
|
+
|
|
165
|
+
### Research Command Pattern
|
|
166
|
+
|
|
167
|
+
```
|
|
168
|
+
/codex-exec "Research and analyze: {topic}. Provide structured findings with sources." --effort xhigh --full-auto --json
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
### Effort Level Guide
|
|
172
|
+
|
|
173
|
+
| Level | Use Case | Speed | Depth |
|
|
174
|
+
|-------|----------|-------|-------|
|
|
175
|
+
| minimal | Quick lookups | Fastest | Surface |
|
|
176
|
+
| low | Simple queries | Fast | Basic |
|
|
177
|
+
| medium | General tasks | Balanced | Standard |
|
|
178
|
+
| high | Complex analysis | Slower | Deep |
|
|
179
|
+
| xhigh | Research & investigation | Slowest | Maximum |
|
|
180
|
+
|
|
181
|
+
## Code Generation Workflow
|
|
182
|
+
|
|
183
|
+
When routing skills detect a code generation task and codex is available:
|
|
184
|
+
|
|
185
|
+
1. **Check availability**: Verify codex CLI via `/tmp/.codex-env-status-*`
|
|
186
|
+
2. **If available + new file creation**: Suggest hybrid workflow
|
|
187
|
+
3. **Hybrid pattern**:
|
|
188
|
+
- codex-exec generates initial code (fast, broad generation)
|
|
189
|
+
- Claude expert reviews for quality, patterns, best practices
|
|
190
|
+
- Iterate if needed
|
|
191
|
+
|
|
192
|
+
### Suitable Tasks
|
|
193
|
+
- New file scaffolding
|
|
194
|
+
- Boilerplate generation
|
|
195
|
+
- Test stub creation
|
|
196
|
+
- Documentation generation
|
|
197
|
+
|
|
198
|
+
### Unsuitable Tasks
|
|
199
|
+
- Modifying existing code (Claude expert better at understanding context)
|
|
200
|
+
- Architecture decisions (requires reasoning, not generation)
|
|
201
|
+
- Bug fixes (requires deep code understanding)
|
|
202
|
+
|
|
203
|
+
### Code Generation Command Pattern
|
|
204
|
+
```
|
|
205
|
+
/codex-exec "Generate {description} following {framework} best practices" --effort high --full-auto
|
|
206
|
+
```
|