groove-admin-install
Outcome
All groove backends are installed in dependency order, groove-wide companion skills are installed, AGENTS.md contains the session bootstrap, and the repo is ready for use.
Acceptance Criteria
- Task and memory backends installed
- Companion skills installed (find-skills, agent-browser, pdf-to-markdown)
- User sees a summary of what was installed
Steps
Run in order:
- If
.groove/index.mddoes not exist, run/groove-admin-config --defaultsto create it with all defaults (no prompts) - Run
/groove-utilities-task-install— installs the configured task backend (e.g. beans) - Run
/groove-utilities-memory-install— creates memory directories - Install companion skills:
- find-skills (downloaded): check
ls .agents/skills/find-skills/SKILL.md; if absent:npx skills add https://github.com/vercel-labs/skills --skill find-skills - agent-browser (downloaded): check
ls .agents/skills/agent-browser/SKILL.md; if absent:npx skills add https://github.com/vercel-labs/agent-browser --skill agent-browser - pdf-to-markdown (embedded): check
ls .agents/skills/pdf-to-markdown/SKILL.md; if absent:npx skills add andreadellacorte/groove --skill pdf-to-markdown - Report each as installed / already-present / failed
- find-skills (downloaded): check
- Sync platform skill directories via symlinks:
- For each directory in
.agents/skills/that starts withgroove:- Create
.claude/skills/<name>as a symlink →../../.agents/skills/<name>if not already a symlink - Create
.cursor/skills/<name>as a symlink →../../.agents/skills/<name>if.cursor/skills/exists and entry is not already a symlink
- Create
- Create
.cursor/skills/if it does not exist (future-proof; no-op if Cursor is not in use) - Run:
for skill in .agents/skills/groove*; do name=$(basename "$skill"); ln -sfn "../../.agents/skills/$name" ".claude/skills/$name"; done - Run:
mkdir -p .cursor/skills && for skill in .agents/skills/groove*; do name=$(basename "$skill"); ln -sfn "../../.agents/skills/$name" ".cursor/skills/$name"; done - Note: use
ln -sfn(no-dereference) —ln -sfon an existing directory symlink follows the symlink and creates a nested symlink inside the target directory - Report: "✓ platform symlinks updated (.claude/skills/, .cursor/skills/)"
- For each directory in
- Scaffold hooks and cache directories:
- Create
.groove/hooks/if it does not exist - Create
.groove/.cache/if it does not exist (with a.gitkeep) - If
.groove/hooks/start.mddoes not exist, create it with:# Hook: Session Start Runs automatically at the end of `/groove-daily-start`. Add items to `## Actions` to automate session-start tasks. ## Actions <!-- Add actions here, one per line. Examples: - Run `git fetch --all` to refresh remote refs - Print "Good morning — groove is ready" --> - If
.groove/hooks/end.mddoes not exist, create it with:# Hook: Session End Runs automatically at the end of `/groove-daily-end`. Add items to `## Actions` to automate session-end tasks. ## Actions <!-- Add actions here, one per line. Examples: - Run `git push` to push today's commits - Print "Session closed — see you tomorrow" --> - Report hooks: created / already-present
- Create
- Apply git strategy — write
.groove/.gitignorefromgit.*sub-keys in.groove/index.md(see/groove-admin-configfor rules)
Constraints
- Read
.groove/index.mdfortasks.backendandgit.*config before running - If
.groove/index.mddoes not exist,/groove-admin-configis run first (step 1) to create it - Dependency order for backends must be respected: task → memory → companions
- Each step reports installed / already-present / failed
AGENTS.mdupdate is additive per section — preserve all other content- If any step fails, report it clearly but continue with remaining steps
- Companion skills (find-skills, agent-browser, pdf-to-markdown) are hardcoded here, not read from any config file
- Report a final summary:
✓ task backend (beans) ✓ memory backend — memory dirs ready ✓ companion: find-skills ✓ companion: agent-browser ✓ companion: pdf-to-markdown ✓ hooks: .groove/hooks/ ready