Skip to main content

ops-projects

Portfolio dashboard for all GSD-tracked projects. Scans ~/Projects and ~/gsd-workspaces for .planning/ directories, shows phase status, git state, blockers, and next actions for every project. Run /ops projects to see the full portfolio.

Source facts

Repository
davepoon/buildwithclaude
Last source activity
April 20, 2026 at 11:34
Detected SKILL.md language
English
Stars
3,706
Forks
675

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions ยท Read-only preview
name
ops-projects
description
Portfolio dashboard for all GSD-tracked projects. Scans ~/Projects and ~/gsd-workspaces for .planning/ directories, shows phase status, git state, blockers, and next actions for every project. Run /ops projects to see the full portfolio.
argument-hint
[project-alias|--sync|--refresh]
allowed-tools
["Bash","Read","Grep","Glob","WebFetch","AskUserQuestion"]
effort
low
maxTurns
20
disallowedTools
["Edit","Write","NotebookEdit"]
## Runtime Context Before rendering, load: 1. **Preferences**: `cat ${OPS_DATA_DIR:-$HOME/.claude/plugins/data/ops-ops-marketplace}/preferences.json` โ€” read `owner`, `timezone` 2. **Daemon health**: `cat ${OPS_DATA_DIR}/daemon-health.json` โ€” show service status in dashboard footer 3. **GSD registry**: `cat ${OPS_DATA_DIR}/registry.json` โ€” primary project index (updated by daemon twice daily + on-demand with --sync) # OPS โ–บ PROJECTS โ€” GSD Portfolio Dashboard ## Quick commands ```bash # Refresh registry data on demand bash ${CLAUDE_PLUGIN_ROOT}/scripts/ops-gsd-registry-sync.sh # Show registry contents cat ${OPS_DATA_DIR}/registry.json # Show health summary cat ${OPS_DATA_DIR}/cache/projects_health.json ``` ## Data flow ``` ~/Projects/ ~/gsd-workspaces/ โ”‚ โ”‚ โ–ผ โ–ผ [project]/.planning/ [project]/.planning/ โ”‚ โ”‚ โ”œโ”€โ”€ HANDOFF.json โ”œโ”€โ”€ HANDOFF.json โ† active-phase projects โ”œโ”€โ”€ STATE.md โ”œโ”€โ”€ MILESTONES.md โ”œโ”€โ”€ ROADMAP.md โ””โ”€โ”€ STATE.md โ””โ”€โ”€ MILESTONES.md โ”‚ โ–ผ ops-gsd-registry-sync.sh (daemon: 6am + 6pm) โ”‚ โ–ผ ${OPS_DATA_DIR}/ โ”œโ”€โ”€ registry.json โ† all projects, sorted by priority โ””โ”€โ”€ cache/ โ””โ”€โ”€ projects_health.json โ† health summary โ”‚ โ–ผ ops-projects skill reads this ``` --- ## Dashboard output Build the dashboard from `${OPS_DATA_DIR}/cache/projects_health.json` (fall back to `${OPS_DATA_DIR}/registry.json` if missing). Show: ``` โ•”โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•— โ•‘ OPS โ–บ PROJECTS [owner] [date] [daemon status] โ•‘ โ• โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•ฃ โ•‘ GSD Portfolio โ€” 23 projects โ•‘ โ•‘ โ•‘ โ•‘ ๐ŸŸข EXECUTING (3) โ•‘ โ•‘ my-webapp Phase 12 [executing] branch: main 0 dirty โ•‘ โ•‘ my-plugin Phase 16 [executing] branch: main 2 dirty โ•‘ โ•‘ my-saas-app Phase 39 [executing] branch: dev 0 dirty โ•‘ โ•‘ โ•‘ โ•‘ ๐ŸŸก PAUSED (4) โ•‘ โ•‘ my-project-a Phase 08 [paused] branch: feat 1 dirty โ•‘ โ•‘ my-project-b Phase 3 [verifying] branch: main 0 dirty โ•‘ โ•‘ ... โ•‘ โ•‘ โ•‘ โ•‘ ๐Ÿ”ด BLOCKED (1) โ•‘ โ•‘ my-ecommerce Phase 7 [await-UAT] branch: prod 0 dirty โ•‘ โ•‘ โ•‘ โ•‘ โšช IDLE / UNTRACKED (15) โ•‘ โ•‘ my-side-project Phase 1 [complete] branch: main 0 dirty โ•‘ โ•‘ my-other-app โ€” โ€” branch: dev 3 dirty โ•‘ โ•‘ ... โ•‘ โ• โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•ฃ โ•‘ โšก Services: message-listener โ— | inbox-digest โฑ 2h | gsd-registry โฑ 12h โ•‘ โ•šโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• ``` ### Status indicators (from `status` field, case-insensitive) - **executing** โ†’ ๐ŸŸข - **paused / verifying / phase_complete** โ†’ ๐ŸŸก - **human / uat / blocked / pending** โ†’ ๐Ÿ”ด - **empty status + has phase** โ†’ โšช (idle) - **no phase, no status** โ†’ โšช (untracked/no GSD) ### Columns per project: ALIAS | PHASE | STATUS | BRANCH | DIRTY | NEXT ACTION --- ## Project deep-dive If `$ARGUMENTS` contains a project alias, find it in the registry and show: ``` โ•”โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•— โ•‘ PROJECT โ€” [alias] โ•‘ โ• โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•ฃ โ•‘ Path: ~/Projects/[alias]/ โ•‘ โ•‘ Phase: [phase] Status: [status] โ•‘ โ•‘ Milestone: [milestone name] โ•‘ โ•‘ Branch: [branch] Dirty: [N] Unpushed: [N] โ•‘ โ•‘ Blockers: [N] โ•‘ โ•‘ Next: [next_action text] โ•‘ โ•‘ โ•‘ โ•‘ GSD files: โœ“ ROADMAP โœ“ MILESTONES [HAS_HANDOFF] STATE โ•‘ โ•šโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• Actions: [1] Open project directory [2] Continue GSD (/gsd-next [alias]) [3] Git: branch / status / log [4] Run /ops projects (back to portfolio) ``` Present numbered actions and let the user pick by typing the number or action name. --- ## --sync flag If `--sync` or `--refresh` is passed, run the registry sync script first, then display the updated dashboard: ```bash bash ${CLAUDE_PLUGIN_ROOT}/scripts/ops-gsd-registry-sync.sh 2>&1 ``` Show "Refreshing..." while running, then present the full updated dashboard. --- ## Error states - If `registry.json` is missing/empty: show a one-shot sync prompt ``` No project registry found. Run /ops projects --sync to build it. ``` - If daemon health shows `action_needed`: surface that in a warning banner --- ## CLI reference (for manual use) | Command | What it does | |---------|-------------| | `/ops projects` | Show full portfolio | | `/ops projects [alias]` | Deep-dive on one project | | `/ops projects --sync` | Force-refresh registry + show dashboard | | `/ops:setup registry` | Open registry setup (future) |
View on GitHub