| name | agent-restore-context-setup |
| description | Set up the restore-context hook so skills can survive /clear and /compact. Detects .claude/ vs .agents/ layout automatically. |
| disable-model-invocation | false |
| allowed-tools | Bash, Grep, Glob, Read, Edit, Write |
Setup Restore Context
Set up a generic SessionStart hook that re-injects context after /clear or
/compact. Any skill that writes a .agent-restore-context-<name> file in the
project root will have its contents automatically injected into the fresh
conversation.
How It Works
- Skills write
.agent-restore-context-<skill-name> files with resume prompts.
- A
SessionStart hook with matcher clear|compact runs agent-restore-context.sh.
- The script globs for
.agent-restore-context-* and outputs their contents.
- The model receives that output and follows the resume instructions.
- Skills manage their own file lifecycle (write/delete).
Process
1. Detect Layout
Determine which configuration layer the project uses:
| Check | Layout | Skills directory |
|---|
.agents/ directory exists | agents | .agents/skills/ |
Only .claude/ exists | claude | .claude/skills/ |
Settings files always live under .claude/ regardless of layout.
2. Check if Already Configured
Read .claude/settings.json and .claude/settings.local.json (if it exists).
Search both for restore-context. If found in either file, report that the hook
is already configured and stop.
3. Locate the Hook Script
The script is at <skills-dir>/agent-restore-context-setup/resources/agent-restore-context.sh
(using the skills directory from step 1).
Verify the script exists and is executable. If not executable, run chmod +x.
4. Register the Hook
Permission check
Run gh repo view --json viewerPermission --jq '.viewerPermission'. If the
result is READ, warn the user that the repo is read-only — any changes made
to .claude/settings.json or .gitignore will need to be committed and pushed
manually. Continue with the rest of the steps as normal.
Choose settings file
Ask the user:
"Should I add the restore-context hook to .claude/settings.json
(shared/committed) or .claude/settings.local.json (local only)?"
Compute the script path relative to the project root (from step 3), then merge
the following into the chosen file's hooks object. Do not overwrite
existing hooks — add to or create the SessionStart array:
{
"SessionStart": [
{
"matcher": "clear|compact",
"hooks": [
{
"type": "command",
"command": "bash <skills-dir>/agent-restore-context-setup/resources/agent-restore-context.sh"
}
]
}
]
}
5. Add Gitignore Entry
Check .gitignore for .agent-restore-context-*. If not present, append:
# Restore context files (used by skills to survive /clear and /compact)
.agent-restore-context-*
6. Confirm
Report to the user:
- Where the hook was registered (which settings file)
- The path to the script
- That any skill can now write
.agent-restore-context-<name> files to use
this pattern
Guidelines
- Always read target files before modifying them
- Do not create
.agents/ or .agents/skills/ directories — only use them if
they already exist
- This skill is idempotent — safe to run multiple times