skill · diff

git:20260909.610723e to git:20260909.430b8c6

1 added, 1 removed. Audit A to A.

---
name: skill
description: Skill se použije, když uživatel zadá "/skill" (volitelně s režimem create, extract, update nebo delete), nebo chce založit nový vlastní skill, vytěžit rozdělanou konverzaci do skillu, prohnat existující skilly revizí proti dnešní podobě normy, anebo skill zrušit i se všemi jeho stopami. Norma tvaru je v ~/.claude/skills/SKILLS.md; tenhle skill je proti ní instalátor a revizor, měření a vytěžení deleguje na skill-creator a superpowers:writing-skills.
argument-hint: [create|extract|update|delete] [jméno]
allowed-tools: [Read, Write, Edit, Glob, Grep, Bash, AskUserQuestion, Skill]
---
# Skill
## Co skill dělá
Spravuje vlastní skilly v `~/.claude/skills/` proti normě v `~/.claude/skills/SKILLS.md`. Čtyři režimy:
- **`/skill`** nebo **`/skill create`** – **založení**. Řízený rozhovor, tabulka delegací, srovnávací běh, sepsání, ověření, napojení na okolí.
- **`/skill extract`** – **vytěžení konverzace**. Vstupem není zadání, ale to, co se v session vyladilo. Od sepsání dál je dráha stejná jako u založení.
- **`/skill update [jméno]`** – **dorovnání na dnešní normu**. Jeden skill, nebo bez jména všechny. Hlavní důvod, proč je skill opakovatelný.
- **`/skill delete <jméno>`** – **odstranění i se stopami**.
Režim **`update` je to, co neumí nikdo jiný.** Norma se posouvá dál, hotové skilly zůstávají stát a samy o tom neřeknou – stejná vlastnost, kvůli které má `/project` svůj revizní krok.
## Co skill nedělá
- **Nedefinuje tvar skillu.** Ten je v `~/.claude/skills/SKILLS.md`. Tenhle skill ho čte, neopisuje a nerozšiřuje. Ukáže-li se, že norma je špatně, opraví se norma – ne že se udělá výjimka tady.
- **Neaudituje konfiguraci.** Rozpory mezi soubory, mrtvé zbytky a rozejití mezi vrstvami řeší `/consistency`; tenhle skill se dívá jen na skilly a jen proti normě.
- **Neprověřuje kvalitu práce skillu za běhu.** Že skill dělá dobrou práci, ukáže jeho použití a `/review`. Tady se měří, jestli se **vyvolá** a jestli se pod tlakem **dodrží**.
- **Nesahá na cizí skilly.** Pluginy a vestavěné skilly se používají, ne udržují.
- **Nemigruje zbytek skillů mimochodem.** Převod na novou normu je vědomý běh režimu `update`, ne vedlejší efekt jiné práce.
## Jak je to postavené uvnitř
Skill **skládá**, nepíše vše sám – je to první uplatnění pravidla *Skládej, nepiš znovu* z normy. Co se komu deleguje:
| Krok | Kdo | Proč zrovna on |
|---|---|---|
| Řízený rozhovor o zadání | **vlastní** | Ptá se na věci, které plynou z normy – kde to stojí v životním cyklu, proti kterému sousedovi se to vymezuje, má to režimy. Cizí nástroj se na to nezeptá. |
| Vytěžení z konverzace | `skill-creator` | Má na to hotový postup zachycení záměru. |
| Srovnávací běh – jak agent selže bez skillu | `superpowers:writing-skills` | Je to jádro jeho metody. |
| **Sepsání `SKILL.md`** | **vlastní** | Jádro normy. Jediné místo, kudy by prosákl cizí tvar. |
| Evaluace výstupu | `skill-creator` | Má na to skripty, ne popis v textu. |
| Tlakové scénáře | `superpowers:writing-skills` | Měří dodržení pravidla pod tlakem, ne kvalitu výstupu. |
| Ladění `description` | `skill-creator` | Umí spolehlivost vyvolání proměřit, ne odhadnout. |
| Okolí, revize, rušení | **vlastní** | Neumí to nikdo. |
**Volání cizích nástrojů je implementační detail, ne rozhraní.** Vyměnit se smí kdykoliv. Závazné je: tvar výstupu podle `SKILLS.md`, že se skill nezaloží bez odsouhlaseného zadání, že revize nic nepřepíše bez zeptání a že se po dokončení dorovná okolí.
**Zadávej vnitřku kontrakt výstupu, ne kroky.** „Potřebuju tři testovací prompty a vyhodnocení, jestli se skill vyvolal“ přežije upgrade pluginu; „udělej svůj krok 3“ ne.
**Cizí nástroj nesmí rozhodovat o tvaru.** Předej mu výslovně: sekce a jejich pořadí podle `SKILLS.md`, čeština, cíl `skills/<jméno>/SKILL.md` v tomhle repozitáři. Bez toho si prosadí vlastní výchozí volbu – `skill-creator` i `writing-skills` mají každý svou a obě se od téhle normy liší.
------
## Fáze 0 – Příprava
Společný začátek je v `~/.claude/skills/PREFLIGHT.md`. Kořenem projektu je tady vždycky `~/.claude`. Navíc:
1. **Přečti `~/.claude/skills/SKILLS.md` celou.** Neopírej se o paměť – tvoje představa o tvaru je zrovna to, co může být zastaralé.
2. **Udělej inventuru toho, co je k dispozici.** `ls ~/.claude/skills/`, seznam nainstalovaných pluginů a jejich skillů, vestavěné skilly. Je to vstup pro *Fázi 3* a zároveň se tím ověří, že cizí nástroje, na které skill deleguje, opravdu existují.
3. **Kontrola závislostí měřicí části.** Ověř **dřív, než na ně pošleš práci**, dvě věci: že je `skill-creator` opravdu **nainstalovaný** (`plugins/installed_plugins.json`, ne jen přítomný v cache marketplace – ta obsahuje i to, co nainstalované není), a že jeho skripty mají Python a svoje okolí. **Chybí-li, neselhávej** – řekni nahlas, co odpadá (`extract`, evaluace výstupu, ladění `description`), pokračuj bez měřicí části a zapiš do závěru, co se tím neověřilo.
4. **Zjisti, na kterém skillu se pracuje**, je-li v argumentu. Neexistuje-li a jde o jiný režim než `create`, nabídni nejbližší jména z inventury místo hlášky o chybě.
## Fáze 1 – Volba režimu
Je-li režim v argumentu, jeď podle něj a jen ho oznam. Není-li, zeptej se přes `AskUserQuestion`.
| Režim | Pokračuj |
|---|---|
| `create` | Fáze 2 |
| `extract` | Fáze 2, varianta pro session |
| `update` | *Režim `update`* níž |
| `delete` | *Režim `delete`* níž |
## Fáze 2 – Zadání
**Ptej se postupně, jednu otázku za druhou** (`~/.claude/RULES.md`, *Ptej se postupně, ne všechno najednou*).
Nejdřív otázka, která rozhoduje, jestli se vůbec pokračuje:
1. **Má to být skill?** Projdi zadání čtyřmi možnostmi z normy, *Kdy vzniká skill – a kdy ne*. Vyjde-li, že to patří do kontroly, do `RULES.md`, do domény nebo do projektového `CLAUDE.md`, **řekni to a skonči.** Skill, který měl být pravidlem, se pak nikdy nevyvolá ve chvíli, kdy je potřeba.
Pak zbytek:
2. **Co skill dělá a kdy se má vyvolat.** Doslovné spouštěče i situace.
3. **Stojí v *Životním cyklu projektu*** (`~/.claude/RULES.md`)? Pokud ano, **proti kterým dvěma sousedům se vymezuje** – to je vstup pro *Co skill nedělá* a bez něj sekce vznikne jako prázdná negace.
4. **Má režimy?** Určuje `argument-hint`.
5. **Co je jeho výstup** a podle čeho se pozná, že je hotový. Vstup pro závěrečný verdikt.
6. **Které doménové znalosti** z `~/Dev/context/` se na něj vztahují.
**V režimu `extract`** body 2 až 6 nevymýšlej – vytěž je z konverzace.
**Prošla-li session kompaktací, nestačí to, co máš v kontextu** – první polovina konverzace je pryč a bývá v ní zrovna to, co se vyladilo. Načti nejdřív transcript ze souboru; postup i pasti (zprávy poslané uprostřed odpovědi se ukládají jako `queue-operation`, ne jako `user`) má hotové `/cleanup`, *Fáze 1 – Rekonstrukce session*. Neopisuj ho sem, řiď se jím.
Pak **vyvolej `skill-creator`** a nech ho vytěžit záměr: použité nástroje, sled kroků, opravy, kterými uživatel průběžně měnil směr. Výsledek předlož k potvrzení a doplň jen to, co v konverzaci nezaznělo.
**Zadání nech odsouhlasit, než začneš psát.** Skill postavený na nedomluveném zadání se zahazuje celý.
## Fáze 3 – Tabulka delegací
**Povinná inventura.** Ke každému kroku navrženého postupu odpověz: *umí to už něco?* Prohledej vlastní skilly, pluginy, vestavěné skilly, hooky a deterministické nástroje z inventury ve *Fázi 0*.
Výstupem je tabulka, která jde rovnou do sekce *Jak je to postavené uvnitř*:
```
| Krok | Kdo | Proč zrovna on |
|---|---|---|
| <krok> | vlastní | <co je na tom naše> |
| <krok> | <nástroj> | <co už umí> |
```
Zapisuje se do `SKILL.md`, tedy **jako Markdownová tabulka**, ne jako mezerami zarovnaný text v bloku kódu.
**Zbylo-li po odečtení delegací jádro, pokračuj.** Nezbylo-li, řekni to: je to alias, ne skill, a má se napsat jako alias.
## Fáze 4 – Srovnávací běh
**Změř, jak agent selže bez skillu.** Bez toho se skill píše proti představě, ne proti skutečnosti – a naučí něco jiného, než je potřeba.
**Vyvolej `superpowers:writing-skills`** a předej mu úlohu: pustit agenta bez skillu na ukázkový úkol ze zadání a **zapsat konkrétní racionalizace**, kterými si zvolil jinou cestu. Ty jsou vstup pro *Časté chyby* a pro místa, kde má být pravidlo formulované tvrději.
**Tvar mu nezadávej** a jeho doporučení k tvaru ignoruj – ten je z normy.
Nejde-li srovnávací běh udělat (skill je čistě mechanický, nebo prostředí není k dispozici), **řekni to a pokračuj** – vědomá mezera se přiznává, ne obchází.
## Fáze 5 – Sepsání
**Nejsilnější model, `xhigh`** (`~/.claude/RULES.md`, *Model a effort podle úkolu*). Skill řídí veškerou práci, která pod ním poběží; vada v něm se násobí do každého běhu a projeví se až u posledního.
**Piš sám, proti normě.** Tenhle krok se nedeleguje – je to jediné místo, kudy by prosákl cizí tvar.
Projdi `SKILLS.md` sekci po sekci a splň každou. Zvlášť hlídej to, co se odbývá nejčastěji:
- **`Co skill nedělá` jmenuje souseda**, ne obecnou činnost.
- **`Fáze 0` odkazuje na `PREFLIGHT.md`** a obsahuje jen odchylky.
- **Závěrečný verdikt** má obě znění, splňuje vzorec z normy a je v těle uvedený doslovně.
- **Délka** pod měkkou mezí; co ji přetahuje, jde do vedlejšího souboru v adresáři skillu.
- **`description`** má spouštěč i popis situace a vejde se do 1024 znaků.
- **`argument-hint` sedí s režimy** popsanými v těle.
## Fáze 6 – Ověření
Tři vrstvy, každá měří něco jiného. Chybí-li nástroj pro některou, vynech ji a **zapiš to do závěru jako nezkontrolované**.
1. **Tvar** – pusť `python3 -m unittest discover -s tests` z `~/.claude`. Je to nejlevnější kontrola a stojí nula tokenů.
2. **Vyvolání** – ladění `description`. Měří, jestli se skill chytí na situace, pro které vznikl, a nechytá se na cizí. **U skillu, jehož jméno se překrývá s cizím skillem, je tenhle krok povinný.**
**Neměř to skriptem `run_eval.py` ze `skill-creatoru` u skillu, který je nainstalovaný.** Registruje popis jako dočasný slash command a hledá volání toho dočasného jména; model přitom zavolá skutečný nainstalovaný skill, takže se **správné vyvolání počítá jako propadlé**. Ověřeno 6. 9. 2026 na `/compose`: 8/16, všech osm propadů byly pozitivní případy, a kontrolní běh s maximálně dotěrným popisem dal 0/2 – měřil nástroj, ne popis.
**Měř na skutečném kanálu:** pusť každý testovací prompt přes `claude -p --output-format stream-json` v čistém adresáři a sleduj, jestli mezi voláními nástrojů padne `Skill` se jménem toho skillu.
**Pozor: doslovný `/jméno` se takhle změřit nedá.** Napíše-li uživatel jméno skillu s lomítkem, harness mu **vloží tělo `SKILL.md` rovnou do zadání** a model žádný nástroj `Skill` nevolá – není proč. Detektor postavený na volání nástroje pak hlásí propad tam, kde skill zabral **spolehlivěji** než jindy, protože o jeho načtení nerozhodoval model. Je to táž vada jako u `run_eval.py` o odstavec výš: měřidlo, které neodliší vlastní selhání od nálezu. **Doslovné slash prompty proto měř znalostí obsahu těla** – zeptej se na něco, co je jen v `SKILL.md` a není v `description` (třeba na názvy fází), a ověř, že to model zná. Ověřeno 7. 9. 2026 na `/ptydepe`: detektor podle volání nástroje dal 20/24, skutečnost byla 24/24. Ostatní skilly jsou přitom reálně v nabídce, takže se rovnou měří i překryv s nimi. Dva běhy na prompt, aspoň šest pozitivních a šest negativních – near-missy volit tak, aby braly jednotlivá slova z popisu („posbírej články konkurence“ proti režimu `collect`).
- **Třetí vada měřidla: prompt musí mít o čem mluvit.** Odkazuje-li testovací prompt na vstup („zapracuj **tenhle článek**“, „přepiš **tuhle nahrávku**“) a v adresáři, kde měření běží, žádný takový soubor není, model se **doptá, místo aby jednal** – a detektor to započítá jako propad. Není to vada popisu: s existujícím souborem projde týž prompt na první pokus. **Založ proto v měřicím adresáři vstup, na který se prompty odvolávají**, a propadlý pozitivní případ vždycky přeměř se souborem, než začneš přepisovat `description`. Ověřeno 10. 9. 2026 na `/learn`: 6/8 se dvěma propady z tohohle důvodu, po vložení souboru 10/10. Je to táž třída chyby jako obě předchozí – měřidlo, které neodliší vlastní selhání od nálezu –, a **poznáš ji podle toho, že propadají jen pozitivní případy**.
+ **Třetí vada měřidla: prompt musí mít o čem mluvit.** Odkazuje-li testovací prompt na vstup („zapracuj **tenhle článek**“, „přepiš **tuhle nahrávku**“) a v adresáři, kde měření běží, žádný takový soubor není, model se **doptá, místo aby jednal** – a detektor to započítá jako propad. Není to vada popisu: s existujícím souborem projde týž prompt na první pokus. **Založ proto v měřicím adresáři vstup, na který se prompty odvolávají**, a propadlý pozitivní případ vždycky přeměř se souborem, než začneš přepisovat `description`. Ověřeno 10. 9. 2026 na `/learn`: z osmi promptů propadly dva a **jen jeden z nich byl dírou v `description`** – druhý mizel proto, že v adresáři nebyl soubor, o kterém prompt mluvil, a po jeho vložení prošel na první pokus. Kdyby se to nerozlišilo, opravoval by se popis kvůli propadu, který s ním nemá nic společného. Je to táž třída chyby jako obě předchozí – měřidlo, které neodliší vlastní selhání od nálezu –, a **poznáš ji podle toho, že propadají jen pozitivní případy**.
3. **Dodržení pod tlakem** – `superpowers:writing-skills`, tlakové scénáře. **Povinné u skillu, který něco zakazuje nebo vynucuje** (nesahat na testy, nepokračovat bez potvrzení, nespouštět proti produkci). U takového skillu je totiž funkce právě to omezení, a ta se tvarem ověřit nedá.
Nálezy oprav a **projeď znovu** – ne že je jen ohlásíš.
## Fáze 7 – Okolí
Skill nežije sám. Tohle je jediné místo, kde je to napsané, takže se to jinak neudělá:
| Kam | Co |
|---|---|
| `skills/<jméno>/README.md` | **README skillu pro člověka zvenčí** podle `SKILLS.md`, *README skillu* – sekce, hromadná instalace u skillu ze životního cyklu, odkaz do repozitáře |
| `~/.claude/README.md` | jeden odstavec ve stylu ostatních – k čemu skill je. **Odkaz na README skillu nese nadpis sekce** (`### [`/jméno`](skills/jméno/)`), ne zvláštní řádek pod odstavcem; do části *Skilly životního cyklu projektu* v pořadí kroků, nebo *Skilly mimo životní cyklus* abecedně |
| `~/.claude/RULES.md` | zařazení do *Životního cyklu projektu*, stojí-li v něm – a doplnění u sousedů, čí práci nepřebírá |
| `~/.claude/tests/test_skills.py` | nese-li skill něco, co má hlídat stroj, přidej test na **nosnou část**, ne na tvar hlavičky. U nového skillu ověř, že normu splňuje – do `MIGRACE` se **nedoplňuje**, ten seznam se jen zkracuje |
| `skills/*/README.md` **ostatních skillů z cyklu** | zakládáš-li krok *Životního cyklu projektu*, patří jeho jméno do rámečku i do hromadné instalace **ve všech ostatních README cyklu**. Testy to chytí, ale samy to nedopíšou |
| `~/.claude/skills/<jméno>/` | vedlejší soubory, skripty, jejich kontrola závislostí |
| `/project` | nabízí-li se skill při zakládání projektu, doplň ho do jeho doménových voleb |
| `decisions.md` | proč vznikl, jaké varianty byly zavrženy, co se vědomě nepokrylo. **Pozor:** `~/.claude` nemá `docs/` – zapisuje se do `~/Dev/context/decisions.md`, viz `.claude/CLAUDE.md` |
**Commitni**, má-li repozitář zapnutý autocommit.
## Fáze 8 – Závěr
```
## Skill hotový
- **Soubor:** skills/<jméno>/SKILL.md – <N> řádků
- **Režim:** <create / extract>
- **Delegace:** <na co, nebo „na nic">
**Ověřeno**
- Tvar: <výstup testů a návratový kód>
- Vyvolání: <výsledek, nebo „neměřeno – proč">
- Tlakové scénáře: <výsledek, nebo „nepoužito – proč">
**Okolí**
- README.md · RULES.md · tests/ · /project · decisions.md – co se dorovnalo
**Nezkontrolováno**
- [co a proč, nebo „nic"]
```
Vypisuj to jako **Markdown, ne jako blok kódu**, a řádky nezalamuj natvrdo – `~/.claude/RULES.md`, *Styl odpovědí*.
Zakonči jednou z těchto vět, nikdy ničím vágním mezi tím:
- `Skill je hotový a ověřený, můžeš ho pustit.`
- `Skill hotový není – brání tomu: <konkrétní seznam>.`
------
## Režim `update`
Projde skilly proti **dnešní** podobě normy a dorovná, co se rozešlo. Bez jména v argumentu jede přes všechny.
**Normu si načti, neopisuj ji z hlavy.** Rozdíl mezi skillem a tvou pamětí není nález – tvoje paměť je zrovna to, co je zastaralé.
### Co se kontroluje
| Oblast | Co ověřit |
|---|---|
| Hlavička | `name` sedí s adresářem; `description` má spouštěč i situaci a vejde se do 1024 znaků; `argument-hint` sedí s režimy v těle; `allowed-tools` nemá nástroje, které skill nepoužívá |
| Povinné sekce | jsou tam všechny a v pořadí z normy; žádná zaniklá nepřebývá |
| *Co skill nedělá* | jmenuje souseda, ne obecnou činnost; u kroku životního cyklu jsou to sousedé z obou stran |
| Příprava | odkazuje na `PREFLIGHT.md` a neopisuje jeho obsah |
| Závěrečný verdikt | jsou tam obě znění a ve tvaru z normy |
| Délka | proti mezím z normy; nad měkkou mez navrhni, co vytáhnout |
| Odkazy | každá cesta a každý zmíněný skill existuje; **žádný odkaz nemíří dovnitř fáze jiného skillu** |
| Názvosloví | „Fáze“ vs. „Krok“; jeden termín pro jednu věc |
| Delegace | volané nástroje existují; sekce *Jak je to postavené uvnitř* je tam, kde se deleguje, a označuje vnitřek za vyměnitelný |
| README skillu | existuje, má povinné sekce v pořadí z normy, instalace je psaná jako pokyn pro Clauda a u skillu ze životního cyklu nechybí rámeček ani hromadná instalace |
| **Nové možnosti v okolí** | *nevzniklo mezitím něco, co tenhle skill dělá ručně?* Přibyl vestavěný skill, plugin, MCP server nebo vlastní skill, který by nahradil kus jeho postupu? |
Poslední řádek je druhý druh rozejití vedle toho s normou a **neklade ho nikdo jiný**. Konfigurační vrstva roste pod nohama a starší skill o ní neví.
### Jak to proběhne
**Napřed vypiš nálezy, pak teprve jednej.** Uživatel musí vidět rozsah dřív, než se sáhne na soubory.
```
- **<skill>** – <N> nálezů: <závažnost> <jednou větou> · [opravím / potřebuju rozhodnout]
```
Vypisuj to jako **Markdown, ne jako blok kódu**, a řádky nezalamuj natvrdo – `~/.claude/RULES.md`, *Styl odpovědí*.
**Dvourychlostní režim.** Mechanické a jednoznačné oprav rovnou a jen vypiš – chybějící odkaz na `PREFLIGHT.md`, chybějící znění závěrečného verdiktu, `argument-hint` bez opory. Co **přepisuje nebo maže existující obsah** – rozdělení dlouhého skillu, přeformulování sekce, nahrazení kroku delegací – předlož a nech potvrdit, přes `AskUserQuestion` a **po jednom**.
**Přes všechny skilly nepředkládej nález po nálezu.** Ukaž vzorec, počet a tři příklady, a proveď to hromadně. Padesát otázek se neodklikává, jen odsouhlasí naslepo.
**Nenajdeš-li nic, řekni to a skonči.** Běh bez zásahu je platný výsledek revize.
**Vyškrtni ze seznamu `MIGRACE`** skill, u kterého jsi vypořádal **všechny** jeho nálezy – vyškrtává se po celých skillech, ne po jednotlivých nálezech, takže skill s jedním zbylým nálezem v seznamu zůstává v `~/.claude/tests/test_skills.py`. Ten seznam **musí přesně sedět se skutečností**: nesmí v něm chybět skill mimo normu ani zůstat skill, který se opravil. Opravený a nevyškrtnutý skill proto shodí testy stejně jako regrese. Je to schválně – bez toho by výjimka tiše přežila dokončenou migraci a přestala cokoliv měřit.
Pak pokračuj *Fází 7* – i `update` sahá na `README.md` a testy.
### Proč se nikam neukládá, proti čemu se revidovalo naposledy
Nabízí se zapsat datum poslední revize a příště projít jen to, co se od té doby v normě změnilo. **Vědomě se to nedělá.** Stav skillu je odvoditelný z toho, jak vypadá teď, kdežto zapsaný otisk je tvrzení, které nikdo neověřuje. Hlavně by ale zúžil revizi na diff normy, a tím minul přesně ten případ, kvůli kterému vznikla – rozejití, které se nikdy nepropsalo, protože ho tehdy nikdo nezpropagoval.
------
## Režim `delete`
**Skill se buď používá, nebo neexistuje.** Vypnutý skill dál nabízí funkci, kterou nikdo nemá zapnout – proto se ruší celý, ne že se odstaví.
Nejdřív **vypiš, co všechno se najde**, a nech to potvrdit. Teprve pak maž.
| Kde hledat | Co |
|---|---|
| `~/.claude/skills/<jméno>/` | celý adresář včetně vedlejších souborů a skriptů |
| `~/.claude/README.md` | jeho sekce |
| `~/.claude/RULES.md` | *Životní cyklus projektu* a zmínky u sousedů |
| `~/.claude/tests/` | testy, které se ho týkají – **a jeho jméno v seznamu `MIGRACE`**, je-li tam; jinak `test_migrace_jmenuje_jen_existujici_skilly` spadne na výjimku pro nikoho |
| ostatní skilly | odkazy a předávání práce – „další krok: `/<jméno>`“ |
| `skills/*/README.md` | **byl-li to krok cyklu**, jeho jméno v rámečku a v hromadné instalaci ostatních vizitek. Osiřelý odkaz na `../<jméno>/README.md` testy shodí, ale samy ho nevyškrtnou |
| `~/.claude/settings.json` | hooky a oprávnění, které existovaly kvůli němu |
| projektové `CLAUDE.md` v `~/Dev` | sekce, které skill zakládal |
| Memory | záznamy, které ho vyžadují |
Hledej **grepem přes všechny ty kořeny**, ne z paměti. Po smazání **projeď kontrolní průchod na jméno skillu** – musí vrátit nulu mimo místa vědomě ponechaná.
**Nech stopu.** Do `~/Dev/context/decisions.md` zapiš, co bylo zrušeno a proč, i co se tím vědomě ztratilo. Bez toho se zrušený mechanismus vrátí za půl roku jako „to by šlo udělat“.
Zakonči jednou z těchto vět, nikdy ničím vágním mezi tím:
- `Skill je zrušený, jeho jméno se v konfiguraci nevyskytuje.`
- `Skill zrušený není – brání tomu: <konkrétní seznam>.`
------
## Časté chyby
- **Norma se opíše do skillu.** Pak se rozejde a nikdo neví, která verze platí. Norma se **čte**, ne cituje.
- **Cizímu nástroji se zapomene říct tvar.** Prosadí vlastní – `skill-creator` i `writing-skills` mají každý svou představu o sekcích. Vždycky mu ho předej výslovně.
- **Revize se pustí bez načtení normy.** Pak měří proti paměti, tedy proti stavu, který je zrovna zastaralý.
- **Přes všechny skilly se nálezy předkládají po jednom.** Neodklikatelné; odsouhlasí se naslepo a revize ztratí smysl.
- **Skill vznikne na věc, kterou chytne test nebo hook.** Mechanické omezení psané textem se dodržuje hůř a stojí tokeny při každém běhu.