Clean up .aiwg/working/ by promoting, archiving, or deleting temporary files
Intelligently cleans up the `.aiwg/working/` directory by promoting finalized content to permanent locations, archiving historical versions, and deleting temporary files. Use this after multi-agent sessions to maintain a clean workspace and preserve valuable work.
/plugin marketplace add jmagly/ai-writing-guide/plugin install jmagly-utils-plugins-utils@jmagly/ai-writing-guideClean up the .aiwg/working/ directory by intelligently handling temporary files. Promotes valuable content to the main documentation structure, archives content worth preserving, and deletes truly temporary files.
| Flag | Description |
|---|---|
project-directory | Project root (default: .) |
--promote-all | Promote all promotable files without prompting |
--archive-all | Archive all archivable files without prompting |
--delete-all | Delete all deletable files without prompting |
--dry-run | Preview changes without modifying files |
--interactive | Prompt for each file decision |
--force | Skip confirmation prompts |
The .aiwg/working/ directory is designated for:
It is NOT a permanent storage location. Files here should eventually be:
.aiwg/ subdirectory as finalized docs.aiwg/archive/ for historical referenceInventory all files in .aiwg/working/:
# List all files with metadata
find .aiwg/working -type f -exec stat -c '%Y %s %n' {} \; | sort -rn
# Count by subdirectory
find .aiwg/working -mindepth 1 -maxdepth 1 -type d | while read dir; do
echo "$(basename "$dir"): $(find "$dir" -type f | wc -l) files"
done
Report:
Working Directory Scan
======================
Total files: 23
Total size: 145 KB
By Category:
architecture/ 8 files (SAD drafts, reviews)
requirements/ 5 files (UC iterations)
testing/ 4 files (test plan drafts)
scratch/ 6 files (temporary notes)
Age Distribution:
< 1 day: 4 files
1-7 days: 8 files
> 7 days: 11 files
Analyze each file to determine appropriate action:
Classification Criteria:
| Classification | Criteria | Action |
|---|---|---|
| PROMOTE | Final/reviewed version, high quality, no TODOs | Move to main .aiwg/ structure |
| ARCHIVE | Useful history, superseded, completed work | Move to .aiwg/archive/ |
| DELETE | Scratch notes, duplicates, empty, truly temp | Remove |
| REVIEW | Unclear status, needs human decision | Flag for review |
File Analysis Heuristics:
def classify_file(filepath):
content = read_file(filepath)
filename = basename(filepath)
# Check for finalization markers
if "FINAL" in filename or "APPROVED" in filename:
return "PROMOTE"
if "BASELINED" in content or "Status: Approved" in content:
return "PROMOTE"
# Check for draft/WIP markers
if "DRAFT" in filename or "WIP" in filename:
if file_age_days(filepath) > 14:
return "ARCHIVE" # Old draft, archive for reference
return "REVIEW" # Recent draft, needs decision
# Check for review files
if "review" in filename.lower():
if "synthesized" in get_parent_files(filepath):
return "DELETE" # Reviews already synthesized
return "ARCHIVE" # Keep reviews for audit
# Check for scratch/temp patterns
if "scratch" in filepath or "temp" in filepath:
if file_age_days(filepath) > 3:
return "DELETE"
return "REVIEW"
# Check for versioned files
if re.match(r'v\d+\.\d+', filename):
if not is_latest_version(filepath):
return "ARCHIVE"
return "PROMOTE" # Latest version should be promoted
# Default: needs review
return "REVIEW"
Report:
File Classification
===================
PROMOTE (4 files):
.aiwg/working/architecture/sad/v0.3-final.md
→ .aiwg/architecture/software-architecture-doc.md
Reason: Final version, approved status
.aiwg/working/requirements/uc-auth-approved.md
→ .aiwg/requirements/use-cases/uc-auth.md
Reason: Approved use case
.aiwg/working/testing/test-plan-baselined.md
→ .aiwg/testing/master-test-plan.md
Reason: Baselined marker found
.aiwg/working/architecture/adr-001-final.md
→ .aiwg/architecture/decisions/adr-001.md
Reason: Final ADR
ARCHIVE (6 files):
.aiwg/working/architecture/sad/v0.1-draft.md
→ .aiwg/archive/architecture/sad-v0.1-20251209.md
Reason: Superseded by v0.3
.aiwg/working/architecture/sad/reviews/security-review.md
→ .aiwg/archive/reviews/sad-security-review-20251209.md
Reason: Review already synthesized
.aiwg/working/architecture/sad/reviews/test-review.md
→ .aiwg/archive/reviews/sad-test-review-20251209.md
Reason: Review already synthesized
... (3 more)
DELETE (8 files):
.aiwg/working/scratch/notes.md
Reason: Scratch file, 12 days old
.aiwg/working/scratch/temp-analysis.md
Reason: Temp file prefix, empty content
.aiwg/working/architecture/sad/v0.2-draft.md
Reason: Intermediate draft, v0.3 exists
... (5 more)
REVIEW (5 files):
.aiwg/working/requirements/nfr-draft.md
Reason: Recent draft (3 days), unclear status
.aiwg/working/testing/integration-tests-wip.md
Reason: WIP marker, may be active work
... (3 more)
Map working files to their correct permanent locations:
Promotion Mapping
=================
.aiwg/working/architecture/ → .aiwg/architecture/
sad/*.md → software-architecture-doc.md
adr-*.md → decisions/adr-*.md
diagrams/ → diagrams/
.aiwg/working/requirements/ → .aiwg/requirements/
uc-*.md → use-cases/
nfr-*.md → nfrs/
user-story-*.md → user-stories/
.aiwg/working/testing/ → .aiwg/testing/
test-plan-*.md → master-test-plan.md
test-cases-*.md → test-cases/
.aiwg/working/security/ → .aiwg/security/
threat-model-*.md → threat-model.md
security-review-*.md → security-assessments/
.aiwg/working/risks/ → .aiwg/risks/
spike-*.md → spikes/
risk-assessment-*.md → risk-register.md
If --dry-run: Display plan and exit.
If --interactive: Prompt for each file:
File: .aiwg/working/architecture/sad/v0.3-final.md
Classification: PROMOTE
Target: .aiwg/architecture/software-architecture-doc.md
Action? [p]romote / [a]rchive / [d]elete / [s]kip: _
# Create target directory
mkdir -p .aiwg/architecture/
# Move file to permanent location
mv .aiwg/working/architecture/sad/v0.3-final.md \
.aiwg/architecture/software-architecture-doc.md
# Remove "DRAFT" or "WIP" markers from content
sed -i 's/Status: Draft/Status: Baselined/' \
.aiwg/architecture/software-architecture-doc.md
# Create archive with timestamp
mkdir -p .aiwg/archive/architecture/
# Move with date suffix
mv .aiwg/working/architecture/sad/v0.1-draft.md \
.aiwg/archive/architecture/sad-v0.1-20251209.md
# Update archive index
echo "| 2025-12-09 | sad-v0.1 | Superseded by v0.3 | architecture/ |" \
>> .aiwg/archive/INDEX.md
# Remove files
rm .aiwg/working/scratch/notes.md
rm .aiwg/working/scratch/temp-analysis.md
# Clean up empty directories
find .aiwg/working -type d -empty -delete
For files marked REVIEW, either:
If --interactive:
Present each file for decision.
If --promote-all / --archive-all / --delete-all:
Apply bulk action to review items.
Otherwise: List review items and exit:
Files Requiring Review
======================
The following files need manual decision:
1. .aiwg/working/requirements/nfr-draft.md
Age: 3 days | Size: 2.4 KB
Context: Active NFR development
2. .aiwg/working/testing/integration-tests-wip.md
Age: 5 days | Size: 1.8 KB
Context: WIP test cases
Run with --interactive to decide each file.
Working Directory Prune Complete
================================
Actions Taken:
Promoted: 4 files → permanent .aiwg/ locations
Archived: 6 files → .aiwg/archive/
Deleted: 8 files (recovered 45 KB)
Skipped: 5 files (require review)
Promotion Summary:
.aiwg/architecture/software-architecture-doc.md (NEW)
.aiwg/requirements/use-cases/uc-auth.md (NEW)
.aiwg/testing/master-test-plan.md (NEW)
.aiwg/architecture/decisions/adr-001.md (NEW)
Working Directory Status:
Before: 23 files (145 KB)
After: 5 files (12 KB)
Next Steps:
- Review 5 remaining files with --interactive
- Run /workspace-realign to verify doc alignment
# Preview what would happen
/workspace-prune-working --dry-run
# Interactive mode - decide each file
/workspace-prune-working --interactive
# Aggressive cleanup - promote finals, archive rest, delete temp
/workspace-prune-working --promote-all --archive-all --delete-all
# Just promote finalized docs
/workspace-prune-working --promote-all
# Just clean up scratch files
/workspace-prune-working --delete-all
| Condition | Action |
|---|---|
| No .aiwg/working/ | Info: "Working directory is empty. Nothing to prune." |
| Promotion target exists | Backup existing, then overwrite with warning |
| Permission denied | Skip file, report error |
| Active agent work | Detect recent modification (<1hr), warn before action |
/workspace-realign - Sync all .aiwg/ docs with project state/workspace-reset - Wipe .aiwg/ and start fresh/project-status - View current project state