/portfolio-status
- Load
~/.claude/plugins/config/claude-for-legal/litigation-legal/CLAUDE.md → risk calibration (defines how to read the risk: field).
- Follow the workflow and reference below.
- Parse
~/.claude/plugins/config/claude-for-legal/litigation-legal/matters/_log.yaml. Filter closed matters by default (include with --all).
- Produce rollup: risk distribution, deadlines in next 14/30/60 days, matters with no update in >30 days, materiality totals, stage distribution.
- Flag anomalies — everything marked critical, overdue next_deadline, matters without outside counsel assigned where risk is medium or high.
Portfolio Status
Purpose
One read that answers: what do I own right now, what needs attention, and what's slipping? Output is scannable — designed for a counsel who has three minutes before their next call.
Load context
~/.claude/plugins/config/claude-for-legal/litigation-legal/matters/_log.yaml — source of truth
~/.claude/plugins/config/claude-for-legal/litigation-legal/CLAUDE.md — risk calibration (to interpret risk/materiality fields correctly)
Flags & filters
Default: active matters only (exclude status: closed).
Flags:
--all — include closed
--risk=high (or critical / medium / low) — filter by risk band
--stale — only matters with last_updated > 30 days
--type=employment — filter by matter type
--owner=[name] — filter by business/HR/comms owner
The rollup
[WORK-PRODUCT HEADER — per plugin config ## Outputs — differs by role; see `## Who's using this`]
# Portfolio Status — [today]
**Active matters:** [N]
**Closed (ytd):** [N] *(shown only with --all)*
---
## By risk
| Risk | Count | Matters |
|---|---|---|
| Critical | [N] | [slugs] |
| High | [N] | [slugs] |
| Medium | [N] | [count only — expand with `--risk=medium`] |
| Low | [N] | [count only] |
## Upcoming deadlines
| Within | Matters |
|---|---|
| 14 days | [slug — deadline — brief] |
| 15–30 days | [...] |
| 31–60 days | [...] |
*Overdue `next_deadline` flagged separately below.*
## Materiality
| Category | Count | Total exposure (midpoint) |
|---|---|---|
| Reserved | [N] | [$X] |
| Disclosed | [N] | [$X] |
| Monitored | [N] | — |
| None | [N] | — |
## By stage
[table: pleadings / discovery / dispositive motions / trial prep / settlement / appeal]
---
## ⚠️ Anomalies & flags
- **Overdue deadlines:** [list slugs where next_deadline has passed]
- **Stale (>30d no update):** [list]
- **Conflicts unresolved:** [list slugs with `conflicts.status in [pending, not-run]`]
- **Conflicts bypassed (override active):** [list slugs where `conflicts.override.by` is populated — permanent flag until manually cleared]
- **High/critical risk without outside counsel:** [list]
- **Reserved without last_updated in >60d:** [list] — reserve recalibration likely overdue
- **Hold not issued on active litigation:** [list]
- **Missing fields:** [slug → field]
---
## Closing advice
[One or two sentences on what to look at first, if anything stands out. Not boilerplate — only if something truly stands out.]
Anomaly rules
These are the checks that make the skill useful rather than decorative:
- Overdue deadline:
next_deadline < today and status != closed
- Stale:
last_updated < today - 30d and status != closed
- Conflicts unresolved:
conflicts.status in [pending, not-run] and status != closed
3b. Conflicts override active: conflicts.override.by != null (never auto-clears)
- High-risk uncovered:
risk in [high, critical] and outside_counsel.firm == null
- Stale reserve:
materiality == reserved and last_updated < today - 60d
- Hold gap:
status in [threatened, active, discovery, trial, appeal] and legal_hold.issued == false — preservation duty attaches at reasonable anticipation, so threatened matters are in scope.
- Missing fields: any required field null —
risk, materiality, status, opened, conflicts.status
Close with the next-steps decision tree
End with the next-steps decision tree per CLAUDE.md ## Outputs. Customize the options to what this skill just produced — the five default branches (draft the X, escalate, get more facts, watch and wait, something else) are a starting point, not a lock-in. The tree is the output; the lawyer picks.
If the portfolio has more than ~10 matters, or any time the user asks: offer the dashboard (see CLAUDE.md ## Outputs → Dashboard offer for data-heavy outputs). Shape the offer for this output — counts by risk tier, a timeline of upcoming deadlines, and a sortable matter ledger with status, conflicts check, and last-touched date.
What this skill does not do
- Make decisions. It surfaces what needs attention; the user decides priority.
- Pretend precision it doesn't have. Exposure midpoints are rough and should be labeled so.
- Replace a real MMS. This is a working-memory rollup, not a system of record.
1---2name: portfolio-status3description: Roll up the portfolio from _log.yaml — risk distribution, upcoming deadlines, stale matters, materiality totals, stage distribution, and flagged anomalies. Use when the user asks "where do we stand", "how many open matters", or wants a portfolio rollup or status across all active matters.4---5
6# /portfolio-status
7
81. Load `~/.claude/plugins/config/claude-for-legal/litigation-legal/CLAUDE.md` → risk calibration (defines how to read the `risk:` field).
92. Follow the workflow and reference below.
103. Parse `~/.claude/plugins/config/claude-for-legal/litigation-legal/matters/_log.yaml`. Filter closed matters by default (include with `--all`).
114. Produce rollup: risk distribution, deadlines in next 14/30/60 days, matters with no update in >30 days, materiality totals, stage distribution.
125. Flag anomalies — everything marked critical, overdue next_deadline, matters without outside counsel assigned where risk is medium or high.
13
14---
15
16# Portfolio Status
17
18## Purpose
19
20One read that answers: what do I own right now, what needs attention, and what's slipping? Output is scannable — designed for a counsel who has three minutes before their next call.
21
22## Load context
23
24- `~/.claude/plugins/config/claude-for-legal/litigation-legal/matters/_log.yaml` — source of truth
25- `~/.claude/plugins/config/claude-for-legal/litigation-legal/CLAUDE.md` — risk calibration (to interpret risk/materiality fields correctly)
26
27## Flags & filters
28
29Default: active matters only (exclude `status: closed`).
30
31Flags:
32- `--all` — include closed
33- `--risk=high` (or `critical` / `medium` / `low`) — filter by risk band
34- `--stale` — only matters with `last_updated` > 30 days
35- `--type=employment` — filter by matter type
36- `--owner=[name]` — filter by business/HR/comms owner
37
38## The rollup
39
40```markdown
41[WORK-PRODUCT HEADER — per plugin config ## Outputs — differs by role; see `## Who's using this`]
42
43# Portfolio Status — [today]
44
45**Active matters:** [N]
46**Closed (ytd):** [N] *(shown only with --all)*
47
48---
49
50## By risk
51
52| Risk | Count | Matters |
53|---|---|---|
54| Critical | [N] | [slugs] |
55| High | [N] | [slugs] |
56| Medium | [N] | [count only — expand with `--risk=medium`] |
57| Low | [N] | [count only] |
58
59## Upcoming deadlines
60
61| Within | Matters |
62|---|---|
63| 14 days | [slug — deadline — brief] |
64| 15–30 days | [...] |
65| 31–60 days | [...] |
66
67*Overdue `next_deadline` flagged separately below.*
68
69## Materiality
70
71| Category | Count | Total exposure (midpoint) |
72|---|---|---|
73| Reserved | [N] | [$X] |
74| Disclosed | [N] | [$X] |
75| Monitored | [N] | — |
76| None | [N] | — |
77
78## By stage
79
80[table: pleadings / discovery / dispositive motions / trial prep / settlement / appeal]
81
82---
83
84## ⚠️ Anomalies & flags
85
86- **Overdue deadlines:** [list slugs where next_deadline has passed]
87- **Stale (>30d no update):** [list]
88- **Conflicts unresolved:** [list slugs with `conflicts.status in [pending, not-run]`]
89- **Conflicts bypassed (override active):** [list slugs where `conflicts.override.by` is populated — permanent flag until manually cleared]
90- **High/critical risk without outside counsel:** [list]
91- **Reserved without last_updated in >60d:** [list] — reserve recalibration likely overdue
92- **Hold not issued on active litigation:** [list]
93- **Missing fields:** [slug → field]
94
95---
96
97## Closing advice
98
99[One or two sentences on what to look at first, if anything stands out. Not boilerplate — only if something truly stands out.]
100```
101
102## Anomaly rules
103
104These are the checks that make the skill useful rather than decorative:
105
1061. **Overdue deadline:** `next_deadline < today` and `status != closed`
1072. **Stale:** `last_updated < today - 30d` and `status != closed`
1083. **Conflicts unresolved:** `conflicts.status in [pending, not-run]` and `status != closed`
1093b. **Conflicts override active:** `conflicts.override.by != null` (never auto-clears)
1104. **High-risk uncovered:** `risk in [high, critical]` and `outside_counsel.firm == null`
1115. **Stale reserve:** `materiality == reserved` and `last_updated < today - 60d`
1126. **Hold gap:** `status in [threatened, active, discovery, trial, appeal]` and `legal_hold.issued == false` — preservation duty attaches at reasonable anticipation, so `threatened` matters are in scope.
1137. **Missing fields:** any required field null — `risk`, `materiality`, `status`, `opened`, `conflicts.status`
114
115## Close with the next-steps decision tree
116
117End with the next-steps decision tree per CLAUDE.md `## Outputs`. Customize the options to what this skill just produced — the five default branches (draft the X, escalate, get more facts, watch and wait, something else) are a starting point, not a lock-in. The tree is the output; the lawyer picks.
118
119If the portfolio has more than ~10 matters, or any time the user asks: offer the dashboard (see CLAUDE.md `## Outputs → Dashboard offer for data-heavy outputs`). Shape the offer for this output — counts by risk tier, a timeline of upcoming deadlines, and a sortable matter ledger with status, conflicts check, and last-touched date.
120
121## What this skill does not do
122
123- Make decisions. It surfaces what needs attention; the user decides priority.
124- Pretend precision it doesn't have. Exposure midpoints are rough and should be labeled so.
125- Replace a real MMS. This is a working-memory rollup, not a system of record.