agentleFS
jantichyjantichy/claude/skills/clauding/SKILL.md

clauding

Skill45 starsChanged 16 days agoMITView on GitHub

Skill se použije, když uživatel zadá "/clauding" (volitelně s režimem day, week nebo month a s obdobím), nebo se ptá, kolik času strávil v Claude Code – za den, týden, měsíc či celou dobu, kolik hodin denně v průměru, který den byl nejdelší, jak se práce rozkládá do dnů v týdnu a hodin dne, kolik rozhodnutí, přerušení a zamítnutí ho práce stála, kolik commitů a znaků napsal. Spočítá to z transcriptů všech sessions, z history.jsonl a z vlastních commitů slitých do jednoho proudu událostí, takže souběžné sessions se nesčítají a čekání na Claudovu práci se počítá. Vypíše součet hodin, průměr na kalendářní i na aktivní den a vedle toho zásahy, commity a napsané znaky po obdobích a k tomu zajímavosti; dny, pro které transcript chybí, odhadne a označí. Na rozdíl od /invoicing recover nehledá čas k fakturaci pro klienta a nic nedoplňuje do timetrackingu. Nic nezapisuje.

1 other project uses a version of this.

Adopted by

Most recently taken up by

The file

Files
SKILL.md

Clauding

Co skill dělá

Spočítá, kolik času se strávilo v Claude Code, a vypíše to po obdobích. Za každé období součet hodin, průměr na kalendářní den, průměr na aktivní den a počet aktivních dnů. Ve druhé tabulce pozornost a práce: rozhodnutí v dialogu, přerušení, zamítnutí, tyhle zásahy dohromady na hodinu, commity, napsané znaky a průměrná délka promptu. Pod tím nejdelší den, den s nejvíc rozhodnutími, kolikrát Claude přitakal „máš pravdu“, nejčastější prompty, nejdelší napsaný prompt, nejpozdější konec noční práce, nejdelší blok v kuse, nejdelší řadu dnů po sobě, rozložení dnů podle počtu hodin, průměr podle dne v týdnu a rozložení podle hodiny dne.

Tři režimy, liší se jen členěním tabulky:

  • /clauding month – po měsících. Výchozí, bez období vypíše celou historii.
  • /clauding week – po týdnech od pondělí do neděle.
  • /clauding day – po dnech.

Za režimem volitelně období česky: „září“, „posledních 14 dní“, „od 1. 9.“, „minulý týden“.

Co skill nedělá

  • Nehledá čas k fakturaci. Dohledat nenatrackovanou práci pro klienta je /invoicing recover. Oba počítají nad týmž jádrem a týmž pravidlem mezery, ale recover jen nad projekty jednoho klienta a s commity jako stopou práce i mimo Clauda.
  • Neměří cenu běhu. Kolik tokenů stojí běh skillu, počítá skills/cost.py; tady jde o čas, ne o spotřebu.
  • Neopakuje vestavěný /stats. Ten ukazuje počty zpráv a sessions ze stats-cache.json, čas v něm není.
  • Nic nezapisuje – ani do projektu, ani do timetrackingu.

Jak je to postavené uvnitř

KrokKdoProč zrovna on
Výklad režimu a obdobívlastnípřevod české řeči na data je úsudek
Proud událostí a intervalyskills/timeline.pysdílené jádro – totéž pravidlo počítá i /invoicing recover
Součty, průměry, odhad a zajímavosticlauding.pydeterministický výpočet nad 3–4 GB transcriptů; model by ho dělal pomaleji a s chybou
Výpisvlastníodpověď na konkrétní dotaz nad tabulkou

Oba skripty jsou implementační detail, ne rozhraní – jejich jména, parametry i rozdělení práce se smějí změnit bez ohlášení. Závazná je Metodika níž a tvar výstupu: tabulka času se součtem a oběma průměry, tabulka pozornosti a práce, zajímavosti a značky odhadu a dolní meze. Změna metodiky se dělá v timeline.py a v této sekci zároveň, protože jinak by /clauding a /invoicing recover odpovídaly na tutéž otázku jinak.

Metodika

Měří se čas v Claudovi, ne čas u klávesnice: čekání, než Claude doběhne, je čas strávený s ním.

  1. Události ze všech sessions se slijí do jednoho proudu a mezery se měří nad ním, ne v každé session zvlášť. Kdo pracuje v několika oknech naráz, má v každém z nich dlouhé mezery, i když celou dobu pracuje – po sessions by se mu nezapočetlo nic.
  2. Událostí je každý záznam s časem: prompt, Claudova odpověď, výsledek nástroje, odpověď v dialogu, příkaz harnessu, spuštěný hook, záznam subagenta i workflow. Příkaz /clear nebo otevření session je stejný doklad, že se v Claudovi něco dělo, jako prompt. Sessions spuštěné přes claude -p se počítají taky.
  3. Mezera do 20 minut mezi dvěma sousedními událostmi se počítá celá, delší je pauza. Hodnota je společná s /invoicing recover a drží ji timeline.GAP.
  4. Běh příkazu v popředí se započte do výše svého timeoutu (bez zadaného dvě minuty). Co je v mezeře do jeho výsledku navíc, čekalo na schválení, a pro to platí bod 3 – jinak by se příkaz, který ráno čekal na schválení od večera, započetl jako noc práce.
  5. Vlastní commit je událost, jen když leží do 20 minut od aktivity v Claudovi. Commit uprostřed práce ji prodlouží; ruční práce v repozitáři mimo Clauda čas v Claudovi není.
  6. Dny se dělí podle pražského času, interval přes půlnoc se rozdělí.
  7. Den, pro který chybí transcript, se odhadne. Úklid starých sessions transcripty maže, history.jsonl s prompty ne. Pozná se podle skutečného promptu z history.jsonl, jehož session transcript nemá (příkaz harnessu typu /resume nebo exit transcript nezakládá, takže se nepočítá). Na takový den se spočte týmž pravidlem čas jen z promptů a commitů a vynásobí se koeficientem: poměrem plné metody a metody jen z promptů na dnech, kde jsou obě sady dat. Koeficient se počítá při každém běhu, takže se s každým dalším dnem zpřesní a nikdy se nerozejde s daty. Chybí-li jen část sessions dne, platí větší z obou hodnot. Odhadnutý den nese značku ~; rozložení podle hodiny dne a nejdelší blok se z něj nepočítají, protože prompty samy neříkají, kdy Claude doběhl.
  8. Aktivní den je den s nenulovým časem. Průměr na kalendářní den dělí počtem dnů období, u běžícího jen do dneška; průměr na aktivní den počtem aktivních dnů.
  9. Rozhodnutím je každá zodpovězená otázka v dialogu, kterým se Claude ptá s nabídnutými variantami, v hlavní session, ne volání – jedno volání nese až čtyři otázky. Subagent se uživatele zeptat nemůže. Otázky položené v textu odpovědi se nepočítají: spolehlivě je pozná jen úsudek modelu nad každou odpovědí, a heuristika „odpověď končí otazníkem“ by započetla i řečnické „Mám pokračovat?“ – přesné číslo smíchané s odhadem by nešlo věřit ani v přesné části.
  10. Přerušení je zastavení Clauda klávesou Esc, jak ho harness zapíše místo promptu. Zápis „přerušeno kvůli nástroji“ provází zamítnutí a přerušením není, jinak by se jedno rozhodnutí počítalo dvakrát. Ani jedno z toho není prompt.
  11. Zamítnutí je odmítnuté volání nástroje nebo zavřený dialog, jedno na Claudovu zprávu. Zamítnuté volání odmítne i ostatní souběžná volání téže zprávy a každé dostane vlastní záznam, i když uživatel rozhodl jednou. Počítá se i v subagentovi, protože schválení nástroje tam dává uživatel.
  12. Zásahy na hodinu jsou rozhodnutí, přerušení a zamítnutí dohromady, dělené časem – kolik pozornosti Claude za hodinu práce spotřebuje.
  13. Přitakání je výskyt „máš pravdu“ v Claudově textu v hlavní session; subagent přitakává Claudovi, ne uživateli.
  14. Body 9 až 13 stojí na transcriptech, a ty za odhadnutý den chybí aspoň zčásti. Počet je tam jen dolní mez se značkou ≥, období jen z odhadnutých dnů má – a poměr na hodinu se bere jen ze dnů bez odhadu – odhadnuté hodiny proti neúplnému počtu by daly poměr, který neplatí.
  15. Commit se počítá, leží-li do 20 minut od aktivity v Claudovi, ať z transcriptu, nebo z promptu v history.jsonl – týmž pravidlem jako v bodě 5, jen nad celou historií.
  16. Napsané znaky a prompty jsou z history.jsonl, takže pokrývají celou historii bez odhadu. Delší vložený text a obrázek v něm stojí jen jako značka a nepočítají se; krátké vložení se od psaní rozlišit nedá a opravy (Backspace, pohyb kurzorem) se nezapisují – je to tedy napsaný text, ne úhozy. Průměrná délka a nejčastější prompty vynechávají příkazy (/clear, exit), které by jinak obsadily první místa a nic neřekly.
  17. Konec noční práce je poslední prompt bloku, který skončil mezi půlnocí a šestou ráno; blok jsou prompty bez pauzy delší než tři hodiny. Blok, který začal až mezi čtvrtou a šestou, je brzký začátek dne, ne pozdní konec noci.

Fáze 0 – Příprava

Společný začátek je v ~/.claude/skills/preflight.md. Body 1 až 3 se vynechávají: skill nad projektem neběží, pouští se odkudkoliv a nic nezapisuje, takže kořen, kontrakt ani stav pracovního stromu nepotřebuje. Místo nich jediný předpoklad – existuje ~/.claude/projects/ nebo ~/.claude/history.jsonl. Nejsou-li ani jedno, není z čeho počítat; řekni to a skonči.

Fáze 1 – Režim a období

Režim vezmi z argumentu. Chybí-li a období je zadané, zvol ho podle jeho délky – do 31 dnů day, do půl roku week, jinak month: tabulka pak má rozumný počet řádků. Bez režimu i období platí month přes celou historii.

Období převeď na --since a --until ve tvaru YYYY-MM-DD, obě meze včetně. Dnešní datum vezmi z date +%F, ne z hlavy – „posledních 14 dní“ i „tento měsíc“ se od něj počítají. Příklady:

  • „září“ → --since 2026-09-01 --until 2026-09-30 (rok nejbližšího minulého nebo běžícího září)
  • „posledních 14 dní“ → 13 dní zpátky až dnešek
  • „minulý týden“ → pondělí až neděle předchozího týdne
  • „od 1. 9.“ → jen --since

Nejde-li období jednoznačně určit („minule“, „v létě“ bez roku, kde jsou dva kandidáti), zeptej se jednou větou na jeho meze; netipuj, protože tabulka za špatné období vypadá stejně věrohodně jako za správné.

Fáze 2 – Výpočet

python3 ~/.claude/skills/clauding/clauding.py <režim> [--since YYYY-MM-DD] [--until YYYY-MM-DD]

Běží desítky sekund – čte všechny transcripty. Selže-li, zastav se a vypiš chybu i s návratovým kódem; nepočítej nic ručně místo skriptu. Ruční výpočet nad transcripty je přesně ta cesta, na které se ztrácí souběh sessions a čekání na odpověď v dialogu se počítá jako Claudova práce.

Časté chyby

Ze session, ve které skill vznikl – každá z nich dala věrohodné, ale špatné číslo:

  • Mezery po sessions místo nad společným proudem. Práce ve dvou oknech střídavě se pak rozpadne na samé pauzy.
  • Čekání na odpověď v dialogu se započte jako Claudova práce. Otázka, na kterou uživatel odpoví druhý den, by přidala desítky hodin.
  • Commit se počítá bez ohledu na Clauda. Staré repozitáře pak posunou začátek historie o roky dřív, než Claude existoval.
  • Den se označí za odhad kvůli příkazu harnessu. /resume nebo exit v session, která nic nezapsala, transcript nemá – a jediný takový záznam by udělal odhad z celého dne.

Fáze 3 – Závěr

Výstup skriptu je hotový Markdown. Vypiš ho beze změny – nezaokrouhluj jinak, nepřepočítávej a nevynechávej poznámku o odhadu ani vysvětlivku nad tabulkou pozornosti, protože bez nich vypadá odhad jako změřené číslo a dolní mez jako úplný počet. Ptal-li se uživatel na konkrétní věc („kolik jsem byl v Claudovi včera“), odpověz nad tabulkou jednou větou s číslem z ní.

Zakonči jednou z těchto vět, nikdy ničím vágním mezi tím:

  • Čas je spočítaný a ověřený skriptem, můžeš se zeptat na jiné období nebo členění.
  • Čas spočítaný není – brání tomu: <konkrétní seznam>.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.