Prepare Project for Public Release
Audit and clean a project so it's ready to share publicly on GitHub.
Process
Run these phases in order. Use sub-agents for independent work (security scan, README drafting, screenshots) to parallelize.
Phase 1: Security Scan (CRITICAL)
This is the most important phase. Scan every file in the project (excluding .venv/, node_modules/, etc.) for:
Secrets and credentials:
- API keys:
sk-ant-, sk-, AKIA, ghp_, gho_, Bearer, token=
- Passwords:
password, passwd, secret, credential
- Connection strings:
postgres://, mysql://, redis://, mongodb://
- Private keys:
-----BEGIN, .pem, .key files
- Any high-entropy strings that look like keys (base64, hex >32 chars)
Local/personal references:
- Home directory paths:
/home/<user>/, /Users/<user>/, C:\Users\
- Hardcoded hostnames, IP addresses, internal URLs
- Personal email addresses, names in code comments
- Tailscale, ngrok, or tunnel-specific configuration
Embarrassing content:
- Debug
print() statements in production code
console.log debug lines in frontend
- TODO/FIXME/HACK comments that reveal unfinished work
- Commented-out code blocks
- Test credentials or dummy data that looks real
- Internal project names, codenames, or references to employers
Service/deployment files to scrutinize:
- systemd
.service files (often contain plaintext keys and local paths)
- Docker compose files, Dockerfiles
- CI/CD configs with hardcoded values
- Terraform/infrastructure files
Report all findings with severity (CRITICAL/HIGH/MEDIUM/LOW) and file:line references. If a real secret is found, immediately tell the user to revoke it before proceeding.
Phase 2: Fix Issues
For each finding:
- Secrets: Remove from file. If the file is a deployment artifact (service file, docker-compose with secrets), either remove it from the repo or templatize it.
- Local paths: Replace with configurable values (env vars, relative paths, CLI args).
- Debug output: Remove or comment out.
- Embarrassing content: Clean up or remove.
Create or update:
.gitignore — must cover at minimum:
.venv/
node_modules/
__pycache__/
*.pyc
.env
*.db
*.sqlite
dist/
build/
.DS_Store
Add project-specific entries (data directories, local config, etc.)
.env.example — document every required environment variable with placeholder values. Use the pattern VARIABLE_NAME=<description or example>.
LICENSE — ask the user which license they want if none exists. Default suggestion: MIT.
Phase 3: Apply Standards
Python projects (if pyproject.toml exists):
- Run
/pystd skill to apply Astral stack (ruff, ty, pytest-cov, Justfile, CI)
- Run
just fc to verify everything passes
Node/JS projects (if package.json exists):
- Verify
.eslintrc or equivalent exists
- Check for
prettier config
Any project:
- Verify tests exist and pass
- Check that the dev server binds to
127.0.0.1, not 0.0.0.0
Phase 4: README
Write a README.md that is:
- Matter-of-fact — describe what it does, not why it's amazing
- Honest about scope — if it's a demo, say it's a demo
- Structured for quick scanning:
- One-line description
- Screenshot (if frontend exists — take one with agent-browser)
- What it does (2-3 paragraphs max)
- How it works (architecture, key design decisions)
- Setup instructions (clone, install, configure, run)
- Development commands
- Architecture overview (file tree with descriptions)
- Stack/dependencies list
- License
- Highlights the interesting parts — what makes this project worth looking at? The tech combo, the architecture pattern, the sandbox approach, etc. Don't hype it, but do point out what's distinctive.
Phase 5: Final Verification
- Initialize git if not already:
git init
- Run
git status to verify .gitignore is catching everything sensitive
- Grep the tracked files one more time for secrets and local paths
- Run the test suite one final time
- Report the complete status to the user
Checklist Output
After completion, present a checklist:
[x] Security scan — no secrets found
[x] .gitignore — covers .env, .venv, data files
[x] .env.example — documents required env vars
[x] LICENSE — MIT
[x] README.md — with screenshots
[x] Standards applied — linting, formatting, type-checking, CI
[x] Tests passing — N/N
[x] Git clean — no sensitive files tracked
[ ] ACTION REQUIRED: Revoke key XYZ (if applicable)
1---2name: prep-public3description: Prepare a project for public release on GitHub. Scans for secrets, API keys, local file paths, and embarrassing content. Sets up .gitignore, .env.example, LICENSE, README. Applies language-specific standards (pystd for Python). Use when the user wants to open-source, publish, or share a project publicly.4---56# Prepare Project for Public Release78Audit and clean a project so it's ready to share publicly on GitHub.910## Process1112Run these phases in order. Use sub-agents for independent work (security scan, README drafting, screenshots) to parallelize.1314### Phase 1: Security Scan (CRITICAL)1516This is the most important phase. Scan every file in the project (excluding `.venv/`, `node_modules/`, etc.) for:1718**Secrets and credentials:**19- API keys: `sk-ant-`, `sk-`, `AKIA`, `ghp_`, `gho_`, `Bearer`, `token=`20- Passwords: `password`, `passwd`, `secret`, `credential`21- Connection strings: `postgres://`, `mysql://`, `redis://`, `mongodb://`22- Private keys: `-----BEGIN`, `.pem`, `.key` files23- Any high-entropy strings that look like keys (base64, hex >32 chars)2425**Local/personal references:**26- Home directory paths: `/home/<user>/`, `/Users/<user>/`, `C:\Users\`27- Hardcoded hostnames, IP addresses, internal URLs28- Personal email addresses, names in code comments29- Tailscale, ngrok, or tunnel-specific configuration3031**Embarrassing content:**32- Debug `print()` statements in production code33- `console.log` debug lines in frontend34- TODO/FIXME/HACK comments that reveal unfinished work35- Commented-out code blocks36- Test credentials or dummy data that looks real37- Internal project names, codenames, or references to employers3839**Service/deployment files to scrutinize:**40- systemd `.service` files (often contain plaintext keys and local paths)41- Docker compose files, Dockerfiles42- CI/CD configs with hardcoded values43- Terraform/infrastructure files4445Report all findings with severity (CRITICAL/HIGH/MEDIUM/LOW) and file:line references. If a real secret is found, **immediately tell the user to revoke it** before proceeding.4647### Phase 2: Fix Issues4849For each finding:5051- **Secrets**: Remove from file. If the file is a deployment artifact (service file, docker-compose with secrets), either remove it from the repo or templatize it.52- **Local paths**: Replace with configurable values (env vars, relative paths, CLI args).53- **Debug output**: Remove or comment out.54- **Embarrassing content**: Clean up or remove.5556Create or update:5758- **`.gitignore`** — must cover at minimum:59 ```60 .venv/61 node_modules/62 __pycache__/63 *.pyc64 .env65 *.db66 *.sqlite67 dist/68 build/69 .DS_Store70 ```71 Add project-specific entries (data directories, local config, etc.)7273- **`.env.example`** — document every required environment variable with placeholder values. Use the pattern `VARIABLE_NAME=<description or example>`.7475- **`LICENSE`** — ask the user which license they want if none exists. Default suggestion: MIT.7677### Phase 3: Apply Standards7879**Python projects** (if `pyproject.toml` exists):80- Run `/pystd` skill to apply Astral stack (ruff, ty, pytest-cov, Justfile, CI)81- Run `just fc` to verify everything passes8283**Node/JS projects** (if `package.json` exists):84- Verify `.eslintrc` or equivalent exists85- Check for `prettier` config8687**Any project:**88- Verify tests exist and pass89- Check that the dev server binds to `127.0.0.1`, not `0.0.0.0`9091### Phase 4: README9293Write a `README.md` that is:9495- **Matter-of-fact** — describe what it does, not why it's amazing96- **Honest about scope** — if it's a demo, say it's a demo97- **Structured** for quick scanning:98 1. One-line description99 2. Screenshot (if frontend exists — take one with agent-browser)100 3. What it does (2-3 paragraphs max)101 4. How it works (architecture, key design decisions)102 5. Setup instructions (clone, install, configure, run)103 6. Development commands104 7. Architecture overview (file tree with descriptions)105 8. Stack/dependencies list106 9. License107- **Highlights the interesting parts** — what makes this project worth looking at? The tech combo, the architecture pattern, the sandbox approach, etc. Don't hype it, but do point out what's distinctive.108109### Phase 5: Final Verification1101111. Initialize git if not already: `git init`1122. Run `git status` to verify `.gitignore` is catching everything sensitive1133. Grep the tracked files one more time for secrets and local paths1144. Run the test suite one final time1155. Report the complete status to the user116117## Checklist Output118119After completion, present a checklist:120121```122[x] Security scan — no secrets found123[x] .gitignore — covers .env, .venv, data files124[x] .env.example — documents required env vars125[x] LICENSE — MIT126[x] README.md — with screenshots127[x] Standards applied — linting, formatting, type-checking, CI128[x] Tests passing — N/N129[x] Git clean — no sensitive files tracked130[ ] ACTION REQUIRED: Revoke key XYZ (if applicable)131```