brainstorming
brainstorming
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or planning anything new, in software or out of it (a talk, a business, a renovation).
workflow-housekeepRepository maintenance: sync the README, remove confirmed dead artifacts, update dependencies safely. Use when "housekeep", "clean up repo", "update README", or "update dependencies". Unused exports → plan-dead-code. Parked work → housekeep-backlog.
Independent GitHub snapshot · Automated classification · Original documentation governs
Degree of freedom: MIXED. What is dead vs still referenced [HIGH freedom];
delete-only-after-proof and dependency bump commands [LOW freedom — run exactly].
Observe:
OldButton.tsxhas 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 afterrg+ import check; sync README; bump patch. Do not deletehousekeep-designtoken work — that is another skill.
plan-dead-code; parked work → housekeep-backlog; token SSOT → housekeep-design; CI gates → housekeep-gatesFull-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.
Delete a file only after proving it unused. Check imports, references, git blame, and config entries first — a file that is still imported breaks the build when it goes.
Research the changelog before any major-version bump. Majors carry breaking changes; a blind upgrade turns maintenance into an outage.
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,
.bakfiles, build output, committed screenshots — things dead by inspection. Unused source files, exports, types, and dependencies belong toplan-dead-code(audit) andhousekeep-dead-code(delete + ratchet), because proving those dead needs a configured module graph, not argpass.
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 |
Glob("README*")
Glob("**/*readme*")
Glob("**/CHANGELOG*")
Glob("**/.env*")
Glob("**/*.log")
Glob("**/dist/**")
Glob("**/build/**")
Glob("**/*.screenshot*")
Glob("**/*.png", in test/debug/temp folders)
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.]
Update the root README (and any folder-level READMEs) to reflect the 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/)
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 |
For each discrepancy found:
Use the README skeleton in references/templates.md
and adapt each section to the detected stack.
Check for any *_readme.md or README.md files in subdirectories. Update them if the folder contents have changed.
Remove files that serve no purpose in the repository.
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)
For each candidate file:
Grep for the filename across the codebase
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 |
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/
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.
Node.js:
npm outdated # see what's behind
npm audit # check vulnerabilities
Python:
pip list --outdated
pip-audit # or safety check
Rust:
cargo outdated
cargo audit
Go:
go list -m -u all
govulncheck ./...
| 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 |
| Security fix (any) | Critical | Update immediately |
Step 1: Fix vulnerabilities first
npm audit fix # safe fixes only
npm audit fix --force # ONLY if safe fixes insufficient, review changes
Step 2: Update patch + minor
npm update # updates within semver range
Or for more control:
npx npm-check-updates -u -t minor # update package.json to latest minor
npm install # install updated versions
Step 3: Research major updates
For each major version bump available:
firecrawl:firecrawl_search
{
"query": "<package-name> v<new-major> migration guide changelog breaking changes",
"limit": 3,
"sources": [{ "type": "web" }]
}
Recognizing the package is not knowing this major's changes — read the fetched changelog as written rather than answering from memory. Only apply major updates if:
Step 4: Verify after updates
npm run build # or equivalent
npm run lint # or equivalent
npm test # if tests exist
Research the recommended .gitignore for the detected ecosystem:
firecrawl:firecrawl_search
{
"query": "<framework> gitignore best practices <current year>",
"limit": 3,
"sources": [{ "type": "web" }]
}
Cross-check with https://github.com/github/gitignore templates.
Check for stale or redundant config:
| Config | Check |
|---|---|
tsconfig.json | Target and lib match Node/browser version in use |
eslint config | Not using deprecated rules or legacy config format |
prettier config | Exists and is consistent with eslint |
.nvmrc / engines | Matches current LTS or team's Node version |
browserslist | Not targeting dead browsers |
| CI/CD config | Not using deprecated actions or outdated Node versions |
Review all scripts in package.json (or equivalent):
.env.example lists all required vars.env files with real secrets are committedIf the project uses TypeScript:
any type usage that could be tightenedstrict mode settings@ts-ignore or @ts-expect-error commentspackage.json: verify name, version, description, license, repository are accurateLICENSE file: exists and matches package.json license fieldCONTRIBUTING.md: exists if the project accepts contributionsProduce a summary using the Housekeep Report template in
references/templates.md, filling in real values for
each phase.
See the per-ecosystem command cheatsheet (outdated / audit / update / build
verify for npm, pnpm, yarn, pip, cargo, go) in
references/templates.md.