Skip to main content

workflow-housekeep

Apply repository maintenance: sync README, remove confirmed dead artifacts, and safely update dependencies. Use when "housekeep", "clean up repo", "update README", or "update dependencies". Unused files/exports/deps → plan-dead-code. Parked work → housekeep-backlog. Design drift → housekeep-design.

Source facts

Repository
kensaurus/cursor-kenji
Last source activity
September 10, 2026 at 03:34
Detected SKILL.md language
English
Stars
9
Forks
0

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

File Explorer
2 files

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
workflow-housekeep
description
Apply repository maintenance: sync README, remove confirmed dead artifacts, and safely update dependencies. Use when "housekeep", "clean up repo", "update README", or "update dependencies". Unused files/exports/deps → plan-dead-code. Parked work → housekeep-backlog. Design drift → housekeep-design.
license
MIT
# Repo Housekeep **Degree of freedom: MIXED.** What is dead vs still referenced `[HIGH freedom]`; delete-only-after-proof and dependency bump commands `[LOW freedom — run exactly]`. ## How to reason 1. **Observe** — README drift, unused files, outdated deps 2. **Interpret** — unused by search, or only unused in this package? 3. **Classify** — sync docs / delete / bump / leave 4. **Severity** — deleting a file still imported is a break ## Worked example > **Observe:** `OldButton.tsx` has zero imports; README still lists a removed script; patch bump available. > **Interpret:** file is dead; README is stale; bump is safe if tests pass. > **Classify:** delete the file after `rg` + import check; sync README; bump patch. > **Do not** delete `housekeep-design` token work — that is another skill. ## Self-critique before reporting - **Proven unused** — imports, refs, config, git history checked - **README matches** — scripts and paths in the README actually exist - **Tests after bump** — dependency update was not a silent break - **Right owner** — unused files/exports/deps → `plan-dead-code`; parked work → `housekeep-backlog`; token SSOT → `housekeep-design`; CI gates → `housekeep-gates` Full-cycle repository maintenance: documentation sync, dead file removal, dependency updates, and research-driven cleanup. Works with **any project** — auto-detects tech stack, package manager, and structure. ## Critical Rules [LOW freedom — do not skip] > **NEVER delete files without confirming they are truly unused.** > Check imports, references, git blame, and config entries before removing anything. > **NEVER blindly upgrade a major version.** > Major bumps may have breaking changes. Research the changelog before upgrading. > **README must reflect reality, not aspiration.** > Only document what currently exists in the codebase. > **Commit each phase separately.** > Documentation, cleanup, and dependency updates are independent concerns. > **Parked-work register is a different skill.** > Unfinished plans, TODOs, skipped tests → `housekeep-backlog`. This skill > does README / dead files / deps. A housekeep pass may *schedule* a > backlog regeneration; it does not invent the register. > **Module-graph dead code is a different skill.** > This skill deletes *artifacts* — logs, `.bak` files, build output, > committed screenshots — things dead by inspection. **Unused source > files, exports, types, and dependencies belong to `plan-dead-code` > (audit) and `housekeep-dead-code` (delete + ratchet)**, because proving > those dead needs a configured module graph, not a `rg` pass. --- ## Step 0: Auto-Detect Project Configuration [LOW freedom — run exactly] ### 0a. Detect Tech Stack Read the dependency manifest to determine the ecosystem: | File | Ecosystem | Package Manager | |------|-----------|-----------------| | `package.json` + `package-lock.json` | Node.js | npm | | `package.json` + `pnpm-lock.yaml` | Node.js | pnpm | | `package.json` + `yarn.lock` | Node.js | yarn | | `package.json` + `bun.lockb` | Node.js | bun | | `requirements.txt` / `pyproject.toml` | Python | pip / poetry / uv | | `Cargo.toml` | Rust | cargo | | `go.mod` | Go | go mod | | `Gemfile` | Ruby | bundler | | `build.gradle` / `pom.xml` | Java/Kotlin | gradle / maven | | `pubspec.yaml` | Dart/Flutter | pub | | `composer.json` | PHP | composer | ### 0b. Detect Project Structure ``` Glob("README*") Glob("**/*readme*") Glob("**/CHANGELOG*") Glob("**/.env*") Glob("**/*.log") Glob("**/dist/**") Glob("**/build/**") Glob("**/*.screenshot*") Glob("**/*.png", in test/debug/temp folders) ``` ### 0c. Record Configuration ``` ECOSYSTEM: [Node.js / Python / Rust / Go / etc.] PKG_MANAGER: [npm / pnpm / yarn / bun / pip / poetry / cargo / etc.] MANIFEST: [package.json / requirements.txt / Cargo.toml / etc.] LOCKFILE: [package-lock.json / yarn.lock / etc.] README_PATH: [README.md or detected path] SRC_DIR: [src/ / app/ / lib/ / etc.] BUILD_DIR: [dist/ / build/ / .next/ / out/ / etc.] FRAMEWORK: [Next.js / React / Vue / Django / FastAPI / etc.] ``` --- ## Phase 1: README Sync [HIGH freedom] Update the root README (and any folder-level READMEs) to reflect the **current** architecture. ### 1a. Discover Current Architecture Read these files to understand what actually exists: ``` - Package manifest (package.json, etc.) — dependencies, scripts, name, description - Entry point (src/index.ts, app/layout.tsx, main.py, etc.) - Config files (next.config.*, vite.config.*, tsconfig.json, etc.) - CI/CD (.github/workflows/*, vercel.json, netlify.toml, Dockerfile, etc.) - Environment files (.env.example, .env.local) — list expected env vars - Folder structure (top-level ls, then 2-level deep ls of src/) ``` ### 1b. Cross-Check README Against Reality For each section in the existing README, verify: | README Section | Verify Against | |---------------|----------------| | Project description | `package.json` name/description, actual functionality | | Tech stack | Installed dependencies in manifest | | Getting started / Setup | Actual scripts in `package.json`, required env vars | | Folder structure | Real directory listing | | API endpoints | Route files, API handlers | | Features list | Actual implemented features (not planned/removed) | | Environment variables | `.env.example` or config files | | Deployment | CI/CD config, hosting config | | Contributing | Linter config, test setup, pre-commit hooks | ### 1c. Rewrite Stale Sections For each discrepancy found: - **Missing feature in README**: Add it with accurate description - **Removed feature still in README**: Delete the section - **Outdated instructions**: Update to match current setup - **Missing sections**: Add standard sections (see template below) ### 1d. README Template (adapt to project) Use the README skeleton in [`references/templates.md`](references/templates.md) and adapt each section to the detected stack. ### 1e. Folder READMEs Check for any `*_readme.md` or `README.md` files in subdirectories. Update them if the folder contents have changed. --- ## Phase 2: Dead File Cleanup [LOW freedom — run exactly] Remove files that serve no purpose in the repository. ### 2a. Scan for Candidates Search for these categories of dead files: **Logs and debug output:** ``` Glob("**/*.log") Glob("**/npm-debug.log*") Glob("**/yarn-debug.log*") Glob("**/yarn-error.log*") Glob("**/debug.log") Glob("**/.pnpm-debug.log*") ``` **Screenshots and temp images:** ``` Glob("**/screenshot*") Glob("**/Screenshot*") Glob("**/*.png", in root or non-asset directories) Glob("**/*.jpg", in root or non-asset directories) Glob("**/temp/**") Glob("**/tmp/**") ``` **Build artifacts committed by mistake:** ``` Glob("**/dist/**") Glob("**/build/**") Glob("**/.next/**") Glob("**/node_modules/**") Glob("**/__pycache__/**") Glob("**/*.pyc") Glob("**/target/debug/**") (Rust) ``` **Deprecated / dead code:** ``` Glob("**/*.bak") Glob("**/*.old") Glob("**/*.orig") Glob("**/*deprecated*") Glob("**/*DEPRECATED*") Glob("**/*.backup") Glob("**/*_old.*") Glob("**/*_backup.*") Glob("**/*.tmp") ``` **IDE and OS artifacts:** ``` Glob("**/.DS_Store") Glob("**/Thumbs.db") Glob("**/*.swp") Glob("**/*.swo") ``` **Stale config files:** ``` Glob("**/.env.local") (should not be committed) Glob("**/.env.production") (check if contains secrets) ``` ### 2b. Validate Before Deleting For each candidate file: 1. **Check git blame**: When was it last modified? By whom? 2. **Check imports/references**: Is any code importing or referencing this file? ``` Grep for the filename across the codebase ``` 3. **Check .gitignore**: Should this file type already be ignored? 4. **Check CI/CD**: Does any workflow reference this file? **Classification:** | Category | Action | |----------|--------| | Log files | Delete + add to `.gitignore` | | Screenshots in non-asset dirs | Delete (or move to docs/ if referenced) | | Build artifacts | Delete + verify in `.gitignore` | | `.bak` / `.old` / `.orig` files | Delete (git has history) | | IDE/OS artifacts | Delete + add to `.gitignore` | | Secret files committed | Delete + rotate secrets + add to `.gitignore` | | Deprecated code files | Verify unused → delete | ### 2c. Update .gitignore After cleanup, ensure `.gitignore` prevents reoccurrence: ``` Check existing .gitignore covers: - logs/ *.log - build output dist/ build/ .next/ out/ - env files .env.local .env.production - OS files .DS_Store Thumbs.db - IDE files .idea/ .vscode/ (unless project uses shared settings) - temp files *.tmp *.bak *.swp - dependencies node_modules/ __pycache__/ target/ ``` ### 2d. Dead Exports / Unused Code → hand off **Do not run a dead-code sweep from this skill.** Unused source files, exports, types, and dependencies are a module-graph question: on a first run most findings are misconfiguration, and deleting them is how a cleanup becomes an outage. | Stack | Owner | |-------|-------| | TypeScript / JavaScript | `plan-dead-code` → `housekeep-dead-code` (`/deadcode`) | | Python | `vulture` — same discipline: baseline and review before deleting | `ts-prune` is in maintenance mode; its author points to Knip. Do not add it to a project. What this skill still owns here: noting that the handoff is needed, and scheduling it. Record the finding and move on. --- ## Phase 3: Dependency Updates [HIGH freedom] ### 3a. Audit Current State **Node.js:** ```bash npm outdated # see what's behind npm audit # check vulnerabilities ``` **Python:** ```bash pip list --outdated pip-audit # or safety check ``` **Rust:** ```bash cargo outdated cargo audit ``` **Go:** ```bash go list -m -u all govulncheck ./... ``` ### 3b. Classify Updates | Update Type | Risk | Action | |-------------|------|--------| | Patch (1.2.3 → 1.2.4) | Low | Auto-update | | Minor (1.2.3 → 1.3.0) | Low-Medium | Auto-update, verify build | | Major (1.2.3 → 2.0.0) | High | Research changelog first |
View on GitHub
This SKILL.md is very large, so SkillsMP previews the first section here. View on GitHub