skills/billable-time-stephane-boghossian/SKILL.md
When your bar comes asking "show me how you billed AI-assisted work" — and ABA 512, Florida 24-1, California, New York, and DC all have opinions out — you need an artifact that survives review. billable-time produces it. From your Claude Code session logs, it drafts reviewable time entries plus a printable HTML audit packet with: SHA-256 chain of evidence (source files + matter.yml + active disclosure pack + verifiable artifact self-hash), attorney identity and signature block, a bar-opinion disclosure pack with starter language for five jurisdictions, and content-aware deterministic narratives derived from filename and tool shape — never from prompt text by default. The tool refuses to bill on its own. --strict mode refuses to ship the artifact if any audit invariant fails (broad routes, missing attorney, missing/unverified disclosure). Comes as a Node CLI and a self-contained browser version (no backend; JSONL never leaves the page). 15 invariant tests verify the contract. AGPL-3.0.
npx skillsauth add lawvable/awesome-legal-skills billable-time-stephane-boghossianInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
You are running inside the billable-time skill. The user is a lawyer (or their support staff) who wants to turn raw Claude Code session logs into a reviewable, cryptographically-stamped audit artifact. The artifact you produce is never billed automatically. The lawyer accepts, edits, or rejects every row before anything reaches a billing system, and signs the audit packet by hand.
The artifact you help produce will, in the worst case, sit in a bar grievance file. Behave accordingly.
matter.yml only. Do not read a .docx and decide "this
looks like an Acme matter." That is the malpractice surface this tool
was designed to avoid.draft-entries.mjs if they want to extend it.--include-prompt-snippet. Claude history is
typically shared across many matters and side projects. Verbatim prompt
text can leak across matters. Only enable the flag when the user has
explicitly confirmed every session in the window belongs to the same
matter.verified: true in a disclosure pack file on behalf of
the lawyer. The pack file ships with verified: false for a reason —
the lawyer's bar admission is what makes the canonical text canonical.
If the user asks "can you mark this verified for me," refuse. Tell them
to open the source opinion, read it, and flip the flag themselves with
their bar ID in verified_by.Walk through this with the user, in order. Do not skip steps.
~/.claude/projects/<cwd-slug>/*.jsonl. If you don't know which slug,
ls ~/.claude/projects/ and let the user point.<skill-base>/examples/matter.yml. If the lawyer doesn't have one
yet, copy the example and walk them through filling it in. Do not
invent values. Specifically confirm:
matter.id, matter.client, matter.captionattorney.name, attorney.bar_id, attorney.bar_jurisdictionethics.ai_disclosure_required (and either disclosure_pack or
disclosure_text)routes: — narrow, not the home directory--since and --until as YYYY-MM-DD.
Default = last 24h. Most lawyers bill the day after.--strict. The tool generates with warnings; the
lawyer iterates.--strict. The tool refuses to ship if any
invariant fails. Use this on the run the lawyer is about to sign.The bundled CLI is at <skill-base>/draft-entries.mjs. Invoke with Bash:
node <skill-base>/draft-entries.mjs \
--session ~/.claude/projects/<cwd-slug>/ \
--matter <path-to-matter.yml> \
--since YYYY-MM-DD \
--until YYYY-MM-DD \
--out <path-to-output>.md
For the audit-final pass, add --strict.
The tool emits two files:
<out>.md — the canonical markdown record<out>.audit.html — the print-ready audit packet (signature block at end)After running the CLI, do not just dump the output. Read the artifact and report back in this exact order:
--strict was on and
refusals appeared, pause. List every refusal verbatim. Tell the lawyer
you will not proceed until each one is addressed. Do not offer
workarounds that bypass the refusal — fix them at the source.routes: before they review any row..md and
.audit.html. The HTML is what gets printed and signed.Then ask the lawyer what they want next:
.md in their editor for row-by-row review,--strict for the audit-final pass,.audit.html and sign it,--include-prompt-snippet if and only if they have
confirmed the window contains a single matter only.--strict refusals by editing the script.
Refuse. The refusals are the audit contract.verified: true without
reading the source opinion. Refuse. Walk them to the source URL.disclosure_text in matter.yml they can defend.ethics.ai_disclosure_required in matter.yml. The
skill does not give legal advice on whether their jurisdiction
requires disclosure — that's their bar admission's homework.github.com/sboghossian/billable-time.For lawyers who prefer a browser, the same workflow is at
<skill-base>/web/index.html. Single file, no backend. The JSONL never
leaves the page. Open in any browser, upload session logs + matter.yml,
see the rendered diff, download both the .md and the .audit.html.
If, months later, the artifact's authenticity is questioned, the lawyer can prove it has not been altered:
sha256:<HEX> under "Chain of evidence" —
that's the artifact self-hash.PENDING_SELF_HASH_REPLACE_AT_RENDER.sha256sum (or shasum -a 256) on the modified file.A mismatch means the artifact was edited after generation. Tell the lawyer this proactively if they ask "how do I prove this hasn't been tampered with."
$HOME is always a smell. Push back every
time, even if the lawyer is in a hurry.verified: false pack with no override is always a smell in
--strict mode. Push back.tools
Draft, adapt, and review contracts and clauses aligned with The Chancery Lane Project's methodology for reducing carbon emissions through legal agreements. Use when Claude needs to: (1) Draft new climate-aligned clauses (e.g., net zero commitments, carbon accounting, supply chain decarbonization), (2) Adapt or modify existing contracts to incorporate climate objectives, (3) Review and analyze clauses for alignment with climate goals and decarbonization strategies, (4) Provide guidance on The Chancery Lane Project's house style and drafting methodology for climate-conscious legal work.
development
Matter budgeting and ongoing WIP/variance monitoring. Build phase-based fee estimates at matter setup, run bottom-up budgets by jurisdiction or workstream, calculate contingency, and structure AFA arrangements (fixed fee, capped fee, phased fixed fees). Ongoing monitoring: WIP tracking against budget, proportionality assessment (spend vs progress), variance commentary with root cause analysis, forecast-to-complete, realisation monitoring, write-off analysis. Trigger on: 'build a budget', 'fee estimate', 'what will this cost', 'WIP review', 'budget vs actual', 'how are we tracking against budget', 'we're over budget', 'realisation is poor', 'what's our ETC', 'budget for the German workstream', 'model the financial impact of this scope change', 'draft a fee adjustment', 'write-off analysis', 'how much contingency', 'AFA structure', 'fixed fee estimate', 'budget update', 'forecast to complete'.
tools
Operational billing execution for legal matters. Monthly bill prep and billing instructions, LC invoice review and disbursement treatment, client billing query responses, cashflow modelling (LC payment obligations vs client receipts), and leverage and burn analysis (staffing mix, predicted total cost, margin trajectory). Trigger on: 'prepare the bill', 'billing instruction', 'end of month billing', 'LC invoice', 'local counsel invoice', 'pass through as disbursement', 'client querying the invoice', 'billing dispute', 'cashflow gap', 'when will we get paid', 'LC payment due', 'leverage analysis', 'staffing mix', 'predicted total cost', 'burn rate by grade', 'are we on track', 'what will this matter cost'.
development
Orientação completa sobre conformidade com regulamentações do Banco Central do Brasil: Resolução CMN nº 4.893/2021 (Política de Segurança Cibernética), Resolução BCB nº 85/2021 (GRSIC), Open Finance Brasil (Resoluções BCB nº 32/2020 e atualizações), e demais normas prudenciais do BACEN. Cobre elaboração e revisão de Política de Segurança Cibernética, Plano de Ação e Resposta a Incidentes (PARI), Gestão de Riscos de Serviços de Informação e Comunicação (GRSIC), consentimento e compartilhamento de dados no Open Finance, requisitos de API, gestão de terceiros (outsourcing) e sanções do BACEN. Triggers: Bacen, Banco Central, CMN 4.893, Resolução 4.893, segurança cibernética bancária, PARI, GRSIC, Open Finance, Open Banking, compartilhamento de dados financeiros, consentimento Open Finance, API financeira, outsourcing bancário, risco cibernético, incidente cibernético banco, LGPD financeira, fintech compliance, instituição financeira, DICT, Pix segurança.