Migrate Core Code to Submodules
tinyhumansai/openhuman
Plans and carries out moving non-host-specific code and its tests from the OpenHuman core into vendored tiny submodule libraries, then releases the submodule and re-pins the host.
HASH Rust coding style. An agent skill from hashintel/hash.
$ npx skills add hashintel/hash --skill rust-coding-style -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install hashintel/hash rust-coding-style --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/hashintel/hash.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/rust-coding-style .claude/skills/rust-coding-style && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "rust-coding-style" agent skill from https://github.com/hashintel/hash/tree/main/.agents/skills/rust-coding-style into .claude/skills/rust-coding-style/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "rust-coding-style", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/hashintel/hash/tree/main/.agents/skills/rust-coding-styleType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add hashintel/hash --skill rust-coding-style -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install hashintel/hash rust-coding-style --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/hashintel/hash.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/rust-coding-style .agents/skills/rust-coding-style && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "rust-coding-style" agent skill from https://github.com/hashintel/hash/tree/main/.agents/skills/rust-coding-style into .agents/skills/rust-coding-style/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "rust-coding-style", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add hashintel/hash --skill rust-coding-style -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install hashintel/hash rust-coding-style --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/hashintel/hash.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/rust-coding-style .cursor/skills/rust-coding-style && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "rust-coding-style" agent skill from https://github.com/hashintel/hash/tree/main/.agents/skills/rust-coding-style into .cursor/skills/rust-coding-style/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "rust-coding-style", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/hashintel/hash.git --path .agents/skills/rust-coding-style--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add hashintel/hash --skill rust-coding-style -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install hashintel/hash rust-coding-style --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/hashintel/hash.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/rust-coding-style .gemini/skills/rust-coding-style && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "rust-coding-style" agent skill from https://github.com/hashintel/hash/tree/main/.agents/skills/rust-coding-style into .gemini/skills/rust-coding-style/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "rust-coding-style", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install hashintel/hash rust-coding-styleInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add hashintel/hash --skill rust-coding-style -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/hashintel/hash.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/rust-coding-style .github/skills/rust-coding-style && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "rust-coding-style" agent skill from https://github.com/hashintel/hash/tree/main/.agents/skills/rust-coding-style into .github/skills/rust-coding-style/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "rust-coding-style", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add hashintel/hash --skill rust-coding-style -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install hashintel/hash rust-coding-style --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/hashintel/hash.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/rust-coding-style .opencode/skills/rust-coding-style && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "rust-coding-style" agent skill from https://github.com/hashintel/hash/tree/main/.agents/skills/rust-coding-style into .opencode/skills/rust-coding-style/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "rust-coding-style", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
rust-coding-styleHASH Rust coding style. An agent skill from hashintel/hash.
Rust Coding Style is an agent skill from hashintel/hash. HASH Rust coding style. Use when writing or reviewing Rust code, choosing types, imports, function arguments, or naming.
Its SKILL.md is about 2.2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Development. It works with Rust. The repository describes itself as: 🚀 The open-source, multi-tenant platform for self-building knowledge graphs and simulation. The licence is AGPL-3.0.
Read from SKILL.md and the folder at commit e189ab2. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
cargoFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Rust Coding Style loads about 2.2k tokens when it runs. Until then it costs about 35 tokens; SKILL.md has 822 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from hashintel/hash at commit e189ab2, republished under its AGPL-3.0 licence (© hashintel). 822 words, ~2,223 tokens.
.claude/skills/rust-coding-style/SKILL.md (or your agent's skills folder).derive_more over manual trait implementations#[cfg(feature = "...")] patterncargo clippy with --all-features, --all-targets, and --no-deps from the rootcargo doc --no-deps --all-features for checking documentationrustfmt to format the code#[expect(lint, reason = "...")] over #[allow(lint)]pub)#[derive(Debug, Copy, Clone, Eq, Hash, PartialEq, derive_more::Display)]
pub struct UserId(Uuid);impl Future<Output = T> + Send in trait definitions:fn get_data(
&self,
id: String,
) -> impl Future<Output = Result<Data, Report<DataError>>> + Send {
async move {
// Implementation
}
}const whenever possible.impl AsRef<str> instead of &str or &Stringimpl AsRef<Path> instead of &Path or &PathBufimpl IntoIterator<Item = &T> when only iterating over the data&[T] instead of &Vec<T>&mut [T] instead of &mut Vec<T> when the function doesn't need to resize the vectorimpl Into<Cow<T>> instead of Cow<T>impl Into<Arc<T>> instead of Arc<T>impl Into<Rc<T>> instead of Rc<T>impl Into<Box<T>> instead of Box<T>impl Into<Option<_>> as from reading the caller site, it's not visible that None could potentially be passedFrom and IntoFrom implementations over Into implementations. The Rust compiler will automatically derive Into from From, but not vice versa.from method over into for clarity. The from method makes the target type explicit in the code, while into requires type inference.Cow, Arc, Rc, Report, and Box, prefer using explicit constructors (e.g., Cow::from, Arc::new) instead of .into(). This improves readability by clearly indicating the target type.Arc and Rc, always use Arc::clone(&pointer) and Rc::clone(&pointer) instead of pointer.clone(). This explicitly indicates you're cloning the reference, not the underlying data.#[tracing::instrument]tracing macros (e.g., trace!, debug!, info!, warn!, error!) instead of println! or eprintln! for loggingVec in a loop instead of creating a new one in each iteration.For example:
struct UserId(u64); // instead of `type UserId = u64;` or `u64`When suggesting names for variables, functions, or types:
test_, this would otherwise result in test::test_<name> names.Http or Json is acceptable, but Ctx instead of Context is not)users instead of usersList)user instead of userUser)similar_asserts for test assertionsinsta for snapshot teststest_log for better test output (#[test_log::test])tracing macros, not log macrostracing::instrument for function instrumentationuse super::*;, or use crate::module::*;use crate::prelude::*core over alloc over std for imports to minimize dependenciescore for functionality that doesn't require allocationalloc when you need allocation but not OS-specific featuresstd when necessary for OS interactions or when using core/alloc would be unnecessarily complexuse foo::Bar; let x = Bar::new()) over fully qualified paths (let x = foo::Bar::new()) for frequently used typespub use re-exports in module roots to create a clean public APIuse module::Trait as _; when you only need the trait's methods and not the trait name itself// Good - Importing a trait just for its methods:
use std::io::Read as _;
// Example with trait methods:
fn read_file(file: &mut File) -> Result<String, std::io::Error> {
// Read methods available without importing the Read trait name
let mut content = String::new();
file.read_to_string(&mut content)?;
Ok(content)
}
// Bad - Directly importing trait when only methods are needed:
use std::io::Read;
// Good - Importing trait for implementing it:
use std::io::Write;
impl Write for MyWriter { /* implementation */ }
// Bad - Wildcard import:
mod tests {
use super::*; // Wildcard import
#[test]
fn test_something() {
// Test implementation
}
}
// Good - Explicit imports:
mod tests {
use crate::MyStruct;
use crate::my_function;
#[test]
fn test_something() {
// Test implementation
}
}
// Bad - Local import:
fn process_data() {
use std::collections::HashMap; // Local import
let map = HashMap::new();
// Implementation
}
// Good - Module-level import:
use std::collections::HashMap;
fn process_data() {
let map = HashMap::new();
// Implementation
}
// Bad - Using std when core would suffice:
use std::fmt::Display;
// Good - Using core for non-allocating functionality:
use core::fmt::Display;
// Bad - Using std when alloc would suffice:
use std::collections::BTreeSet;
// Good - Using alloc for allocation without full std dependency:
use alloc::vec::Vec;
// Appropriate - Using std when needed:
use std::fs::File; // OS-specific functionality requires stdexpect() messages should follow the format "should ..." to clearly indicate the expected behaviorFor example:
// Bad:
assert_eq!(result, expected); // This should match the expected value
// Good:
assert_eq!(result, expected, "Values should match expected output");
// Bad:
some_value.expect("The value is not None"); // This should never happen
// Good:
some_value.expect("should contain a valid value");© hashintel, AGPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .agents/skills/rust-coding-style of hashintel/hash.
Open the folder on GitHubat commit e189ab2
Rust Coding Style next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Rust Coding Style this skillhashintel/hash | 1.7k | — | ~2.2k | Automated safety check: Pass | AGPL-3.0 | |
| Migrate Core Code to Submodulestinyhumansai/openhuman | 41k | — | ~2.6k | Automated safety check: Pass | GPL-3.0 | |
| Rust Best Practicesfarm-fe/farm | 5.6k | 3 repos | ~1.1k | Automated safety check: Pass | MIT | |
| OpenLogi macOS Permissions TriageAprilNEA/OpenLogi | 23k | — | ~2.5k | Automated safety check: Notes | Apache-2.0 | |
| RTK Rust Design Patternsrtk-ai/rtk | 83k | — | ~1.9k | Automated safety check: Pass | Apache-2.0 | |
| Release Skillsnexmoe/eve | 421 | 3 repos | ~3.3k | Automated safety check: Pass | None |
tinyhumansai/openhuman
Plans and carries out moving non-host-specific code and its tests from the OpenHuman core into vendored tiny submodule libraries, then releases the submodule and re-pins the host.
farm-fe/farm
Guide for writing idiomatic Rust code based on Apollo GraphQL's best practices handbook.
AprilNEA/OpenLogi
Decides whether an OpenLogi device problem on macOS is a privacy-permission (TCC) problem, using agent log lines, and says which identity needs which grant.
rtk-ai/rtk
Describes seven Rust design patterns for the RTK CLI filter modules, with when to use each, RTK examples, and notes on when a pattern is overkill.
nexmoe/eve
Universal release workflow. An agent skill from nexmoe/eve.
teambit/bit
Work on the pnpm Rust engine (@pnpm/napi, the pacquet crates) that bit install runs through.
hashintel/hash
Rust documentation practices for HASH codebase. An agent skill from hashintel/hash.
hashintel/hash
HASH error handling patterns using error-stack crate. An agent skill from hashintel/hash.
hashintel/hash
Cargo.toml dependency management patterns for HASH workspace.
hashintel/hash
HashQL testing strategies including compiletest (UI tests), unit tests, and snapshot tests.
hashintel/hash
HashQL diagnostic writing patterns using hashql-diagnostics crate.
hashintel/hash
HashQL J-Expr syntax for writing queries. An agent skill from hashintel/hash.
Works with
Categories
HASH Rust coding style. An agent skill from hashintel/hash. Rust Coding Style is an agent skill from hashintel/hash. HASH Rust coding style.
Rust Coding Style fits situations like: reviewing Rust code; function arguments.
Run `npx skills add hashintel/hash --skill rust-coding-style -a claude-code`. Or copy the skill folder (.agents/skills/rust-coding-style in hashintel/hash) into .claude/skills/rust-coding-style in your project. Claude Code loads it when a task matches its description.
Run `npx skills add hashintel/hash --skill rust-coding-style -a codex`. Or copy the skill folder (.agents/skills/rust-coding-style in hashintel/hash) into .agents/skills/rust-coding-style in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add hashintel/hash --skill rust-coding-style -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/rust-coding-style, .gemini/skills/rust-coding-style, .github/skills/rust-coding-style and .opencode/skills/rust-coding-style in your project.
Going by SKILL.md and its folder, Rust Coding Style needs the command-line tools its instructions call (cargo).
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Rust Coding Style is published under the AGPL-3.0 licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.2k tokens (SKILL.md is roughly 8.9k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Rust Coding Style: Migrate Core Code to Submodules (tinyhumansai/openhuman, 41k stars), Rust Best Practices (farm-fe/farm, 5.6k stars), OpenLogi macOS Permissions Triage (AprilNEA/OpenLogi, 23k stars) and RTK Rust Design Patterns (rtk-ai/rtk, 83k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
hashintel (a GitHub organization) maintains it in hashintel/hash, which has 1,668 GitHub stars. The repository holds 17 skills in this directory. The repository was last updated on October 7, 2026.
Source: hashintel/hash on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.