lawve-ai/litigation-deadline-calendar
> Calendar litigation and arbitration deadlines from a scheduling order. Parses a PDF scheduling order, identifies key dates, computes backward deadlines using the applicable rules (Colorado CRCP, Federal FRCP, or arbitration forum rules for AAA/JAMS), and generates an .ics calendar file for Outlook or Google Calendar import. order, case management order, deadline calendaring, discovery deadlines, trial preparation deadlines, arbitration scheduling, or anything related to computing or tracking court or arbitration deadlines. Also trigger when the user uploads a PDF that appears to be a court scheduling order or arbitration scheduling order.
npx skills add https://github.com/lawve-ai/awesome-legal-skills --skill litigation-deadline-calendar
This skill takes a scheduling order (PDF upload), determines the applicable
procedural rules, extracts key dates, computes all backward deadlines, and
generates an .ics calendar file the user can import into Outlook or Google
Calendar.
Ask the user for the following. They may provide some of this upfront; fill
in what you have and ask for the rest.
Required:
If litigation:
the court name, case number format, or header to identify the jurisdiction.
Common patterns:
If the scheduling order clearly identifies the jurisdiction, confirm it with
the user: "This appears to be a [State] case based on the court name. Can you
confirm?"
If you cannot determine the jurisdiction from the PDF, always ask the user
explicitly. Never guess or default. The tool will raise an error if no
jurisdiction is provided.
Service method affects deadline computation differently per jurisdiction:
For California and New York mail service, also ask whether service is
in-state or out-of-state (use "mail" for in-state, "mail_out_of_state" for
out-of-state).
If arbitration:
Optional (but check saved preferences first):
controls the .ics output format. Google Calendar mode uses deterministic
UIDs (so reimporting deduplicates), omits VTIMEZONE and VALARM blocks
(Google ignores them), and uses LF line endings.
Persistence: Before asking, check CLAUDE.md for a saved
calendar_app preference (e.g., calendar_app: google or
calendar_app: outlook). If found, use it silently — do not re-ask.
If not found, ask the user which calendar app they use and save
their choice to CLAUDE.md so it carries forward to future sessions.
Example CLAUDE.md entry: calendar_app: google
Built-in jurisdictions (full rules database including state-specific holidays,
service day additions, short-period computation thresholds, and discovery response
periods): Colorado, Federal, California, New York, Texas, Florida, Illinois,
Pennsylvania, Ohio, Georgia, New Jersey, Massachusetts.
Other jurisdictions: The tool will use conservative federal-style defaults
and the skill should perform a web search to verify the specific state's rules
before computing. Always warn the user that non-built-in jurisdiction deadlines
should be independently verified.
Present this as a simple conversation, not a form. For example:
"What's the matter name as you'd like it to appear on calendar entries?"
"Is this litigation or arbitration?"
"This looks like it's from the District Court of Denver County — is this a
Colorado state case?"
Read the uploaded PDF using the Read tool. Extract every date mentioned in the
order along with what it represents. Common dates to look for:
Litigation scheduling orders typically include:
Arbitration scheduling orders typically include:
After parsing, show the user what you found and ask them to confirm before
proceeding. Format it as a clean list:
"Here's what I extracted from the scheduling order:
[etc.]
Does this look right? Anything I missed or got wrong?"
This confirmation step is important because PDF parsing can miss dates or
misinterpret them, and an error here cascades through every computed deadline.
Before computing deadlines, verify the rules and provide sources.
Verification procedure:
amendments:
and "CRCP rule changes [current year]" on coloradojudicial.gov
states, but holidays can and do change (states may add, rename, or remove
holidays). Search for:
Compare what you find against the holidays the script will compute. If a
state has added, renamed, or removed a holiday, tell the user and adjust
the computation. Getting a holiday wrong can silently shift deadlines by
a day.
and the STATE_RULES dictionary in scripts/compute_deadlines.py:
references/colorado-crcp.mdreferences/federal-frcp.mdreferences/arbitration-rules.mdSTATE_RULES entry in the scriptbuilt-in version says [old]; the current version says [new]. I'll use the
updated version for this calculation."
have been updated recently. The built-in rules are current as of early 2026.
You may want to independently confirm the key time periods."
For non-built-in jurisdictions (any state other than Colorado):
Search for the specific state's rules of civil procedure, focusing on:
Present what you find to the user for confirmation before computing.
Source citation requirement — this is mandatory:
After verifying the rules, always provide the user with a "Sources" section
listing the specific URLs where they can independently check the rules being
applied. This is critical because the user manages outside counsel and needs
to be able to verify the rules independently. Format:
"Sources for [Jurisdiction] rules used in this calculation:
Preferred official sources by jurisdiction:
If you cannot find an official source for a rule, say so explicitly rather
than omitting the citation.
Create the input JSON file for the computation script. The format is:
{
"matter_name": "Smith v. Jones Co.",
"proceeding_type": "litigation",
"jurisdiction": "colorado",
"forum": "",
"service_method": "electronic",
"scheduling_order_dates": {
"trial_date": "2026-09-15",
"discovery_cutoff": "2026-07-28",
"dispositive_motion_deadline": "2026-06-15",
"pretrial_conference": "2026-08-15",
"plaintiff_expert_disclosure": null,
"defendant_expert_disclosure": null,
"rebuttal_expert_disclosure": null,
"amend_pleadings_deadline": "2026-03-15",
"join_parties_deadline": "2026-03-15",
"mediation_deadline": "2026-05-01",
"hearing_date": null,
"custom_dates": {
"Motions in Limine": "2026-08-01",
"Proposed Jury Instructions": "2026-08-01"
}
},
"attendees": ["[email protected]", "[email protected]"]
}
Use null for any dates not present in the scheduling order. The script will
compute them from the rules where applicable (e.g., expert deadlines computed
backward from trial date).
Add any dates from the scheduling order that don't fit standard fields into
custom_dates with a descriptive label.
The computed deadlines JSON (output of compute_deadlines.py) supports three
optional fields on individual deadline entries that control how they appear
in the .ics calendar:
time (string, HH:MM in 24-hour format): Makes the event a timed eventinstead of all-day. Example: "time": "08:30". If no explicit end time is
provided, the event is assumed to end at 17:00 on the last day.
timezone (string, IANA timezone): The timezone for timed events.Example: "timezone": "America/Denver". Defaults to America/Denver if
omitted.
duration_days (integer): Makes the event span multiple days.Example: "duration_days": 5 for a 5-day trial starting on the event date.
If combined with time, the event starts at the specified time on day 1 and
ends at 17:00 on the last day. If used without time, it creates a multi-day
all-day event.
These fields are useful for events like multi-day trials or hearings, or when
the scheduling order specifies a particular time for a conference or deadline.
Run the computation:
python scripts/compute_deadlines.py --input /tmp/input.json --output /tmp/computed.json
Review the output and sanity-check the computed dates:
Run the calendar generation. If the user specified Google Calendar, add the
--google flag:
# Outlook / Apple Calendar (default):
python scripts/generate_ics.py --input /tmp/computed.json --output /path/to/output/[matter_name]_deadlines.ics
# Google Calendar:
python scripts/generate_ics.py --input /tmp/computed.json --output /path/to/output/[matter_name]_deadlines.ics --google
Google Calendar mode produces a file optimized for Google's import behavior:
deterministic UIDs (reimporting updates instead of duplicating), no VTIMEZONE
blocks (Google uses its own timezone database), no VALARM entries (Google
ignores them and applies its own default reminders), and LF line endings.
The output file should go to the user's workspace folder with a descriptive
filename based on the matter name.
Before delivering the file, show the user a summary:
"Here are the deadlines I've computed for [Matter Name]:
[List each deadline with date, description, and rule basis]
Critical deadlines (marked with !!!) need special attention.
The .ics file includes reminders at 7 days and 1 day before each deadline.
[If Google Calendar mode:] Note: Google Calendar uses its own default
reminders and will not import the custom reminder settings.
[If attendees were specified:] Calendar invitations will be sent to [names]
when you import the file.
Important: These deadlines are computed from the scheduling order and
applicable rules. They should be independently verified by counsel, especially
regarding local rules and any subsequent orders that may modify deadlines.
Sources for the rules applied:
[List each source URL used — same sources provided in Step 3]"
Then provide the .ics file link. The sources should always appear in the final
output so the user has them right alongside the deadlines, not just earlier in
the conversation where they might scroll past them.
Read these reference files for the detailed rules used in computation:
references/colorado-crcp.mdreferences/federal-frcp.mdreferences/arbitration-rules.mdAll calendar entries follow this format:
[Matter Name] — [Deadline Description]
Examples:
The matter name always comes first so that entries from different cases are
visually distinguishable in a crowded calendar.
Scheduling order supersedes default rules:
If the scheduling order sets a deadline that differs from what the rules would
produce (e.g., a shorter discovery period), always use the scheduling order date.
Only use rule-based computation for deadlines NOT specified in the order.
Arbitration is not litigation:
If the user says "arbitration," never apply CRCP or FRCP time-computation rules.
Arbitration deadlines come from the arbitrator's order and the forum rules. If
the arbitrator's order incorporates any litigation rules by reference, note that
to the user but still apply them as the arbitrator specified.
Local rules:
For federal cases, local rules can significantly alter deadlines (especially
for summary judgment responses and pretrial procedures). Flag this to the user:
"Federal courts often have local rules that modify these default deadlines.
Check the local rules for [district] to verify."
Amended scheduling orders:
If the user mentions that the scheduling order has been amended, ask for the
most recent version. Earlier versions may have superseded dates.
Already-passed deadlines:
If any computed deadline falls before today's date, flag it prominently:
"WARNING: [Deadline] computed as [date], which has already passed. Verify
this is correct or whether an extension was granted."
Take lawve-ai/litigation-deadline-calendar from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.