Keep tabs on what''s outstanding on the legal side. Pick what you need: chase pending signatures, log a freshly signed agreement, see what deadlines are coming up, or get a Monday rollup of the week. I keep a running list so nothing slips.
Installs into .claude/skills of the current project.
Are you the author of Track Deadlines And Signatures?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/thomasmoreai-track-deadlines-and-signatures)
---
name: track-deadlines-and-signatures
title: Track Deadlines and Signatures
description: 'Keep tabs on what''s outstanding on the legal side. Pick what you need: chase pending signatures, log a freshly signed agreement, see what deadlines are coming up, or get a Monday rollup of the week. I keep a running list so nothing slips.'
author: gethouston
author_url: https://github.com/gethouston/houston/tree/main/store/agents/legal/.agents/skills/track-deadlines-and-signatures
license: MIT
version: 0.1.0
execution_mode: open
jurisdiction: general
practice: contracts
language: en
---
# Track Deadlines and Signatures
One skill for every standing-state tracker agent maintain. `scope` param pick tracker; atomic read-merge-write discipline shared.
## Parameter: `scope`
- `signatures` - watch connected signing platform (DocuSign / PandaDoc / HelloSign) for outstanding docs. Draft polite reminders for laggards (never send). File executed copies to connected doc-storage (Google Drive / Dropbox / Notion). Write status board to `signature-status/{YYYY-MM-DD}.md`.
- `counterparties` - append executed agreement to `counterparty-tracker.json` at agent root. Fields: `id`, `counterparty`, `agreementType`, `executedDate`, `effectiveDate`, `term`, `autoRenewal`, `noticePeriod`, `governingLaw`, `keyObligations`, `renewalDate`, `signedCopyPath`. Feed `deadlines` scope (renewal clock) + `weekly-review` scope (rollup).
- `deadlines` - seed + refresh canonical legal calendar. Static deadlines (Delaware March 1 annual report, 83(b) 30-day from grant, 409A refresh 12 months, DSR 30-day GDPR / 45-day CCPA, TM office action 6-month, annual board consent) + dynamic deadlines from `counterparty-tracker.json` (renewal clocks, notice windows). Write `deadline-calendar.json` at agent root + 90-day readout to `deadline-summaries/{YYYY-MM-DD}.md`. Flag ≤ 30 days urgent, overdue critical.
- `weekly-review` - aggregate across agent by reading `outputs.json`: what shipped this week (contract reviews, drafts, audits, filings), what pending signature (from `signature-status/` most recent), next deadline (from `deadline-calendar.json`), what flagged for attorney review (`attorneyReviewRequired: true` entries without resolution). Write `weekly-reviews/{YYYY-MM-DD}.md`.
If user name scope plain English ("chase signatures", "log this deal", "what's due", "Monday review"), infer. If ambiguous, ask ONE question naming 4 options.
## When to use
- Explicit: "where are my signatures", "log {counterparty}'s executed {type}", "what's due soon / overdue", "Monday legal review", "weekly legal readout".
- Plain-English asks map to a `scope`: "nudge / chase pending signatures" / "who hasn't signed yet" → `signatures`; "I just signed something, log it" / "log this signed agreement" / "track this auto-renewal" → `counterparties`; "check my legal deadlines" / "what's coming up in the next 90 days" → `deadlines`; "weekly legal review" / "Monday rollup" → `weekly-review`.
- Implicit: chained from `review-a-contract` (any mode) to `counterparties` when contract hit executed status; from scheduled routines for `weekly-review` + `deadlines`; from `sort-my-legal-inbox` when detect executed-copy attachment for `counterparties`.
## Ledger fields I read
Read `config/context-ledger.json` first.
- `universal.legalContext` + `context/legal-context.md` - recommended not required. Enrich `weekly-review` with standing context. If missing + `weekly-review` scope, run `set-up-my-legal-info` skill or proceed with note.
- `universal.entity` - required for `deadlines` (formation date gate Delaware March 1 relevance; 409A date set 12-month clock).
- `domains.contracts.signingPlatform` - required for `signatures`. If missing, ask ONE question - connect DocuSign / PandaDoc / HelloSign or paste status.
- `domains.contracts.documentStorage` - required for `signatures` (where to file executed copies) + `counterparties` (where signed copy live - `signedCopyPath`).
- `counterparty-tracker.json` - required for `counterparties` (read-merge-write) + `deadlines` (source of dynamic renewal clocks) + `weekly-review` (new logs this week).
- `deadline-calendar.json` - required for `deadlines` (baseline to diff against) + `weekly-review` (next-deadline surface).
- `outputs.json` - required for `weekly-review` (roll-up source).
If any required field missing, ask ONE targeted question with right modality hint, write, continue.
## Steps
1. **Read ledger + state files.** Gather missing required fields per above. Write atomically.
2. **Discover tools via Composio.** `composio search signing-platform` (signatures), `composio search document-storage` (signatures + counterparties). No discovery needed for `deadlines` or `weekly-review` (pure file ops).
3. **Branch on `scope`.**
- `signatures`:
1. Execute signing-platform slug - list outstanding envelopes. For each: recipient, sent date, days open, last-viewed status.
2. Draft polite reminder per laggard (> 5 days open). Never send - drafts go into status board for founder to send.
3. For executed envelopes, fetch PDF via signing-platform slug. Execute doc-storage slug to save to well-known path (`contracts/executed/{counterparty}-{YYYY-MM-DD}.pdf`).
4. Write `signature-status/{YYYY-MM-DD}.md` - three sections: Outstanding (+ reminders) / Recently executed (+ paths) / Stalled (> 14 days open - recommend outreach or withdraw). For each executed envelope, recommend chain to `track-deadlines-and-signatures` scope=counterparties to log.
- `counterparties`:
1. Take input: counterparty name, agreement type, executed date, effective date, term, auto-renewal, notice period, governing law, key obligations (brief), signed-copy path. Ask ONE question for any missing field.
2. Compute `renewalDate` from `effectiveDate + term - noticePeriod` (critical date = when notice must be given to avoid auto-renewal).
3. Read-merge-write `counterparty-tracker.json` atomically. Do not overwrite existing rows - `id` stable; update-in-place on match.
4. Append to `outputs.json` as `type: "counterparty-log"`.
- `deadlines`:
1. Start from canonical static deadline set:
- **Delaware annual report** - March 1 every year (gate on `universal.entity.state === "DE"`).
- **83(b) election window** - 30 days from each option grant / founder-stock restricted-purchase. Source: `outputs.json` entries for recent grants.
- **409A refresh** - 12 months from `universal.entity.four09aDate`.
- **DSR response window** - 30 days (GDPR Art. 15) / 45 days (CCPA); track from any `dsr-response` entry in `outputs.json`.
- **TM office action response** - 6 months from each office action; gate on `domains.ip.marks`.
- **Annual board consent** - 365 days from last board consent.
2. Enrich with dynamic deadlines from `counterparty-tracker.json` - for each open row, compute `renewalDate` + notice-deadline (= `renewalDate - noticePeriod`).
3. Read-merge-write `deadline-calendar.json`: `id`, `kind`, `label`, `due`, `source`, `authority`, `urgency` (critical if overdue or ≤ 30 days; high ≤ 90 days; medium ≤ 180 days; low > 180 days).
4. Write `deadline-summaries/{YYYY-MM-DD}.md` - 90-day readout: Critical + High first; for each, cite authority (e.g. "8 Del. C. §503", "IRC §83(b)", "GDPR Art. 15").
5. Append to `outputs.json` as `type: "deadline-summary"`.
- `weekly-review`:
1. Read `outputs.json`. Filter to entries with `createdAt` or `updatedAt` within last 7 days.
2. Group by `domain` (contracts / compliance / entity / ip / advisory). For each: what shipped, titles + paths.
3. Read most recent `signature-status/` - surface outstanding signatures + stalled.
4. Read `deadline-calendar.json` - next 3 deadlines by urgency.
5. Surface any `attorneyReviewRequired: true` entries that don't yet have `escalation-brief` follow-up.
6. Write `weekly-reviews/{YYYY-MM-DD}.md` - sections: What shipped (by domain) / Pending signature / Next 3 deadlines / Attorney-review backlog / Recommended next moves.
7. Append to `outputs.json` as `type: "weekly-review"`.
4. **Atomic writes everywhere** (`*.tmp` → rename).
5. **Summarize to user.** One short paragraph in plain language: the most important thing from this run (the deadline they need to know about, the signatures still pending, what shipped this week). Never name files or paths.
## What I never do
- Send reminders, request signatures, or file executed copies anywhere outside configured doc-storage. Every "sendable" artifact is draft in status board.
- Invent counterparty, term, or deadline. If field not in input or source file, mark UNKNOWN / TBD + ask ONE targeted question.
- Promise auto-renewal won't fire - dates I cite mechanical; founder decides to send notice.
- Overwrite `counterparty-tracker.json` or `deadline-calendar.json` - read-merge-write always.
- Cite statutory deadline without naming authority (GDPR Art. 15, IRC §83(b), 8 Del. C. §503, etc.).
- Hardcode tool names - Composio discovery at runtime only.
## Outputs
- `signature-status/{YYYY-MM-DD}.md` (scope=signatures).
- Updates `counterparty-tracker.json` (scope=counterparties).
- `deadline-summaries/{YYYY-MM-DD}.md` + updates `deadline-calendar.json` (scope=deadlines).
- `weekly-reviews/{YYYY-MM-DD}.md` (scope=weekly-review).
- Appends to `outputs.json`.