# Open source library > Four parts of a library people can depend on. Every node is a step with a prompt for your AI assistant. Take a package from a public repository to a release others can trust: the files a newcomer expects, a quality bar enforced in CI, releases that follow semantic versioning and the channels a community needs to report and contribute. A talent tree on Gradus (https://gradus.kazet.blog). Every step below links to its page as Markdown, with what the step means and the prompt to hand an AI assistant. The map is at https://gradus.kazet.blog/tree/open-source-library and a step's page is at https://gradus.kazet.blog/tree/open-source-library/step/. ## Start - [Public repository](https://gradus.kazet.blog/tree/open-source-library/step/public-repository.md): Create a public repository with a clear name, a one-line description and the first commit of the code. ## Project hygiene: License, README, docs - [License file](https://gradus.kazet.blog/tree/open-source-library/step/license.md): Add an OSI-approved license so people know they may use the code, and reference it from the package manifest. - [README with a quick start](https://gradus.kazet.blog/tree/open-source-library/step/readme.md): Write a README that shows the install command and a working example in the first screen, then the API in brief. - [Contributing guide](https://gradus.kazet.blog/tree/open-source-library/step/contributing-guide.md): Explain how to set up a development environment, run the tests and submit a change, so the first pull request does not need a conversation. - [API reference](https://gradus.kazet.blog/tree/open-source-library/step/api-reference.md): Generate reference documentation from the source's doc comments and publish it on every release. ## Quality bar: Tests, CI, lint, coverage - [Test suite](https://gradus.kazet.blog/tree/open-source-library/step/test-suite.md): Cover the public API with tests that run in one command, so every change can be checked the same way. - [CI across versions](https://gradus.kazet.blog/tree/open-source-library/step/ci-matrix.md): Run the tests in CI on every supported runtime version and operating system, on each push and pull request. - [Lint and type checks](https://gradus.kazet.blog/tree/open-source-library/step/lint-and-types.md): Enforce a formatter, a linter and type checks in CI so style and type errors never reach review. - [Coverage gate](https://gradus.kazet.blog/tree/open-source-library/step/coverage-gate.md): Measure test coverage in CI and fail when it drops below a threshold, so the public API stays covered. ## Releases: Versions, changelog, registry - [Semantic versioning](https://gradus.kazet.blog/tree/open-source-library/step/semantic-versioning.md): Commit to semantic versioning and state in the README which changes are breaking. - [Changelog](https://gradus.kazet.blog/tree/open-source-library/step/changelog.md): Keep a CHANGELOG.md in Keep a Changelog format, with an Unreleased section that every pull request adds to. - [Publish to the registry](https://gradus.kazet.blog/tree/open-source-library/step/registry-publish.md): Publish the package to the ecosystem's registry with only the files consumers need and verify it installs from scratch. - [Automated releases](https://gradus.kazet.blog/tree/open-source-library/step/release-automation.md): Cut releases from CI: bump the version, write the release notes from the changelog, tag and publish in one workflow. ## Community: Templates, conduct, security - [Issue and PR templates](https://gradus.kazet.blog/tree/open-source-library/step/issue-templates.md): Give bug reports and feature requests a form, and pull requests a checklist, so maintainers get what they need the first time. - [Code of conduct](https://gradus.kazet.blog/tree/open-source-library/step/code-of-conduct.md): Adopt a code of conduct and name a contact, so contributors know how disagreements are handled. - [Security policy](https://gradus.kazet.blog/tree/open-source-library/step/security-policy.md): Publish how to report a vulnerability privately and which versions receive fixes.