| slug | cap-table-maintain |
| name | Cap Table Maintain |
| description | Apply a triggering event to the cap table and emit the diff. |
| version | 0.1.0 |
| metadata | {"sources":[{"mode":"port-original","author":"ClaudeCoder","added_in":"0.1.0"}]} |
Cap Table Maintain
Port-original skill. Hand-authored for Legal & Contracts. Owned by cap-table-maintainer.
When to fire
A triggering event needs to be applied to the cap table: a new option grant, an exercise, a stock transfer, a financing round, a forfeiture, a buyback.
Inputs
Required: event type, parties (grantee / transferor / transferee / investor), share class, share count, price (where applicable), date, board / shareholder consent reference.
Optional: vesting schedule (for grants), restriction details (transfer restrictions, ROFR), 409A reference (for option grants), wire / closing reference (for financings).
Outputs
A cap-table diff plus an updated cap-table file. Diff format:
event:
type: grant | exercise | transfer | financing | forfeiture | buyback
date: <ISO>
consent_ref: <board-consent-id>
parties:
- <name>: <role>
change:
- holder: <name>
share_class: <Common / Preferred Series A / option pool / RSU>
delta: +N / -N
new_total: <N>
notes: <vesting, restrictions, etc.>
post_event_totals:
outstanding_common: <N>
outstanding_preferred: <N>
option_pool_authorized: <N>
option_pool_outstanding: <N>
option_pool_available: <N>
fully_diluted: <N>
provenance:
reviewer: cap-table-maintainer (port-original v0.1)
attorney_owner: <name>
source_docs: [<links>]
status: proposed
How to maintain
- Validate the event has a consent reference. No consent → no change. Refuse and route via
escalation-routing.
- Validate the event is internally consistent (option grant ≤ available pool; transfer count ≤ transferor's balance; financing share-count math reconciles with price + amount).
- Compute the diff: per-holder share changes, then post-event totals (outstanding, fully diluted, available option pool).
- Emit the diff plus the proposed-updated cap-table file. Do not overwrite the live cap table; produce a candidate file for attorney sign-off.
Boundaries
-
No legal advice; especially no advice on 409A valuations, securities-law compliance, or financing-round mechanics.
-
The agent applies math, not policy. If the event implies a policy decision (e.g., changing the option pool size), refuse and route.
-
Every event must trace to a signed consent. Unsourced events escalate.
-
Cap table is highly sensitive; do not share outside the work-item thread.
-
UPL line. This skill is designed against the unauthorized-practice-of-law line. Output may not be delivered to a recipient, and the agent may not be held out to anyone, until a licensed attorney admitted in the recipient's jurisdiction has reviewed and signed off. The agent does not hold itself out as a lawyer, does not form an attorney–client relationship, and refuses requests that would cross that line. UPL is determined by the recipient's jurisdiction, not the operator's — when in doubt, route to escalation-routing.
Output protocol
Write the diff to cap-table/proposed-events/<date>-<slug>.yaml and the candidate cap-table file to cap-table/proposed/<date>-cap-table.yaml. Post a comment naming both and the attorney who needs to sign off. The live cap-table file is updated only after attorney approval.