From productivity
Review stale efforts and cycles. Scans efforts/ for items past their review_after date and log/cycles/ for cycles due for retro. Interactive triage — invoke whenever you want to clean up your backlog.
npx claudepluginhub acjackman/claude-productivityThis skill uses the workspace's default tool permissions.
> If you see unfamiliar placeholders or need to check which tools are connected, see [CONNECTORS.md](../../CONNECTORS.md).
Creates isolated Git worktrees for feature branches with prioritized directory selection, gitignore safety checks, auto project setup for Node/Python/Rust/Go, and baseline verification.
Executes implementation plans in current session by dispatching fresh subagents per independent task, with two-stage reviews: spec compliance then code quality.
Dispatches parallel agents to independently tackle 2+ tasks like separate test failures or subsystems without shared state or dependencies.
If you see unfamiliar placeholders or need to check which tools are connected, see CONNECTORS.md.
Standalone review of efforts and cycles. Run this whenever you want to triage stale work — not tied to any particular day or cadence. The review_interval config key (default: 7 days) controls the default rebump interval.
/productivity:review
Read from the Obsidian vault via MCP:
memory/AGENTS.md — Workflow Config (especially review_interval if set), active efforts, and current cycle.log/daily/YYYY-MM-DD.md — to understand current work context.Use list_directory on efforts/ to get all effort files. Then use get_notes_info to batch-read frontmatter.
An effort is due for review if:
review_after is set and review_after <= todayreview_after is missing and the fallback interval has elapsed since created_at:
active, waiting, blocked → 7 days (or review_interval from config)idea, planning → 14 dayspaused → 30 daysSkip efforts with status: done or status: dropped.
Sort due efforts by status priority: blocked > waiting > active > planning > idea > paused.
Use list_directory on log/cycles/ and get_notes_info to batch-read frontmatter.
A cycle is due for retro if:
review_after <= today AND the ## Retro section is empty or missingShow the user what needs attention:
## Efforts due for review (N)
| # | Effort | Status | Last reviewed | Age |
|---|--------|--------|---------------|-----|
| 1 | Effort Title | active | 2026-03-12 | 14d |
| 2 | Another Effort | idea | never | 21d |
## Cycles due for retro (N)
| Cycle | Period | Review after |
|-------|--------|-------------|
| infra-123 | Mar 11–24 | 2026-03-24 |
Ready to triage? I'll go through each one.
If nothing is due, say so and exit.
For each effort due for review, read the full note and present:
### [1/N] Effort Title
Status: active | Created: 2026-03-05 | Linear: TEAM-1234
Last reviewed: 2026-03-12
[Brief summary of the effort content — goal, current state, next steps if visible]
What would you like to do?
- **done** — mark complete
- **paused** — shelve it
- **dropped** — abandon it
- **+7 / +14 / +30** — bump review_after by N days (keep current status)
- **skip** — leave unchanged for now
- **[new status]** — change to any valid status (active, planning, waiting, blocked, idea)
Wait for user input. Apply the chosen action:
status via update_frontmatter. Remove review_after.status to paused. Set review_after to today + 30 days.review_after to today + N days via update_frontmatter.status. Set review_after to today + default interval for that status.For each cycle due for retro, read the full note and present:
### Cycle: infra-123 (Mar 11–24)
## Goals (from the note)
- Goal 1
- Goal 2
What went well? What didn't? I'll draft the retro section.
Collect the user's retro thoughts and write a ## Retro section via patch_note. Set last_reviewed to today.
After all items are triaged:
Review complete:
- Efforts: X reviewed, Y status changes, Z bumped
- Cycles: X retros written
- Next review: [earliest review_after date across all efforts]
review_interval config key (in Workflow Config) controls the default bump for active/waiting/blocked efforts. Default: 7 days.status: done or dropped are never surfaced