|
|
hace 1 mes | |
|---|---|---|
| .. | ||
| metadata-checklist.md | hace 1 mes | |
| readme-description.md | hace 1 mes | |
| readme-recent-updates.md | hace 1 mes | |
| release-strategy.md | hace 1 mes | |
| repo-visibility.md | hace 1 mes | |
Guidance for the README intro that sits between the title and the first ## heading. This is the bit a person reads when they land on the repo — not the GitHub one-line description (that's a separate, shorter beast; see metadata-checklist.md).
The default tagline-only intro is too thin. Most published 0xDarkMatter repos deserve 2–3 substantial paragraphs that orient a reader who landed cold from a search result or a link.
| Layer | Length | Purpose |
|---|---|---|
Title (# repo-name) |
~3 words | Identity |
Tagline (one line, optional > blockquote) |
≤ 120 chars | The pitch |
| Intro paragraphs (2–3) | ~150–300 words total | Orientation |
Then ## Install etc. |
— | The mechanics |
The intro is not a feature list. Save bullets for later sections. This is prose, written like a developer explaining the project to a peer over coffee — concrete, slightly opinionated, not performative.
Not a rigid template — a default to vary from when the repo demands it.
gh and adds a confirm step before pushes" beats "streamlines GitHub workflows".Good wit names something the reader has also felt:
"Because every project eventually needs the same six bash scripts, and writing them again at 11pm is no longer charming."
Bad wit performs cleverness:
"Behold! A revolutionary new paradigm that will blow your mind 🤯"
When in doubt, omit the joke. A clean, plain description is always better than a strained one.
| Avoid | Why |
|---|---|
| "Blazing fast", "powerful", "cutting-edge", "robust" | Marketing words signal nothing. Show specifics. |
| "Easy to use" | Decided by the reader, not you. |
| Emoji walls (🚀✨🔥💯) at the top | Reads as AI slop. One contextual emoji is fine; a parade isn't. |
| Feature bullets in the intro | Save for ## Features or just let the structure speak. |
| Comparison tables before saying what the thing is | Orient first, position later. |
| "This project aims to..." | Just describe what it is, not what it aspires to be. |
| Auto-generated boilerplate | A reader can spot it instantly. Trust collapses. |
| Restating the title | "Foo is a tool called foo that does foo things." |
| Hedging ("might be useful for", "could potentially help") | Either it's for them or it isn't. Say so. |
Before writing, read these in this order:
pyproject.toml / package.json description + keywords. These were chosen for a reason.__init__.py / main.go opening for any module docstring.Then draft 2–3 paragraphs, read them back as if you'd never seen the repo, and cut every sentence that doesn't add information. The final intro should be dense — a reader scanning it should come away knowing what the repo is, why it exists, and whether they should keep reading.
| Situation | Action |
|---|---|
Mode new (first publish) |
Always draft the intro before publish. This is the reader's first impression. |
Mode update (subsequent release) |
Touch only if scope drifted or the original intro was thin. Don't churn good prose. |
Mode audit |
Flag if the intro is < 80 words OR is a single tagline. Suggest, don't auto-edit. |
| Existing intro is already good | Leave it. Suggest a minor tweak if a release added a major capability. |
# push-gate
> Pre-push safety checks for git.
## Install
...
# push-gate
> Pre-push safety gate for any `git push` to a remote — secret scan, forbidden-file check, divergence check, explicit confirm.
`push-gate` is a Claude Code skill that intercepts pushes to GitHub, GitLab,
Bitbucket, or any other remote and runs a fast preflight before the bytes
leave your machine. It layers `gitleaks` with a regex-based secret scan,
checks for files that shouldn't be in the repo (private keys, `.env`, large
binaries), confirms the local branch hasn't diverged unexpectedly from its
upstream, and requires an explicit "yes" before the push proceeds.
It exists because the worst time to discover a leaked AWS key is *after* it's
in someone else's clone. Pre-commit hooks help, but they only run on commit
and they're easy to bypass; CI scanners catch leaks too late. `push-gate`
sits at the last useful checkpoint — the moment between "I've staged
everything" and "the world has it" — and refuses to let a known-bad push
through. Refusal is hard, not advisory: there's no `--force-anyway` flag,
because if there were, you'd use it.
It's most useful for solo developers who don't have org-level secret
scanning, for repos that mix public and private code, and for the mid-pour
late-night push where careful review has politely left the building. If you
already run gitleaks pre-commit and have CI guards on every push, `push-gate`
is redundant — go enjoy your weekend. If you don't, it's a small skill that
will eventually save you from a very large incident.
## Install
...
The difference: a reader of the second version knows what the tool is, why it exists, when to use it, and when not to. That's the bar.
| Word count | Verdict |
|---|---|
| < 60 | Thin — expand. |
| 60–150 | Borderline — fine for tiny utilities, light for anything substantial. |
| 150–300 | The sweet spot. |
| 300–500 | Acceptable for a complex/foundational repo; tighten if possible. |
| > 500 | Too long for an intro — split into intro + a ## Why this exists section. |