// Cargo.toml dependency management patterns for HASH workspace. Use when adding dependencies, managing workspace dependencies, organizing Cargo.toml sections, setting version pinning, configuring default features, or working with public dependencies.
| name | managing-cargo-dependencies |
| description | Cargo.toml dependency management patterns for HASH workspace. Use when adding dependencies, managing workspace dependencies, organizing Cargo.toml sections, setting version pinning, configuring default features, or working with public dependencies. |
This skill provides comprehensive guidance on adding and managing dependencies in Cargo.toml files within the HASH repository's workspace structure.
Automatically activates when:
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 your 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"]
Skill Status: Production-ready following Anthropic best practices ✅ Line Count: < 150 (following 500-line rule) ✅ Progressive Disclosure: 3 detailed resource files ✅