/wf — tvorba kontraktu
SkillDev toolsCreates a workflow contract from the discussion so far — writes ~/Workspace/specs/<project>/<name>/contract.md (Czech body + machine-readable frontmatter) and lints it with wf-gate. Use when the user says /wf or wants to turn a discussed problem into a contract. Never implements anything.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the /wf — tvorba kontraktu skill
What this skill tells your AI
The instructions your AI receives, as published by tomsej/pi-ext in skills/wf/SKILL.md and read by ahel’s review.
Z diskuse uděláš kontrakt. Výstup je JEDEN soubor — žádný kód, žádný git.
Spuštění řeší později wf-run.
GATE = node ~/Workspace/pi-ext/wf/wf-gate.mjs
Cesta: ~/Workspace/specs/<projekt>/<název>/contract.md — <projekt> =
basename origin remote bez .git (fallback: adresář repa), <název> =
kebab-case. Vlastní adresář — přibudou artefakty (explanation.md), archivace
= jeden přesun. Mimo repo záměrně — nesmí se objevit v commitu ani PR diffu.
1. Tělo (česky, odrážky)
Co jde zjistit z repa, zjisti z repa; na zbytek se doptej — nehádej.
Styl
- Používej jeden název pro jednu věc.
- Piš aktivně a používej krátká běžná slova.
- Jedna věta nebo odrážka obsahuje jednu hlavní myšlenku.
- Vynech výplňové úvodní fráze, opakování a marketingová přídavná jména.
- Stručnost nesmí odstranit podmínku, hranici ani pozorovatelné chování.
Sekce
- Současné chování / reprodukce: jak to funguje teď; u bugu přesná reprodukce.
- Business shrnutí: 2–4 věty pro netechnického čtenáře — v PR z toho bude anglická sekce „Why".
- Akceptační kritéria: pozorovatelná chování, každé = jeden budoucí test.
- Kritérium = největší chování ověřitelné jedním testem; sdílená fixture + jiná data = JEDNO kritérium s tabulkou případů.
- Rozpočet ~12; přes 15 = slučuješ špatně, vrať se k tabulkám. Jemnější rozpad stojí jeden TDD cyklus navíc za kus.
- Pořadí kroků, remíza, hraniční případ: rozhodnutí napiš přímo do kritéria, nebo jako otevřenou otázku — nedopsané pravidlo si každý vyloží jinak a review to neodhalí.
- Strategie testování: ke každému kritériu typ testu (unit/integrační/e2e), veřejné rozhraní a data. Netestovatelné kritérium nahlas teď, ne po implementaci.
- Technický handoff (netriviální změny): invarianty, změněná veřejná rozhraní, současný → navržený call stack, rizika. Neznámé nevymýšlej. Invarianty pozorovatelně („stejný vstup dá stejný výstup"), nikdy jako mechanismus („stav je immutable") — implementaci volí implementátor.
- Přístup: preferovaná řešení a co je vyloučené (např. „žádná nová závislost").
- Non-goals: co vědomě neřešíme.
- Scope: povolené soubory/moduly —
wf-runz nich detekuje kolize kontraktů. - UAT: co má uživatel ověřit ručně, ze svého pohledu.
2. Frontmatter (anglicky)
---
name: <kebab-case>
uat: auto # auto = pipeline runs wf-uat; manual = user runs it
# after: [contract-name] # uncomment only for a real merged prerequisite
conductor: opus # pi session in the worktree; omit = pi default model
impl: sol
review: # rounds run in order, reviewers inside a round in parallel
- correctness-smoke: cc
bugs-edge-cases: codex
- re-review-changed-areas: cc
verify:
preflight:
- {id: environment, kind: hard, command: "<cheap disk/runtime/dependency check>", timeoutMs: 60000}
quick:
- {id: fast, kind: hard, command: "<project quick check>", timeoutMs: 600000}
full:
- {id: functional, kind: hard, command: "<integration + freshness checks>", timeoutMs: 3600000}
- {id: performance, kind: perf, command: "<timing benchmarks only>", requires_idle: true, timeoutMs: 3600000}
---
Agenti
Role se odkazují jménem z rosteru. Builtiny (autoritativní výpis:
GATE agents <spec>):
opus pi/anthropic/claude-opus-5 · sol pi/openai-codex/gpt-5.6-sol ·
terra pi/openai-codex/gpt-5.6-terra · glm pi/zai/glm-5.2 ·
cc claude/fable · codex codex/gpt-5.6-sol
- Vlastní agent jen když builtin nestačí (tvar = parametry
subagent_spawn):agents: {sol-max: {harness: pi, model: openai-codex/gpt-5.6-sol, effort: max}} - Lint vynucuje:
conductor= pi agent (dirigent JE ta pi session); reviewer nesmí mít stejnýharness+modeljakoimpl(same_model_review: allowjen na výslovné přání, nikdy pro rizikový kontrakt). - Review plán škáluj rizikem: triviální = 1 kolo × 1 reviewer; běžná = 2 kola (smoke + deep); riziková = 2 kola, až 4 revieweři v kole 1 — riziko škáluje panel, ne počet kol.
- Fokusy podle změny: security (auth/vstupy/secrets), architecture (napříč moduly, nová API), test-quality, performance (hot paths, N+1), data-safety (migrace, destruktivní operace), over-engineering.
Verify
Druhy: hard (exit kód rozhoduje — default) · eval (příkaz tiskne JSON;
metric + min, volitelně warn_below) · perf (přidej requires_idle: true, ať se na vytíženém stroji odloží místo flaky failu) · judge (bez
příkazu: rubric, min_score 1–5, agent z rosteru — kvalitativní kritéria).
severity: warning = reportuje se, neblokuje.
Strukturální pravidla („žádný console.log mimo logger", „handler volá auth") =
hard s ast-grep scan, ne judge — deterministické a zadarmo; pravidla
v projektu zakládá skill review-guards.
Pravidla příkazů (každé zaplacené nočním během):
- Má-li projekt gate skript / task runner, odkazuj na něj — jeden zdroj pravdy pro pipeline, CI i ruční běh; žádné inline mega-příkazy.
- Nový gate skript jen když projekt task runner nemá a full má víc než
jednu fázi; jinak
verifymíří přímo na existující příkaz (npm test,cargo test,make check). Pojmenované fáze, timeouty a kill-tree níž jsou požadavky na existující gate, ne důvod psát nový. - quick = levná kontrola po review fixech; full = všechno a pokrývá všechna kritéria přes veřejná rozhraní. Drahé kontroly do quick nepatří.
timeoutMsmusí přežít studený start ve svěžím worktree (deps, build, cache).- Žádné maskování exit kódu (
|| true,; true,allowFailure) — lint zamítne. - Testy o sdílené zdroje (kontejnery, porty, benchmarky) běží serializovaně; plné gaty napříč worktree serializuje wf-gate sám.
- Gate loguje po pojmenovaných fázích (fail jmenuje konkrétní stage) a po timeoutu zabíjí celý strom svých potomků — orphan proces otráví další pokusy.
- full si musí vyrobit i gitignored artefakty — jinak projde lokálně a spadne v CI na čistém checkoutu.
3. Lint a schválení
- Zapiš spec (adresář založ), spusť
GATE check <cesta>, oprav každý nález — placeholdery/TODO neprojdou. - Ukaž uživateli: shrnutí +
GATE agents <spec>+ verify tabulku + plnou cestu. Zeptej se na schválení, dolaď. - NIC neimplementuj — spuštění proběhne přes
wf-run.
Signals
- GitHub stars
- 72
- Forks
- 6
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
wf- Source
- github.com/tomsej/pi-ext