MCPInstall

rust-embedded

Design, implement, review, and validate embedded Rust firmware, including nostd, targets, runtime and startup, embedded-hal drivers, interrupts, DMA, shared state, async executors, hardware mocks, cross-compilation, flashing, and hardware acceptance evidence. Use when users ask about MCU firmware, portable drivers, HAL versions, bare-metal targets, interrupts, Embassy, RTIC, probe-rs, or embedded testing.

Installs
93
Last 24h
—
Trending rank
—
Security
Not audited

Install

Works with every agent the skills CLI supports.

npx skills add https://github.com/full-stack-skills/rust-skills --skill rust-embedded
  1. 01

    Install

    Run the command in your project. The CLI asks which agents to install for.

  2. 02

    Describe the task

    Ask your agent for something this skill covers. It loads rust-embedded automatically when relevant.

  3. 03

    Review the result

    The agent follows the SKILL.md steps, scripts and references bundled with the skill.

SKILL.md

The instructions your agent reads when the skill is triggered.

Rust Embedded Firmware Delivery

Establish hardware facts first, then select abstractions and frameworks. Do not treat example code for a specific development board as portable; do not claim firmware is usable without hardware evidence.

Determine Task Type

Distinguish between the following deliverables:

  1. Portable no_std Library or Driver: Core logic should be tested on host using mock HALs.
  2. Specific MCU/Development Board Firmware: Requires target, runtime, HAL/PAC, memory layout, burn tooling, and hardware acceptance testing.
  3. Board Support or Boot Code: Focuses on linking, startup, clocks, pins, and safety invariants.
  4. Embedded Linux Application: Typically uses std; handle as CLI, Web, or concurrency application unless device interface or cross-compilation is involved.

Mandatory Hardware Contracts

Confirm and record before modification:

  • Exact MCU model, architecture, development board revision, peripheral connections;
  • Rust target triple, toolchain/MSRV, build profile;
  • Actual versions of runtime, HAL, PAC, BSP, embedded-hal, and execution framework;
  • Flash/RAM start addresses, capacity, bootloader source, linker script origin;
  • Debug probes, transmission protocol, burn tools, permissions;
  • Clocks, pin multiplexing, voltage, bus address/mode/frequency;
  • Concurrency model: bare-metal interrupts, critical sections, RTIC, Embassy, or others;
  • Observability channels: defmt, UART, RTT, LEDs, logic analyzers, etc.;
  • Real hardware acceptance steps and security constraints.

Do not fabricate values when chip memory layout or pin configuration is uncertain. Prioritize reading existing BSPs, datasheets, reference manuals, and locked documentation from the project repository.

Workflow

1. Establish Build Baseline and Hardware Foundation

Check repository configuration, target selection, and dependency sources:

rustc --version --verbose
rustup target list --installed
cargo metadata --format-version 1
cargo tree -e features

Locate .cargo/config.toml, linker parameters, memory.x/linker script, build.rs, runner, chip feature flags, and existing burn commands. Recreate the current build or save failure logs first.

When selecting target, runtime, or memory layout, read Target and Runtime.

2. Establish Minimum Boot Path

Ensure minimum firmware builds correctly on a specific target to produce checkable images before integrating complex peripherals:

Reset/Startup Code
    -> Initialize Memory and Runtime
    -> Initialize Clocks and Required Peripherals
    -> Enter Unique Application Entry Point
    -> Produce Observable Heartbeat or Diagnostics
  • Bare-metal binaries typically use #![no_std]; whether to use #![no_main] depends on the runtime.
  • Use only alloc after providing a global allocator, memory space, and failure strategies.
  • Panic policies must suit both device constraints and debugging environments.
  • Memory layout must derive from chip/BSP/bootloader facts rather than copying example code from other development boards; do not hardcode single architecture assumptions for Cortex-M, RISC-V, or others.

3. Separate Portable Logic from Board Wiring

Recommended boundaries:

Pure Domain Logic (No Hardware Dependencies)
    -> portable driver (core + embedded-hal traits)
    -> board adapter (specific HAL/PAC, pins, clocks)
    -> firmware binary (startup, tasks, failure strategies)
  • Portable drivers depend on embedded-hal trait but not specific PAC singletons.
  • Board layers handle real peripherals and configure pins, clocks, and DMA.
  • Direct access to PAC is reserved for cases where HAL cannot express startup or performance needs; do not silently discard GPIO, bus, or protocol failures using .ok().
  • Document safety assumptions for registers, DMA, bare-metal pointers, and FFI in SAFETY comments, then review deeply with rust-unsafe-ffi.

4. Select a Concurrency Model

Do not arbitrarily mix bare-metal interrupts, multiple executors, or different resource locking models within the same firmware.

  • Bare-Metal Interrupts: Ensure ISRs are bounded, non-blocking, and minimize allocations; delegate work to main loop or tasks.
  • Critical Sections: Minimize interrupt masking time, explicitly define priority inversion and nesting semantics.
  • RTIC: Verify resource locking versions, priorities, and task APIs against the lock version.
  • Embassy: Confirm executor configuration, time drivers, chip integration, and cancellation behavior.
  • DMA: Buffer ownership and transmission lifecycles must be constrained by types or clear invariants.

When HAL, shared state, or framework selection is required, read HAL and Concurrency. Complex language-level concurrency semantics should use rust-concurrency.

5. Increase Observability and Failure Strategies

  • Provide recoverable log/probe paths for development builds;
  • Do not let logging timing obscure interrupt or real-time issues; Distinguish between developer panic scenarios, hardware watchdog reset events, and production graceful degradation strategies.
  • Preserve context for sensor timeouts, bus errors, checksum failures, peripheral unavailability.

Do not leak device keys, pairing credentials, or sensitive identifiers in logs.

6. Layered Verification

Verify from fastest to slowest:

  1. Host unit tests on pure logic;
  2. Use mock embedded-hal for driver protocol and error path testing;
  3. Cross-compile all relevant features/profiles against the real target;
  4. Check ELF, sections, symbols, image size, stack/heap budgets;
  5. Burn and save probe/UART logs;
  6. Verify pins, buses, timing, interrupts, reset paths on real hardware;
  7. Use oscilloscopes or logic analyzers to confirm electrical and timing facts when needed.

Complete evidence list available in Hardware Validation.

Common Gateways

Replace <target> and <package> based on repository configuration:

cargo fmt --all -- --check
cargo test -p <portable-package> --all-targets
cargo clippy -p <portable-package> --all-targets -- -D warnings
cargo build -p <firmware-package> --target <target> --release
cargo size -p <firmware-package> --target <target> --release

cargo size requires the project to be installed and cargo-binutils; otherwise, use existing ELF/section check tools in the repository. Only execute burn or run commands if the runner is configured for that target and hardware goals are confirmed. Burning changes device state; parse exact targets first and adhere strictly to user authorization scopes.

Completion Criteria

  • Hardware contracts, dependency versions, memory layout sources clearly defined;
  • Portable logic separated from board code with errors not silently swallowed;
  • Host tests and cross-compilation against target pass;
  • Concurrency, DMA, registers, or unsafe invariants documented;
  • Image size and resource budgets checked;
  • Real hardware acceptance has log/measure evidence.

Mark "Build Verification Only" if no real hardware is available during verification.

Handoff Boundaries

Primary IssueAssigned To
Bare pointers, MMIO, FFI, safety encapsulation invariantsrust-unsafe-ffi
Async, cancellation, Send/Sync and general concurrency semanticsrust-concurrency
Host tests, attribute tests, coverage or benchmarksrust-testing
Target configuration, feature flags, build scriptsrust-cargo-build
Language ownership, traits, errors, and core APIrust-stable

On-Demand Resources

  • Target and Runtime: Read when confirming target, startup, or memory layout.
  • HAL and Concurrency: Read while writing driver code for interrupts, RTIC, Embassy tasks.
  • Hardware Validation: Read during build, burn, measurement, and reporting of results.
  • Scenario Examples: Read when task splitting templates are needed.
  • examples/golden-no-std/: Host-compilable, mock-testable no_std driver boundary examples.

Basis

FAQ

What does the rust-embedded skill do?

Design, implement, review, and validate embedded Rust firmware, including nostd, targets, runtime and startup, embedded-hal drivers, interrupts, DMA, shared state, async executors, hardware mocks, cross-compilation, flashing, and hardware acceptance evidence. Use when users ask about MCU firmware, portable drivers, HAL versions, bare-metal targets, interrupts, Embassy, RTIC, probe-rs, or embedded testing.

How do I install rust-embedded?

Run npx skills add https://github.com/full-stack-skills/rust-skills --skill rust-embedded in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/rust-embedded/ (personal) or .claude/skills/rust-embedded/ (project).

Which AI agents can use rust-embedded?

Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.

Is rust-embedded safe to install?

No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.

Who maintains rust-embedded?

It is published by full-stack-skills in full-stack-skills/rust-skills. It has 93 recorded installs.

More from full-stack-skills/rust-skills

View all →

rust-testing

full-stack-skills/rust-skills

Design, implement, and validate Rust tests, including unit, integration, doctest, compile-fail, property, fuzz, benchmark, coverage, async, concurrency, process, daemon, IPC, terminal, platform, and hardware-facing test strategies. Use when users ask for Rust test architecture, flaky-test diagnosis, coverage gates, benchmarks, trybuild, cargo-nextest, real-process tests, or failure-path verification.

Testing & QA148 installs

rust-concurrency

full-stack-skills/rust-skills

Open the skill to read its SKILL.md instructions.

Backend & APIs137 installs

rust-style-clippy

full-stack-skills/rust-skills

Open the skill to read its SKILL.md instructions.

Backend & APIs137 installs

rust-performance

full-stack-skills/rust-skills

Measure, profile, optimize, and regression-test Rust performance across latency, throughput, CPU, allocations, memory, binary size, and compile time using representative workloads, Criterion, iai-callgrind, cargo-flamegraph, samply, DHAT, heap or pprof tools, cargo-bloat, cargo-llvm-lines, and build timings. Use when users report slow Rust code, high memory or CPU, large binaries, noisy benchmarks, tail-latency regressions, or need performance budgets and evidence-backed optimization.

Backend & APIs135 installs

rust-code-review

full-stack-skills/rust-skills

Review Rust changes for correctness, memory and thread safety, error semantics, unnecessary allocation or cloning, lock scope, API compatibility, test gaps, documentation, and dependency risk, applying the Rust API Guidelines checklist (C-PANIC, C-UNWRAP, C-TRANSMUTE, C-BOOL, C-NEWTYPE, C-COMMON-TRAITS, C-CONVERT, C-SEALED, C-NON-EXHAUSTIVE). Use when reviewing Rust diffs, pull requests, libraries, unsafe boundaries, or production incidents; report actionable findings by severity before summaries, route automated formatting or lint policy to rust-style-clippy, and route API shape decisions (trait sealing, error taxonomy, newtype design, builder patterns) to rust-api-design.

rust-cargo-build

full-stack-skills/rust-skills

Open the skill to read its SKILL.md instructions.

Backend & APIs123 installs

Popular backend & apis skills

View category →

find-skills

vercel-labs/skills

Helps users discover and install agent skills when they ask questions like "how do I do X", "find a skill for X", "is there a skill that can...", or express interest in extending capabilities. This skill should be used when the user is looking for functionality that might exist as an installable skill.

OfficialBackend & APIs4.1M installs

entra-app-registration

microsoft/azure-skills

Guides Microsoft Entra ID app registration, OAuth 2.0 authentication, and MSAL integration. USE FOR: create app registration, register Azure AD app, configure OAuth, set up authentication, add API permissions, generate service principal, MSAL example, console app auth, Entra ID setup, Azure AD authentication. DO NOT USE FOR: Key Vault secrets (use azure-keyvault-expiration-audit), general Azure resource security guidance.

OfficialBackend & APIs566.7K installs

This skill should be used when the user wants to "write agent code", "build an agent with ADK", "add a tool", "create a callback", "define an agent", "use state management" — in a project that needs ADK (Agent Development Kit) API patterns and code examples. It provides a quick reference for agent types, tool definitions, orchestration patterns, callbacks, state management, the graph Workflow API, and reference recipes to study. Do NOT use for scaffolding (use google-agents-cli-scaffold) or deployment (use google-agents-cli-deploy).

Backend & APIs514.8K installs

embedded-captions

heygen-com/hyperframes

Add captions or subtitles to an existing single-subject talking-head video without editing the footage. Use for plain verbatim captions, cinematic captions embedded behind the subject, VFX captions, “炸/特效/酷炫字幕,” or a named identity from the 35-style catalog. Route by visual identity, not by backend engine. The quiet anchor rail is the default; embed every word only when the user explicitly wants a fully cinematic treatment. The workflow runs locally end to end, including transcription and subject matting; split multi-shot footage before applying it.

Backend & APIs453.3K installs

entra-agent-id

microsoft/azure-skills

Provision Microsoft Entra Agent Identity Blueprints, BlueprintPrincipals, and per-instance Agent Identities via Microsoft Graph, and configure OAuth 2.0 token exchange (fmipath, OBO, cross-tenant) including the Microsoft Entra SDK for AgentID sidecar. USE FOR: Agent Identity Blueprint, BlueprintPrincipal, agent OAuth, fmipath token exchange, agent OBO, Workload Identity Federation for agents, polyglot agent auth, Microsoft.Identity.Web.AgentIdentities. DO NOT USE FOR: standard Entra app registration (use entra-app-registration), Microsoft Foundry agent authoring (use microsoft-foundry).

OfficialBackend & APIs336.6K installs

neon

neondatabase/agent-skills

Overview of Neon, a complete set of cloud backend primitives around Lakebase Postgres: Auth, Object Storage, Functions, the AI Gateway, and Realtime. Start here to choose Neon for undecided login, files, APIs, and LLM calls, set up the CLI or MCP server, and follow the branch-first workflow. Use when building an app or backend on Neon, or when "Neon" or "Lakebase Postgres" is mentioned. Child skill neon-postgres wins for an existing DATABASEURL, SQL, schema, inspect, or search. Child skill neon-auth wins for login, users, sessions, identity routing, and Managed Better Auth setup. Child skill neon-realtime wins for live queries in reactive apps and agents. Also use for object storage, S3, buckets, serverless functions, function triggers, cron, AI gateway, LLM calls, realtime, logs, Loki, Grafana, observability, postgres, database, backend, Claimable Neon, neon.new, or a no-signup database.

Backend & APIs237.1K installs