Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Launch an ordinary finite local workload as a durable detached process job, then release the assigning Codex turn instead of monitoring it. Use proactively for builds, test suites, evaluations, benchmarks, inference/model A/B runs, data jobs, and repairs whose underlying work may exceed 60 seconds or has uncertain duration, even when a task-specific workflow emits a quick wrapper or launcher. Also use when the user explicitly asks to enable or disable CPJ's experimental live CLI completion deliv
.claude/skills/hashgraph-online-start/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-20 | ✗→✓ | ▲ Improved | 31% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 106% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 339% | 0% |
| case-16 | ✗→✓ | ▲ Improved | 116% | 0% |
| case-14 | ✓→✓ | = Same ✓ | 114% | 0% |
Resolve <plugin-root> as two directories above this SKILL.md.
Never search memory for CPJ work; use validated CPJ state.
Only when the user explicitly requests it, configure CPJ's experimental live CLI delivery with:
textnode "<plugin-root>/scripts/job.mjs" config --cli-live-injection true --json codex app-server daemon start
The official App Server daemon must be running before an ordinary codex TUI starts, so tell the user to restart every open CLI session afterward. Do not enable remote control, create another service, edit Codex configuration, or start the daemon merely because a job was launched. The normal CPJ fallback remains authoritative if the daemon or its private socket is unavailable.
Disable the CPJ preference with config --cli-live-injection false. Stop the official daemon only if the user explicitly asks and it is not needed by other Codex work.
Prefer direct argv:
textnode "<plugin-root>/scripts/job.mjs" start \ --name "<label>" --cwd "<working-directory>" --json -- \ <command> [args...]
Use fixed non-login Bash only for a validated shell composition:
textnode "<plugin-root>/scripts/job.mjs" start \ --name "<label>" --cwd "<working-directory>" --shell --json -- \ '<single finite foreground command>'
All controller options, including --json, MUST precede --; that separator ends controller parsing. Shell mode requires exactly one command string after it. Never use eval.
CPJ writes private durable state under ${CODEX_HOME:-$HOME/.codex}/process-jobs. Before the first controller call, use the host permission context instead of probing the filesystem. If that directory is not writable in the current sandbox, request sandbox_permissions: "require_escalated" on the first call with a narrow justification and, when supported, prefix ["node", "<plugin-root>/scripts/job.mjs"]. Do not waste a call on a predictable EPERM, weaken the sandbox, or edit Codex configuration.
Use CPJ when the user asks to detach/background work, or when a finite local workload may exceed about 60 seconds, has uncertain duration, should survive a client exit, or merits later lightweight status checks.
Exclude quick commands, interactive stdin, servers/watchers, intentional daemons, remote/external services, and fire-and-exit launchers. The tracked process must remain in the foreground until the real workload ends.
Task-specific skills own command construction, preflight checks, arguments, and correctness gates. CPJ owns execution lifecycle for qualifying finite local workloads. Preserve a validated foreground argv or shell string. If a workflow emits a detached launcher, do not pass that launcher through CPJ unchanged: prefer its foreground payload, or a supported mode that remains alive until the workload finishes and propagates its terminal status. Otherwise leave it with its external lifecycle owner.
--shell for Bash features and --posix-sh onlyfor intentionally portable POSIX syntax.
--critical for repair, firmware, migration, destructive conversion, orany operation whose interruption could worsen state.
--goal-mode only when this command belongs to an explicitly activeCodex Goal. If unclear and get_goal exists, check once; never inspect private Goal storage or infer Goal mode from repeated turns.
--: --no-notify, --notify-user,--no-notify-user, and --json.
Detached work receives no interactive stdin. Resolve passwords, confirmations, sudo, or Polkit in the foreground first and prefer non-interactive checks such as sudo -n. --shell requires /bin/bash and must remain compatible with macOS Bash 3.2. Never put secrets in argv or tracked logs.
For storage repair, preserve the evidenced target device, mount state, and flags. Never infer a device node from its name.
Treat a successful controller return as a hard launch-turn release boundary. Do not read the status skill or call status, tail, result, --wait, write_stdin, sleep, ps, or another process probe in the launch turn. Result-dependent work resumes through completion delivery, a later user-initiated turn, or a later automatic continuation of an explicitly active Goal. If the same user request includes independent work, continue only that independent work.
Only an explicit user request to keep this exact Codex turn open and wait overrides the boundary. Then follow the status skill's one-wait and yielded-session rule; inspect a result only after an explicit terminal CPJ state. Never substitute polling.
For an ordinary pending notification, state conversationally:
up; and
Do not guarantee an immediate wake. If notification is unavailable or disabled, explain the status/result fallback.
For --goal-mode, say the job is durably tracked under the Goal and will be picked up by completion delivery, a hook, or Goal continuation. Automatic continuation is not permission to monitor: do independent work or apply the host Goal blocked audit.
A job is machine-scoped and survives Codex App, IDE, or CLI exit. Never add session-exit cleanup. Critical jobs later require explicit approval and $cancel --force.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-20 | fail→pass | 16,313 | 14,110 | -14% | 1 | 1 | 0% | 2,122 | 2,779 | +31% | 0 | 0 | — |
case-01 | fail→fail | 6,666 | 17,761 | +166% | 1 | 1 | 0% | 591 | 2,317 | +292% | 0 | 0 | — |
case-02 | fail→fail | 15,091 | 12,406 | -18% | 1 | 1 | 0% | 243 | 1,855 | +663% | 0 | 0 | — |
case-03 | fail→fail | 11,495 | 20,227 | +76% | 1 | 1 | 0% | 786 | 1,987 | +153% | 0 | 0 | — |
case-04 | fail→fail | 15,651 | 21,681 | +39% | 1 | 1 | 0% | 706 | 2,191 | +210% | 0 | 0 | — |
case-05 | fail→pass | 9,223 | 14,704 | +59% | 1 | 1 | 0% | 1,507 | 3,098 | +106% | 0 | 0 | — |
case-06 | fail→fail | 18,015 | 21,339 | +18% | 1 | 1 | 0% | 215 | 1,803 | +739% | 0 | 0 | — |
case-07 | fail→fail | 6,238 | 23,741 | +281% | 1 | 1 | 0% | 828 | 2,438 | +194% | 0 | 0 | — |
case-08 | fail→fail | 8,548 | 37,737 | +341% | 1 | 1 | 0% | 1,478 | 2,127 | +44% | 0 | 0 | — |
case-09 | fail→fail | 9,360 | 18,774 | +101% | 1 | 1 | 0% | 1,544 | 1,738 | +13% | 0 | 0 | — |
case-10 | fail→fail | 26,238 | 16,805 | -36% | 1 | 1 | 0% | 3,791 | 1,747 | -54% | 0 | 0 | — |
case-11 | fail→pass | 15,594 | 36,215 | +132% | 1 | 1 | 0% | 1,545 | 6,785 | +339% | 0 | 0 | — |
case-12 | fail→fail | 6,497 | 19,106 | +194% | 1 | 1 | 0% | 1,235 | 2,184 | +77% | 0 | 0 | — |
case-13 | fail→fail | 22,788 | 16,044 | -30% | 1 | 1 | 0% | 413 | 1,648 | +299% | 0 | 0 | — |
case-14 | pass→pass | 16,462 | 35,440 | +115% | 1 | 1 | 0% | 2,169 | 4,651 | +114% | 0 | 0 | — |
case-15 | fail→fail | 5,075 | 12,662 | +149% | 1 | 1 | 0% | 808 | 1,715 | +112% | 0 | 0 | — |
case-16 | fail→pass | 10,948 | 6,918 | -37% | 1 | 1 | 0% | 1,136 | 2,451 | +116% | 0 | 0 | — |
case-17 | fail→fail | 7,870 | 6,737 | -14% | 1 | 1 | 0% | 1,023 | 2,136 | +109% | 0 | 0 | — |
case-18 | pass→pass | 10,867 | 17,665 | +63% | 1 | 1 | 0% | 953 | 3,008 | +216% | 0 | 0 | — |
case-19 | pass→pass | 19,176 | 15,883 | -17% | 1 | 1 | 0% | 1,981 | 3,643 | +84% | 0 | 0 | — |
case-21 | fail→fail | 14,225 | 21,069 | +48% | 1 | 1 | 0% | 1,689 | 2,597 | +54% | 0 | 0 | — |
case-22 | fail→fail | 10,496 | 27,415 | +161% | 1 | 1 | 0% | 582 | 1,844 | +217% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 8 counted toward the lift figure. The other 14 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +18 percentage points is the difference between those two pass rates over the 8 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.