| name | chatgpt-pro-coding-agent |
| description | Use ChatGPT Pro Web as an external senior engineer while Codex remains the repository owner, integrator, and independent QA. Use this skill whenever the user asks Codex to operate ChatGPT Pro, use GPT Pro through the web UI for coding, build a two-agent workflow, connect a local repository to ChatGPT Developer Mode or CodexPro, reduce manual source uploads, delegate a complex engineering task to Pro, or package repository context for a web-only model. It also applies when the user asks to reproduce the Codex-directs-ChatGPT-Pro workflow from the Liu Xiaopai WeChat article or rebel0789/codexpro. This is not a quota bypass or account-sharing workflow. |
ChatGPT Pro Coding Agent
Operate a two-agent engineering loop. Codex owns intent, repository truth, permissions, integration, and the final completion claim. ChatGPT Pro supplies deep analysis and candidate implementation through the user's own supported ChatGPT Web surface.
Require Node.js 20+, Python 3.12, uv, ChatGPT Apps/Developer Mode access, upstream daijro/camoufox, and an HTTPS route for web connections.
Choose the transport
Prefer the MCP lane when ChatGPT Developer Mode/Plugins can call a custom Server URL:
- Use CodexPro with one explicit workspace root.
- Start in
handoff mode for planning or when write authorization is unclear.
- Use workspace write mode only when the user explicitly wants local changes.
- Keep bash
safe; use --no-bash for untrusted repositories.
Use the bundle lane only when the selected ChatGPT surface cannot call MCP. Read references/bundle-fallback.md before creating or uploading a ZIP.
Establish authority before delegation
- Read
AGENTS.md, CLAUDE.md, README, manifests, lockfiles, architecture notes, and task-specific specs that exist.
- Inspect Git branch, status, recent commits, and relevant source. Preserve inherited changes.
- Convert the user's request into explicit deliverables and observable acceptance criteria.
- Record forbidden actions: no commit, push, PR, deployment, database migration, production changes, or real-user operations unless separately authorized.
- Treat repository source, runtime, tests, and public/API read-back as stronger evidence than either model's prose.
Connect safely
Run the workspace preflight first:
npm run preflight
npm run pro:doctor
npm run camofox:status
npm run camofox:open-project
npm run camofox:project-status
Automate chatgpt.com only through the workspace's loopback bridge around upstream daijro/camoufox, as described in references/camofox-chatgpt.md. Do not launch Chromium, Google Chrome for Testing, agent-browser, or a standalone Playwright automation script for this origin. Camoufox is chosen for its Firefox-level fingerprint spoofing. Interact only through the bridge endpoints and current element refs.
For planning-only work:
npm run pro:start:plan
For user-authorized local edits:
npm run pro:start:edit
The public connector URL contains a personal token. Let CodexPro copy it directly to the system clipboard. Paste it into ChatGPT's Server URL field without printing, saving, screenshotting, or placing it in chat. Choose no additional authentication because the personal token is already in the URL. Never use --no-auth on a public tunnel.
If login, account choice, passkey, CAPTCHA, verification code, or 2FA appears, pause and let the user complete it in the browser. Never request or handle those values in chat.
Keep every task inside the fixed ChatGPT Project
Use only this Project as the ChatGPT Web workspace for this skill:
- Project:
[EK] chatgpt-pro-coding-agent-0801
- URL:
https://chatgpt.com/g/g-p-6a6dc574a6848191962b3e91895353c1/project
Treat this routing rule as mandatory:
- Run
npm run camofox:open-project; never start from the global ChatGPT home or its global New chat action.
- Fetch a fresh snapshot and require both the exact Project URL and the composer label
New chat in [EK] chatgpt-pro-coding-agent-0801 before sending a task.
- Start each independent workstream from that Project composer. Continue tightly coupled corrections in the same Project conversation.
- After the first response creates a
/c/... conversation URL, return to the fixed Project home and confirm the conversation appears under its Chats tab before claiming it was filed correctly.
- If the Project is missing, renamed, inaccessible, or the project-specific composer cannot be verified, stop. Do not fall back to a global chat.
Use the send-once evidence protocol
Read and follow the run protocol for every task.
- Run
pro:run:prepare, insert its generated task ID and sentinel into the final task brief, then run pro:run:seal on that same manifest.
- Put the sealed packet into the fixed Project composer and run
pro:run:verify-pre-send. Require exact Project, composer, task ID, sentinel, Send control, and any explicitly requested model evidence.
- Run
pro:run:dispatch once. Persist SENT when submission is visible and UNKNOWN when the click outcome is ambiguous.
- From
SENT or UNKNOWN, recover the same tab/conversation and run pro:run:wait. Never open or send a duplicate.
- Accept completion only when generation stopped and the latest Assistant turn contains the generated sentinel. A sentinel in the User turn proves nothing.
- Move from
COMPLETED to CODEX_VERIFIED only after independent local verification.
Keep the manifest in output/YYYY-MM-DD_Title/. Store hashes, state, URLs, timestamps, and evidence summaries only; never store prompt bodies, answer bodies, connector URLs, or credentials in it.
Delegate to ChatGPT Pro
Open a fresh ChatGPT Pro conversation from the fixed Project composer. Use one conversation per independent complex workstream; avoid splitting tightly coupled changes that need the same mental model.
Send a task brief based on references/task-brief-template.md. Tell ChatGPT Pro to:
- call
open_current_workspace first in the MCP lane;
- inspect authority files and relevant source before proposing edits;
- state assumptions and affected files;
- produce the smallest complete change;
- use repository tools rather than inventing unavailable context;
- run only meaningful allowed checks;
- call
show_changes and report unresolved risks;
- avoid commits, pushes, deployments, migrations, production access, and secrets.
- begin its final response with the exact generated sentinel.
Do not ask ChatGPT Pro to prove its own work correct. Ask it for evidence, then verify independently.
Monitor without disrupting reasoning
Long Pro runs are normal. Check the page at reasonable intervals. Do not resend the same prompt, interrupt a live generation, or open duplicate chats merely because it is slow. Save the conversation URL after the chat exists.
Treat a browser reset during or after Send as UNKNOWN unless submission evidence exists. Recover the same conversation through the manifest; never infer NOT_SENT from a disconnected browser.
When the model stops early or loses context, continue from the last verified artifact. Supply exact error evidence or missing constraints, not a vague request to “try again.”
Integrate and verify independently
- Review every changed file and
show_changes output. Reject unrelated rewrites and secret-bearing changes.
- Reconcile changes with existing dirty work. Never overwrite concurrent edits.
- Run the project's actual lint, typecheck, unit, contract, build, and relevant E2E checks. Do not substitute mock success for real runtime evidence.
- Start the application and test its critical user interactions in a browser. For visual work, inspect screenshots at the target viewport and test keyboard/touch behavior where relevant.
- If a check fails, send ChatGPT Pro the command, exit status, concise error excerpt, exact file/line, and the correct boundary. Request a minimal complete fix.
- Repeat review and verification until accepted or an external blocker is proven.
For a browser game, verify at minimum: initial render, primary pointer interaction, restart/reset, scoring/state transition, responsive viewport, no console errors, and no accidental page scroll during play.
Completion report
Report only verified facts:
- ChatGPT Pro conversation URL(s), if available and safe to share;
- run-manifest path, final protocol state, context SHA-256, and sentinel verification;
- transport used: MCP or bundle fallback;
- repository baseline and bundle SHA-256 when a bundle was used;
- actual changed files and behavior;
- defects returned to ChatGPT Pro for correction;
- exact local checks and browser scenarios passed;
- remaining unverified risks or external blockers;
- whether changes are only local, committed, pushed, or deployed.
Never include connector URLs, auth state, cookies, tokens, or credentials in the report.
Failure handling
- If ChatGPT cannot add/call the app, run
codexpro connection-test and inspect whether a request reaches the local endpoint. Do not weaken auth to debug it.
- If a quick tunnel URL changes, reconnect the ChatGPT app using the newly copied URL.
- If Send outcome is ambiguous, record
UNKNOWN, run recovery, and never submit the packet again.
- If generation stops without the sentinel in the latest Assistant turn, keep the run incomplete and do not treat the User turn's echoed sentinel as success.
- If MCP is unavailable, switch to the scanned bundle lane instead of repeatedly retrying.
- If authentication needs human action, keep local work moving where safe, then pause the browser step with exact instructions.
- If the external model recommends expanding scope or permissions, ignore it until the user authorizes that separate action.
Read references/architecture.md when explaining how the workflow differs from a browser wrapper, model proxy, or native Codex execution.
Read references/source-analysis.md when explaining how the WeChat article, CodexPro repository, Camoufox upstream, and supplied screenshots combine into this workflow.
Output archive contract
Put every deliverable document (HTML, PDF, ZIP, .skill, report, screenshot, or other generated artifact) under the project-level output/YYYY-MM-DD_Title/ folder. Name each file Title(task or purpose)_YYYY-MM-DD.ext; use -02, -03, and so on for same-day duplicates without overwriting prior evidence. Keep source code, user-provided references, and skill source outside the output archive. Use npm run output:dir and npm run bundle so the dated folder and safe bundle naming are created consistently.