OSS Readiness — Public Release Gate
Audit a repository for open-source release basics. Scaffold missing public docs/templates.
Generate AI-friendly docs (llms.txt, llms-full.txt). Validate CI. Sync version references.
Portability Rules
This skill must stay harness-agnostic and maintainer-agnostic:
- Accept natural-language prompts and slash-command shorthand as equivalent entry points.
- Keep
AGENTS.md as the canonical agent-instructions file when one is scaffolded.
- Treat harness-specific files such as
CLAUDE.md, .cursorrules, .windsurfrules, codex.md, or .opencode/config as optional aliases/mirrors — never the only supported path.
- Use placeholders in generated files. Never hardcode links, social handles, org names, or contact methods from this repository.
- Never invent maintainer contact channels. If the project does not provide one, leave a clear placeholder or omit the optional section.
Required Capabilities
| Capability |
Used For |
Required |
Fallback |
| File read/write/edit |
Audit and scaffold docs/templates |
Yes |
— |
| Shell access |
git/gh/grep/find-based checks |
Recommended |
Manual file inspection |
git |
Repo metadata, tags, tracked-file checks |
Recommended |
Filesystem-only audit |
gh |
GitHub metadata, PR/issue/security settings |
Optional |
Report as unchecked/manual |
node or python |
Manifest/version extraction helpers |
Optional |
Grep/parse text manually |
The skill still works without shell tooling. Shell commands are accelerators, not requirements.
Entry Points
Use either natural language or shorthand. Route both to the same workflow.
| Intent |
Example prompts |
Route |
| Full audit |
audit OSS readiness, /oss |
references/checklist.md |
| Scaffold missing files |
scaffold missing OSS files, /oss fix |
references/checklist.md |
| Generate LLM docs |
generate llms.txt, /oss llms |
references/llms-generation.md |
| Sync version refs |
bump stale version refs in docs, /oss bump |
references/version-sync.md |
| Validate CI |
check OSS CI readiness, /oss ci |
references/ci-validation.md |
| Review release title / notes / announcement framing |
audit release messaging, is this a good OSS release title? |
references/release-messaging.md |
Template Variables
Scaffolded files should use these placeholders until the target repo values are known:
| Placeholder |
Meaning |
{REPO_NAME} |
Repository/project name |
{ORG} / {REPO} |
Git hosting owner + repo slug |
{DESCRIPTION} |
One-line project description |
{LICENSE_TYPE} |
Chosen OSS license |
{PRIMARY_BRANCH} |
Default branch name |
{PROJECT_REPO_URL} |
Canonical source repository URL |
{PROJECT_HOMEPAGE} |
Public project or docs homepage |
{COMMUNITY_SUPPORT_URL} |
Support/discussion channel |
{SECURITY_REPORTING_URL} |
Private vulnerability reporting channel |
{CODE_OF_CONDUCT_CONTACT} |
Contact path for conduct reports |
{MAINTAINER_NAME} |
Maintainer or org display name |
{MAINTAINER_URL} |
Maintainer/org profile or homepage |
{MAINTAINER_CONTACT_URL} |
Optional generic contact page/social/profile |
If a value is unknown, keep the placeholder or omit the optional block. Never substitute repo-specific defaults from this skill repository.
Stack Detection
Detect project type to customize audit logic:
# Package manager / language hints
IS_NPM=$(test -f package.json && echo true || echo false)
IS_CARGO=$(test -f Cargo.toml && echo true || echo false)
IS_PYTHON=$(test -f pyproject.toml -o -f setup.py && echo true || echo false)
IS_GO=$(test -f go.mod && echo true || echo false)
# Library/package vs app (heuristics)
# npm: package.json has "main" or "exports"
# cargo: Cargo.toml has [lib]
# python: pyproject has build metadata / published package info
# go: cmd/ often implies app; library repos may omit it
Checklist Summary (23 items)
BLOCKING (12) — must fix before public release
| # |
Item |
Severity |
| 1 |
LICENSE file |
BLOCKING |
| 2 |
README.md exists |
BLOCKING |
| 3 |
README.md quality (H1, desc, install, usage, license) |
BLOCKING |
| 4 |
CONTRIBUTING.md |
BLOCKING |
| 5 |
.gitignore |
BLOCKING |
| 6 |
No secrets in repo |
BLOCKING |
| 7 |
CI: tests run |
BLOCKING |
| 8 |
CI: lint runs |
BLOCKING |
| 9 |
GitHub description set |
BLOCKING |
| 10 |
CHANGELOG.md with version entry |
BLOCKING |
| 11 |
llms.txt exists |
BLOCKING |
| 12 |
llms-full.txt exists |
BLOCKING |
WARN (11) — recommended
| # |
Item |
Severity |
| 13 |
GitHub topics/tags |
WARN |
| 14 |
AGENTS.md |
WARN |
| 15 |
Harness-specific agent-instruction aliases |
WARN |
| 16 |
SECURITY.md |
WARN |
| 17 |
CODE_OF_CONDUCT.md |
WARN |
| 18 |
Issue templates |
WARN |
| 19 |
PR template |
WARN |
| 20 |
CI: publish workflow (libraries) |
WARN |
| 21 |
docs/ folder |
WARN |
| 22 |
Version in docs matches package |
WARN |
| 23 |
No TODO/FIXME in public src/ |
WARN |
Full detection logic + fix actions → references/checklist.md
Scoring
SCORE = (blocking_pass / blocking_total) * 70 + (warn_pass / warn_total) * 30
A = score >= 90 AND 0 blocking failures
B = score >= 75 AND 0 blocking failures
C = score >= 60 (some blocking failures)
D = score >= 40
F = score < 40
Any blocking failure caps grade at C maximum.
Audit Output Format
═══════════════════════════════════════════════════════════════
OSS READINESS — {org}/{repo}
Version: {version} | Type: {npm|cargo|pip|go|app}
Grade: {A-F} | Score: {0-100}
═══════════════════════════════════════════════════════════════
BLOCKING
┌────────────────────────────────┬──────────┬───────────────────────┐
│ Item │ Status │ Note │
├────────────────────────────────┼──────────┼───────────────────────┤
│ LICENSE │ PASS │ MIT detected │
│ README.md │ WARN │ Missing: usage, API │
│ llms.txt │ FAIL │ Not found │
└────────────────────────────────┴──────────┴───────────────────────┘
RECOMMENDED
┌────────────────────────────────┬──────────┬───────────────────────┐
│ AGENTS.md │ FAIL │ Not found │
│ Agent aliases │ WARN │ AGENTS.md only │
└────────────────────────────────┴──────────┴───────────────────────┘
BLOCKING failures: 2 — must fix before public release
Warnings: 1 — recommended
Run `scaffold missing OSS files` or `/oss fix` to scaffold missing files.
Run `generate llms.txt` or `/oss llms` to create llms docs.
═══════════════════════════════════════════════════════════════
Scaffold Order
1. Detect stack (npm/cargo/python/go/app)
2. Run full checklist → identify missing items
3. Present: "Missing N BLOCKING + M WARN items. Scaffold all? [all / blocking only / pick]"
4. For each item:
a. LICENSE → ask user for license type (MIT/Apache-2.0/ISC/GPL-3.0/BSD-3-Clause)
b. README.md → scaffold from template placeholders
c. CONTRIBUTING.md → fill template with repo + branch strategy
d. SECURITY.md → fill template with repo + reporting channel placeholders
e. CODE_OF_CONDUCT.md → fill Contributor Covenant template + conduct contact placeholder
f. AGENTS.md → analyze repo, generate canonical instructions file
g. Optional aliases → ask which harness aliases to create from AGENTS.md
h. llms.txt + llms-full.txt → route to llms generation flow
i. Issue templates → create .github/ISSUE_TEMPLATE/
j. PR template → create .github/pull_request_template.md
k. GitHub description/topics → update via `gh` when available
l. CI workflows → generate starter workflow(s) based on stack
5. Report scaffolded files
6. Suggest re-running the audit before commit/push
Error Handling
| Error |
Response |
| Not a git repo |
"Not a git repository. OSS audit requires a repo." |
| Private repo |
Works but warns: "Repo is private. Audit shows readiness for going public." |
| No package manager |
Skip version-specific checks, note in output |
gh unavailable/auth missing |
Continue filesystem checks; mark GitHub metadata as manual |
| Maintainer contact unknown |
Keep placeholder or omit optional contact block |
References
- Checklist — full detection + fix logic for all 23 items
- LLMs Generation —
llms.txt + llms-full.txt algorithm
- Version Sync — version detection + doc bumping
- CI Validation — CI pipeline rules + starter workflows
- Release Messaging — title, opening-summary, and announcement-quality rubric for public OSS releases
Templates
All scaffold templates live in templates/. Keep them generic and placeholder-driven.
1---2name: oss-readiness3description: Open-source/public release readiness gate. Audit repos for OSS basics, scaffold missing public-release files, generate llms.txt + llms-full.txt, validate CI, and sync version references. Triggers: "oss", "/oss", "open source readiness", "release readiness", "public release", "go public", "oss audit", "llms.txt", "generate llms", "version bump docs", "scaffold OSS files", "release title", "release messaging", "release notes", "announcement quality".4---56# OSS Readiness — Public Release Gate78Audit a repository for open-source release basics. Scaffold missing public docs/templates.9Generate AI-friendly docs (`llms.txt`, `llms-full.txt`). Validate CI. Sync version references.1011## Portability Rules1213This skill must stay **harness-agnostic** and **maintainer-agnostic**:1415- Accept natural-language prompts and slash-command shorthand as equivalent entry points.16- Keep `AGENTS.md` as the canonical agent-instructions file when one is scaffolded.17- Treat harness-specific files such as `CLAUDE.md`, `.cursorrules`, `.windsurfrules`, `codex.md`, or `.opencode/config` as optional aliases/mirrors — never the only supported path.18- Use placeholders in generated files. Never hardcode links, social handles, org names, or contact methods from this repository.19- Never invent maintainer contact channels. If the project does not provide one, leave a clear placeholder or omit the optional section.2021## Required Capabilities2223| Capability | Used For | Required | Fallback |24|---|---|---|---|25| File read/write/edit | Audit and scaffold docs/templates | Yes | — |26| Shell access | git/gh/grep/find-based checks | Recommended | Manual file inspection |27| `git` | Repo metadata, tags, tracked-file checks | Recommended | Filesystem-only audit |28| `gh` | GitHub metadata, PR/issue/security settings | Optional | Report as unchecked/manual |29| `node` or `python` | Manifest/version extraction helpers | Optional | Grep/parse text manually |3031The skill still works without shell tooling. Shell commands are accelerators, not requirements.3233## Entry Points3435Use either natural language or shorthand. Route both to the same workflow.3637| Intent | Example prompts | Route |38|---|---|---|39| Full audit | `audit OSS readiness`, `/oss` | `references/checklist.md` |40| Scaffold missing files | `scaffold missing OSS files`, `/oss fix` | `references/checklist.md` |41| Generate LLM docs | `generate llms.txt`, `/oss llms` | `references/llms-generation.md` |42| Sync version refs | `bump stale version refs in docs`, `/oss bump` | `references/version-sync.md` |43| Validate CI | `check OSS CI readiness`, `/oss ci` | `references/ci-validation.md` |44| Review release title / notes / announcement framing | `audit release messaging`, `is this a good OSS release title?` | `references/release-messaging.md` |4546## Template Variables4748Scaffolded files should use these placeholders until the target repo values are known:4950| Placeholder | Meaning |51|---|---|52| `{REPO_NAME}` | Repository/project name |53| `{ORG}` / `{REPO}` | Git hosting owner + repo slug |54| `{DESCRIPTION}` | One-line project description |55| `{LICENSE_TYPE}` | Chosen OSS license |56| `{PRIMARY_BRANCH}` | Default branch name |57| `{PROJECT_REPO_URL}` | Canonical source repository URL |58| `{PROJECT_HOMEPAGE}` | Public project or docs homepage |59| `{COMMUNITY_SUPPORT_URL}` | Support/discussion channel |60| `{SECURITY_REPORTING_URL}` | Private vulnerability reporting channel |61| `{CODE_OF_CONDUCT_CONTACT}` | Contact path for conduct reports |62| `{MAINTAINER_NAME}` | Maintainer or org display name |63| `{MAINTAINER_URL}` | Maintainer/org profile or homepage |64| `{MAINTAINER_CONTACT_URL}` | Optional generic contact page/social/profile |6566If a value is unknown, keep the placeholder or omit the optional block. Never substitute repo-specific defaults from this skill repository.6768## Stack Detection6970Detect project type to customize audit logic:7172```bash73# Package manager / language hints74IS_NPM=$(test -f package.json && echo true || echo false)75IS_CARGO=$(test -f Cargo.toml && echo true || echo false)76IS_PYTHON=$(test -f pyproject.toml -o -f setup.py && echo true || echo false)77IS_GO=$(test -f go.mod && echo true || echo false)7879# Library/package vs app (heuristics)80# npm: package.json has "main" or "exports"81# cargo: Cargo.toml has [lib]82# python: pyproject has build metadata / published package info83# go: cmd/ often implies app; library repos may omit it84```8586## Checklist Summary (23 items)8788### BLOCKING (12) — must fix before public release8990| # | Item | Severity |91|---|---|---|92| 1 | LICENSE file | BLOCKING |93| 2 | README.md exists | BLOCKING |94| 3 | README.md quality (H1, desc, install, usage, license) | BLOCKING |95| 4 | CONTRIBUTING.md | BLOCKING |96| 5 | .gitignore | BLOCKING |97| 6 | No secrets in repo | BLOCKING |98| 7 | CI: tests run | BLOCKING |99| 8 | CI: lint runs | BLOCKING |100| 9 | GitHub description set | BLOCKING |101| 10 | CHANGELOG.md with version entry | BLOCKING |102| 11 | llms.txt exists | BLOCKING |103| 12 | llms-full.txt exists | BLOCKING |104105### WARN (11) — recommended106107| # | Item | Severity |108|---|---|---|109| 13 | GitHub topics/tags | WARN |110| 14 | AGENTS.md | WARN |111| 15 | Harness-specific agent-instruction aliases | WARN |112| 16 | SECURITY.md | WARN |113| 17 | CODE_OF_CONDUCT.md | WARN |114| 18 | Issue templates | WARN |115| 19 | PR template | WARN |116| 20 | CI: publish workflow (libraries) | WARN |117| 21 | docs/ folder | WARN |118| 22 | Version in docs matches package | WARN |119| 23 | No TODO/FIXME in public src/ | WARN |120121Full detection logic + fix actions → [references/checklist.md](references/checklist.md)122123## Scoring124125```text126SCORE = (blocking_pass / blocking_total) * 70 + (warn_pass / warn_total) * 30127128A = score >= 90 AND 0 blocking failures129B = score >= 75 AND 0 blocking failures130C = score >= 60 (some blocking failures)131D = score >= 40132F = score < 40133134Any blocking failure caps grade at C maximum.135```136137## Audit Output Format138139```text140═══════════════════════════════════════════════════════════════141 OSS READINESS — {org}/{repo}142 Version: {version} | Type: {npm|cargo|pip|go|app}143 Grade: {A-F} | Score: {0-100}144═══════════════════════════════════════════════════════════════145146 BLOCKING147 ┌────────────────────────────────┬──────────┬───────────────────────┐148 │ Item │ Status │ Note │149 ├────────────────────────────────┼──────────┼───────────────────────┤150 │ LICENSE │ PASS │ MIT detected │151 │ README.md │ WARN │ Missing: usage, API │152 │ llms.txt │ FAIL │ Not found │153 └────────────────────────────────┴──────────┴───────────────────────┘154155 RECOMMENDED156 ┌────────────────────────────────┬──────────┬───────────────────────┐157 │ AGENTS.md │ FAIL │ Not found │158 │ Agent aliases │ WARN │ AGENTS.md only │159 └────────────────────────────────┴──────────┴───────────────────────┘160161 BLOCKING failures: 2 — must fix before public release162 Warnings: 1 — recommended163164 Run `scaffold missing OSS files` or `/oss fix` to scaffold missing files.165 Run `generate llms.txt` or `/oss llms` to create llms docs.166═══════════════════════════════════════════════════════════════167```168169## Scaffold Order170171```text1721. Detect stack (npm/cargo/python/go/app)1732. Run full checklist → identify missing items1743. Present: "Missing N BLOCKING + M WARN items. Scaffold all? [all / blocking only / pick]"1754. For each item:176 a. LICENSE → ask user for license type (MIT/Apache-2.0/ISC/GPL-3.0/BSD-3-Clause)177 b. README.md → scaffold from template placeholders178 c. CONTRIBUTING.md → fill template with repo + branch strategy179 d. SECURITY.md → fill template with repo + reporting channel placeholders180 e. CODE_OF_CONDUCT.md → fill Contributor Covenant template + conduct contact placeholder181 f. AGENTS.md → analyze repo, generate canonical instructions file182 g. Optional aliases → ask which harness aliases to create from AGENTS.md183 h. llms.txt + llms-full.txt → route to llms generation flow184 i. Issue templates → create .github/ISSUE_TEMPLATE/185 j. PR template → create .github/pull_request_template.md186 k. GitHub description/topics → update via `gh` when available187 l. CI workflows → generate starter workflow(s) based on stack1885. Report scaffolded files1896. Suggest re-running the audit before commit/push190```191192## Error Handling193194| Error | Response |195|---|---|196| Not a git repo | "Not a git repository. OSS audit requires a repo." |197| Private repo | Works but warns: "Repo is private. Audit shows readiness for going public." |198| No package manager | Skip version-specific checks, note in output |199| `gh` unavailable/auth missing | Continue filesystem checks; mark GitHub metadata as manual |200| Maintainer contact unknown | Keep placeholder or omit optional contact block |201202## References203204- [Checklist](references/checklist.md) — full detection + fix logic for all 23 items205- [LLMs Generation](references/llms-generation.md) — `llms.txt` + `llms-full.txt` algorithm206- [Version Sync](references/version-sync.md) — version detection + doc bumping207- [CI Validation](references/ci-validation.md) — CI pipeline rules + starter workflows208- [Release Messaging](references/release-messaging.md) — title, opening-summary, and announcement-quality rubric for public OSS releases209210## Templates211212All scaffold templates live in `templates/`. Keep them generic and placeholder-driven.