Cargo.toml dependency management patterns for HASH workspace. Use when adding, updating, or removing dependencies, organizing Cargo.toml sections, configuring version pinning and default features, or managing public dependencies.
69
86%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Guidance for adding and managing dependencies in Cargo.toml files within the HASH repository's workspace structure.
HASH uses a strict workspace dependency pattern:
✅ DO:
[workspace.dependencies]version = "1.0.0" = ^1.0.0)default-features = false for all dependencies unless specifically neededworkspace = true in package Cargo.tomlpublic = true for dependencies exposed in public API❌ DON'T:
= prefix (e.g., =1.0.0) in workspace rootdefault-features without considering impactpublic = true for dependencies exposed in public APIEvery package Cargo.toml must organize dependencies into these sections:
[dependencies]
# Public workspace dependencies
hash-graph-types = { workspace = true, public = true }
hashql-core = { workspace = true, public = true }
# Public third-party dependencies
serde = { workspace = true, public = true, features = ["derive"] }
tokio = { workspace = true, public = true }
# Private workspace dependencies
error-stack = { workspace = true }
hash-codec = { workspace = true }
# Private third-party dependencies
tracing = { workspace = true }
regex = { workspace = true }Keep all 4 section comments even if a section is empty.
1.2.3workspace = true (+ public = true if needed)Choose the guide that matches the task:
Use when: Adding new dependencies to workspace root
Use when: Adding dependencies to a package Cargo.toml
public = trueUse when: Looking for real examples from HASH codebase
@local/codec@local/hashql/core# 1. Add to workspace root Cargo.toml
[workspace.dependencies]
my-crate = { version = "1.2.3", default-features = false }
# 2. Add to package Cargo.toml (appropriate section)
[dependencies]
# Private third-party dependencies
my-crate = { workspace = true }# Use when the dependency appears in your public API
serde = { workspace = true, public = true, features = ["derive"] }
tokio = { workspace = true, public = true }[dependencies]
serde = { workspace = true, optional = true, features = ["derive"] }
[features]
serde = ["dep:serde", "other-dep/serde"]4f2d2ce
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.