oss-publish
oss-publish - OSS Publication And Release Hygiene
Focus: make a repository publishable and releasable with minimal ambiguity. Prefer safe-by-default, non-interactive, repeatable steps.
Baseline Repo Artifacts
Add these at repo root (or confirm they exist and are correct):
LICENSE(pick one; do not invent a custom license)README.md(project intent, quick start, examples)CONTRIBUTING.md(how to contribute; local dev workflow)CODE_OF_CONDUCT.md(community expectations; adopt a standard template)SECURITY.md(vulnerability reporting process)- Optional:
SUPPORT.md(where to ask questions)
If the project is a CLI/tool, also ensure:
--helpis stable and in English- docs include examples for both humans and automation
Release Discipline (Language-Agnostic)
- Use semantic versioning (SemVer) unless the ecosystem dictates otherwise.
- Treat releases as immutable:
- tag the release commit
- generate release notes from commits/CHANGELOG
- attach artifacts (if you distribute binaries)
Pre-release checklist (minimum):
- working tree clean
- tests + lint/format pass
- documentation updated (README, examples)
- version bumped + tagged
- release notes produced
For a concrete checklist and file templates, see:
oss-publish/references/checklist.mdoss-publish/references/templates.mdoss-publish/references/readme.md
Quality Gates (Local + CI)
Prefer a split between fast and slow checks:
pre-commit: format + lint (fast)pre-push(or CI only): full test suite (slower)
Use pre-commit or prek (compatible alternative) depending on repo conventions.
CI Policy (Cross-Platform)
If the project is intended to be cross-platform, include a CI matrix:
ubuntu-latestmacos-latestwindows-latest
Set fail-fast: false so one platform failure does not hide others.
Stable Bootstrap Entry Point
Prefer a single, predictable setup command usable by humans and automation:
- Provide an executable
.wt/setupthat runsmake setup(or equivalent) - Keep it idempotent and non-interactive
Naming And Collisions
- Pick a unique repo and command/binary name.
- Avoid collisions with common system commands and common package names.
- If the name is generic, add an org/team prefix.
Filesystem Layout (XDG)
If the project stores user config/data:
- Config:
$XDG_CONFIG_HOME/{app}(fallback~/.config/{app}) - Data/state/artifacts (non-git-managed):
$XDG_DATA_HOME/{app}(fallback~/.local/share/{app})
Avoid OS-specific special cases unless the ecosystem requires it.
Related Skills
agentic-cli-design: deep guidance for agent/automation-friendly CLIs (JSON mode, exit codes, non-interactive)rust-cli: Rust-specific CLI implementation patterns (clap/anyhow/tracing/serde_json, cargo-release)