Install
$ agentstack add skill-otomata-tech-claude-skills-timetrack ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Time Tracking
Track billable hours for freelance missions.
Sources de données
| Source | Rôle | |--------|------| | Attio Deals (oto attio deals) | Référentiel missions (source de vérité) : client, TJM, contacts, pennylane_* — via le slug | | oto datastore namespace timetrack | Entrées de temps : heures loguées par jour/mission (clé = slug du Deal) |
Les missions actives sont les Deals avec stage=Active. Ne jamais dupliquer les infos mission dans le datastore.
Historique pré-2026-05-20 : /mnt/otomata/time-entries.json (archive read-only, migré dans le datastore).
Commands
| Command | Description | |---------|-------------| | /timetrack log [note] | Log hours for today | | /timetrack log [note] | Log hours for a specific date (YYYY-MM-DD) | | /timetrack list [slug] [--month YYYY-MM] | List entries, optionally filtered | | /timetrack summary [slug] [--month YYYY-MM] | Summary: total hours, amount, billed/unbilled | | /timetrack missions | List active missions with client et TJM | | /timetrack ca [--year YYYY] [--no-drafts] | CA par période de travail (Pennylane × entries) |
Default (no subcommand): summary for current month.
Storage
Datastore namespace timetrack — un Google Sheet per-user dans le Drive Alexis, schéma libre. Colonnes utilisateur : date (YYYY-MM-DD), project (slug Attio), hours (number), billed (bool), invoiceId (F2026-N ou PL- ou null), note. Colonnes auto : _id UUID, _created_at, _updated_at.
Lire/écrire :
oto data list timetrack [--filter project=] [--limit N]
oto data append timetrack '{"date":"...","project":"...","hours":N,"billed":bool,"invoiceId":"...","note":"..."}'
oto data update timetrack '{"billed":true,"invoiceId":"F2026-X"}'
oto data rm-row timetrack
oto data url timetrack # ouvre le Sheet dans le navigateur
log
- Vérifier que le Deal existe :
oto attio deal→ si pas trouvé, erreur. Accepter aussi les missions terminées (stageWon 🎉) pour facturation tardive. oto data append timetrack '{"date":"","project":"","hours":,"billed":false,"invoiceId":null,"note":""}'- Show confirmation:
Logged Xh on () — ""+ le_idretourné (pour update/delete éventuels).
list
oto data list timetrack --filter project= --limit 1000(ou sans filter)- Parser JSON, filtrer par mois côté client si
--month(le datastore ne fait que des filtres exacts). - Display as table:
`` Date Mission Hours Note 2026-03-15 roundtable 7.0 Jour 1 ``
- Total hours at bottom.
summary
oto attio deal→ extrairetjm.currency_valueet nom client.oto data list timetrack --filter project=→ filtrer par mois côté client.- Show:
- Total hours (billed / unbilled)
- Total amount (hours × TJM/7)
- Breakdown by mission if no slug filter
ca
Vue analytique du CA par période de travail, ventilée au prorata des heures quand une facture couvre plusieurs mois.
Exécuter : python3 ~/.claude/skills/timetrack/ca.py [--year YYYY] [--no-drafts]
Le script :
- Lit entries via
oto data list timetrack+ factures Pennylane (oto pennylane customer-invoices) - Lie chaque facture aux entrées via
invoiceId(F-number ouPL-) - Attribue la période selon cette règle :
- Si les entrées couvrent plusieurs mois → prorata par heures (ex. Movinmotion 0,5j mars + 2j avril)
- Sinon → date d'émission de la facture (J1-J7 = mois précédent, sinon mois d'émission)
- Affiche HT/TTC par mois + factures (marquées
*si draft) + entrées non facturées + factures sans entrées
missions
oto attio deals --stage Active → parser la sortie JSON et afficher :
Slug Client TJM Contact
roundtable Roundtable 700 Simon Ternoir
la-fabrique-ca La Fabrique by CA 725 Charlotte Guyard
stephanie-le-beuze Stéphanie Le Beuze 800 Stéphanie Le Beuze
Le contact vient de associated_people[0] sur le Deal (besoin d'un oto attio deal pour chaque, ou parser directement depuis oto attio deals).
Règles
- Le slug doit matcher un Deal Attio existant (tous stages acceptés pour logging ;
missionsne liste que stage=Active) - TJM et infos client viennent exclusivement du Deal Attio
- Le datastore ne contient que les entrées de temps
- Heures loguées en heures (7h = 1 jour). Le calcul montant utilise TJM/7.
- Pour update/delete une entrée : besoin de son
_id(UUID), récupéré viaoto data list timetrack.
API Attio — formats retournés
oto attio deals --stage Active retourne :
{"count": N, "deals": [{"id": "...", "slug": "...", "name": "...", "stage": "Active", "tjm": 700}, ...]}
oto attio deal retourne le record complet (valeurs sous values.[0]) :
- Client :
values.associated_company[0].target_record.values.name[0].value - Contact :
values.associated_people[0].target_record.values.name[0].full_name - TJM :
values.tjm[0].currency_value - Pennylane customer :
values.pennylane_customer_id[0].value
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: otomata-tech
- Source: otomata-tech/claude-skills
- License: MIT
- Homepage: https://otomata-tech.github.io/claude-skills/
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.