pf-auto

pf-auto is a skill for Codex from turvodnik/pf-workflow. It costs 118 tokens per session (1,963 once invoked), scanned B, original, MIT.

An autopilot workflow that completes approved software specifications by assigning tickets to smaller helper agents. A specification is a written description of what should be built; tickets are individual work items.

In plain words
What is it for?
Running approved tickets in small waves, reviewing milestones independently, retrying failed work up to the configured limit, and stopping when human approval is required.
Why use it?
It reduces the need to coordinate each implementation step manually while retaining review points, limited repair cycles, and pauses at risky boundaries.

Skill for Codex

Written for Codex: reads ~/.codex or $CODEX_HOME. Also seen: reads .claude/ paths; mentions subagents; mentions Codex.

Good fit Running approved tickets in small waves, reviewing milestones independently, retrying failed work up to the configured limit, and stopping when human approval is required.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/turvodnik/pf-workflow/pf-auto
Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Any agent
npx skills add turvodnik/pf-workflow --skill pf-auto
Clone the repo
git clone --depth 1 https://github.com/turvodnik/pf-workflow

Made for: Codex.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for pf-auto

README.md
[![agentmods](https://agentmods.dev/badge/skills/turvodnik/pf-workflow/pf-auto.svg)](https://agentmods.dev/skills/turvodnik/pf-workflow/pf-auto)
Your own site
<a href="https://agentmods.dev/skills/turvodnik/pf-workflow/pf-auto"><img src="https://agentmods.dev/badge/skills/turvodnik/pf-workflow/pf-auto.svg" alt="Measured on agentmods" height="20"></a>
Per session 118 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,963 The whole file, excluding the scripts and references it only reads on demand.
Security scan B 1 finding. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00118 $0.01963
Opus 5 $0.00059 $0.00981
Sonnet 5 $0.00024 $0.00393
Haiku 4.5 $0.00012 $0.00196

Measured 6d ago against content hash 2a533472c707, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-07, from the pricing page.

Security

Grade B, and why

pf-auto scanned grade B with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 6d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Enumerates other installed skillsmediumAgent snooping

Other skills' SKILL.md files reveal prompts, capabilities and secrets that should be invisible to peers.

- **Codex pre-pass before the gate (code milestones only).** `<BASE>` is not pseudocode for a value to keep in your head — a bare `git rev-parse HEAD` recorded at step 3 lives only in this turn's context, and Bash tool c
skills/pf-auto/SKILL.md · 51 lines

How it starts

The opening of the file, as written. The whole thing — 51 lines — stays where its author put it; the contents beside it link to each section on GitHub.

pf-auto — autopilot: from approved spec to done

Always communicate with the user in the user's language (Russian in the origin system). Registry, tickets, journal and report formats stay exactly as specified.

You are the orchestrator. You do NOT execute tickets yourself: you dispatch jobs to subagents, accept short summaries, verify through independent hands, and keep the registry. Your window is the most expensive resource: full results live in tickets and files, not in the chat.

Preconditions

  • An approved SPEC.md and tickets in .agents/runtime/tasks/. Missing — first the regular /pf-spec → human's «ок» → /pf-tickets: the interview is not automatable, a human answers the questions.
  • An explicit human command (see description). Autopilot enabled silently is a §8 violation.

Parameters (defaults; the human may override in words at launch)

fix_rounds = 3 · parallel = 2 · batch = 1–3 tickets per job · gate = auto (by risk; alternatives in words: «гейт после каждого» / «гейт по вехам»).

Cycle

  1. Waves. Group tickets into jobs of 1–3 related ones (by depends_on and volume: a job ≤ half the executor's window — §13 heuristic). A dependency must be done before the job that needs it starts (pf-do step 1); the orchestrator may explicitly except a job onto a dependency still in review, but only as a decision recorded in the wave registry (step 2, with a reason) — never silently. Build the wave order; in parallel — up to parallel jobs, and only with no shared files. Print the wave plan as one table for transparency and continue without waiting for a reply.
  2. Registry before every wave: «задание → тикеты → субагент → статус» — in the HANDOFF (if the pf-handoff companion is installed, §13 rule) or in .agents/runtime/autopilot-run.md (template — references/registry-template.md). Update on every event: summary accepted, review verdict, fix round, dependency exception (a job started on a review, not yet done, dependency — record the reason).
  3. Executor — a fresh subagent with a clean context (mechanics — Sonnet-class, integration/judgment — a senior model; state the model explicitly). Before launch record BASE (git rev-parse HEAD). The prompt — per references/dispatch-templates.md: ticket paths + "work by the pf-do contract" + interfaces/decisions from earlier jobs that are not in the tickets + "full result into the tickets, reply with a summary ≤15 lines". Never paste session history into a prompt.
  4. Gate — a fresh reviewer subagent (pf-reviewer role) gets the ticket paths + the BASE..HEAD diff as a file + the acceptance criteria. It re-verifies with proofs and does not trust the executor's «Результат». Clean → tickets done (§9 authority), registry, next wave. When to place gates (gate = auto) — by risk, not mechanically:
    • after every job — when jobs build on each other or touch executables: code, configs, data schemas, scripts, infrastructure. An error here sinks into the foundation of the following jobs, and a late find costs a multiple of a reviewer;
    • one gate per milestone (a group of jobs) — when jobs are independent and a fix is cheap: texts, documentation, separate pages/articles, markup. The reviewer gets all the milestone's diffs at once.
    • Always mandatory, regardless of mode: a gate before a job that depends on the group's results; a gate before any external action; the final end-to-end review (step 7).
    • Write the chosen mode and the reason into the registry in one line — the retro will show whether you guessed right.
    • Codex pre-pass before the gate (code milestones only). <BASE> is not pseudocode for a value to keep in your head — a bare git rev-parse HEAD recorded at step 3 lives only in this turn's context, and Bash tool calls do not share shell state with each other, so the SHA has to be spelled out as text in the command you run. Prefix it inline as PF_AUTO_BASE=<the recorded sha> (the registry from step 2 has it under "BASE волны N"). Run yourself (resolver — see pf-do step 5a), before spending a reviewer subagent: PF_AUTO_BASE="${PF_AUTO_BASE:-}"; if [ -z "$PF_AUTO_BASE" ]; then echo "no BASE recorded for this wave — set PF_AUTO_BASE to the wave's BASE sha (registry, step 2) before running this line"; else SC=$(ls ~/.claude/skills/pf-do/scripts/codex-review.sh ~/.codex/skills/pf-do/scripts/codex-review.sh ~/.gemini/skills/pf-do/scripts/codex-review.sh 2>/dev/null | head -1); if [ -n "$SC" ]; then bash "$SC" --base "$PF_AUTO_BASE" --deep; else echo "no script — skip this step"; fi; fi. It costs minutes and no context (a digest, not a review), and its findings go to the reviewer as an extra checklist — not as a verdict. SKIP: (no Codex, no consent, docs-only diff, or no BASE recorded) is the normal path: proceed to the gate unchanged. FAIL: = not reviewed, also proceed. It never replaces the gate: the reviewer subagent still runs, because Codex judges the diff, not the acceptance criteria.
  5. Fix cycle ≤ fix_rounds: rounds 1–2 — the same executor, remarks verbatim; round 3 — a fresh executor on a stronger model ("the previous one tried twice — here is its report and the open remarks"). After each round — a scoped re-review strictly against the remark list. Failure after round 3 → tickets blocked, this branch of waves halts; independent branches continue; the report goes into the final report (or immediately if everything is halted).
  6. Stops — the autopilot halts and asks the human:
    • a question only a human can decide (batch them up unless the current wave is blocked);
    • a ticket needs a secret (API key, password, token): subagents and headless runs usually cannot call ai-secret. Do not push such tickets through the fix cycle — straight to blocked with «нужна интерактивная сессия, scope <имя>» and into the report to the human. Visible in advance — pull them out of the waves at planning time;
    • a ticket contradicts the SPEC → a mini-report in the pf-replan spirit (impact class, options);
    • an external irreversible action — publishing to a live site, deploy, mailing, DNS changes, spending money: prepare everything and stop. Commit and push to the private repo are allowed (pf-do rule);
    • orchestrator window thresholds (§13): above 60% — launch no new waves, accept current ones, checkpoint; 90% — full handoff and a stop-point report.
  7. Final: an end-to-end review of the whole task diff against the SPEC — a fresh subagent on the strongest available model. Remarks → ONE fix pass (one subagent with the whole list, not a fixer-per-remark) + one scoped re-review. Leftovers: non-critical — park in the report with a "why acceptable" verdict; critical — blocked to the human. Clean → final report to the human: done / proofs / deviations / parked / statistics (waves, subagents, fix rounds). Journal entry (§10).

Read the full file on GitHub · 51 lines

Files

What ships with it

2 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 6d ago First seen · 51 lines · 118 tokens per session scan B 2a533472c707

Subscribe to this mod's changes

pf-auto is a skill published in the GitHub repository turvodnik/pf-workflow (3 stars, last pushed 22d ago), licensed MIT. It adds 118 tokens to every session and 1,963 once invoked, about $0.0006 per session on Opus 5. A static security scan graded it B with 1 finding (enumerates other installed skills). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.