agentleFS
davidvictordavidvictor/build-in-public/SKILL.md

build-in-public

Skill1 starsChanged 5 months agoMITView on GitHub

Prepare a working local repo for a public GitHub release by auditing secrets and history, hardening setup and tests, writing a build-in-public README, packaging a clean zip, and publishing with public-ready metadata. Use when a sandbox, lab, or prototype repo already solves a real problem and now needs the final pass to be safely shared and used by other people.

  • Reads credentials
  • Installs packages
  • Commits and pushes

7 other projects use a version of this.

Adopted by

Most recently taken up by

The file

Show its rules and text

We split this skill into the rules it gives an agent

49 rules. 0 are common, 38 are distinctive, and 11 are very specific to this project.

  • 0

    Common

    Most of the 7 edited versions we read keep these.

  • 38

    Distinctive

    This author's own choices. Worth a look.

  • 11

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  • could be automatic: a setting could enforce it
  1. Distinctive:

    Use this skill when the project already works and the job is to make it presentable, safe, and usable in public.

    line 21
  2. Distinctive:

    Use for the public-release gate and the final completion pass.

    line 26
  3. Distinctive:

    Use when writing or restructuring README.md.

    line 28
  4. Very specific:

    Use to create a clean zip from the current HEAD after the repo is ready.

    line 30
  5. Very specific:

    When the host provides extra capabilities, use them as accelerators.

    line 34
  6. Distinctive:

    Create a clean public-export repo when the working project is good but the existing repo has scratch history, private notes, experimental …

    line 68
  7. Distinctive:

    If history rewriting would be needed to make the current repo safe, prefer a fresh public export unless the user explicitly wants history …

    line 74
  8. Distinctive:

    Do not publish anything until the repo is understandable to a stranger from a cold clone.

    line 75
  9. Very specific:

    Read references/readme-template.md if the README needs to be created or rewritten.

    line 83
  10. Distinctive:

    Default the publish destination to the user's personal GitHub with public visibility when the request is to build in public.

    line 86
  11. Distinctive:

    Ask for the spark: Before writing anything, read the code deeply enough to form three plausible hypotheses about why this was built.

    line 88
  12. Very specific:

    Use fast local inspection first: rg, git status, git log, git ls-files, and targeted file reads.

    line 111
  13. Distinctive:

    If the risk is in the working tree, clean it up.

    line 112
  14. Distinctive:

    If the risk is only in history, prefer a clean export repo instead of risky history surgery.

    line 113
  15. Distinctive:

    Do the smallest credible pass that makes the project usable by other people:

    line 117
  16. Very specific:

    add or tighten env.example, sample config, and ignore rules where needed

    line 120
  17. Distinctive:

    remove dead experimental clutter that confuses first-time users

    line 122
  18. Distinctive:

    add or improve tests so the main path is covered plus at least one failure or edge case

    line 123
  19. Distinctive:

    add lightweight CI only when the repo already has a straightforward command worth automating

    line 129
  20. Distinctive:

    default the license to MIT unless the repo or user clearly points somewhere else

    line 130
  21. Distinctive:

    Do not turn this into a large rewrite.

    line 132
  22. Distinctive:

    Create or rewrite the public-facing docs so a stranger can orient quickly:

    line 136
  23. Very specific:

    use references/readme-template.md for the README structure

    line 138
  24. Distinctive:

    document the test command and any required local dependencies

    line 141
  25. Very specific:

    Generate the ASCII banner: Every README gets a figlet banner at the very top, above everything else.

    line 150
  26. Distinctive:

    Use the project's display name, not its repo slug

    line 157
  27. Very specific:

    Keep everything lowercase (Mock Pop → mock pop)

    line 159
  28. Very specific:

    If the display name differs from the repo slug (e.g.

    line 160
  29. Very specific:

    README visuals are committed artifacts: When a generated image belongs in the README, store it under assets/, reference it with a relative …

    line 164
  30. Very specific:

    Structure follows the template: Use the canonical section skeleton and formatting toolkit in references/readme-template.md: badge row, …

    line 174
  31. Distinctive:

    Avoid documentation sprawl.

    line 179
  32. Distinctive:

    Run the strongest verification the repo can reasonably support:

    line 183
  33. Distinctive:

    Run the relevant install, build, lint, test, and smoke commands.

    line 185
  34. Distinctive:

    Verify the quick-start instructions against the actual code.

    line 186
  35. Distinctive:

    If practical, simulate a cold-clone path instead of trusting the current machine state.

    line 187
  36. Distinctive:

    Create the public zip artifact from committed code:

    line 190
  37. Distinctive:

    If the repo should be published now:

    line 203
  38. Distinctive:

    use the hardened repo directly when it is safe

    line 205
  39. Distinctive:

    create the public GitHub repo with the prepared description

    line 208
  40. Distinctive:

    add topics and release metadata when the user asked for them or when they are clearly helpful

    line 210
  41. Distinctive:

    If the user only wants the repo prepared but not yet published, stop after packaging and report what remains.

    line 221
  42. Distinctive:

    Do not push a repo public with tracked secrets, internal docs, proprietary data, or machine-specific junk.

    line 236
  43. Distinctive:

    Do not assume exploratory git history is safe to expose.

    line 237
  44. Distinctive:

    Do not silently publish from a dirty mixed worktree.

    line 238
  45. Distinctive:

    Do not ship a README that hides meaningful limitations.

    line 239
  46. Distinctive:

    Do not add a pile of extra docs just to look mature.

    line 240
  47. Distinctive:

    Prefer a clean public-export repo over destructive history rewriting.

    line 241
  48. Distinctive:

    Keep the hardening pass practical.

    line 242
  49. Distinctive:

    Use this skill when the user says things like:

    line 246

“Common” is measured: kept by at least 6 in 10 of the 7 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Build in Public

Overview

Use this skill when the project already works and the job is to make it presentable, safe, and usable in public. The workflow works for any local repo.

Resources

  • references/public-release-checklist.md Use for the public-release gate and the final completion pass.
  • references/readme-template.md Use when writing or restructuring README.md.
  • scripts/create_release_zip.sh Use to create a clean zip from the current HEAD after the repo is ready.

Optional Accelerators

When the host provides extra capabilities, use them as accelerators. Never make them hard dependencies; the workflow must complete with ordinary shell, git, and gh.

  • Web search for current publish-platform facts, package behavior, or security advisories. Prefer primary sources and cite them.
  • Image generation for README visuals when a diagram or hero asset aids a cold reader. Native image generation is a Codex feature; on other hosts, fall back to Mermaid, SVG, or repo-native diagrams for exact labels.
  • In-app browser preview for local web previews and public-page review.
  • Computer use for narrow GUI verification (desktop apps, simulators, documents).
  • Worktrees, native Git review, and subagents for isolated or parallel release-prep lanes, when the host makes them safe.
  • Automations only for recurring release-health checks, never for one-off publishing decisions.

Default Outcome

By the end of this skill, the repo should have:

  • a README that clearly explains the problem, why it was built, what it does, and how to use it
  • an optional project-bound diagram or visual asset when it materially improves cold-reader orientation
  • a clean public-facing description and suggested GitHub topics
  • basic hardening for setup, errors, ignored files, and user-facing defaults
  • tests or smoke checks that prove the main path and at least one edge or failure case
  • a license and example configuration where needed
  • a clean zip artifact created from committed code
  • either a public GitHub repo on the user's personal profile or an exact blocker explaining why publish should wait

Release Strategy

Pick the safer lane before editing:

  1. Reuse the existing repo when its git history, file set, and naming are already safe to expose.
  2. Create a clean public-export repo when the working project is good but the existing repo has scratch history, private notes, experimental debris, or secrets in history.

Rules:

  • For sandbox projects, prefer a sibling public repo (e.g. <project-parent>/<slug>-public) when public history is questionable.
  • Preserve provenance in a short note, but do not leak private paths, internal project names, or personal machine details.
  • If history rewriting would be needed to make the current repo safe, prefer a fresh public export unless the user explicitly wants history preserved.
  • Do not publish anything until the repo is understandable to a stranger from a cold clone.

Workflow

1. Preflight

  1. Inspect the target repo, remotes, git status, build system, test commands, and every AGENTS.md in scope.
  2. Read references/public-release-checklist.md.
  3. Read references/readme-template.md if the README needs to be created or rewritten.
  4. Determine whether to harden in place or create a clean public-export repo.
  5. Derive the likely public name, one-line description, install flow, and target audience from the repo itself. Ask only if those are truly ambiguous.
  6. Default the publish destination to the user's personal GitHub with public visibility when the request is to build in public.
  7. Check which optional accelerators are available in the current environment, then choose the lightest useful path: local shell for deterministic repo work, web search for current external facts, browser/computer use for UI verification, image generation for helpful visuals, and worktrees/subagents only when they improve throughput safely.
  8. Ask for the spark. Before writing anything, read the code deeply enough to form three plausible hypotheses about why this was built. Then ask the user — present your three best guesses as options, plus a free-text field for something else entirely:

    What was the moment that made you build this?

    1. [Your first hypothesis, drawn from the code]
    2. [Your second hypothesis]
    3. [Your third hypothesis]
    4. Something else — tell me in your own words

    See references/narrative-voice.md for the three-options pattern and how to weigh the user's answer against the code.

2. Audit Public Risk

Inspect the repo for anything that should not go public:

  • secrets, .env files, tokens, API keys, private credentials, or copied shell history
  • internal URLs, personal emails, absolute local paths, machine-specific instructions, or private screenshots
  • private datasets, vendor assets, or sample files that cannot be redistributed
  • caches, logs, generated databases, debug output, and local-only artifacts
  • scratch commit history that tells the wrong story or exposes private context

Guidance:

  • Use fast local inspection first: rg, git status, git log, git ls-files, and targeted file reads.
  • If the risk is in the working tree, clean it up.
  • If the risk is only in history, prefer a clean export repo instead of risky history surgery.

3. Harden The Repo

Do the smallest credible pass that makes the project usable by other people:

  • make install and run steps deterministic
  • add or tighten env.example, sample config, and ignore rules where needed
  • improve the primary entrypoint so errors are readable and defaults are sensible
  • remove dead experimental clutter that confuses first-time users
  • add or improve tests so the main path is covered plus at least one failure or edge case
  • match proof to product shape:
    • CLIs: command help plus a real command smoke test
    • libraries: unit tests around the public API
    • web apps: browser or request-level smoke on the main flow
    • APIs/services: request-response proof plus error handling checks
  • add lightweight CI only when the repo already has a straightforward command worth automating
  • default the license to MIT unless the repo or user clearly points somewhere else

Do not turn this into a large rewrite. "Public-ready" means polished enough to be honestly shared, not rebuilt from scratch.

4. Write Public Docs

Create or rewrite the public-facing docs so a stranger can orient quickly:

  • use references/readme-template.md for the README structure
  • explain the problem first, then why this repo exists, then how to run it
  • include one concrete quick-start path that works from a fresh clone
  • document the test command and any required local dependencies
  • be explicit about current limitations, platform assumptions, or rough edges
  • include a short build-in-public note that explains the project's origin without oversharing internal context
  • include a visual repo map or architecture diagram when it helps a cold reader understand the file layout, data flow, or user workflow. Prefer Mermaid or repo-native diagrams for exact labels; use image generation for polished illustrations, banners, or supporting visuals when available.
  • prepare:
    • a one-line GitHub description
    • a short topic list
    • optional release notes if the user wants an initial release

Generate the ASCII banner. Every README gets a figlet banner at the very top, above everything else. Use the rectangles font — no slanted characters. Run:

figlet -f rectangles -w 200 "<banner text>"

Banner text rules:

  • Use the project's display name, not its repo slug
  • Replace any hyphens with spaces (build-in-public → build in public)
  • Keep everything lowercase (Mock Pop → mock pop)
  • If the display name differs from the repo slug (e.g. repo superwhisperer-lab, display superwhisper lab), use the display name

Wrap the output in a fenced code block. If figlet is not installed: brew install figlet. This is the first thing someone sees — it signals that the project has a real identity.

README visuals are committed artifacts. When a generated image belongs in the README, store it under assets/, reference it with a relative path and real alt text, and commit it with the README change. Full mechanics: references/narrative-voice.md ("README Visuals").

Build the narrative from the code. The user's spark answer is context; the code is the source. Find what is genuinely interesting, frame the problem at the right specificity, and write to the anti-slop standard. Voice and tone: references/narrative-voice.md.

Structure follows the template. Use the canonical section skeleton and formatting toolkit in references/readme-template.md: badge row, fixed section order, callouts (max two), file-map table, collapsibles, structured lists, and a before→after example block for prose repos.

Avoid documentation sprawl. A strong README, a license, and the minimum supporting files beat a pile of ceremonial docs.

5. Verify And Package

Run the strongest verification the repo can reasonably support:

  1. Run the relevant install, build, lint, test, and smoke commands.
  2. Verify the quick-start instructions against the actual code.
  3. If practical, simulate a cold-clone path instead of trusting the current machine state.
  4. For web or visual surfaces, use the in-app browser when available and capture the verification result in the report.
  5. For GUI-only surfaces, use computer use narrowly and record what was checked.
  6. Create the public zip artifact from committed code:
bash "$(dirname "$0")/scripts/create_release_zip.sh" <repo-path>
# Or from an installed skill:
#   bash ~/.claude/skills/build-in-public/scripts/create_release_zip.sh <repo-path>   # Claude Code
#   bash ~/.codex/skills/build-in-public/scripts/create_release_zip.sh <repo-path>    # Codex

The helper writes the zip under /tmp/build-in-public/<slug>/ by default. On a Codex host where ~/.codex/workspaces/ exists, it uses that path instead.

6. Publish

If the repo should be published now:

  • use the hardened repo directly when it is safe
  • otherwise create a clean export repo with only the intended public files and a fresh git history
  • configure the GitHub remote on the user's personal account
  • create the public GitHub repo with the prepared description
  • push the default branch
  • add topics and release metadata when the user asked for them or when they are clearly helpful

Typical CLI path:

gh repo create <name> --public --source . --remote origin --push --description "<one-line description>"
gh repo edit <name> --add-topic <topic1> --add-topic <topic2>
git tag v1.0.0 && git push origin v1.0.0
gh release create v1.0.0 --title "v1.0.0" --notes "Initial public release."

If the user only wants the repo prepared but not yet published, stop after packaging and report what remains.

7. Report

Summarize:

  • the repo path that was prepared
  • whether the work stayed in place or moved to a clean public-export repo
  • the public description and topics
  • the tests and verification that passed
  • the zip artifact path
  • the GitHub URL, or the exact blocker if publishing was intentionally deferred

Guardrails

  • Do not push a repo public with tracked secrets, internal docs, proprietary data, or machine-specific junk.
  • Do not assume exploratory git history is safe to expose.
  • Do not silently publish from a dirty mixed worktree.
  • Do not ship a README that hides meaningful limitations.
  • Do not add a pile of extra docs just to look mature.
  • Prefer a clean public-export repo over destructive history rewriting.
  • Keep the hardening pass practical. The goal is a credible first public release, not a months-long polish cycle.

Quick Triggers

Use this skill when the user says things like:

  • "build this in public"
  • "make this lab repo public-ready"
  • "turn this prototype into a public GitHub repo"
  • "package this up so other people can download and use it"
  • "do the final polish so I can open-source this"

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.