| name | billable-time-stephane-boghossian |
| version | 0.2.0 |
| description | 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. |
| triggers | ["draft time entries","draft billable hours","billable time from claude","billable-time","make my time entries","review my session logs for billing","audit surface for billing","AI disclosure billing","bar grievance defense","AI disclosure on the bill"] |
| allowed-tools | ["Bash","Read","Edit","Write"] |
| metadata | {"author":"Stephane Boghossian","license":"agpl-3.0","version":"2026-05-18"} |
billable-time — operating instructions (defense mode)
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.
Hard refusals — do not negotiate these
- Never auto-bill. The output is a markdown diff plus an HTML audit
packet. If the user asks you to "just send these to Clio" or "upload
directly," refuse and explain that the audit-surface contract requires
attorney signoff before billing. Suggest exporting the accepted rows as
CSV and uploading manually.
- Never infer matter assignment from file contents. Use the cwd-prefix
routing in
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.
- Never rewrite narratives with an LLM. Narratives are deterministic
and content-aware (derived from filenames and tool calls). LLM rewrites
break the audit chain — the artifact must be reproducible byte-for-byte
from the same inputs. If the lawyer asks "can you improve the
narratives with AI?" — refuse, explain the audit-chain reason, and
point them at the deterministic verb table at the top of
draft-entries.mjs if they want to extend it.
- Never silently enable
--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.
- Never flip
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.
Pre-flight checklist (before invoking the CLI)
Walk through this with the user, in order. Do not skip steps.
- Confirm the session-log path. Default is
~/.claude/projects/<cwd-slug>/*.jsonl. If you don't know which slug,
and let the user point.