askcodex
Skill11 starsChanged 10 days agoMITView on GitHub
Use the askcodex CLI to get text and code from OpenAI models (GPT-6 Astra, Sol, Luna and older), generate or edit images, transcribe audio, and inspect available models, subscription usage, or authentication. Trigger for requests such as "ask GPT", "make an image", "pregúntale a GPT", "genera una imagen", "edita esta foto", "transcribe este audio", "qué modelos tengo", or "cuánta cuota queda", and for bounded one-shot tasks (draft, summarize, classify or extract into schema-checked JSON, generate an asset) worth a second model's answer. Not for critiquing repo work, plans or diffs: use second-opinion, which reads the repo.
In this repository13 other files it gives its agents.
- AGENTS.mdAGENTS.md
- .claude/CLAUDE.mdCLAUDE.md
- image-to-frontendSkill
- motion-designSkill
- compound-knowledgeSkill
- file-todosSkill
- agent-sdk-wizardSkill
- managed-agents-wizardSkill
- metapromptSkill
- goal-loopSkill
- insistirSkill
- remote-agentsSkill
- second-opinionSkill
The file
We split this skill into the rules it gives an agent
7 rules. About 0 are common, 3 are distinctive, and 4 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈3
Distinctive · estimate
This author's own choices. Worth a look.
4
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 28
If it is older, tell the user to update instead of working around it: in an askcodex checkout, git pull && ./install.sh.
- Very specific: line 32
Every call is one-shot and stateless.
- Distinctive: line 40
Every call spends the user's subscription quota.
- Distinctive: line 107
Write a complete brief: the deliverable, its audience, the constraints, what "done" means, the source material itself, what must stay …
- Very specific: line 109
Run one focused request. Create /tmp/askcodex/ first and give every artifact a descriptive name with a version suffix, so an edit never …
- Very specific: line 163
Use --no-refresh for read-only account and auth checks.
- Distinctive: line 165
Write into a project directory only when the user asks for that destination.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
askcodex
You have the askcodex CLI. It sends one request to an OpenAI model through the user's
ChatGPT/Codex subscription and returns a text answer, an image, or a transcript. Turn the user's
request into a complete brief, run one focused call, check the result against the brief, and hand
the user the useful output with its saved path.
Canonical copy: skill/ in https://github.com/JairoTorregrosa/askcodex (this is a mirror; change
it there, then re-sync). Local delta: the description's not-for clause points to second-opinion.
Context you must respect
- This skill describes askcodex 0.3.0 or later. Check
askcodex --versiononce per session. 0.2.x has no--schema,--verbosityor--background, prints the ~700 KB raw catalog insidemodels --json, and gives errors withouterror.backend; 0.1.x also hides the GPT-6 models. If it is older, tell the user to update instead of working around it: in an askcodex checkout,git pull && ./install.sh; without one, download the latest release binary from https://github.com/JairoTorregrosa/askcodex/releases (verifySHA256SUMS), or clone it and run./install.sh(needs Rust 1.88+). - Every call is one-shot and stateless.
asksends only the prompt and optional--instructions: the model gets no tools, files, browsing, repository, or earlier conversation. A file path in a prompt is just text; paste the contents instead. - Everything in a prompt, a reference image or an audio file leaves the machine for OpenAI's backend. Before you paste logs, exports, code or documents, always remove credentials, tokens, keys and passwords, even when the user supplied them for the task: replace them with placeholders. Also remove personal or customer data the task does not need; if the task needs it, or you cannot tell, ask the user first.
- Every call spends the user's subscription quota. GPT-6 Astra is the most expensive model.
- A second model's answer is input to your work. Verify its facts, review its code, and look at its images before you report success.
- askcodex uses the credentials
codex loginsaved to~/.codex/auth.json; it reads no API key. Never print credentials.
Facts already verified (2026-10-02)
askcodex models --no-refreshlists what the account can use, with each model's description, Codex's default effort and any retirement date. On 2026-10-02:gpt-6.1-sol,gpt-6-astra,gpt-6-sol,gpt-6-luna,gpt-5.6-sol,gpt-5.6-terra,gpt-5.6-luna,gpt-daybreak-blue-latest,gpt-5.5(retires 2026-10-14), and the hiddengpt-reserveandcodex-auto-review. All take text;asksends text only. OpenAI ships models every few days: trust the live catalog over this list.askdefaults togpt-6.1-solatmedium. The catalog lists it for every plan; if a plan refuses it with a model-availability error (OpenAI's Codex docs have offered Free and Go only Luna), pass--model gpt-6-luna. askcodex never switches models on its own.--efforttakeslow,medium,high,xhigh,max, ornone. The catalog also listsultra, which is Codex's multi-agent mode; the backend rejects it. A level a model does not take fails with HTTP 400 (noneongpt-6-astraandgpt-6.1-sol;gpt-6-solandgpt-6-lunaaccept it although the catalog omits it).--verbosity low|medium|highsets answer length and detail. Unset, the backend answers atmedium; Codex itself asks forlow. On the same promptlowused 240 output tokens andhigh513.--schema FILEmakes the backend enforce a JSON Schema in strict mode, even against a prompt that asks for prose. Strict rules: every property inrequired,"additionalProperties": falseon every object, and an optional value adds"null"to its own type (["string","null"],["integer","null"]; anenummust listnulltoo). A schema that breaks them fails before generation witherror.backend.code: "invalid_json_schema"and a message naming the key. With--json,.result.jsonis the parsed answer. askcodex re-checks its structure against the schema, so an answer that does not parse or does not match is aresponse_invalidfailure, never a result.image createandimage editreturn one PNG per call of about 1.57 megapixels; the prompt sets the aspect ratio.--background transparentoropaqueforces the background (both honored); unset, the prompt decides. The result reports the file's realwidth,heightandalpha_channel. There is no model, size, quality, format, or count flag, because the backend ignores those fields.transcribetakes a WAV file up to 25 MiB and has no model or language selector.
Do this
Pick the command and read its guide before you write the prompt:
Result Command Read first Answer, analysis, writing, code, or review askcodex ask "prompt" --model <slug> --effort <level>(add--verbosity lowfor a concise answer)prompting-text.md and the model's guide below Classification or extraction you will parse askcodex ask - --schema /tmp/askcodex/<name>.schema.json --json < brief.txt, then read.result.jsonSame as above New image askcodex image create "prompt" -o /tmp/askcodex/<name>-v1.png(add--background transparentfor a cutout)prompting-images.md and model-gpt-image-2.md Image edit from one to five PNG references askcodex image edit "prompt" -i ref.png -o /tmp/askcodex/<name>-v2.pngSame as a new image Audio transcript askcodex transcribe recording.wavtranscription.md Which models exist, their default effort, what retires askcodex models --no-refresh(a short list with descriptions)Nothing; no prompt is involved Quota, account, auth status askcodex usage/whoami/auth status, each with--json --no-refreshNothing For
ask, pick the model and read its guide:The task Model Guide Most work: coding, review, debugging, analysis, drafting gpt-6.1-sol(default)model-gpt-6.1-sol.md The hardest or most consequential single deliverable gpt-6-astramodel-gpt-6-astra.md Clear, repeatable extraction, classification, or transformation gpt-6-lunamodel-gpt-6-luna.md Authorized defensive security work gpt-daybreak-blue-latestmodel-gpt-daybreak-blue-latest.md Reproducing a GPT-6 Sol result gpt-6-solmodel-gpt-6-sol.md Reproducing a GPT-5.6 result gpt-5.6-sol,gpt-5.6-terra,gpt-5.6-lunasol, terra, luna Anything on gpt-5.5move to gpt-6.1-sol(gpt-6-lunaif the plan refuses it)model-gpt-5.5.md prompting.md indexes every guide. Pin
--modeland--effortwhenever you compare outputs or need to reproduce one.- Write a complete brief: the deliverable, its audience, the constraints, what "done" means, the source material itself, what must stay unchanged, and the output format.
- Run one focused request. Create
/tmp/askcodex/first and give every artifact a descriptive name with a version suffix, so an edit never overwrites a useful result. For a long-running job, run it in the background or in tmux and save its output to a file. - Inspect the result against the brief. Make the next request about one specific observed problem, and keep the last useful version.
Handle the output
- Images: always pass
-o /tmp/askcodex/<name>-vN.png. With--json,.result.width,.result.heightand.result.alpha_channelcome from the saved file;alpha_channel: trueonly says transparency is possible, so look at the image before you call it a cutout. - Long text answers:
--json > /tmp/askcodex/<name>.json, thenjq -r .result.text /tmp/askcodex/<name>.json. Keep large JSON and image payloads out of the conversation. --json,--events, and--no-refreshare global flags and work after the subcommand.- Semantic
--jsonsuccess output is{schema_version:1,command,result}. Read.result. Do not pass--backend(it adds the raw backend response, ~700 KB formodels) unless the user is debugging the protocol. ask --jsongives one final envelope with.result.model,.result.effort,.result.verbosity,.result.text,.result.usage(possibly null), and.result.jsonwith--schema. The catalog is at.result.models(slug, description, default_reasoning_level, upgrade); quota windows are at.result.rate_limit.--eventsprints newline-delimited JSON:asksendstext_deltaevents and one finalresultevent on success; other commands send their result. Check the exit status: partial text is not success. Do not combine--eventswith--json.transcribeprints the text, or.result.textwith--json.- Stdin prompts (
-) andraw --body -accept up to 16 MiB of UTF-8. File inputs must be regular files (symlinks to them work; devices and FIFOs do not).image editaccepts up to five PNG references totaling 25 MiB; renaming a JPEG to.pngdoes not convert it, and the CLI checks the file signature. These caps are client memory limits, not server limits. raw <METHOD> <PATH> --body '<JSON>'is for a backend operation the user explicitly needs. It accepts only the backend origin, leaves JSON and stream bytes unwrapped, and does not support--events.referenceprints the CLI reference locally, without credentials or network.
Rules
- On a nonzero exit, report the error and fix its cause before another attempt. Do not loop, fabricate a result, or silently switch models.
With
--jsonor--events, a failure prints{schema_version:1,error:{code,message, http_status?,backend?}}on stderr and no success result. Never turn a partial stream into a completed answer.error.backendcarries the backend's own reason, filtered: onlycode,type,param,message,detailanderror(orincomplete_details.reason), each cut to 400 bytes. When it is absent or reads as cut off, tell the user the full cause could not be read instead of guessing. Act on it:The diagnostic says Cause Next step backend.code: "unsupported_value",backend.param: "reasoning.effort"The model does not take that effort Pick a level from the model's guide and retry once backend.code: "invalid_json_schema"The --schemafile breaks a strict ruleFix the key the message names; no answer was generated backend.detail: "... not supported when using Codex with a ChatGPT account."Unknown slug, or a model this plan cannot use Check askcodex models; ask the user before using another modelbackend.code: "cyber_policy"or another policy codeA safety classifier blocked the request Report it; do not reword the request to get around it backend.incomplete_detailsThe answer was cut short Report it; narrow the task or ask for less output, then retry once code: "rate_limited"(HTTP 429)Quota or rate limit Check askcodex usage --json --no-refreshand tell the user- Use
--no-refreshfor read-only account and auth checks.askcodex auth refreshrotates the credentials and rewrites the auth file; run it only when the user asks for a refresh. - Write into a project directory only when the user asks for that destination.
Report
Tell the user the command you ran, the outcome, the artifact path if one was saved, and any
limitation that affects the result. For ask, add the model and effort. For an image, give the
file's real dimensions and never name a serving model: the backend does not report one. Show an
image when the user needs to judge it visually.
Install
The binary is ~/.local/bin/askcodex. From a checkout, ./install.sh installs it without
touching credentials; --skills agents, --skills claude, or --skills all also installs this
skill, and --check-auth checks credentials without refreshing. See
the repository and the
generated command reference.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

