Set up the restore-context hook so skills can survive /clear and /compact. Detects .claude/ vs .agents/ layout automatically.
Scanned 9/9/2026
Install to Claude Code
npx -y skills add commercetools/nimbus --skill agent-restore-context-setup --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Agent Restore Context Setup?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/commercetools-agent-restore-context-setup)More formats (shields.io, HTML) on the badges page.
---
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
1. Skills write `.agent-restore-context-<skill-name>` files with resume prompts.
2. A `SessionStart` hook with matcher `clear|compact` runs `agent-restore-context.sh`.
3. The script globs for `.agent-restore-context-*` and outputs their contents.
4. The model receives that output and follows the resume instructions.
5. 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:
```json
{
"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
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!