What a Well-Kept Repository Ships

A checklist for what a well-maintained repository should ship, in its documentation, its code, and its automation.

How to use it: not every repo needs every item. Items marked (A) are advanced, worth it for OSS projects, monorepos, or anything with external contributors. Everything unmarked is the baseline.

Sections marked conditional only apply when the repo is that kind of project (an HTTP service, a containerized app, a Kubernetes workload).

Index #

1. Documentation #

1.1 README.md #

1.2 Governance and policy files #

1.3 Deeper docs (docs/) #

1.4 Changelog and releases #

2. Code #

2.1 Layout and conventions #

2.2 Configuration #

2.3 Single source of truth / generated code (A) #

3. Testing #

3.1 Unit tests #

3.2 Integration and end-to-end #

3.3 Performance and robustness (A) #

3.4 Coverage #

4. API artifacts (conditional: HTTP/gRPC services) #

5. Build and runtime (conditional: containerized apps) #

5.1 Docker #

5.2 Docker Compose #

5.3 Kubernetes (conditional) #

6. CI/CD #

6.1 Basic checks #

6.2 Security #

6.3 Dependencies #

6.4 Repository automation (A) #

7. Repository metadata #

Minimum viable set #

If you only do ten things, do these:

  1. README that gets someone running locally in under five minutes
  2. LICENSE
  3. CONTRIBUTING.md
  4. .env.example committed, secrets out of the repo
  5. Unit tests with a coverage threshold enforced in CI
  6. Lint + format enforced in CI
  7. Multi-stage Dockerfile and a one-command docker-compose up
  8. CHANGELOG.md and tagged releases
  9. Dependency and vulnerability scanning
  10. Branch protection with required checks

"only knowledge frees man" — E.C.