Compacts session memory and project state into a persistent, structured markdown format for seamless work resumption.
Install
mkdir -p .claude/skills/compact && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/4101" && unzip -o skill.zip -d .claude/skills/compact && rm skill.zipInstalls to .claude/skills/compact
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Compact current session memory into structured text for session recovery. Supports custom descriptions and tagging.Key capabilities
- →Aggregates current session state
- →Formats recovery snapshots as markdown
- →Persists task plans to core memory
- →Tags session state for retrieval
How it works
Extracts active plan state, variable snapshots, and progress markers into a structured markdown block using a specific schema.
Inputs & outputs
When to use compact
- →Summarizing debugging progress before switching tasks
- →Creating a recovery snapshot for a complex refactoring session
- →Documenting session state for team handovers
About this skill
Memory Compact Command (/memory:compact)
1. Overview
The memory:compact command compresses current session working memory into structured text optimized for session recovery, extracts critical information, and saves it to persistent storage via MCP core_memory tool.
Core Philosophy:
- Session Recovery First: Capture everything needed to resume work seamlessly
- Minimize Re-exploration: Include file paths, decisions, and state to avoid redundant analysis
- Preserve Train of Thought: Keep notes and hypotheses for complex debugging
- Actionable State: Record last action result and known issues
2. Parameters
--description: Custom session description (optional)- Example: "completed core-memory module"
- Example: "debugging JWT refresh - suspected memory leak"
--tags: Comma-separated tags for categorization (optional)--force: Skip confirmation, save directly
3. Structured Output Format
## Session ID
[WFS-ID if workflow session active, otherwise (none)]
## Project Root
[Absolute path to project root, e.g., D:\Claude_dms3]
## Objective
[High-level goal - the "North Star" of this session]
## Execution Plan
[CRITICAL: Embed the LATEST plan in its COMPLETE and DETAILED form]
### Source: [workflow | todo | user-stated | inferred]
<details>
<summary>Full Execution Plan (Click to expand)</summary>
[PRESERVE COMPLETE PLAN VERBATIM - DO NOT SUMMARIZE]
- ALL phases, tasks, subtasks
- ALL file paths (absolute)
- ALL dependencies and prerequisites
- ALL acceptance criteria
- ALL status markers ([x] done, [ ] pending)
- ALL notes and context
Example:
## Phase 1: Setup
- [x] Initialize project structure
- Created D:\Claude_dms3\src\core\index.ts
- Added dependencies: lodash, zod
- [ ] Configure TypeScript
- Update tsconfig.json for strict mode
## Phase 2: Implementation
- [ ] Implement core API
- Target: D:\Claude_dms3\src\api\handler.ts
- Dependencies: Phase 1 complete
- Acceptance: All tests pass
</details>
## Working Files (Modified)
[Absolute paths to actively modified files]
- D:\Claude_dms3\src\file1.ts (role: main implementation)
- D:\Claude_dms3\tests\file1.test.ts (role: unit tests)
## Reference Files (Read-Only)
[Absolute paths to context files - NOT modified but essential for understanding]
- D:\Claude_dms3\.claude\CLAUDE.md (role: project instructions)
- D:\Claude_dms3\src\types\index.ts (role: type definitions)
- D:\Claude_dms3\package.json (role: dependencies)
## Last Action
[Last significant action and its result/status]
## Decisions
- [Decision]: [Reasoning]
- [Decision]: [Reasoning]
## Constraints
- [User-specified limitation or preference]
## Dependencies
- [Added/changed packages or environment requirements]
## Known Issues
- [Deferred bug or edge case]
## Changes Made
- [Completed modification]
## Pending
- [Next step] or (none)
## Notes
[Unstructured thoughts, hypotheses, debugging trails]
4. Field Definitions
| Field | Purpose | Recovery Value |
|---|---|---|
| Session ID | Workflow session identifier (WFS-*) | Links memory to specific stateful task execution |
| Project Root | Absolute path to project directory | Enables correct path resolution in new sessions |
| Objective | Ultimate goal of the session | Prevents losing track of broader feature |
| Execution Plan | Complete plan from any source (verbatim) | Preserves full planning context, avoids re-planning |
| Working Files | Actively modified files (absolute paths) | Immediately identifies where work was happening |
| Reference Files | Read-only context files (absolute paths) | Eliminates re-exploration for critical context |
| Last Action | Final tool output/status | Immediate state awareness (success/failure) |
| Decisions | Architectural choices + reasoning | Prevents re-litigating settled decisions |
| Constraints | User-imposed limitations | Maintains personalized coding style |
| Dependencies | Package/environment changes | Prevents missing dependency errors |
| Known Issues | Deferred bugs/edge cases | Ensures issues aren't forgotten |
| Changes Made | Completed modifications | Clear record of what was done |
| Pending | Next steps | Immediate action items |
| Notes | Hypotheses, debugging trails | Preserves "train of thought" |
5. Execution Flow
Step 1: Analyze Current Session
Extract the following from conversation history:
const sessionAnalysis = {
sessionId: "", // WFS-* if workflow session active, null otherwise
projectRoot: "", // Absolute path: D:\Claude_dms3
objective: "", // High-level goal (1-2 sentences)
executionPlan: {
source: "workflow" | "todo" | "user-stated" | "inferred",
content: "" // Full plan content - ALWAYS preserve COMPLETE and DETAILED form
},
workingFiles: [], // {absolutePath, role} - modified files
referenceFiles: [], // {absolutePath, role} - read-only context files
lastAction: "", // Last significant action + result
decisions: [], // {decision, reasoning}
constraints: [], // User-specified limitations
dependencies: [], // Added/changed packages
knownIssues: [], // Deferred bugs
changesMade: [], // Completed modifications
pending: [], // Next steps
notes: "" // Unstructured thoughts
}
Step 2: Generate Structured Text
// Helper: Generate execution plan section
const generateExecutionPlan = (plan) => {
const sourceLabels = {
'workflow': 'workflow (IMPL_PLAN.md)',
'todo': 'todo (TodoWrite)',
'user-stated': 'user-stated',
'inferred': 'inferred'
};
// CRITICAL: Preserve complete plan content verbatim - DO NOT summarize
return `### Source: ${sourceLabels[plan.source] || plan.source}
<details>
<summary>Full Execution Plan (Click to expand)</summary>
${plan.content}
</details>`;
};
const structuredText = `## Session ID
${sessionAnalysis.sessionId || '(none)'}
## Project Root
${sessionAnalysis.projectRoot}
## Objective
${sessionAnalysis.objective}
## Execution Plan
${generateExecutionPlan(sessionAnalysis.executionPlan)}
## Working Files (Modified)
${sessionAnalysis.workingFiles.map(f => `- ${f.absolutePath} (role: ${f.role})`).join('\n') || '(none)'}
## Reference Files (Read-Only)
${sessionAnalysis.referenceFiles.map(f => `- ${f.absolutePath} (role: ${f.role})`).join('\n') || '(none)'}
## Last Action
${sessionAnalysis.lastAction}
## Decisions
${sessionAnalysis.decisions.map(d => `- ${d.decision}: ${d.reasoning}`).join('\n') || '(none)'}
## Constraints
${sessionAnalysis.constraints.map(c => `- ${c}`).join('\n') || '(none)'}
## Dependencies
${sessionAnalysis.dependencies.map(d => `- ${d}`).join('\n') || '(none)'}
## Known Issues
${sessionAnalysis.knownIssues.map(i => `- ${i}`).join('\n') || '(none)'}
## Changes Made
${sessionAnalysis.changesMade.map(c => `- ${c}`).join('\n') || '(none)'}
## Pending
${sessionAnalysis.pending.length > 0
? sessionAnalysis.pending.map(p => `- ${p}`).join('\n')
: '(none)'}
## Notes
${sessionAnalysis.notes || '(none)'}`
Step 3: Import to Core Memory via MCP
Use the MCP core_memory tool to save the structured text:
mcp__ccw-tools__core_memory({
operation: "import",
text: structuredText
})
Or via CLI (pipe structured text to import):
# Write structured text to temp file, then import
echo "$structuredText" | ccw core-memory import
# Or from a file
ccw core-memory import --file /path/to/session-memory.md
Response Format:
{
"operation": "import",
"id": "CMEM-YYYYMMDD-HHMMSS",
"message": "Created memory: CMEM-YYYYMMDD-HHMMSS"
}
Step 4: Report Recovery ID
After successful import, clearly display the Recovery ID to the user:
╔════════════════════════════════════════════════════════════════════════════╗
║ ✓ Session Memory Saved ║
║ ║
║ Recovery ID: CMEM-YYYYMMDD-HHMMSS ║
║ ║
║ To restore: "Please import memory <ID>" ║
║ (MCP: core_memory export | CLI: ccw core-memory export --id <ID>) ║
╚════════════════════════════════════════════════════════════════════════════╝
6. Quality Checklist
Before generating:
- Session ID captured if workflow session active (WFS-*)
- Project Root is absolute path (e.g., D:\Claude_dms3)
- Objective clearly states the "North Star" goal
- Execution Plan: COMPLETE plan preserved VERBATIM (no summarization)
- Plan Source: Clearly identified (workflow | todo | user-stated | inferred)
- Plan Details: ALL phases, tasks, file paths, dependencies, status markers included
- All file paths are ABSOLUTE (not relative)
- Working Files: 3-8 modified files with roles
- Reference Files: Key context files (CLAUDE.md, types, configs)
- Last Action captures final state (success/failure)
- Decisions include reasoning, not just choices
- Known Issues separates deferred from forgotten bugs
- Notes preserve debugging hypotheses if any
7. Path Resolution Rules
Project Root Detection
- Check current working directory from environment
- Look for project markers:
.git/,package.json,.claude/ - Use the topmost directory containing these markers
Absolute Path Conversion
// Convert relative to absolute
const toAbsolutePath = (relativePath, projectRoot) => {
if (path.isAbsolute(relativePath)) return relativePath;
return path.join(projectRoot, relativePath);
};
// Example: "src/api/auth.ts" → "D:\Claude_dms3\src\api\auth.ts"
Reference File Categories
| Category | Examples | Priority |
|---|---|---|
| Project Config | ` |
Content truncated.
When not to use it
- →Large media file storage
- →Long-term data archival beyond a single project
Prerequisites
Limitations
- →Limited to active memory capacity
- →Lacks complex relational history between separate sessions
How it compares
It transforms volatile short-term AI context into a machine-readable summary optimized for prompt-based re-loading.
Compared to similar skills
compact side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| compact (this skill) | 4 | 6mo | Review | Beginner |
| planning-with-files | 233 | 6mo | Review | Intermediate |
| archon | 9 | 9mo | Review | Intermediate |
| task-management | 16 | 5mo | No flags | Beginner |
Try saying
Example prompts that trigger this skill in your AI assistant.
More by catlog22
View all by catlog22 →You might also like
planning-with-files
davila7
Implements Manus-style file-based planning for complex tasks. Creates task_plan.md, findings.md, and progress.md. Use when starting complex multi-step tasks, research projects, or any task requiring >5 tool calls.
archon
coleam00
Interactive Archon integration for knowledge base and project management via REST API. On first use, asks for Archon host URL. Use when searching documentation, managing projects/tasks, or querying indexed knowledge. Provides RAG-powered semantic search, website crawling, document upload, hierarchical project/task management, and document versioning. Always try Archon first for external documentation and knowledge retrieval before using other sources.
task-management
anthropics
Simple task management using a shared TASKS.md file. Reference this when the user asks about their tasks, wants to add/complete tasks, or needs help tracking commitments.
agent-orchestrator-task
ruvnet
Agent skill for orchestrator-task - invoke with $agent-orchestrator-task
daily
ballred
Create daily notes and manage morning, midday, and evening routines. Structure daily planning, task review, and end-of-day reflection. Use for daily productivity routines or when asked to create today's note.
markdown-task-manager
ioniks
Use when managing tasks, the system is a Kanban task manager based on local Markdown files (`kanban.md` and `archive.md`). It follows a strict format compatible with the task-manager.html web application.