Claude-skill-registry archive-work
Archive completed scratchpads and session logs to project history. Invoke when user says "archive this work", "clean up scratchpad", "archive scratchpad", or after PR is merged.
git clone https://github.com/majiayu000/claude-skill-registry
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/archive-work" ~/.claude/skills/majiayu000-claude-skill-registry-archive-work && rm -rf "$T"
skills/data/archive-work/SKILL.mdArchive Work Skill
Purpose
Archive completed scratchpads and development artifacts to maintain clean project roots while preserving work history for future reference. This skill organizes completed work into a structured archive.
Natural Language Triggers
This skill activates when the user says things like:
- "Archive this work"
- "Clean up the scratchpad"
- "Archive scratchpad"
- "Move scratchpad to archive"
- "We're done, archive everything"
- After PR merge: "PR merged, let's clean up"
Workflow Execution
Phase 1: Detect Artifacts (Parallel)
Execute these searches in parallel for faster detection:
-
Find Scratchpads:
in project rootGlob: SCRATCHPAD_*.md- Identify issue numbers from filenames
-
Find Session Logs:
in project rootGlob: SESSION_LOG_*.md- These are created by the PreCompact hook before auto-compaction
- Associate with scratchpad (same issue context)
-
Find Other Related Files:
- Related temporary files
- Claude Code conversation exports
-
Check Git Status:
- Current branch for context
- Recent commits for PR detection
After parallel detection, verify completion:
- Check if scratchpad tasks are all complete
- Check if PR was created/merged
- Warn if work appears incomplete
Phase 2: Determine Archive Location
Default Structure:
docs/dev/cc-archive/ └── {YYYYMMDDHHMM}-{issue-number}-{brief-description}/ ├── SCRATCHPAD_{issue_number}.md ├── session-log.md (if exists) └── README.md (summary)
Timestamp Prefix: Archives use
YYYYMMDDHHMM prefix for chronological ordering.
This ensures archives sort by completion date, not ticket number.
Check Project Conventions:
- Read CLAUDE.md for custom archive location
- Check if
existsdocs/dev/cc-archive/ - Create directory structure if needed
Phase 3: Prepare Archive
-
Generate Timestamp and Directory Name:
# Generate timestamp prefix TIMESTAMP=$(date +%Y%m%d%H%M) ARCHIVE_DIR="${TIMESTAMP}-{issue-number}-{description}" -
Create Archive Directory:
mkdir -p docs/dev/cc-archive/${ARCHIVE_DIR} -
Generate Archive Summary: Create
in archive folder:README.md# Issue #{issue_number} - {title} **Archived:** {date} **PR:** #{pr_number} (if applicable) **Status:** {Completed/Merged/Abandoned} ## Summary {Brief description of what was accomplished} ## Key Decisions {Extract from scratchpad Decisions Made section} ## Files Changed {List of files that were modified} ## Lessons Learned {Any notable insights from Work Log} -
Move Files (using git mv for proper tracking):
git mv SCRATCHPAD_{issue_number}.md docs/dev/cc-archive/${ARCHIVE_DIR}/Important: Use
instead ofgit mv
to ensure both the addition to archive AND the removal from project root are tracked in the same commit.mv
Phase 4: Confirm with User
AskUserQuestion: question: "Ready to archive this work?" header: "Archive" options: - "Yes, archive and commit" description: "Move files to archive and create commit" - "Archive without commit" description: "Move files but don't commit yet" - "Show me what will be archived" description: "Preview the archive operation" - "Cancel" description: "Keep scratchpad in current location"
Phase 5: Execute Archive
-
Move Files (with git tracking):
# Use git mv to track both addition and removal in same commit git mv SCRATCHPAD_{issue_number}.md docs/dev/cc-archive/${ARCHIVE_DIR}/ # Move session logs (created by PreCompact hook) # These are untracked, so use mv then git add for log in SESSION_LOG_*.md; do if [ -f "$log" ]; then mv "$log" docs/dev/cc-archive/${ARCHIVE_DIR}/ fi done git add docs/dev/cc-archive/${ARCHIVE_DIR}/SESSION_LOG_*.md 2>/dev/null || true- Create summary README in archive directory
- Stage the new README:
git add docs/dev/cc-archive/${ARCHIVE_DIR}/README.md
-
Commit Archive: If user opted to commit:
Skill: commit-changes # Commit message will be: # 📚🗃️ chore(docs): Archive work for issue #{issue_number} # # Completed work archived to docs/dev/cc-archive/ # PR: #{pr_number}The commit will include:
- Removal of SCRATCHPAD from project root (via git mv)
- Addition of SCRATCHPAD in archive directory
- Session logs (SESSION_LOG_*.md) if present
- New README.md summary
Phase 6: Report Result
✓ Work archived successfully! 📁 Archive location: docs/dev/cc-archive/{YYYYMMDDHHMM}-{issue-number}-{description}/ 📄 Files archived: - SCRATCHPAD_{issue_number}.md - SESSION_LOG_*.md (if any existed) - README.md (summary generated) 🗑️ Cleaned up: - Removed scratchpad from project root (tracked via git mv) - Removed session logs from project root {If committed} 📝 Committed: {commit hash} - Added: archive directory with scratchpad, session logs, README - Removed: SCRATCHPAD_{issue_number}.md from project root - Removed: SESSION_LOG_*.md from project root
Archive Options
Option 1: Full Archive (Default)
- Move scratchpad to archive
- Generate summary README
- Commit the archive
Option 2: Delete Only
If user prefers not to keep history:
AskUserQuestion: question: "How to handle the scratchpad?" options: - "Archive (keep history)" - "Delete (no history)" - "Keep in place"
Option 3: Custom Location
Allow user to specify different archive location:
AskUserQuestion: question: "Archive to default location?" options: - "Yes, use docs/dev/cc-archive/" - "Specify custom location"
Error Handling
No Scratchpad Found
ℹ️ No scratchpad found to archive. Looking for: SCRATCHPAD_*.md in project root
Work Incomplete
⚠️ Scratchpad has incomplete tasks: - {unchecked task 1} - {unchecked task 2} Archive anyway? 1. Yes, archive incomplete work 2. No, continue working first
Archive Directory Exists
⚠️ Archive already exists for issue #{number} Options: 1. Overwrite existing archive 2. Create numbered version (archive-2/) 3. Cancel
No PR Created
ℹ️ No PR found for this work. Archive anyway? 1. Yes, archive without PR reference 2. No, create PR first
Integration with Other Skills
Invoked by:
skill - After completing all tasksdo-work- User directly after PR is merged
Invokes:
skill - To commit archivecommit-changes
Reads from:
- Scratchpad - Content to archive
- Git history - PR information
Archive Structure Best Practices
Recommended Directory Layout
docs/ └── dev/ └── cc-archive/ ├── 202512281430-42-add-authentication/ │ ├── SCRATCHPAD_42.md │ └── README.md ├── 202512281545-43-fix-login-bug/ │ ├── SCRATCHPAD_43.md │ ├── SESSION_LOG_1.md │ └── README.md └── 202512290900-44-refactor-api/ ├── SCRATCHPAD_44.md ├── SESSION_LOG_1.md ├── SESSION_LOG_2.md └── README.md
Archive Naming Convention
{YYYYMMDDHHMM}-{issue-number}-{slugified-description}/
Format breakdown:
- Timestamp when archived (enables chronological sorting)YYYYMMDDHHMM
- GitHub issue number for reference{issue-number}
- Brief description from issue title{slugified-description}
Examples:
202512281430-42-add-user-authentication/202512290915-123-fix-payment-bug/202512271000-7-initial-project-setup/
Why timestamp prefix?
- Archives sort chronologically regardless of ticket number order
- Easy to scan for recent work
- Preserves actual completion order
Best Practices
✅ DO:
- Archive after PR is merged
- Include summary README
- Preserve decision history
- Use consistent archive location
- Commit archives to repo
- Use
to move scratchpads (tracks removal properly)git mv - Use timestamp prefix for chronological ordering
❌ DON'T:
- Archive incomplete work without noting it
- Delete without archiving (lose history)
- Mix archives from different projects
- Skip the summary README
- Leave scratchpads in project root long-term
- Use plain
for tracked files (leaves unstaged deletion)mv
Version: 1.3.0 Last Updated: 2025-12-31 Maintained By: Escapement Changelog:
- v1.3.0: Added parallel execution for artifact detection
- v1.2.0: Added SESSION_LOG_*.md detection and archiving (from PreCompact hook)
- v1.1.0: Added timestamp prefix for chronological sorting; use git mv for proper tracking
- v1.0.0: Initial conversion from commands/archive-dev.md