Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
hashintel avatar

Managing Cargo Dependencies

  • 2 installs
  • 1.6k repo stars
  • Updated August 5, 2026
  • hashintel/hash

Provides Cargo.toml dependency management patterns for the HASH workspace: adding, updating, version pinning, and default features.

About

Guides adding and organizing dependencies in Cargo.toml within the HASH workspace structure, covering version pinning, default features, and public dependencies. A developer uses it when managing crates in the HASH monorepo.

  • Uses workspace.dependencies and section organization
  • Covers default-features config and public vs private deps

Managing Cargo Dependencies by the numbers

  • 2 all-time installs (skills.sh)
  • +1 installs in the week ending Aug 2, 2026 (Skillselion tracking)
  • Ranked #101 of 121 Rust skills by installs in the Skillselion catalog
  • Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/hashintel/hash --skill managing-cargo-dependencies

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs2
repo stars1.6k
Last updatedAugust 5, 2026
Repositoryhashintel/hash

What it does

Provides Cargo.toml dependency management patterns for the HASH workspace: adding, updating, version pinning, and default features.

Files

SKILL.mdMarkdownGitHub ↗

Cargo Dependencies Management

Guidance for adding and managing dependencies in Cargo.toml files within the HASH repository's workspace structure.

Core Principles

HASH uses a strict workspace dependency pattern:

DO:

  • Add external dependencies to workspace root [workspace.dependencies]
  • Use caret version specifiers (e.g., version = "1.0.0" = ^1.0.0)
  • Set default-features = false for all dependencies unless specifically needed
  • Use workspace = true in package Cargo.toml
  • Organize dependencies into 4 sections with comment headers
  • Use public = true for dependencies exposed in public API
  • Align dependency names using spaces for readability

DON'T:

  • Add version numbers directly in package Cargo.toml
  • Use exact versions with = prefix (e.g., =1.0.0) in workspace root
  • Enable default-features without considering impact
  • Mix different dependency types without section comments
  • Forget public = true for dependencies exposed in public API

Quick Reference

The 4-Section Pattern

Every 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.

Quick Add Process

1. Check workspace root - Is dependency already there? 2. Add to workspace if needed - With caret version 1.2.3 3. Determine section - Public workspace/third-party or private? 4. Add to package - Use workspace = true (+ public = true if needed)

Detailed Guides

Choose the guide that matches the task:

workspace-setup.md

Use when: Adding new dependencies to workspace root

  • How to add external crates to workspace
  • Version pinning with exact versions
  • Default features configuration
  • Workspace member paths

package-dependencies.md

Use when: Adding dependencies to a package Cargo.toml

  • The 4-section organizational structure
  • Public vs private dependencies
  • When to use public = true
  • Alignment and formatting rules
  • Feature configuration

examples-reference.md

Use when: Looking for real examples from HASH codebase

  • Complete examples from @local/codec
  • Complete examples from @local/hashql/core
  • Optional dependencies pattern
  • dev-dependencies structure

Common Patterns

Adding a New External Dependency

# 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 }

Making a Dependency Public

# Use when the dependency appears in your public API
serde = { workspace = true, public = true, features = ["derive"] }
tokio = { workspace = true, public = true }

Optional Dependencies

[dependencies]
serde = { workspace = true, optional = true, features = ["derive"] }

[features]
serde = ["dep:serde", "other-dep/serde"]

References

  • workspace-setup.md - Workspace root configuration
  • package-dependencies.md - Package dependency structure
  • examples-reference.md - Real codebase examples
  • Workspace Cargo.toml - Root workspace configuration
  • hash-codec/Cargo.toml - Reference example
  • hashql-core/Cargo.toml - Reference example

Related skills

Rustbackend

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.