reflect-permissions

Analyze Claude Code permission confirmation history for the current project and add approved patterns to project settings. Triggered by 'reflect permissions', 'analyze permissions', or '/reflect-permissions'.

reflect-permissions

Анализирует лог подтверждений инструментов Claude Code для текущего проекта и добавляет часто одобряемые команды в permissions.allow проекта — чтобы больше не подтверждать их вручную.


Шаг 1: Проверь установку хука

Прочитай ~/.claude/settings.json и проверь, есть ли в hooks.PostToolUse запись с командой, содержащей log_tool_use.py.

Если хука нет — сообщи:

Хук логирования не установлен. Хочешь установить сейчас?
Это добавит PostToolUse хук в ~/.claude/settings.json, который будет
тихо логировать вызовы инструментов в ~/.claude/permission_log.jsonl.

И предложи установить (выполни Шаг 5 по установке хука).


Шаг 2: Запусти анализ

python3 ~/.claude/skills/reflect-permissions/scripts/analyze_permissions.py

Выполни в рабочей директории текущего проекта (не в ~/.claude).


Шаг 3: Покажи результаты

Разбери JSON-ответ скрипта и отобрази в таком формате:

Проект: /path/to/project
Записей в логе: N  |  Без разрешения (ручные подтверждения): M

Предлагаемые разрешения:
──────────────────────────────────────────────────────
 #   Правило                  Подтверждений   Примеры
──────────────────────────────────────────────────────
 1   Bash(git:*)                   12         git status, git diff, git log
 2   Bash(pnpm:*)                   8         pnpm install, pnpm run dev
 3   Write                          3         src/index.ts, .env.local
──────────────────────────────────────────────────────

Если suggestions пусто:

Всё уже покрыто существующими правилами, или лог пока пустой.
Поработай в проекте ещё немного, потом запусти снова.

Шаг 4: Запроси подтверждение

Спроси пользователя:

Добавить какие-то из этих правил в .claude/settings.json текущего проекта?
Введи номера через запятую (например: 1,3) или "все" для добавления всех.

Дождись ответа. Если пользователь отказался — завершить без изменений.


Шаг 5: Запиши в .claude/settings.json проекта

Прочитай .claude/settings.json в текущей директории проекта (создай если нет). Добавь выбранные правила в permissions.allow.

Не дублируй — перед добавлением проверь, нет ли правила уже в массиве.

Пример результирующего файла:

{
  "permissions": {
    "allow": [
      "Bash(git:*)",
      "Bash(pnpm:*)"
    ]
  }
}

После записи выведи:

Готово! Добавлено N правил в .claude/settings.json
Теперь эти команды не будут требовать ручного подтверждения в этом проекте.

Шаг 5 (установка хука): Добавить PostToolUse хук

Если хук не установлен — добавь в ~/.claude/settings.json в раздел hooks.PostToolUse:

{
  "matcher": "Bash",
  "hooks": [
    {
      "type": "command",
      "command": "python3 /Users/vampire/.claude/skills/reflect-permissions/scripts/log_tool_use.py"
    }
  ]
}

Также добавь аналогичные записи для Write и Edit, чтобы логировать операции с файлами.

После установки сообщи:

Хук установлен. Теперь Claude Code будет логировать все подтверждённые вызовы инструментов.
Поработай в проекте, а потом снова запусти /reflect-permissions — скрипт найдёт паттерны для авто-разрешений.

Примечания

  • Лог хранится в ~/.claude/permission_log.jsonl — одна запись на строку (JSONL).
  • Каждая запись содержит project (полный путь), tool, input, ts.
  • Анализ всегда фильтрует только текущий проект.
  • Существующие глобальные правила из ~/.claude/settings.json учитываются — уже разрешённые команды не попадают в suggestions.