Skip to content

feat: add /pre-publish repo hygiene audit skill#613

Open
zengury wants to merge 1 commit intogarrytan:mainfrom
zengury:feat/pre-publish-skill
Open

feat: add /pre-publish repo hygiene audit skill#613
zengury wants to merge 1 commit intogarrytan:mainfrom
zengury:feat/pre-publish-skill

Conversation

@zengury
Copy link
Copy Markdown

@zengury zengury commented Mar 29, 2026

What this adds

A new /pre-publish skill that scans every git-tracked file before a repo goes public.

This closes a real gap: /document-release and /ship are diff-scoped — they check what changed, not what exists. Neither catches a TODOS.md with a security disclosure, a committed .env with a real API key, or a deployment guide written in a different language than the README.

Five checks (all mandatory, no skips)

# Category What it catches
1 Dev scaffolding TODOS.md, PLAN.md, personal CLAUDE.md config, DEPLOY_FOR_*.md
2 Credentials Real API keys in any tracked file or .env — with vendor revocation URLs and git-filter-repo purge instructions
3 Security disclosures Undisclosed security issues documented in markdown ("no auth on :8090, cannot ship publicly until...")
4 Language consistency README in English but DEPLOYMENT.md in Chinese (catches mismatch across key user-facing docs)
5 Privacy / PII Phone numbers, real email addresses, WeChat fields, personal paths in sample/fixture/data files — warns that git history purge is required and cites GDPR/PIPL/CCPA

Also checks .gitignore completeness for high-risk patterns.

Verdict: BLOCKED (any CRITICAL), PROCEED_WITH_CAUTION, or CLEAN.

Origin

Found during a real release:

  • snakes-V shipped publicly with TODOS.md containing "security hardening is post-M1 — cannot ship publicly until T5 is done"
  • hr-assistant shipped with a real Kimi API key in a tracked .env and a real DeepSeek key in DEPLOY_FOR_LIUZHIQIANG.md
  • Neither was caught by /document-release because it doesn't run git ls-files

The contributor field report is in ~/.gstack/contributor-logs/missing-pre-publish-hygiene-skill.md.

Suggested trigger placement

/ship Step 0 (pre-flight) — suggest running /pre-publish if the repo has no prior clean audit on record.

Files

  • pre-publish/SKILL.md.tmpl — source template
  • pre-publish/SKILL.md — generated via bun run gen:skill-docs

Closes a gap in the release workflow: `/document-release` and `/ship`
are diff-scoped and don't audit all tracked files before a repo goes
public. This skill does that.

Five checks, all mandatory:

1. **Dev scaffolding** — TODOS.md, PLAN.md, personal CLAUDE.md config,
   named deployment guides (DEPLOY_FOR_*.md)

2. **Credentials** — real API keys in any tracked file or .env,
   with vendor-specific revocation URLs and git-filter-repo purge
   instructions

3. **Security disclosures** — undisclosed security issues documented
   in markdown files (e.g. "no auth on :8090, cannot ship publicly")

4. **Language consistency** — README in English but DEPLOYMENT.md
   in Chinese (or vice versa), catches mismatch across key docs

5. **Privacy / PII** — real phone numbers, email addresses, WeChat
   fields, and personal paths in sample/fixture/data files; warns
   that git history purge is required and cites applicable law
   (GDPR, PIPL, CCPA)

Also checks .gitignore completeness for high-risk patterns.

Verdict: BLOCKED (any CRITICAL), PROCEED_WITH_CAUTION, or CLEAN.

Origin: discovered when snakes-V shipped publicly with TODOS.md
containing an unacknowledged security disclosure ("cannot ship
publicly until T5 is done") and hr-assistant shipped with a real
Kimi API key in a tracked .env file and a real DeepSeek key in a
deployment guide.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant