doing-a-simple-two-sta…
Use when analyzing a large corpus of text, code, or data that exceeds a single agent's effective context - orchestrates parallel…
Use when writing, reviewing, or modifying Rust code - covers error handling with thiserror+miette, type system patterns, async and serde conventions, testing crates, dependency pinning, and module organization
Claude Code
$ npx -y skills add ed3dai/ed3d-plugins --skill howto-code-in-rust --agent claude-code
Codex
$ npx skills add ed3dai/ed3d-plugins --skill howto-code-in-rust -a codex -y
Cursor
$ npx skills add ed3dai/ed3d-plugins --skill howto-code-in-rust -a cursor -y
Gemini CLI
$ npx skills add ed3dai/ed3d-plugins --skill howto-code-in-rust -a gemini-cli -y
GitHub Copilot
$ npx skills add ed3dai/ed3d-plugins --skill howto-code-in-rust -a github-copilot -y
OpenCode
$ npx skills add ed3dai/ed3d-plugins --skill howto-code-in-rust -a opencode -y
Windsurf
$ npx skills add ed3dai/ed3d-plugins --skill howto-code-in-rust -a windsurf -y
name: howto-code-in-rust description: Use when writing, reviewing, or modifying Rust code - covers error handling with thiserror+miette, type system patterns, async and serde conventions, testing crates, dependency pinning, and module organization
Rust house style. Applies whenever writing, reviewing, or modifying Rust code.
The two governing values: correctness over convenience, and pragmatic incrementalism. Use the type system aggressively to make invalid states unrepresentable, then evolve the design as patterns repeat rather than building speculative abstractions.
Standard pairing: `thiserror` for structured error enums, `miette` for user-facing diagnostics with source spans, help text, and related errors. They are complementary -- `thiserror` defines the shape, `miette` adds the diagnostic layer on top.
#[derive(Debug, thiserror::Error, miette::Diagnostic)]
enum ConfigError {
#[error("failed to parse config at {path}")]
#[diagnostic(help("check that the file is valid TOML"))]
Parse { path: String, #[source] source: toml::de::Error },
}Rules:
Encode invariants in types:
For concurrent code, use message passing or the actor model to avoid data races rather than shared mutable state behind locks.
When you encounter an unfamiliar crate, an unclear API, or a build problem you cannot immediately diagnose, use research agents rather than iterating by trial and error. Speculative iteration wastes build cycles and context.
These run in isolated context and return summaries, so they do not pollute working context.
Tests must never silently skip. If a test requires an environment variable, API key, fixture file, or any other external input, it must **fail with a clear error message** when that input is unavailable. Never use patterns like `let Some(...) = ... else { return }` or `#[ignore]` or early-return guards that turn a missing dependency into a silent pass. A green test suite must mean every test actually ran and verified something. If a test cannot run, it must be red, not invisible.
| Crate | Purpose | |-------|---------| | `test-case` | Parameterized tests. Annotate a single function with multiple input/output cases. | | `proptest` | Property-based testing. Generates random inputs to find edge cases you would not write by hand. | | `insta` | Snapshot testing. Captures complex output and diffs against stored snapshots. | | `pretty_assertions` | Better assertion output. Colored diffs instead of raw `Debug` output on failure. |
Ed's repo of Claude Code plugins, centered around a research-plan-implement workflow. Only a tiny bit cursed. If you're lucky.
Use when analyzing a large corpus of text, code, or data that exceeds a single agent's effective context - orchestrates parallel…
Use when creating a new Claude Code plugin or setting up plugin structure - provides complete file organization, manifest format,…
Use when creating specialized subagents for Claude Code plugins or the Task tool - covers description writing for…
Use when creating, releasing, or maintaining a Claude Code Plugin Marketplace - covers marketplace.json schema, version…
Use when completing development phases or branches to identify and update CLAUDE.md or AGENTS.md files that may have become stale…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.