keep-codex-fast-maintenance
Backup-first skill for inspecting, archiving, and maintaining local Codex state to keep it fast, clean, and recoverable.
What this skill does
# Keep Codex Fast
> Skill by [ara.so](https://ara.so) — Daily 2026 Skills collection.
A backup-first maintenance skill for local Codex state. When Codex starts feeling heavy after weeks of chats, terminals, logs, worktrees, and project history, this skill gives you a safe, inspectable workflow to reduce drag without losing context.
**Core rule:** Make handoffs first. Archive, don't delete. Apply changes only when you are ready.
---
## Installation
Ask Codex directly:
```text
Install the keep-codex-fast skill from https://github.com/vibeforge1111/keep-codex-fast
```
Or clone manually into your Codex skills directory:
```bash
git clone https://github.com/vibeforge1111/keep-codex-fast keep-codex-fast
```
---
## Mental Model
| Layer | Purpose |
|---|---|
| Chats | Execution context |
| Handoff docs | Memory and continuity |
| Archives | History, not deletion |
| Fresh threads | Speed |
**Never delete. Always archive.** The script moves state into archive folders and writes backup/restore artifacts before applying any change.
---
## CLI — Key Commands
All commands run from the project root. The script is read-only by default.
### 1. Inspect Only (Safe, No Writes)
```bash
python scripts/keep_codex_fast.py
```
Reports: active session size, archived session size, extended path candidates, old session candidates, worktree candidates, log size, top Node/dev processes. **Nothing is mutated.**
### 2. Detailed Report (Raw IDs, Titles, Paths)
```bash
python scripts/keep_codex_fast.py --details
```
Shows thread IDs, chat titles, file paths, and process paths. Use when you need to identify specific sessions or worktrees before archiving.
### 3. Backup Only (No Move/Archive)
```bash
python scripts/keep_codex_fast.py --backup-only
```
Creates backup artifacts of current Codex state without moving or modifying anything. Run this before any apply step as an extra safety net.
> ⚠️ Backup folders contain private local Codex metadata. Keep them on your machine. Do not publish or share without reviewing contents.
### 4. Apply Maintenance
```bash
python scripts/keep_codex_fast.py --apply --archive-older-than-days 10 --worktree-older-than-days 7
```
Archives old non-pinned sessions, moves stale worktrees, rotates large `logs_2.sqlite*` files, prunes dead/temp project references in `config.toml`, and normalizes Windows `\\?\C:\...` path mismatches in SQLite text fields.
### 5. Wait for Codex to Exit Before Applying
```bash
python scripts/keep_codex_fast.py --apply --wait-for-codex-exit
```
Holds until no Codex process is detected, then applies maintenance. Use this when you want to queue a cleanup but need Codex to close first.
---
## Workflow: Step-by-Step
### Step 1 — Inspect First
```text
Use $keep-codex-fast to inspect my Codex local state and recommend a safe maintenance plan.
```
Review the report. Note which sessions are large, which worktrees are stale, and which logs are heavy.
### Step 2 — Create Handoff Docs for Active Chats
For every active repo chat you may want to continue later, run this inside that chat:
```text
Create a comprehensive handoff document for this repo/session before I archive Codex history.
Include:
- repo/path and branch
- current goal
- what we already completed
- files touched or investigated
- commands/tests already run
- known errors, warnings, or failing checks
- open decisions
- constraints, user preferences, and do-not-touch areas
- the next 3-7 concrete steps
Also include a reactivation prompt I can paste into a fresh Codex chat so it can continue from this handoff without relying on the old chat context.
Save the handoff in a sensible repo-local place like docs/codex-handoffs/YYYY-MM-DD-topic.md unless this repo already has a better handoff location.
```
A handoff captures: what you were doing, what changed, what files matter, what commands ran, what is still broken or undecided, and what to do next.
### Step 3 — Apply Safe Maintenance
After handoffs exist for all chats you care about:
```text
Use $keep-codex-fast to apply safe Codex maintenance.
Before changing anything, confirm that important active repo chats have handoff docs or do not need them.
Then back up first, archive instead of deleting, move stale worktrees, rotate large logs, prune dead config references, and verify the result.
If Codex is currently running, do not mutate local state. Tell me to close Codex first.
```
---
## What the Script Can Change
| Target | Action |
|---|---|
| Old non-pinned active sessions | Archived, not deleted |
| Stale worktrees | Moved out of hot path |
| Large `logs_2.sqlite*` files | Rotated |
| Dead/temp project entries in `config.toml` | Pruned |
| Windows `\\?\C:\...` path mismatches in SQLite | Normalized |
---
## Recurring Maintenance Reminder
Set up a weekly or biweekly reminder that **reports only** — never auto-applies:
```text
Use $keep-codex-fast to create a recurring Codex maintenance reminder.
Schedule it weekly if I use Codex heavily, or biweekly if that seems safer.
The reminder should:
- run the keep-codex-fast report first
- never pass --apply or run mutating maintenance automatically
- never archive, move, prune, rotate, normalize, delete, or mutate local Codex state
- remind me to create comprehensive handoff docs and reactivation prompts for active repo chats before any manual apply
- summarize active session size, archived session size, extended path candidates, old session candidates, worktree candidates, log size, and top Node/dev processes
- report heavy Node/dev processes without killing them
- tell me that manual apply should only happen after I confirm handoffs exist or are not needed and Codex is closed
```
---
## Python Integration Examples
### Check What Would Be Archived (Dry Run Pattern)
```python
import subprocess
import json
result = subprocess.run(
["python", "scripts/keep_codex_fast.py", "--details"],
capture_output=True,
text=True
)
print(result.stdout)
```
### Trigger Backup Before Any Deploy/Migration Script
```python
import subprocess
import sys
def backup_codex_state():
"""Run before any operation that might affect Codex local state."""
result = subprocess.run(
["python", "scripts/keep_codex_fast.py", "--backup-only"],
capture_output=True,
text=True
)
if result.returncode != 0:
print(f"[warn] Codex backup step reported issues:\n{result.stderr}")
else:
print("[ok] Codex state backed up.")
return result.returncode
if __name__ == "__main__":
sys.exit(backup_codex_state())
```
### Apply With Age Thresholds From Environment Variables
```python
import subprocess
import os
archive_days = os.environ.get("CODEX_ARCHIVE_DAYS", "14")
worktree_days = os.environ.get("CODEX_WORKTREE_DAYS", "7")
subprocess.run([
"python", "scripts/keep_codex_fast.py",
"--apply",
"--archive-older-than-days", archive_days,
"--worktree-older-than-days", worktree_days,
"--wait-for-codex-exit",
], check=True)
```
### Wrap in a Simple Maintenance CLI
```python
#!/usr/bin/env python3
"""
maintenance.py — thin wrapper around keep_codex_fast.py for project-local use.
"""
import argparse
import subprocess
import sys
SCRIPT = "scripts/keep_codex_fast.py"
def main():
parser = argparse.ArgumentParser(description="Codex maintenance wrapper")
parser.add_argument("--inspect", action="store_true", help="Report only, no writes")
parser.add_argument("--backup", action="store_true", help="Backup only, no moves")
parser.add_argument("--apply", action="store_true", help="Apply full maintenance")
parser.add_argument("--archive-days", type=int, default=10)
parser.add_argument("--worktree-days", type=int, default=7)
parser.add_argument("--details", action="store_true")
args = parser.parse_args()
cmd = ["python", SCRIPT]
if args.details:
cmd.append("--details")
if args.backup:
cmd.append("--backup-only")
elif args.apply:Related in Code Review
gstack
IncludedFast headless browser for QA testing and site dogfooding. Navigate pages, interact with elements, verify state, diff before/after, take annotated screenshots, test responsive layouts, forms, uploads, dialogs, and capture bug evidence. Use when asked to open or test a site, verify a deployment, dogfood a user flow, or file a bug with screenshots. (gstack)
startup-due-diligence
IncludedLegal due diligence review for seed-stage and Series A startups (US, Delaware C-Corp focus). Supports both investor and founder perspectives. Capabilities include: (1) Interactive document review and issue spotting; (2) Document request list generation; (3) Cap table and SAFE/convertible note analysis; (4) Red flag identification with severity ratings; (5) Diligence report generation. TRIGGERS: due diligence, DD, startup investment, cap table review, Series A, seed round, investor diligence, legal review startup, SAFE analysis, convertible note, 409A, founder vesting.
interview-master
IncludedThis skill should be used when the user asks to "generate interview questions", "prepare for interview", "optimize resume", "conduct mock interview", "analyze git commits for resume", "generate resume from code", "review my resume", or mentions interview preparation, career assistance, or extracting project experience from git history. Provides comprehensive interview and career development guidance for both job seekers and interviewers.
fix-issue
IncludedFixes GitHub issues using parallel analysis agents for root cause investigation, code exploration, and regression detection. Reads issue context from gh CLI, searches codebase and memory for related patterns, generates a fix with tests, and links the resolution back to the issue via PR. Includes prevention analysis to avoid recurrence. Use when debugging errors, resolving regressions, fixing bugs, or triaging issues.
sf-apex
IncludedGenerates and reviews Salesforce Apex code with 150-point scoring. TRIGGER when: user writes, reviews, or fixes Apex classes, triggers, test classes, batch/queueable/schedulable jobs, or touches .cls/.trigger files. DO NOT TRIGGER when: LWC JavaScript (use sf-lwc), Flow XML (use sf-flow), SOQL-only queries (use sf-soql), or non-Salesforce code.
swift-development
IncludedComprehensive Swift development for building, testing, and deploying iOS/macOS applications. Use when Claude needs to: (1) Build Swift packages or Xcode projects from command line, (2) Run tests with XCTest or Swift Testing framework, (3) Manage iOS simulators with simctl, (4) Handle code signing, provisioning profiles, and app distribution, (5) Format or lint Swift code with SwiftFormat/SwiftLint, (6) Work with Swift Package Manager (SPM), (7) Implement Swift 6 concurrency patterns (async/await, actors, Sendable), (8) Create SwiftUI views with MVVM architecture, (9) Set up Core Data or SwiftData persistence, or any other Swift/iOS/macOS development tasks.