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.zip

Installs 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.
115 charsno explicit “when” trigger
Beginner

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

You give it
Description, tags, and context flags
You get back
Structured summary block saved to memory

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

FieldPurposeRecovery Value
Session IDWorkflow session identifier (WFS-*)Links memory to specific stateful task execution
Project RootAbsolute path to project directoryEnables correct path resolution in new sessions
ObjectiveUltimate goal of the sessionPrevents losing track of broader feature
Execution PlanComplete plan from any source (verbatim)Preserves full planning context, avoids re-planning
Working FilesActively modified files (absolute paths)Immediately identifies where work was happening
Reference FilesRead-only context files (absolute paths)Eliminates re-exploration for critical context
Last ActionFinal tool output/statusImmediate state awareness (success/failure)
DecisionsArchitectural choices + reasoningPrevents re-litigating settled decisions
ConstraintsUser-imposed limitationsMaintains personalized coding style
DependenciesPackage/environment changesPrevents missing dependency errors
Known IssuesDeferred bugs/edge casesEnsures issues aren't forgotten
Changes MadeCompleted modificationsClear record of what was done
PendingNext stepsImmediate action items
NotesHypotheses, debugging trailsPreserves "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

  1. Check current working directory from environment
  2. Look for project markers: .git/, package.json, .claude/
  3. 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

CategoryExamplesPriority
Project Config`

Content truncated.

When not to use it

  • Large media file storage
  • Long-term data archival beyond a single project

Prerequisites

MCP core_memory tool

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.

SkillInstallsUpdatedSafetyDifficulty
compact (this skill)46moReviewBeginner
planning-with-files2336moReviewIntermediate
archon99moReviewIntermediate
task-management165moNo flagsBeginner

Try saying

Example prompts that trigger this skill in your AI assistant.

Search skills

Search the agent skills registry