К основному содержанию
скилл CX Codex

groove-admin-cursor-hooks — скилл для Claude Code: хуки Cursor

Ставит нативные хуки groove в .cursor/hooks.json: перезагрузка контекста после компакции, напоминания в конце дня, буфер git-коммитов и защита служебных путей.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add andreadellacorte/groove --skill groove-admin-cursor-hooks -a claude-code
Открыть на GitHub

Что делает groove-admin-cursor-hooks

Скилл прописывает хуки Cursor в .cursor/hooks.json и кладёт их shell-скрипты в .groove/hooks/cursor/. Хуки срабатывают на событиях жизненного цикла Cursor сами по себе, без участия модели, и дополняют markdown-хуки groove (.groove/hooks/start.md, end.md).

Доступно шесть хуков: context-reprime на sessionStart заново подгружает контекст воркфлоу, daily-end-reminder на stop напоминает про /groove-daily-end в рабочие часы, git-activity-buffer на postToolUse/Shell пишет строку с меткой времени при git commit, block-managed-paths на preToolUse/Write блокирует запись в .agents/skills/groove и skills/groove с кодом выхода 2, version-check раз в час проверяет новую версию, session-capture на stop готовит черновик захвата сессии в .groove/.cache/pending-capture.md.

При установке скилл спрашивает, какие хуки включить (по умолчанию все шесть), читает существующий .cursor/hooks.json и не трогает чужие записи. Скрипты используют python3 для разбора JSON и git для истории — без них часть хуков молча ничего не сделает. Уже существующий скрипт скилл не перезапишет, пока не покажет diff и не получит подтверждение. Убрать отдельный хук можно через --disable <hook>, посмотреть текущий статус — через --list.

Какие задачи решает

  • подгрузить контекст воркфлоу заново после компакции сессии
  • напомнить про /groove-daily-end в конце рабочего дня
  • собрать список git-коммитов за сессию в буфер
  • заблокировать правку файлов, которыми управляет groove update
  • подготовить черновик захвата сессии к следующему запуску

Примеры запросов агенту

  • поставь хуки groove для Cursor
  • покажи, какие хуки groove уже зарегистрированы
  • отключи хук version-check

Как установить groove-admin-cursor-hooks

1Через Skills CLI (Vercel)

npx skills add andreadellacorte/groove --skill groove-admin-cursor-hooks -a claude-code

2Вручную: положить файлы

~/.claude/skills/groove-admin-cursor-hooks/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/groove-admin-cursor-hooks/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Из того же набора13

groove-work-plan Исследует кодовую базу и пишет конкретный план реализации с шагами, путями к файлам и именами функций. Ставится после брейншторма. CX Codex +1 544установок groove-work-compound Скилл фиксирует выводы после ревью или планирования: обновляет правила, шаблоны и документацию проекта, разбирает причины ошибок. CX Codex +1 540установок groove-work-exec Скилл берёт готовый план работ и пишет по нему код, тесты и документацию, отмечая прогресс в таск-бэкенде. Нужен, когда планирование закончено и пора делать. CX Codex +1 536установок groove-admin-update Тянет свежие скиллы groove и по очереди применяет миграции к локальному состоянию. Нужен, когда вышла новая версия, а конфиг и память остались на старой. CX Codex +1 528установок groove-utilities-memory-graduate Переносит устойчивый вывод из .groove/memory/learned/ в AGENTS.md, чтобы правило действовало в каждой будущей сессии без запуска prime. CX Codex +1 510установок groove-groovebook-publish Скилл отправляет рабочую находку из проекта в общий репозиторий groovebook отдельным pull request. Пригодится после groove-work-compound, когда наработку стоит показать сообществу. CX Codex +1 506установок groove-utilities-onboard Генерирует GROOVE.md в корне проекта, чтобы новый контрибьютор понял, какие команды запускать и где лежат логи. Полезно, когда в команду приходит человек на groove-проект. CX Codex +1 505установок groove-admin-claude-statusline Ставит в Claude однострочную статусную строку с моделью, веткой git, расходом токенов и лимитами. Полезна, когда нужно видеть контекст сессии без лишних команд. CX Codex +1 501установок

Похожие

shopify-polaris-admin-extensions Shopify Скилл по админ-расширениям Shopify для Claude Code. Сейчас он помечен как устаревший: вместо работы выдаёт инструкцию удалить себя и поставить shopify. CX Codex +1 9 700установок handover-admin adobe Создаёт руководство для передачи администрирования проекта AEM Edge Delivery Services. Пригодится при онбординге нового администратора и фиксации рабочих процедур. CX Codex +1 712установок cc-best-practices dboeckli Скилл-инструкция по работе с Claude: управление контекстом, режим планирования, проверка результата и разбор типичных ошибок. CX Codex +1 3 500установок system-admin terminal-skills Скилл с командами для проверки состояния Linux-сервера: нагрузка, память, диски, службы systemd. Пригодится, когда агент разбирается с тормозящим сервером. CX Codex +1 561установок create-skill siviter-xyz Скилл-инструкция для тех, кто делает собственные скиллы: разбирает структуру SKILL.md, правило 200 строк и вынос деталей в references. CX Codex +1 2 800установок cursor-memory-curator stark-ai-de Разбирает правила Cursor и memory-bank: находит устаревшие, конфликтующие и слишком широкие инструкции, предлагает куда их перенести. CX Codex +1 2 700установок

Рядом в теме «Настройка агента: память, контекст, субагенты»

Всё по теме «Настройка агента: память, контекст, субагенты» →

Вопросы о groove-admin-cursor-hooks

Как установить groove-admin-cursor-hooks в Claude?

Выполните npx skills add andreadellacorte/groove --skill groove-admin-cursor-hooks -a claude-code. После этого скилл лежит в ~/.claude/skills/groove-admin-cursor-hooks/SKILL.md.

Что делает groove-admin-cursor-hooks?

Регистрирует выбранные хуки groove в .cursor/hooks.json и пишет их shell-скрипты в .groove/hooks/cursor/. Дальше они срабатывают на событиях Cursor без участия модели.

Что нужно для работы хуков?

Скрипты вызывают python3 для разбора JSON и git для истории коммитов. Без них соответствующие хуки просто ничего не сделают.

Исходный текст

SKILL.md · MIT
---
name: groove-admin-cursor-hooks
description: "Install groove's Cursor native hooks into .cursor/hooks.json. Enables compaction-safe re-priming, session-end reminders, git activity capture, automatic session-capture drafts, and managed-path protection."
license: MIT
allowed-tools: Read Write Edit Glob Bash(git:*) Bash(mkdir:*) Bash(chmod:*) Bash(python3:*) AskUserQuestion
metadata:
  author: andreadellacorte
---

<!-- groove:managed — do not edit; changes will be overwritten by groove update -->

# groove-admin-cursor-hooks

Install groove's Cursor native hooks. These run outside the model — deterministic, unconditional — and complement groove's advisory markdown hooks (`.groove/hooks/start.md`, `end.md`).

Use `--disable <hook>` to remove a specific hook. Use `--list` to show current status.

## Outcome

Selected hooks are registered in `.cursor/hooks.json` and shell scripts are written to `.groove/hooks/cursor/`. Hooks fire automatically on Cursor lifecycle events without any model involvement.

## Available hooks

| Name | Event | Matcher | What it does |
|---|---|---|---|
| `context-reprime` | `sessionStart` | — | Runs the prime script with `--json` — ensures full workflow context is loaded after every session start and compaction |
| `daily-end-reminder` | `stop` | — | If hour is 16–21 local time and `.groove/index.md` exists, prints a reminder to run `/groove-daily-end` |
| `git-activity-buffer` | `postToolUse` | `Shell` | If the command contains `git commit`, appends a timestamped line to `.groove/.cache/git-activity-buffer.txt` |
| `block-managed-paths` | `preToolUse` | `Write` | If `file_path` starts with `.agents/skills/groove` or `skills/groove`, exits with code 2 to block the write with an explanatory message |
| `version-check` | `postToolUse` | — | Checks for a new groove version once per hour; calls `groove-utilities-check` |
| `session-capture` | `stop` | — | If there is git activity this session (commits since midnight, working changes, or buffered commits), stages a capture draft to `.groove/.cache/pending-capture.md` for next-session review. Silent. |

## Steps

### `--list`

Read `.cursor/hooks.json` if it exists. Report which groove hooks are registered and which scripts exist in `.groove/hooks/cursor/`. Exit.

### `--disable <hook>`

Remove the named hook's entry from `.cursor/hooks.json` (leave the script in place). Report removed / not found. Exit.

### Default (install)

1. Ask which hooks to enable (default: all six):
   ```
   Which hooks to install? (all / comma-separated: context-reprime, daily-end-reminder, git-activity-buffer, block-managed-paths, version-check, session-capture)
   Press enter for all.
   ```

2. Read `.cursor/hooks.json` if it exists; parse as JSON (default `{"version": 1, "hooks": {}}`). Never discard existing non-groove entries.

3. Create `.groove/hooks/cursor/` directory if absent. Make each script executable (`chmod +x`).

4. For each selected hook: write the shell script and merge the hook entry into `.cursor/hooks.json`.

5. Write `.cursor/hooks.json` with the merged result.

6. Report summary:
   ```
   ✓ context-reprime     — sessionStart hook → groove-utilities-prime.sh --json
   ✓ daily-end-reminder  — stop hook → .groove/hooks/cursor/daily-end-reminder.sh
   ✓ git-activity-buffer — postToolUse/Shell hook → .groove/hooks/cursor/git-activity-buffer.sh
   ✓ block-managed-paths — preToolUse/Write hook → .groove/hooks/cursor/block-managed-paths.sh
   ✓ version-check       — postToolUse hook → .groove/hooks/cursor/version-check.sh
   ✓ session-capture     — stop hook → .groove/hooks/cursor/session-capture.sh
   ✓ .cursor/hooks.json updated
   ```

## Shell script templates

Write these verbatim to `.groove/hooks/cursor/`. Never overwrite an existing script without showing a diff and confirming.

### `daily-end-reminder.sh`

```bash
#!/usr/bin/env bash
# groove: stop hook — remind about /groove-daily-end during work hours
hour=$(date +%H)
if [ -f "$CLAUDE_PROJECT_DIR/.groove/index.md" ] && [ "$hour" -ge 16 ] && [ "$hour" -le 21 ]; then
  echo "groove: end of work hours — consider running /groove-daily-end"
fi
```

### `git-activity-buffer.sh`

```bash
#!/usr/bin/env bash
# groove: postToolUse/Shell hook — buffer git commits for memory log
input=$(cat)
command=$(echo "$input" | python3 -c "import sys,json; d=json.load(sys.stdin); print(d.get('tool_input',{}).get('command',''))" 2>/dev/null)
if echo "$command" | grep -q "git commit"; then
  msg=$(echo "$command" | grep -oP '(?<=-m ")[^"]+' | head -1)
  mkdir -p "$CLAUDE_PROJECT_DIR/.groove/.cache"
  echo "$(date '+%Y-%m-%d %H:%M') | ${msg:-<no message>}" >> "$CLAUDE_PROJECT_DIR/.groove/.cache/git-activity-buffer.txt"
fi
```

### `block-managed-paths.sh`

```bash
#!/usr/bin/env bash
# groove: preToolUse/Write hook — block edits to managed groove paths
input=$(cat)
path=$(echo "$input" | python3 -c "import sys,json; d=json.load(sys.stdin); print(d.get('tool_input',{}).get('file_path',''))" 2>/dev/null)
if echo "$path" | grep -qE '^(\.agents/skills/groove|skills/groove)'; then
  echo "groove: blocked — '$path' is managed by groove update. Edit under skills/ and rsync to .agents/skills/." >&2
  exit 2
fi
```

### `version-check.sh`

```bash
#!/usr/bin/env bash
# groove: postToolUse hook — check for new groove version (once per hour)
CACHE="$CLAUDE_PROJECT_DIR/.groove/.cache/last-version-check-ts"
mkdir -p "$CLAUDE_PROJECT_DIR/.groove/.cache"
now=$(date +%s)
if [ -f "$CACHE" ]; then
  last=$(cat "$CACHE")
  diff=$((now - last))
  [ "$diff" -lt 3600 ] && exit 0
fi
echo "$now" > "$CACHE"
bash "$CLAUDE_PROJECT_DIR/.agents/skills/groove-utilities-check/scripts/check.sh" 2>/dev/null || true
```

### `session-capture.sh`

```bash
#!/usr/bin/env bash
# groove: stop hook — stage a session capture draft from git activity for next-session review
ROOT="${CLAUDE_PROJECT_DIR:-$PWD}"
[ -f "$ROOT/.groove/index.md" ] || exit 0
command -v git >/dev/null 2>&1 || exit 0
git -C "$ROOT" rev-parse --git-dir >/dev/null 2>&1 || exit 0

CACHE="$ROOT/.groove/.cache"
PENDING="$CACHE/pending-capture.md"
BUFFER="$CACHE/git-activity-buffer.txt"

commits=$(git -C "$ROOT" log --since=midnight --oneline 2>/dev/null)
changes=$(git -C "$ROOT" diff --stat HEAD 2>/dev/null)
buffered=""
[ -s "$BUFFER" ] && buffered=$(cat "$BUFFER")

# No activity → clear any stale draft and stay silent.
if [ -z "$commits" ] && [ -z "$changes" ] && [ -z "$buffered" ]; then
  rm -f "$PENDING"
  exit 0
fi

mkdir -p "$CACHE"
{
  echo "# Pending capture — $(date '+%Y-%m-%d %H:%M')"
  echo
  echo "## Commits since midnight"
  echo "${commits:-(none)}"
  echo
  echo "## Working changes"
  echo "${changes:-(none)}"
  if [ -n "$buffered" ]; then
    echo
    echo "## Buffered commit messages"
    echo "$buffered"
  fi
} > "$PENDING"
```

## `.cursor/hooks.json` template

Merge these into the `hooks` key. Preserve all other keys.

```json
{
  "version": 1,
  "hooks": {
    "sessionStart": [
      {
        "command": "bash $CLAUDE_PROJECT_DIR/.agents/skills/groove-utilities-prime/scripts/groove-utilities-prime.sh --json"
      }
    ],
    "stop": [
      {
        "command": "bash $CLAUDE_PROJECT_DIR/.groove/hooks/cursor/daily-end-reminder.sh"
      },
      {
        "command": "bash $CLAUDE_PROJECT_DIR/.groove/hooks/cursor/session-capture.sh"
      }
    ],
    "postToolUse": [
      {
        "matcher": "Shell",
        "command": "bash $CLAUDE_PROJECT_DIR/.groove/hooks/cursor/git-activity-buffer.sh"
      },
      {
        "command": "bash $CLAUDE_PROJECT_DIR/.groove/hooks/cursor/version-check.sh"
      }
    ],
    "preToolUse": [
      {
        "matcher": "Write",
        "command": "bash $CLAUDE_PROJECT_DIR/.groove/hooks/cursor/block-managed-paths.sh"
      }
    ]
  }
}
```

When merging: if a `hooks` key already exists, append groove entries to the relevant event arrays. Do not create duplicates — check if a groove command entry already exists before appending.

## Constraints

- Never overwrite non-groove entries in `.cursor/hooks.json`
- Never overwrite an existing script without diff + confirmation
- Scripts use `python3` to parse JSON stdin — if python3 is absent, skip that hook and warn
- `block-managed-paths` uses exit code 2 (Cursor's convention to block the tool use)
- After install: remind the user that hooks take effect on the next Cursor session restart
- `.groove/hooks/cursor/` follows the `git.hooks` git strategy from `.groove/index.md`
- Create `.cursor/` directory if it does not exist

© andreadellacorte · MIT · andreadellacorte/groove

Смотрите также

Спонсоры проекта

Компании, которые помогают держать аналитику открытой