add-compact
Add /compact command for manual context compaction. Solves context rot in long sessions by forwarding the SDK's built-in /compact slash command. Main-group or trusted sender only.
pinned to #704abc9updated 2 weeks ago
Ask your AI client: “install skills/add-compact”.
Requires the metahub MCP server installed in your client. Set up MCP.
mh install skills/add-compactmetahub onboarded this repo on the author's behalf.
If you own github.com/sliamh11/Deus on GitHub, claim the listing to take over publishing. Your claim preserves the existing eval history and badges; only the curator label is replaced with verified-publisher on your next publish.
Stars
48
Last commit
2 weeks ago
Latest release
published
- #ai-assistant
- #ai-memory
- #claude-code
- #container-isolation
- #persistent-memory
- #self-improving-ai
- #semantic-memory
- #semantic-search
About this skill
Pulled from SKILL.md at publish time.
Adds a `/compact` session command that compacts conversation history to fight context rot in long-running sessions. Uses the Claude Agent SDK's built-in `/compact` slash command — no synthetic system prompts.
Evaluation report
WarningsAutomated checks the publisher passed at publish time — structure, docs, safety, and whether the artifact behaves as claimed.704abc9· 2 weeks ago
Kind-specific
31Skill: SKILL.md present
found at .claude/skills/add-compact/SKILL.md · frontmatter source: SKILL.md
Skill: body content present
964 words · 6,656 chars · 11 sections · 6 code blocks
Skill: triggers declaredwarn
No `trigger` phrases in SKILL.md frontmatter
Add `trigger:` lines so Claude knows when to activate this skill — e.g. `when building MCP servers` or `for diagram creation`.
Skill: allowed-tools scope
no allowed-tools restriction (Claude may use anything)
Release history
1- releasecurrent704abc9warn2 weeks ago
Contents
Adds a /compact session command that compacts conversation history to fight context rot in long-running sessions. Uses the Claude Agent SDK's built-in /compact slash command — no synthetic system prompts.
Session contract: /compact keeps the same logical session alive. The SDK returns a new session ID after compaction (via the init system message), which the agent-runner forwards to the orchestrator as newSessionId. No destructive reset occurs — the agent retains summarized context.
Phase 1: Pre-flight
Check if src/session-commands.ts exists:
test -f src/session-commands.ts && echo "Already applied" || echo "Not applied"
If already applied, skip to Phase 3 (Verify).
Phase 2: Apply Code Changes
Check if the compact feature files are already present in the local codebase:
test -f src/session-commands.ts && echo "Already present" || echo "Not present"
If not present, the compact feature needs to be implemented locally. The following files are involved:
src/session-commands.ts(extract and authorize session commands)src/session-commands.test.ts(unit tests for command parsing and auth)- Session command interception in
src/index.ts(bothprocessGroupMessagesandstartMessageLoop) - Slash command handling in
container/agent-runner/src/index.ts
Validate
npm test
npm run build
Rebuild container
./container/build.sh
Restart service
launchctl kickstart -k gui/$(id -u)/com.deus # macOS
# Linux: systemctl --user restart deus
Phase 3: Verify
Integration Test
- Start Deus in dev mode:
npm run dev - From the main group (self-chat), send exactly:
/compact - Verify:
- The agent acknowledges compaction (e.g., "Conversation compacted.")
- The session continues — send a follow-up message and verify the agent responds coherently
- A conversation archive is written to
groups/{folder}/conversations/(by the PreCompact hook) - Container logs show
Compact boundary observed(confirms SDK actually compacted) - If
compact_boundarywas NOT observed, the response says "compact_boundary was not observed"
- From a non-main group as a non-admin user, send:
@<assistant> /compact - Verify:
- The bot responds with "Session commands require admin access."
- No compaction occurs, no container is spawned for the command
- From a non-main group as the admin (device owner /
is_from_me), send:@<assistant> /compact - Verify:
- Compaction proceeds normally (same behavior as main group)
- While an active container is running for the main group, send
/compact - Verify:
- The active container is signaled to close (authorized senders only — untrusted senders cannot kill in-flight work)
- Compaction proceeds via a new container once the active one exits
- The command is not dropped (no cursor race)
- Send a normal message, then
/compact, then another normal message in quick succession (same polling batch): - Verify:
- Pre-compact messages are sent to the agent first (check container logs for two
runAgentcalls) - Compaction proceeds after pre-compact messages are processed
- Messages after
/compactin the batch are preserved (cursor advances to/compact's timestamp only) and processed on the next poll cycle
- Pre-compact messages are sent to the agent first (check container logs for two
- From a non-main group as a non-admin user, send
@<assistant> /compact: - Verify:
- Denial message is sent ("Session commands require admin access.")
- The
/compactis consumed (cursor advanced) — it does NOT replay on future polls - Other messages in the same batch are also consumed (cursor is a high-water mark — this is an accepted tradeoff for the narrow edge case of denied
/compact+ other messages in the same polling interval) - No container is killed or interrupted
- From a non-main group (with
requiresTriggerenabled) as a non-admin user, send bare/compact(no trigger prefix): - Verify:
- No denial message is sent (trigger policy prevents untrusted bot responses)
- The
/compactis consumed silently - Note: in groups where
requiresTriggerisfalse, a denial message IS sent because the sender is considered reachable
- After compaction, verify no auto-compaction behavior — only manual
/compacttriggers it
Validation on Fresh Clone
git clone <your-fork> /tmp/deus-test
cd /tmp/deus-test
claude # then run /add-compact
npm run build
npm test
./container/build.sh
# Manual: send /compact from main group, verify compaction + continuation
# Manual: send @<assistant> /compact from non-main as non-admin, verify denial
# Manual: send @<assistant> /compact from non-main as admin, verify allowed
# Manual: verify no auto-compaction behavior
Security Constraints
- Main-group or trusted/admin sender only. The main group is the user's private self-chat and is trusted (see
docs/SECURITY.md). Non-main groups are untrusted — a careless or malicious user could wipe the agent's short-term memory. However, the device owner (is_from_me) is always trusted and can compact from any group. - No auto-compaction. This skill implements manual compaction only. Automatic threshold-based compaction is a separate concern and should be a separate skill.
- No config file. Deus's philosophy is customization through code changes, not configuration sprawl.
- Transcript archived before compaction. The existing
PreCompacthook in the agent-runner archives the full transcript toconversations/before the SDK compacts it. - Session continues after compaction. This is not a destructive reset. The conversation continues with summarized context.
What This Does NOT Do
- No automatic compaction threshold (add separately if desired)
- No
/clearcommand (separate skill, separate semantics —/clearis a destructive reset) - No cross-group compaction (each group's session is isolated)
- No changes to the container image, Dockerfile, or build script
Troubleshooting
- "Session commands require admin access": Only the device owner (
is_from_me) or main-group senders can use/compact. Other users are denied. - No compact_boundary in logs: The SDK may not emit this event in all versions. Check the agent-runner logs for the warning message. Compaction may still have succeeded.
- Pre-compact failure: If messages before
/compactfail to process, the error message says "Failed to process messages before /compact." The cursor advances past sent output to prevent duplicates;/compactremains pending for the next attempt.
Reviews
No reviews yet. Be the first.
Related
Frontend Slides
Create beautiful slides on the web using Claude's frontend skills
Guizang Ppt Skill
AI-agent Skill for generating polished HTML slide decks: editorial magazine and Swiss layouts, image prompts, social covers, and a WebGL/low-power presentation runtime.
orchestration-patterns
>
mh install skills/add-compact