timesheet
Skill1 starsChanged 6 months agoMITView on GitHub
Génère un récap journalier à partir des commits git pour remplir une feuille de temps. À utiliser quand l'utilisateur veut un résumé client-friendly de son activité par jour. Optionnellement enrichi via l'historique des sessions Claude Code (fichiers touchés), Azure DevOps (titres des work items) et Outlook/M365 (réunions).
5 other projects use a version of this.
Adopted by
Most recently taken up by
- JHostalek/dotclaudetheir own version, first seen Nov 1, 2026
- wearedevpunks/skillstheir own version, first seen Oct 13, 2026
- ZunoSmartLabs/zsl-superpowerstheir own version, first seen Sep 21, 2026
- cgbarlow/skillstheir own version, first seen May 4, 2026
- neox-d/claude-erpnext-timesheettheir own version, first seen Apr 24, 2026
Other versions5 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 5
- cgbarlow/skills★ 18same name
- JHostalek/dotclaude★ 11same name
- ZunoSmartLabs/zsl-superpowers★ 2same name
- neox-d/claude-erpnext-timesheet★ 1same name
- wearedevpunks/skills★ 1same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
The file
We split this skill into the rules it gives an agent
1 rule. 0 are common, 0 are distinctive, and 1 is very specific to this project.
0
Common
Most of the 5 edited versions we read keep these.
0
Distinctive
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 94
Commit : fix: validate min price on patch endpoint → Bullet : Correction de la validation du prix minimum à la modification d'un produit
“Common” is measured: kept by at least 6 in 10 of the 5 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Timesheet — récap journalier client-friendly
Arguments
L'utilisateur invoque la commande sous l'une de ces formes :
/timesheet 2026-04-27→ start = 27/04, end = aujourd'hui, repo = cwd/timesheet 2026-04-27 2026-05-01→ start + end explicites, repo = cwd/timesheet 2026-04-27 2026-05-01 C:/path/to/repos→ start + end + chemin de scan/timesheet 2026-04-27 - C:/path/to/repos→ start + end auto + chemin (le-= end auto)
Date de début OBLIGATOIRE. Format ISO YYYY-MM-DD.
Étape 1 — Scan des commits
- Détermine le chemin de scan : argument 3 si fourni, sinon
pwd. - Walk récursif dans le chemin pour trouver tous les dossiers
.git/(limite la profondeur à 4 niveaux pour éviter de balayer desnode_modulesou autres). - Pour chaque repo trouvé :
- Récupère l'email git de l'utilisateur :
git -C <repo> config user.email - Liste les commits dans la fenêtre :
git -C <repo> log --since="<start>" --until="<end> 23:59:59" \ --author="<email>" --pretty=format:"%ad|%h|%s" \ --date=format:"%Y-%m-%d"
- Récupère l'email git de l'utilisateur :
- Agrège tous les commits, groupe par date.
Étape 1.5 — Compléter avec l'historique Claude (optionnel)
Les commits git ne capturent pas le travail non-commité : exploration de code, refactos intermédiaires, configuration d'outils, debug long, etc. Cette étape propose d'enrichir les données de l'étape 1 avec ce qui s'est passé dans les sessions Claude Code de la fenêtre.
1) Vérifie la dispo du scanner :
Cherche <skill-dir>/lib/scan-claude-history.ps1 (le dossier lib/ à côté de ce SKILL.md). S'il existe, le scanner est dispo. Sinon, saute cette étape entièrement.
2) Lance le scan :
powershell -NoProfile -ExecutionPolicy Bypass `
-File "<skill-dir>/lib/scan-claude-history.ps1" `
-Start "<start-date>" -End "<end-date>"Le script retourne un JSON avec :
by_day[]— par jour calendaire local :files_edited,files_written,user_prompts_preview(premiers 80 chars),cwds(répertoires de travail),session_count,event_count,span_minutessessions[]— détail par session si besoin
Le script ne retourne que des métadonnées (paths, comptes, aperçus tronqués), jamais le contenu brut des messages — c'est conçu pour la confidentialité.
3) Filtre les chemins meta/internes avant utilisation :
Retire de files_edited / files_written tout ce qui n'est pas du travail client facturable :
- Chemins sous
~/.claude/,%USERPROFILE%\.claude\,~/.claude.json→ config Claude perso - Fichiers
SKILL.md,CLAUDE.md,MEMORY.md,*.mddans des dossiers.claude/ - Hooks (
*/hooks/*.ps1,*/hooks/*.sh) - Skills (
*/skills/*) - Tout fichier dans un projet outil/MCP perso (ex. un MCP local que l'utilisateur a créé pour lui-même — pas client-billable)
Garde tout ce qui correspond à un repo client (les chemins qui matchent un des repos détectés à l'étape 1).
4) Demande à l'utilisateur via AskUserQuestion :
Présente d'abord un résumé court : "X sessions Claude détectées sur la fenêtre, Y fichiers client touchés au total." Puis options :
- "Oui, intégrer l'activité Claude" — fusionne avec les commits git pour la reformulation à l'étape 2
- "Non, juste les commits git" — passe à l'étape 2 sans cette donnée
5) Si "Oui" :
- À l'étape 2, le LLM dispose des fichiers client touchés par jour + des aperçus de prompts utilisateur comme signaux supplémentaires pour rédiger les bullets
- Ne jamais exposer un chemin brut au client (
src/BillingService/BillingController.csreste interne ; le bullet dit "côté BillingService") - Les prompts utilisateur (
user_prompts_preview) ne servent qu'à inférer le thème, jamais à les recopier dans le rendu
Edge cases :
- Aucune session sur la fenêtre : signaler "(aucune session Claude trouvée sur la période)", passer à l'étape 2
- Scanner absent : sauter cette étape sans erreur
- Span suspect (
span_minutesénorme alors que peu d'events) : c'est juste la fenêtre d'inactivité de la session, ignorer ce chiffre pour le timesheet — on ne reporte pas un temps de travail à partir de là
Étape 2 — Reformulation client-friendly
Pour chaque jour, transforme les messages de commit techniques en bullets compréhensibles par un non-développeur :
Règles :
- Pas de jargon technique brut (
refactor,chore,wip) — explique l'intention métier - Mentionne le service / module quand pertinent (ex. "côté BillingService", "sur le workflow facturation")
- Une bullet = une action ou un thème cohérent (groupe les commits successifs sur le même sujet)
- Verbes au passé ou substantifs ("Correction de…", "Mise en place de…")
- Court (1 ligne par bullet idéalement)
Exemple de transformation :
- Commit :
fix: validate min price on patch endpoint→ Bullet :Correction de la validation du prix minimum à la modification d'un produit - Commit :
chore: bump packages→ Bullet :Mise à jour des dépendances techniques - Commit :
feat: add export pdf→ Bullet :Ajout de l'export PDF
Étape 3 — Demander si enrichissement Azure DevOps
Après avoir présenté la première version, utilise impérativement le tool AskUserQuestion (pas une question en texte libre) pour proposer l'enrichissement ADO. Adapte les options selon que la MCP Azure DevOps est dispo dans la session ou non :
Si MCP ADO dispo — options :
- "Oui, récupérer les titres" — appelle la MCP pour chaque work item détecté
- "Non, garder tel quel" — passe à l'étape 4
Si MCP ADO non dispo — options :
- "Coller les titres manuellement" — l'utilisateur fournit les titres des US/Tasks
- "Installer la MCP ADO officielle" — l'utilisateur installe une MCP uniquement depuis une source officielle (Microsoft / Anthropic / registre MCP officiel). Ne jamais suggérer de paquets npm tiers ou de repos GitHub communautaires. Si aucune MCP officielle n'existe, le dire et ne pas proposer cette option.
- "Sauter cette étape" — passe à l'étape 4
Détecte au préalable les références ADO dans les messages de commit : patterns #1234, AB#1234, US 1234, Task 1234, PR <num>, etc., et liste-les dans le texte qui précède la question pour que l'utilisateur sache de quoi on parle.
Si l'utilisateur fournit les titres (manuellement ou via MCP), régénère les bullets en intégrant le contexte business des work items.
Étape 4 — Demander si intégration Outlook / M365
Après l'éventuel enrichissement ADO, utilise impérativement le tool AskUserQuestion (pas une question en texte libre) pour proposer l'intégration des réunions.
Détection préalable — avant d'afficher la question, vérifie si une MCP de listing de calendrier M365 est dispo dans la session. Détecte par capacité (un tool qui prend une fenêtre de dates et retourne des réunions), pas par nom de serveur. Indices typiques : tool dont le nom contient list_meetings / list_events / calendar, accepte start_date + end_date, retourne des objets { subject, start, end, duration_minutes, ... }.
Si une MCP calendrier M365 est dispo — options :
- "Oui, récupérer via la MCP calendrier" (recommandé) — appelle le tool de listing avec
{start_date, end_date}sur la fenêtre demandée. Garde les filtres par défaut du tool (declined / all-day / annulées sont normalement déjà exclus). Si le tool propose un mode strict "accepted_only" ou équivalent, ne pas l'activer : sur les occurrences récurrentes, les clients Outlook retournent souvent un statut "NotResponded" à tort, ce qui masquerait les dailies/standups. - "Coller les réunions manuellement" — fallback
- "Fournir un fichier .ics" — autre fallback
- "Sauter cette étape" — finalise le récap
Si aucune MCP calendrier M365 n'est dispo — options :
- "Coller les réunions manuellement" — l'utilisateur fournit titre + jour + durée
- "Fournir un fichier .ics" — l'utilisateur exporte son calendrier et donne le chemin
- "Installer une MCP calendrier M365" — pointer vers une MCP officielle (Microsoft / Anthropic / registre MCP officiel) si elle existe, sinon suggérer à l'utilisateur de créer sa propre MCP locale exposant
list_meetings(start_date, end_date). Ne jamais proposer de MCP tierce (npm communautaire, repo GitHub non-vendor). À ce jour, aucune MCP officielle Microsoft ne couvre le calendrier personnel — laMicrosoft MCP Server for Enterprisene couvre que des scopes admin/tenant. - "Sauter cette étape" — finalise le récap
Traitement des réunions retenues :
- Une bullet par réunion sous la bonne date :
Réunion : <titre> (<durée formatée>)ouPoint équipe — <titre> - Formate la durée à partir de
duration_minutes(ou équivalent retourné) :30min,1h,1h30,2h - Si plusieurs occurrences d'une même série récurrente sur la fenêtre, regroupe-les si pertinent (ex. "Daily — 5 occurrences cette semaine") ou liste-les jour par jour selon le contexte
- Ne mentionne pas les détails sensibles (participants externes, contenu) sauf si demandé
- Le champ
organizerpeut servir à enrichir le contexte ("Réunion organisée par X") mais reste optionnel
Format de sortie final
## Semaine du <date-debut> au <date-fin>
### Lundi <date>
- <bullet 1>
- <bullet 2>
- Réunion : <titre> (1h)
### Mardi <date>
- ...- Pas de jour si aucune activité (pas de "Vendredi : RAS")
- Bullets dans l'ordre logique : travail produit d'abord, réunions ensuite
Edge cases à gérer
- Aucun commit trouvé : prévenir l'utilisateur, demander si l'email git est correct (
git config user.email), suggérergit log --allpour debug. - Repos avec emails différents : agréger quand même, lister les emails détectés à la fin pour info.
- Commits avec
Co-Authored-ByClaude : ignorer la mention Claude dans le bullet. - Date début > date fin : erreur claire.
- Date début dans le futur : erreur claire.
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
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.

