Installs into .claude/skills of the current project.
Are you the author of Quarterly Review?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/opencairn-quarterly-review)
---
name: quarterly-review
description: Quarterly deep review - strategic alignment and direction. Consumes $quarterly-hygiene for vault structural health.
---
# Quarterly Review - Strategic Check
**Scoped rule loading:** `_shared-rules-planning.md` before routing. Read the applicable numbered sections at that point, from the same directory as the core `_shared-rules.md`; do not preload unrelated supplements.
You are facilitating the user's quarterly review. This is the highest-altitude review — strategic direction and alignment over a 3-month horizon: the questions too heavy for weekly that accumulate debt if never asked.
This is the **strategic half**, the reflective companion to `$quarterly-hygiene` (mechanical deep maintenance) — exactly as `$weekly-review` pairs with `$weekly-hygiene`. Vault structural health (context-file drift, CRM staleness, session-log and daily-report archiving) is handled by `$quarterly-hygiene`; this skill **consumes its report** rather than re-deriving any of it.
## Philosophy
1. **Strategic alignment** — Are the projects and priorities from 3 months ago still the right ones? What emerged that wasn't planned? What was planned but never started?
2. **Direction maintenance** — A quarterly review is the natural checkpoint to overhaul `Context - Direction.md`: values and roles, career/personal strategies, trade-offs, anti-goals and disciplines.
## Instructions
0. **Resolve Vault Path**
```bash
"${VAULT_PATH:?VAULT_PATH not set}/.claude/scripts/resolve-vault.sh"
"$VAULT_PATH/.claude/scripts/check-archive-layout.sh" --enforce "$VAULT_PATH"
```
If error, abort. Read `${CODEX_HOME:-$HOME/.codex}/skills/_shared-rules.md` and apply its rules throughout this skill. All code below uses `{VAULT}` as a placeholder — substitute the resolved vault path.
1. **Check current date and calculate quarter boundaries** using bash `date`:
- Current date: `date +"%Y-%m-%d"`
- Quarter: Q1 (Jan-Mar), Q2 (Apr-Jun), Q3 (Jul-Sep), Q4 (Oct-Dec). Calculate start/end. File naming: `YYYY-QN.md`.
- **Boundary rule:** if today falls in the first 2 weeks of a quarter, ask the user once whether this run reviews the just-ended quarter or the current one — a review run 2 Jul almost always covers Q2, and keying it to Q3 mislabels the output file and falsely stales a days-old hygiene report. Use the answer for the hygiene-report lookup, every "current quarter" test, and the output filename. (`$quarterly-hygiene` carries the same rule; keep the two runs on the same quarter.)
2. **Gather quarterly data:**
- Read the `03 Projects/` root docs — the SSOT for active-project state (`bucket:` frontmatter plus whatever current-state/action structure each doc uses), scanned in detail below
- **Read the previous quarterly review:** filter to quarterly-review filenames, keep only quarters lexically older than the quarter under review, byte-sort them, then take the newest:
```bash
ls -1 "{VAULT}/06 Archive/Quarterly Reviews/" 2>/dev/null \
| rg '^[0-9]{4}-Q[1-4][a-z]?\.md$' \
| while read -r f; do if [ "${f%.md}" \< "YYYY-QN" ]; then printf '%s\n' "$f"; fi; done \
| LC_ALL=C sort -r \
| head -1
```
Substitute the quarter under review for `YYYY-QN`. Preserve the exact returned basename, including a suffix. Extract its Next Quarter sections (Big Rocks, Long Poles, Stop Doing) and its Kill List — these are the commitments this run revisits. If none exists, note it and continue.
- Follow the explicitly labelled **Planning system** pointer in the vault’s navigation/Autopilot document when configured. Read its cadence/ownership rules; if absent, use this generic workflow without claiming personal configuration.
- Read `{VAULT}/07 System/Context - Direction.md` (if it exists) — the reference document for strategic alignment
- Read `{VAULT}/07 System/Strategic Decision Log.md` (if it exists) — decisions made this quarter
- Read weekly reviews from `06 Archive/OpenCairn/Weekly Reviews/` whose retrospective Daily Reports date range intersects the quarter; label partial-quarter coverage. Extract Synthesis, Projects Active, Attention & Friction, Key Insights & Patterns, Alignment Check, Course Corrections and Weekly Plan choices/outcomes. Accept older reports with Time Allocation/What’s Next instead; do not require numerical sections or rebuild execution scores. Forward planning dates are not the retrospective coverage window. Skip session totals and vault-maintenance detail already supplied by hygiene.
- Weekly timing suggestions are not evidence of booked time or completed activity. Read older automated-planning statuses as historical; if their current outcome matters, follow explicit task/session records or ask the user. Do not reconstruct the retired scheduling scorecard or treat manual scheduling as incomplete planning.
- Scan `03 Projects/` for all project files (root, Cold/, Backlog/)
- **Consume the quarterly-hygiene report:** find the latest in `{VAULT}/06 Archive/OpenCairn/Quarterly Hygiene Reports/` (filename descending).
- **Current quarter:** read it — its findings populate the Vault Health section of the output. Do not re-scan context files, CRM, or run structural queries; that work is done.
- **Older quarter:** warn — "Latest quarterly-hygiene report is [quarter] — structural findings may be stale. Recommend re-running `$quarterly-hygiene`." Still fold its findings into Vault Health, labelled stale in the source line. Continue with the strategic review.
- **Absent:** warn — "No quarterly-hygiene report — vault structural findings will be missing from this review. Recommend running `$quarterly-hygiene` first." Vault Health gets the not-found line. Continue with the strategic review.
### Part 1: Strategic Review
3. **Mode choice.** Before the interview, ask the user once: interactive mode (walk through each section together) or auto-generate mode (compile answers from gathered data, present once for validation). One question upfront.
- **Interactive mode:** use steps 4–6 as a sequential interview.
- **Auto-generate mode:** use the questions in steps 5–6 as a completeness checklist, not as separate prompts. Compile the evidence-supported retrospective, commitment outcomes, patterns and alignment findings into one proposed review. Do not invent first-person reflections, Direction changes or forward-looking commitments. Present one consolidated validation block containing the draft plus only the unresolved decision-bearing questions — always including Big Rocks, Long Poles, Stop Doing, and any exact Direction replacement text still needed. Apply the user's corrections, then continue to step 7.
4. **Synthesise and present.** Present a brief data-driven summary from the gathered data: projects completed/stalled/abandoned, recurring patterns across weekly reviews, qualitative attention patterns, and any alignment drift signals. In interactive mode this primes the interview; in auto-generate mode it becomes the opening of the single validation block.
5. **Run the quarterly strategic interview in interactive mode.** In auto-generate mode, answer what the evidence supports and carry only unresolved questions into step 3's single validation block:
**Retrospective — What happened this quarter:**
Open by reviewing the previous quarter's commitments (from step 2): mark each Big Rock, Long Pole, Kill List item, and Stop Doing item **shipped / slipped / dropped**, and ask the user to confirm or correct the call. Do this before the questions below — an unreviewed commitment silently rolls forward. Unknown outcomes stay unknown; do not infer them from missing activity or totals.
1. "Which projects were completed? Which stalled? Which were abandoned?"
2. "What emerged that wasn't planned 3 months ago?"
3. "What was planned but never started — why?"
4. "Looking at the weekly reviews, what patterns persisted across the full quarter?"
**Alignment — Are you working on the right things (reference Direction.md if loaded):**
5. "Do your values and roles still describe how you want to live? What life/work chapter do you want, and which trade-offs does that require?"
6. "Looking at your career and personal strategic plans — do they still reflect reality?"
7. "What's consuming time that shouldn't be?"
8. "What deserves more attention than it's getting?"
9. "Any projects that should be explicitly killed rather than lingering?"
10. "Any anti-goals that crept back in this quarter?"
11. "Are your disciplines holding? Any to add, remove, or adjust?"
**Forward-looking — Next quarter:**
12. "What are the 3-5 Big Rocks for next quarter?"
13. "What needs to start now to be ready on time? (Long Poles)"
14. "What should you stop doing?"
6. **Develop or revise Direction:**
- Review Values & Roles, career strategic plan, personal strategic plan, anti-goals and disciplines with the user. Articulate the desired chapter, emphasis, trade-offs and what can wait; retain useful experiments and linked extended plans. Reaffirm unchanged values instead of manufacturing quarterly changes. If Direction is missing, draft the needed sections with the user and create the approved document through `locked-edit.sh --replace-whole MISSING` in step 8.
- Store confirmed direction once in its canonical home; the quarterly record links to it and briefly records decisions. Weekly review uses it to choose priorities and possible timing; the user handles calendar scheduling by default.
- **Always collect approval — and collect only, don't edit yet.** Direction.md is high-trust, like context files. In interactive mode, ask section by section. In auto-generate mode, include the proposed status and any replacement text in the consolidated validation block. Gather the user's exact replacement text (or explicit approval of your proposed text); **step 8 is the single writer** — no edits happen in this step.
### Part 2: Vault Health (from quarterly-hygiene)
7. **Fold in the quarterly-hygiene findings.**
This section is sourced entirely from the quarterly-hygiene report read in step 2 — no re-scanning here. Summarise its carried weekly findings, context/CRM status, corrections-log fold (including pending approvals), session-log and daily-report archiving, flywheel proposals, panel-model currency and routed actions into the output's Vault Health section. A stale report is folded with its stale label; only if no report exists, write "No quarterly-hygiene report — run `$quarterly-hygiene` for vault structural maintenance" and move on.
8. **Execute strategic edits (user-confirmed only):**
- Apply Direction.md updates the user approved during step 6 (user-provided text or explicitly approved replacement text). Re-read Direction.md immediately before each edit and use `"{VAULT}/.claude/scripts/locked-edit.sh" --replace` with a unique literal OLD block. On exit 2 or 3, re-read and retry; never fall back to a direct edit.
- Vault structural fixes (context corrections, file moves, archiving) are **not** done here — they belong to `$quarterly-hygiene`. If the user wants them actioned, point them at that skill.
### Part 3: Output
9. **Ensure output directory exists:**
```bash
mkdir -p "{VAULT}/06 Archive/Quarterly Reviews"
```
10. **Resolve the output basename once.** Start with `REVIEW_BASENAME=YYYY-QN` for the quarter under review.
- If the bare file is absent, keep that basename.
- If it exists, read it and ask whether to overwrite it, append an update section to it, or write a new letter-suffixed record. Overwrite and append keep the bare basename. For a new record, list `YYYY-QN[a-z].md` under `LC_ALL=C`, then choose the successor of the greatest existing suffix (`b` if none exists). Never fill a suffix gap: a later review must sort ahead of every earlier one. If `z` already exists, stop and ask the user to archive or rename records; never wrap or reuse a suffix.
- Letter suffixes sort *after* the bare name under byte collation, so all filename-descending lookups use `LC_ALL=C sort -r`; a `-2` suffix would sort before the bare name and invert the idiom. Carry the resolved basename through every path, source line, backlink and confirmation below.
11. **Generate quarterly review** at `{VAULT}/06 Archive/Quarterly Reviews/<REVIEW_BASENAME>.md`. Draft the complete report outside the vault, then install it through `"{VAULT}/.claude/scripts/locked-edit.sh"`:
- For a new bare or suffixed record, immediately confirm the chosen path is absent and use `--replace-whole MISSING`. Exit 2 means another writer claimed it. If the bare path was claimed, read it and repeat step 10's user choice; if a suffix was claimed, re-list and recompute the successor of the greatest suffix before retrying.
- For an approved overwrite, re-read the current file and use its complete contents as literal OLD with `--replace`.
- For an approved update section, use `--append` only against the existing file.
Never create a report with `--append`, reuse a claimed basename, or write the vault file directly.
**⛔ Cite review items by stable identifier, not line number** — see `_shared-rules.md` §13. Name any project-doc / `Tickler.md` item by title/heading/content, never by line number, in this durable record.
```markdown
# Quarterly Review - YYYY QN ([Month] - [Month])
## Quarter in Review
### Last Quarter's Commitments
*Source: Quarterly Reviews/<EXACT_PREVIOUS_BASENAME> (or: no previous review)*
- [Big Rock / Long Pole / Kill List / Stop Doing item] — shipped / slipped / dropped — [one line]
### Projects Completed
- [[Project A]] — [Outcome]
### Projects Advanced
- [[Project B]] — [What moved, what remains]
### Projects Stalled/Abandoned
- [[Project C]] — [Why, and whether to keep or kill]
### Unplanned Work That Emerged
- [What came up that wasn't in the plan]
## Strategic Alignment
### Direction Check (from Direction.md)
**Values & roles:** [Reaffirmed / changed — confirmed decision and canonical link]
**Career strategic plan:** [Still accurate / Updated — what changed and why]
**Personal strategic plan:** [Still accurate / Updated — what changed and why]
**Anti-goals reviewed:** [N items — any added/removed?]
**Disciplines reviewed:** [N active — any changes?]
### Priorities Then vs Now
[How have priorities shifted? Is the shift deliberate or drift?]
### Attention Patterns
[Qualitative patterns from weekly reviews and the user; unknown activity remains unknown.]
### Kill List
Projects to explicitly abandon rather than let linger:
- [Project] — Reason to kill
## Vault Health
*Source: Quarterly Hygiene Reports/YYYY-QN (current / stale — from YYYY-QN, re-run recommended / not found — run $quarterly-hygiene)*
[Summarised from the quarterly-hygiene report — carried weekly-hygiene structural findings, context-file drift, CRM stale entries, corrections-log fold and pending approvals, session-log and daily-report archiving status, skill-library flywheel findings, panel model-currency findings, actions taken/routed. Not re-derived here.]
## Next Quarter
### Big Rocks (Top 3-5)
1. [Priority]
2. [Priority]
3. [Priority]
### Long Poles (Start Now)
- [Thing that needs lead time]
### Stop Doing
- [Thing to drop]
## Weekly Reviews This Quarter
- [[06 Archive/OpenCairn/Weekly Reviews/YYYY-Wnn]] — Week N
- ...
```
When listing weekly reviews, preserve each file's exact name including any collision suffix (`YYYY-Wnnb` etc. — weekly-review writes suffixed files when two reviews land in one ISO week); a bare `YYYY-Wnn` link to a suffixed review is broken.
**Route the forward-looking outputs — the review file is an archive record, not a planning surface:**
- Broad priorities, values and strategic thoughts belong in Direction for weekly translation; do not force them into tasks or dates. Route only concrete actions. Before routing, locate the existing action home or obtain a needed surfacing date in validation; never invent one.
- **Concrete actions from Big Rocks / Long Poles / priorities** → write each into an existing task/action section in the relevant project doc via `locked-edit.sh`. If no suitable project section exists, write it to the user-supplied date in Tickler via `write-tickler.sh`. If the text carries a deadline token, `_shared-rules-planning.md` §18 applies: the project doc alone is an undated sink, so also create a dated Tickler backstop.
- **Kill List / Stop Doing** → act on in-session: propose the `03 Projects/Cold/` moves and list `$complete-project` candidates for the user to confirm. Don't leave them as prose commitments that route nowhere.
**Routing is an upsert.** Key every routed line by its normalised description. Its provenance marker must be the exact `[[06 Archive/Quarterly Reviews/<REVIEW_BASENAME>]]` backlink. Search the destination first; a match carrying any backlink in the same `YYYY-QN[a-z]?` review family is the same action, so update its text/backlink through the owning locked writer rather than appending. Otherwise create it once. A same-quarter rerun never appends a duplicate action.
12. **Skill self-review (explicit instantiation of `_shared-rules.md` §8 / `_skill-monitor.md`).**
This command runs ~4×/year, so the implicit skill-monitor watch is easy to skip. Before the final display, run the §8 / `_skill-monitor.md` review against this run end-to-end — did any step misfire, produce noise, mandate a tool that didn't work, or require an undocumented improvisation? If so, log observations per `_skill-monitor.md` for weekly processing. If clean, state `✓ Skill self-review: no gaps this run`.
13. **Display confirmation:**
```
✓ Quarterly review saved to: 06 Archive/Quarterly Reviews/<REVIEW_BASENAME>.md
✓ Quarterly-hygiene report: [folded in / folded in (stale — YYYY-QN) / not found — run $quarterly-hygiene]
✓ Direction.md: [N sections updated / no changes]
✓ Skill self-review: [no gaps / N observations logged]
Quarterly review complete.
```
## Guidelines
- **Strategic, not mechanical.** This skill surfaces priority drift and overhauls Direction. Structural maintenance is `$quarterly-hygiene`'s job — consume its report, don't repeat it.
- **User confirmation for Direction.md.** High-trust file. Edit only user-provided or explicitly approved replacement text; never infer an overhaul autonomously.
- **Connect to weekly reviews.** Reference weekly review insights rather than re-deriving from session logs.
- **Honest strategic assessment.** The quarterly check is where you surface uncomfortable truths about priority drift.
- **Natural language.** Write in the user's voice — analytical, outcome-focused, honest.
## Frequency
- Last week of March, June, September, December — or whenever the user requests it.
- First run: catch up on the current quarter even if mid-quarter.
- Run `$quarterly-hygiene` first (or alongside) so the Vault Health section has a report to consume.
## Integration with Other Commands
- **Consumes `$quarterly-hygiene`:** reads its report for vault structural health — no re-gathering.
- **Aggregates weekly reviews:** connects weekly patterns into quarterly themes.
- **Complements `$weekly-review`:** weekly handles tactical alignment; quarterly handles strategic + Direction overhaul.
- **Informs Direction.md:** the primary checkpoint for overhauling strategic plans, anti-goals, and disciplines.