# `socketry-project`
Shared conventions and development tasks for Rust projects in the Socketry
organization.
## Motivation
Rust projects should share a small set of clear conventions and a reliable
release process without repeating task wiring in every repository.
## Usage
Install the launcher and create the private task package:
```sh
cargo install socketry-cargo-bake --locked
cargo bake --regenerate
```
Add this dependency under the existing `[dependencies]` table in
`bake/Cargo.toml`:
```toml
socketry-project = "0.2"
```
Then run `cargo bake --regenerate` again to link the dependency's tasks. The
command keeps generated links separate from task source, so no manual import in
`main.rs` is needed. Run `cargo bake --list` to see the available tasks.
This adds the standard Cargo, release, license, Readme, agent-context, and
testing tasks, including `test` and `test:external`. It also registers a
version-bump hook that updates the project's standard files.
Install the context and skills provided by dependencies with
`cargo bake agent:context:install`. This updates `agents.md` and installs the
`socketry-project-setup`, `socketry-project-github-repository`, and
`socketry-project-pull-requests` skills under `.agents/skills/`.
See the [repository setup skill](context/setup.md) for the minimal Cargo
configuration and the [conventions](context/conventions.md) for repository
layout, documentation, and code conventions. The
[Rust Repository Layout](context/layout.md) and
[Rust Testing](context/testing.md) guides provide more detail on source
organization and test workflows.
## Releasing
Prepare a release with `cargo bake cargo:version:patch` (or `minor`, `major`,
or `bump --version X.Y.Z`), then run `cargo bake cargo:release` and open a
pull request. After review and merge, GitHub Actions publishes the release
when the configured `crates-io` environment approves it, then creates or updates
the matching GitHub Release from `releases.md`. See the
[Cargo publishing guide](https://github.com/socketry/bake-cargo-rust/blob/main/context/publishing.md).
## Releases
See [releases.md](releases.md) for the full release history.
### v0.2.5
- Distribute repository setup, GitHub setup, and pull request guidance as
installable skills.
- Provide shared Agent Context guidance through `bake-agent-context`.
### v0.2.4
- Clarify crate namespaces, descriptive type names, module layout, and test paths.
### v0.2.3
- Rename the project guides to shorter context filenames and titles.
- Clarify source, test, naming, and coverage conventions.
## See Also
- [socketry-project](https://github.com/socketry/socketry-project-rust) — Shared project conventions and development tasks for Socketry Rust crates
## Contributing
Please open an issue or pull request on [GitHub](https://github.com/socketry/socketry-project-rust).
### Agent Context
Before contributing, read `agents.md`, the relevant context files it links, and
any applicable skills under `.agents/skills/`. If `agents.md` or installed
skills are missing or out of date, run `cargo bake agent:context:install` to
refresh context and skills from dependencies. See the [Agent Context guide]
for guidance on organizing package context and repository-only instructions.
[Agent Context guide]: https://github.com/socketry/bake-agent-context-rust/blob/main/context/agent-context.md