groove-admin-doctor
Outcome
All groove sub-skill health checks are run and a consolidated summary is reported. User knows exactly what is working, what is misconfigured, and what action to take for any failure.
Acceptance Criteria
/groove-utilities-task-doctor and /groove-utilities-memory-doctor are run
- Companion skill presence is checked directly
- Results are shown per sub-skill with pass/fail per check
- Overall status is shown: all healthy, or N issues found
- Each failure includes a specific remediation action
Output format
groove doctor
─────────────────────────────────────
groove
✓ git repo: detected
✓ groove-version: 0.1.0
✓ installed version: 0.1.0
✓ up to date
task
✓ .groove/index.md present
✓ tasks.backend: beans
✓ beans installed (v0.x.x)
✓ .beans.yml present
✓ beans reachable
memory
✓ memory path exists (.groove/memory/) [hardcoded]
✓ memory dirs exist (.groove/memory/daily/, weekly/, monthly/, git/)
companions
✓ find-skills installed
✓ agent-browser installed
✓ pdf-to-markdown installed
platform symlinks
✓ .claude/skills/groove → ../../.agents/skills/groove
✗ .cursor/skills/ missing — run: /groove-admin-install
─────────────────────────────────────
1 issue found. Run the suggested commands above to fix.
Constraints
- Run git repo check first, then version check, then
/groove-utilities-task-doctor, /groove-utilities-memory-doctor, companions check in sequence
- Git repo check:
- Run
git rev-parse --is-inside-work-tree in the current directory
- If it succeeds:
✓ git repo: detected
- If it fails:
✗ git repo: not a git repository — groove requires a git repo
- Version check:
- Read
groove-version: from .groove/index.md (if absent, treat as 0.1.0)
- Read
version: from skills/groove/SKILL.md
- If they differ:
✗ groove-version (<local>) behind installed (<installed>) — run: /groove-admin-update
- Companions check:
- Check
ls .agents/skills/find-skills/SKILL.md — if absent: ✗ find-skills not installed — run: /groove-admin-install
- Check
ls .agents/skills/agent-browser/SKILL.md — if absent: ✗ agent-browser not installed — run: /groove-admin-install
- Check
ls .agents/skills/pdf-to-markdown/SKILL.md — if absent: ✗ pdf-to-markdown not installed — run: /groove-admin-install
- Platform symlinks check (after companions):
- For each
groove-* directory in .agents/skills/: check that .claude/skills/<name> is a symlink pointing to ../../.agents/skills/<name>
- If missing or not a symlink:
✗ .claude/skills/<name> not a symlink — run: /groove-admin-install
- If symlink is broken (target doesn't exist):
✗ .claude/skills/<name> broken symlink — run: /groove-admin-install
- Check if
.cursor/skills/ directory exists:
- If absent:
✗ .cursor/skills/ missing — run: /groove-admin-install
- If present: check each groove symlink as above
- All symlinks healthy:
✓ platform symlinks (.claude/, .cursor/)
- Claude Code native hooks check (after platform symlinks):
- Check if
.claude/settings.json exists
- If it exists: parse JSON and verify groove's hook entries are present (
daily-end-reminder, git-activity-buffer, block-managed-paths, context-reprime, version-check, session-capture commands in the hooks key)
- Each missing entry:
✗ .claude/settings.json missing groove hook <name> — run: /groove-admin-claude-hooks
- If absent:
ℹ .claude/settings.json not present — run /groove-admin-claude-hooks to install native hooks (optional)
- All present:
✓ Claude Code native hooks (daily-end-reminder, git-activity-buffer, block-managed-paths, context-reprime, version-check, session-capture)
- Cursor native hooks check (after Claude Code hooks):
- Check if
.cursor/ directory exists
- If
.cursor/ exists:
- Check if
.cursor/hooks.json exists
- If it exists: parse JSON and verify groove's hook entries are present (
context-reprime, daily-end-reminder, git-activity-buffer, block-managed-paths, version-check, session-capture commands in the hooks key)
- Each missing entry:
✗ .cursor/hooks.json missing groove hook <name> — run: /groove-admin-cursor-hooks
- If absent:
ℹ .cursor/hooks.json not present — run /groove-admin-cursor-hooks to install native hooks (optional)
- All present:
✓ Cursor native hooks (context-reprime, daily-end-reminder, git-activity-buffer, block-managed-paths, version-check, session-capture)
- If
.cursor/ absent: skip silently (Cursor not in use)
- Collect all results before printing — do not interleave output with check progress
- Each
✗ item must include a concrete remediation command on the same line
- Exit with a clear "all healthy" message if no issues found
- Do not attempt to auto-fix issues — report only
1---
2name: groove-admin-doctor
3description: "Run all groove health checks: config, backends, companions, AGENTS.md."
4license: MIT
5allowed-tools: Read Write Edit Glob Grep Bash(git:*) Bash(beans:*) Bash(gh:*) Bash(linear:*) Bash(npx:*) Bash(mkdir:*) AskUserQuestion
6metadata:
7 author: andreadellacorte
8---
9
10<!-- groove:managed — do not edit; changes will be overwritten by groove update -->
11
12# groove-admin-doctor
13
14## Outcome
15
16All groove sub-skill health checks are run and a consolidated summary is reported. User knows exactly what is working, what is misconfigured, and what action to take for any failure.
17
18## Acceptance Criteria
19
20- `/groove-utilities-task-doctor` and `/groove-utilities-memory-doctor` are run
21- Companion skill presence is checked directly
22- Results are shown per sub-skill with pass/fail per check
23- Overall status is shown: all healthy, or N issues found
24- Each failure includes a specific remediation action
25
26## Output format
27
28```
29groove doctor
30─────────────────────────────────────
31groove
32 ✓ git repo: detected
33 ✓ groove-version: 0.1.0
34 ✓ installed version: 0.1.0
35 ✓ up to date
36
37task
38 ✓ .groove/index.md present
39 ✓ tasks.backend: beans
40 ✓ beans installed (v0.x.x)
41 ✓ .beans.yml present
42 ✓ beans reachable
43
44memory
45 ✓ memory path exists (.groove/memory/) [hardcoded]
46 ✓ memory dirs exist (.groove/memory/daily/, weekly/, monthly/, git/)
47
48companions
49 ✓ find-skills installed
50 ✓ agent-browser installed
51 ✓ pdf-to-markdown installed
52
53platform symlinks
54 ✓ .claude/skills/groove → ../../.agents/skills/groove
55 ✗ .cursor/skills/ missing — run: /groove-admin-install
56
57─────────────────────────────────────
581 issue found. Run the suggested commands above to fix.
59```
60
61## Constraints
62
63- Run git repo check first, then version check, then `/groove-utilities-task-doctor`, `/groove-utilities-memory-doctor`, companions check in sequence
64- Git repo check:
65 - Run `git rev-parse --is-inside-work-tree` in the current directory
66 - If it succeeds: `✓ git repo: detected`
67 - If it fails: `✗ git repo: not a git repository — groove requires a git repo`
68- Version check:
69 - Read `groove-version:` from `.groove/index.md` (if absent, treat as `0.1.0`)
70 - Read `version:` from `skills/groove/SKILL.md`
71 - If they differ: `✗ groove-version (<local>) behind installed (<installed>) — run: /groove-admin-update`
72- Companions check:
73 - Check `ls .agents/skills/find-skills/SKILL.md` — if absent: `✗ find-skills not installed — run: /groove-admin-install`
74 - Check `ls .agents/skills/agent-browser/SKILL.md` — if absent: `✗ agent-browser not installed — run: /groove-admin-install`
75 - Check `ls .agents/skills/pdf-to-markdown/SKILL.md` — if absent: `✗ pdf-to-markdown not installed — run: /groove-admin-install`
76- Platform symlinks check (after companions):
77 - For each `groove-*` directory in `.agents/skills/`: check that `.claude/skills/<name>` is a symlink pointing to `../../.agents/skills/<name>`
78 - If missing or not a symlink: `✗ .claude/skills/<name> not a symlink — run: /groove-admin-install`
79 - If symlink is broken (target doesn't exist): `✗ .claude/skills/<name> broken symlink — run: /groove-admin-install`
80 - Check if `.cursor/skills/` directory exists:
81 - If absent: `✗ .cursor/skills/ missing — run: /groove-admin-install`
82 - If present: check each groove symlink as above
83 - All symlinks healthy: `✓ platform symlinks (.claude/, .cursor/)`
84- Claude Code native hooks check (after platform symlinks):
85 - Check if `.claude/settings.json` exists
86 - If it exists: parse JSON and verify groove's hook entries are present (`daily-end-reminder`, `git-activity-buffer`, `block-managed-paths`, `context-reprime`, `version-check`, `session-capture` commands in the `hooks` key)
87 - Each missing entry: `✗ .claude/settings.json missing groove hook <name> — run: /groove-admin-claude-hooks`
88 - If absent: `ℹ .claude/settings.json not present — run /groove-admin-claude-hooks to install native hooks (optional)`
89 - All present: `✓ Claude Code native hooks (daily-end-reminder, git-activity-buffer, block-managed-paths, context-reprime, version-check, session-capture)`
90- Cursor native hooks check (after Claude Code hooks):
91 - Check if `.cursor/` directory exists
92 - If `.cursor/` exists:
93 - Check if `.cursor/hooks.json` exists
94 - If it exists: parse JSON and verify groove's hook entries are present (`context-reprime`, `daily-end-reminder`, `git-activity-buffer`, `block-managed-paths`, `version-check`, `session-capture` commands in the `hooks` key)
95 - Each missing entry: `✗ .cursor/hooks.json missing groove hook <name> — run: /groove-admin-cursor-hooks`
96 - If absent: `ℹ .cursor/hooks.json not present — run /groove-admin-cursor-hooks to install native hooks (optional)`
97 - All present: `✓ Cursor native hooks (context-reprime, daily-end-reminder, git-activity-buffer, block-managed-paths, version-check, session-capture)`
98 - If `.cursor/` absent: skip silently (Cursor not in use)
99- Collect all results before printing — do not interleave output with check progress
100- Each `✗` item must include a concrete remediation command on the same line
101- Exit with a clear "all healthy" message if no issues found
102- Do not attempt to auto-fix issues — report only