Skip to main content
skill CX Codex

groove-utilities-memory-graduate — Claude Code skill: pin a lesson

Promotes a stable workflow insight from .groove/memory/learned/ into AGENTS.md, so the rule applies to every future session without running prime.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add andreadellacorte/groove --skill groove-utilities-memory-graduate -a claude-code
Open on GitHub

What groove-utilities-memory-graduate does

The skill takes an entry from .groove/memory/learned/<topic>.md and appends it to AGENTS.md as a permanent constraint. From then on every agent session sees it, not just the ones where you ran prime first.

Here is the flow. Give it a topic and it reads that file; give it nothing and it lists the *.md files in the learned folder and asks which one to work from. It prints the contents, asks which entry to graduate, then shows the exact text headed for AGENTS.md and waits for yes, edit or skip. On confirmation it writes the bullet and marks the source entry with [graduated YYYY-MM-DD] inline — the entry stays in the file, context and all. Tools used: Read, Write, Edit, Glob, AskUserQuestion.

The write goes into a <!-- groove:learned:start --> / <!-- groove:learned:end --> block under ## Graduated Learnings. No block yet? It creates one. No AGENTS.md at all? It creates the file with just that section. The block is yours — groove update leaves it alone. Nothing gets written without your confirmation of the exact wording, so a half-formed note can't slip in by accident. Keep each bullet to one actionable sentence; longer text gets sent back for trimming.

What it helps with

  • pin a working lesson so it holds across every session
  • move a note out of a learned file without losing the original context
  • create the Graduated Learnings section when it does not exist yet
  • stamp a graduated entry with its date instead of deleting it
  • skip an entry that is already in the block

Example prompts for the agent

  • graduate the branch naming lesson from learned into AGENTS.md
  • list the topics in .groove/memory/learned/ and suggest what to promote
  • graduated: run the test suite before every commit

How to install groove-utilities-memory-graduate

1Skills CLI (Vercel)

npx skills add andreadellacorte/groove --skill groove-utilities-memory-graduate -a claude-code

2Manually: put the files in place

~/.claude/skills/groove-utilities-memory-graduate/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/groove-utilities-memory-graduate/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about groove-utilities-memory-graduate

How do I install groove-utilities-memory-graduate in Claude?

Run npx skills add andreadellacorte/groove --skill groove-utilities-memory-graduate -a claude-code. The skill lands at ~/.claude/skills/groove-utilities-memory-graduate/SKILL.md.

What does groove-utilities-memory-graduate do?

It promotes a stable insight from .groove/memory/learned/<topic>.md into the ## Graduated Learnings section of AGENTS.md, making it visible to every session without running prime.

Does it delete the source entry?

No. The entry gets an inline [graduated YYYY-MM-DD] marker and stays in the learned file with its full context.

Source text

SKILL.md · MIT
---
name: groove-utilities-memory-graduate
description: "Graduate a workflow insight from learned/<topic>.md into AGENTS.md as a permanent constraint. Use when a lesson is stable enough to apply to every future session."
license: MIT
allowed-tools: Read Write Edit Glob AskUserQuestion
metadata:
  author: andreadellacorte
---

# groove-utilities-memory-graduate

Promote a stable workflow insight from `.groove/memory/learned/` into `AGENTS.md` as a permanent constraint — visible to every agent session without needing to run prime.

Use $ARGUMENTS as the topic or insight text if provided.

## Outcome

The lesson is appended to a `<!-- groove:learned:start -->` / `<!-- groove:learned:end -->` section in `AGENTS.md`, making it permanently visible to all future sessions.

## Acceptance Criteria

- Insight is appended to the `## Graduated Learnings` section in `AGENTS.md`
- Section is created if it does not exist
- User confirms the exact text before writing
- Source `learned/<topic>.md` entry is marked as graduated (not deleted)

## Steps

1. Memory path is always `.groove/memory/`
2. If $ARGUMENTS names a topic, read `.groove/memory/learned/<topic>.md` and show its entries. Otherwise, list all `*.md` files in `.groove/memory/learned/` and ask which topic to graduate from.
3. Show the file contents; ask: "Which entry should be graduated? (paste or describe it)"
4. Show the exact text that will be written to AGENTS.md; ask: "Confirm? (yes / edit / skip)"
5. If confirmed: write to AGENTS.md (see section management below)
6. Mark the entry in the learned file by appending `[graduated YYYY-MM-DD]` inline after the bullet
7. Report: "Lesson graduated to AGENTS.md → ## Graduated Learnings"

## Section management in AGENTS.md

Look for a `<!-- groove:learned:start -->` / `<!-- groove:learned:end -->` block:

- If the block exists: append the new insight as a bullet under `## Graduated Learnings` inside the block
- If the block does not exist: append the following to the end of `AGENTS.md`:

```
<!-- groove:learned:start -->
## Graduated Learnings

Stable workflow insights promoted from `.groove/memory/learned/`. These apply to every session.

- <insight text>
<!-- groove:learned:end -->
```

Each entry is a single bullet: `- <insight text> *(from learned/<topic>.md, graduated YYYY-MM-DD)*`

## Constraints

- Never graduate without explicit user confirmation of the exact text
- Never delete the source entry from `learned/<topic>.md` — mark it as graduated with `[graduated YYYY-MM-DD]` inline; the full context stays in the file
- The `<!-- groove:learned:* -->` section is user-owned — groove update will not overwrite it
- Keep graduated lessons concise — one actionable sentence per bullet; ask user to trim if longer
- If AGENTS.md does not exist: create it with just the graduated learnings section
- If the same insight is already present in the block (exact match): skip and report "Already graduated."

© andreadellacorte · MIT · andreadellacorte/groove

Similar skills

All skills for Agent setup: memory, context, orchestration →

From the same set13

groove-work-plan Researches your codebase and writes a concrete implementation plan with ordered steps, file paths and function names. Meant to run after brainstorming. CX Codex +1 544installs groove-work-compound This skill documents lessons after a review or planning session, updates project rules and templates, and traces root causes of mistakes. CX Codex +1 540installs groove-work-exec This skill takes a finished implementation plan and writes the code, tests and docs for it, logging progress in your task backend. Use it once planning is done. CX Codex +1 536installs groove-admin-update Pulls the latest groove skills and applies pending migrations to your local groove state. Useful when a new release lands but your config and memory are still on the old one. CX Codex +1 528installs groove-admin-cursor-hooks Registers groove's native Cursor hooks in .cursor/hooks.json: context re-priming after compaction, end-of-day reminders, a git commit buffer and managed-path protection. CX Codex +1 518installs groove-groovebook-publish This skill sends a workflow learning from your project to the shared groovebook repo as a pull request. Handy after groove-work-compound, when a finding deserves a wider audience. CX Codex +1 506installs groove-utilities-onboard Writes a GROOVE.md at the project root so a new contributor knows which commands to run and where logs live. Handy when someone joins a groove project. CX Codex +1 505installs groove-admin-claude-statusline Installs a single-line statusline in Claude showing model, git context, token usage and rate limits. Useful when you want session state visible at a glance. CX Codex +1 501installs

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor