feat: /plan-status skill — check progress of a gstack plan against git log + codebase
- Dominant language
- TypeScript
- Stars
- 133k
- Forks
- 19.9k
- Avg merge
- 18h 46m
- Merged PRs (30d)
- 26
Description
## Problem
gstack generates detailed plan files (CEO plans, eng plans) in `~/.gstack/projects//ceo-plans/` and `eng-plans/`. These plans have phases, success-criteria checkboxes, file/gem references, and pre-migration checklists.
There is no skill to answer: **"Where am I against this plan?"**
The current workaround is asking Claude to manually read the plan and cross-reference the codebase — which works but is ad-hoc, inconsistent, and not something you'd think to do unless you remembered to ask.
## Proposed skill: `/plan-status`
A read-only skill that:
1. **Resolves** the plan file — from an explicit argument, branch-name match, or AskUserQuestion if multiple plans exist
2. **Extracts** phases, `- [ ]`/`- [x]` success-criteria checkboxes, file/directory references, gem references, and pre-migration checklists
3. **Gathers evidence** from `git log` (commits since branching from main), `git diff --name-only`, filesystem checks (does the file/dir exist or was it deleted as planned?), and `Gemfile` grep
4. **Classifies** each item as DONE / PARTIAL / REMAINING / DROPPED using evidence conservatively (uncertain = REMAINING)
5. **Produces** a scannable dashboard:
```
## Plan Status: 2026-05-05-ruby-llm-full-migration.md
Branch: feature/ruby-llm-migration | As of: 2026-05-06
### Phase Summary
| Phase | Status | Notes |
|-------|--------|-------|
| Phase 0: Foundation | DONE | Gems added, initializers present |
| Phase 7: RAG migration | REMAINING | NotImplementedError stubs; no RubyLLM.embed calls |
### Success Criteria
| Item | Status |
|------|--------|
| langchainrb removed from Gemfile | REMAINING |
| Cross-tenant scoping test passes | REMAINING |
| ActsAsTenant require_tenant = true | PARTIAL — dev only |
### Summary
6 of 8 phases complete. 8 of 13 success criteria met.
Suggested next: Phase 7 RAG migration (remove langchainrb, wire RubyLLM.embed)
```
6. **Offers** to start on the top REMAINING item or update the plan's checkboxes — but never auto-starts.
## Triggers
- "plan status"
- "how far along is the plan"
- "what's done / what's left"
- "check plan progress"
- "where are we on the plan"
## Why it belongs in gstack
gstack already owns the plan lifecycle: `/office-hours` → `/plan-ceo-review` → `/plan-eng-review` → implementation → `/ship`. Plan status is the missing step between "plan written" and "ship called" — the regular check-in that keeps the plan and reality synchronized.
The skill is entirely read-only (no file writes), uses only `Bash`, `Read`, `Glob`, `Grep`, and optionally `AskUserQuestion`. Low complexity, high signal.
## Related issues
- #1170 — native plan writing skill (complementary — write + track)
- #341 — resume multi-step workflows (overlapping concern: session continuity vs. plan continuity)
- #542 — office-hours design docs invisible to downstream skills (same family: plan discoverability)
## Notes
I've built a local version of this skill at `~/.claude/skills/gstack/plan-status/SKILL.md` and am running it now. Happy to contribute the implementation upstream if the direction looks right.
Contributor guide
Assessment
This issue has not been assessed yet.