Not in the top 1,000 by GitHub stars
AmethystLuna/embedded-workbench
Embedded C/C++ AI engineering plugin — firmware skills (FreeRTOS, Keil, HardFault, state machines) + 1% Rule / Plan Verification Gate discipline | 嵌入式 C/C++ 工程 AI 插件:固件技能与 agent 纪律。 For Claude Code, Codex, Cursor, Kimi, OpenCode, ZCode and DeepSeek Harness (dsh)
History
Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.
View weekly changes
skills/c-cpp-dev/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 6df9bb29547f
No earlier version was observed for comparison.
skills/debug-methodology/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 6df9bb29547f
No earlier version was observed for comparison.
skills/embedded-firmware-dev/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 6df9bb29547f
No earlier version was observed for comparison.
skills/embedded-workbench/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 6df9bb29547f
No earlier version was observed for comparison.
skills/fact-check/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 6df9bb29547f
No earlier version was observed for comparison.
skills/hardfault-triage/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 6df9bb29547f
No earlier version was observed for comparison.
skills/keil-mdk-build/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 6df9bb29547f
No earlier version was observed for comparison.
skills/state-machine-design/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 6df9bb29547f
No earlier version was observed for comparison.
Verified commit 6df9bb29547f7feeb667151447ec842ab654d38a
git clone --filter=blob:none --no-checkout https://github.com/AmethystLuna/embedded-workbench.git .hotskills/amethystluna-embedded-workbench && git -C .hotskills/amethystluna-embedded-workbench checkout --detach 6df9bb29547f7feeb667151447ec842ab654d38a
# Copy each selected skill directory from .hotskills/amethystluna-embedded-workbench into .claude/skills/<skill-name>/git clone --filter=blob:none --no-checkout https://github.com/AmethystLuna/embedded-workbench.git .hotskills/amethystluna-embedded-workbench && git -C .hotskills/amethystluna-embedded-workbench checkout --detach 6df9bb29547f7feeb667151447ec842ab654d38a
# Copy each selected skill directory from .hotskills/amethystluna-embedded-workbench into .agents/skills/<skill-name>/git clone --filter=blob:none --no-checkout https://github.com/AmethystLuna/embedded-workbench.git .hotskills/amethystluna-embedded-workbench && git -C .hotskills/amethystluna-embedded-workbench checkout --detach 6df9bb29547f7feeb667151447ec842ab654d38a
# Copy each selected skill directory from .hotskills/amethystluna-embedded-workbench into .opencode/skills/<skill-name>/Heat
7.0- Star growth, last 7 daysNot available
- Star growth, last 24 hoursNot available
- Rank movement, last 7 daysNot available
- Commits, last 30 daysNot available
- Accounts asking about it through MCP, last 7 daysNot available
- Hot votes this weekNot available
Heat never changes the order by stars, and sponsorship never touches it. How heat works
Stars over time
30-day change not yet available: not enough history.
Individual skills in this repository
- c-cpp-dev
skills/c-cpp-dev - debug-methodology
skills/debug-methodology - embedded-firmware-dev
skills/embedded-firmware-dev - embedded-workbench
skills/embedded-workbench - fact-check
skills/fact-check - hardfault-triage
skills/hardfault-triage - keil-mdk-build
skills/keil-mdk-build - state-machine-design
skills/state-machine-design
How it works
c-cpp-dev
When your agent uses it
Use when writing, reviewing, or refactoring C/C++ code, especially on 32-bit ARM embedded targets. NOT for formatting-only changes, simple file reads, non-embedded C/C++ (desktop/server), or C#/Java despite the 'C' in the name.
What it loads into context
Frontmatter
66 tokensAlways available to the agent
SKILL.md
1,421 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Code Generation
- Memory Layout
- Heap and Pointer Ownership
- Embedded C Specifics
- Refactoring
Files
../../.claude-plugin/marketplace.jsonasset428 bytes../../.claude-plugin/plugin.jsonasset678 bytes../../hooks/hooks.jsonasset323 bytes../../hooks/hooks.jsonasset323 bytesSKILL.mdcore6,360 bytesSKILL.mdcore6,360 bytes
Read SKILL.md
<HARD-GATE>
This is a domain implementation skill. If you are planning, designing, or entering plan mode — load `Skill("embedded-workbench")` first to activate the workflow gates (Plan Verification Gate, Approval Gate, Closure Gate). Domain skills carry implementation guidance, not workflow enforcement.
</HARD-GATE>
# C/C++ Development
Language baseline is project-specific: check the project's CLAUDE.md, build system (`-std=` flags), or compiler configuration. All rules assume 32-bit ARM target unless otherwise noted.
## Code Generation
- Respect the project's configured language standard. Don't assume a default.
- When a header is shared between C and C++ translation units, never define variables in the header — not even with `static`. Use `extern` in the header and exactly one definition in a single `.c` file.
- Allow `goto` when it simplifies cleanup or reduces complexity, but use it as a maintenance tool, not a first choice.
- Place Doxygen comments in header files. Keep implementation files focused on behavior.View the complete source on GitHubdebug-methodology
When your agent uses it
Use when debugging embedded firmware issues — analyzing crash logs, investigating state machine lockups, tracing sensor/signal anomalies, or performing structured root-cause analysis after a crash has been located. For fault-register and stack-frame triage, load hardfault-triage first.
What it loads into context
Frontmatter
63 tokensAlways available to the agent
SKILL.md
1,177 tokensWhen the skill is activated
Reference documents
1,477 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Red Flags
- Iron Rules
- Fix Principles
- Exploration
- Deep Reference
Files
SKILL.mdcore5,407 bytesSKILL.mdcore5,407 bytesSKILL.mdcore5,407 bytesSKILL.mdcore5,407 bytesSKILL.mdcore5,407 bytesSKILL.mdcore5,407 bytesSKILL.mdcore5,407 bytesreferences/iterative-debug-case-study.mddoc6,988 bytes
Read SKILL.md
# Debug Methodology
Debug by tracing values, not symptoms. These patterns come from real debugging sessions where surface-level fixes failed and root-cause analysis succeeded.
**REQUIRED BACKGROUND:** If the issue involves state machines or protocol timeouts, load `Skill("state-machine-design")` first. If the issue involves FreeRTOS tasks, ISRs, or NVM storage, load `Skill("embedded-firmware-dev")` first. Understand the domain rules before applying debugging methodology.
## Red Flags
| You think | Reality |
|-----------|---------|
| "I know where the bug is, let me fix it" | You know the symptom location. The root cause is often 3 layers away in a different module. |
| "One more round of trial fixes and I'll get it" | After 2 failed attempts, you need methodology, not persistence. |
| "I'll just add a bounds check and call it done" | You're masking a symptom. The real fix is at the data source, not at every consumer. |
| "The logs look normal, it must be a hardware glitch" | If you haven't correlated timestamps to code branches, you haven't actually read the logs. |View the complete source on GitHubembedded-firmware-dev
When your agent uses it
Use when writing or reviewing embedded C firmware, FreeRTOS tasks, ISR handlers, NVM/flash storage, or sensor driver state machines. NOT for documentation-only RTOS references, conceptual RTOS discussions, or bare-metal projects without an RTOS or sensor subsystem.
What it loads into context
Frontmatter
64 tokensAlways available to the agent
SKILL.md
1,649 tokensWhen the skill is activated
Reference documents
3,433 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- FreeRTOS
- Interrupts / ISR
- Async Lifecycle Cleanup
- One-Shot Event Consumption
- Storage / Persistence
- Boundary Analysis
- Deep Reference
Files
SKILL.mdcore7,927 bytesreferences/architecture-principles.mddoc8,802 bytesreferences/embedded-patterns.mddoc4,054 bytesreferences/lvgl-pitfalls.mddoc2,706 bytes
Read SKILL.md
<HARD-GATE>
This is a domain implementation skill. If you are planning, designing, or entering plan mode — load `Skill("embedded-workbench")` first to activate the workflow gates (Plan Verification Gate, Approval Gate, Closure Gate). Domain skills carry implementation guidance, not workflow enforcement.
</HARD-GATE>
# Embedded Firmware Development
## FreeRTOS
- Give each task a clear ownership boundary. Shared resources need a deliberate synchronization strategy.
- Prefer task notifications for one-to-one wakeups, queues for data transfer, event groups for combined state, mutexes for mutual exclusion, semaphores for one-way signaling.
- Use a mutex (not binary semaphore) when mutual exclusion matters and priority inheritance is needed.
- Make every blocking wait explicit: use a timeout unless an infinite wait is deliberate.
- Keep timer callbacks short and non-blocking — use them to schedule work, not do it.
- Avoid holding locks across flash, storage, or long operations.View the complete source on GitHubembedded-workbench
When your agent uses it
Use when starting any non-trivial coding task — loads risk-proportional workflows, engineering policies, and principles for embedded C/C++ firmware development. NOT for trivial single-line fixes, formatting-only changes, or read-only queries.
What it loads into context
Frontmatter
55 tokensAlways available to the agent
SKILL.md
4,139 tokensWhen the skill is activated
Reference documents
5,545 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Instruction Priority
- Platform Adaptation
- Red Flags
- General Principles
- Proportionality
- Context Budget
- Workflows
- Plan Mode Integration
- Workflow Policies
- Skill Types
- Skill Loading Priority
- Domain Skills
- Templates & References
- Proactive Suggestions
Files
SKILL.mdcore18,423 bytesSKILL.mdcore18,423 bytesreferences/INDEX.mddoc1,071 bytesreferences/audit-ledger.mddoc475 bytesreferences/contract-matrix.mddoc444 bytesreferences/decision-log.mddoc337 bytesreferences/detailed-change-plan.mddoc962 bytesreferences/durable-requirement-notes.mddoc325 bytesreferences/final-qc.mddoc485 bytesreferences/iteration-notes.mddoc584 bytesreferences/platform-tool-mapping.mddoc13,169 bytesreferences/proactive-suggestions.mddoc2,613 bytesreferences/result-note.mddoc629 bytesreferences/steward-memo.mddoc640 bytesreferences/task-charter.mddoc565 bytes
Read SKILL.md
<SUBAGENT-STOP>
If you were dispatched as a subagent to execute a specific task (implementation, review, search), skip this bootstrap skill. You already have your task instructions. Only load domain skills relevant to your specific task.
</SUBAGENT-STOP>
# Embedded Engineering Workflow
Core workflow system and engineering principles.
## Instruction Priority
This plugin's skills and policies override default system behavior, but **user instructions always take precedence**:
1. **User's explicit instructions** (CLAUDE.md, AGENTS.md, project rules, direct requests) — highest priority
2. **Plugin skills and workflows** — override default system behavior where they conflictView the complete source on GitHubfact-check
When your agent uses it
Use when reviewing design documents, architecture specs, technical proposals, or plans that make claims about API names, file paths, enum values, counts, or mechanism feasibility — a lightweight claim-by-claim check against the codebase with evidence. Built into embedded-workbench as the fallback when the full dsh-model-everything plugin (or its predecessor logicprobe) is not installed. NOT for state machines, protocol/retry logic, or 'always'/'never' behavioral claims that need executable model verification — those require dsh-model-everything (or logicprobe).
What it loads into context
Frontmatter
122 tokensAlways available to the agent
SKILL.md
617 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- When to use
- What to verify (per claim)
- Process
- Output format
- Boundaries
Files
SKILL.mdcore2,664 bytes
Read SKILL.md
# Fact Check (fallback)
Lightweight claim verification built into this plugin. Use it when the full
`dsh-model-everything` plugin — or its predecessor `logicprobe` — is not installed.
It checks every verifiable claim in a document/plan against the codebase with
evidence, without model escalation.
## When to use
- Design docs, architecture specs, technical proposals, refactoring plans
that name APIs, types, files, enums, counts, or mechanisms.
- Proactively when a plan will be approved (plan-mode gate) and logicprobe is
unavailable.
View the complete source on GitHubhardfault-triage
When your agent uses it
Use when triaging processor exception crashes — HardFault, MemManage, BusFault, UsageFault, data/prefetch abort, illegal instruction, or watchdog timeout. Covers fault-register interpretation, stack-frame extraction, PC-to-source resolution, and root-cause classification.
What it loads into context
Frontmatter
64 tokensAlways available to the agent
SKILL.md
3,018 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Triage Methodology
- Cortex-M Fault Architecture
- Cortex-M Stack Frame Capture
- PC-to-Source Resolution
- Root-Cause Decision Tree
- Common Root Causes (Cross-Architecture)
- MAP File for Crash Debugging
- Cross-References
Files
SKILL.mdcore11,592 bytesSKILL.mdcore11,592 bytes
Read SKILL.md
# HardFault & Exception Triage
When a processor exception fires, the register file and stack frame are a black-box recording of the crash. This skill covers how to read that recording.
The methodology is architecture-agnostic. Cortex-M (ARMv7-M/v8-M) fault registers and handlers are the primary reference; the same principles apply to Cortex-A aborts, RISC-V exceptions, Xtensa exception vectors, and other MCU fault paths.
**REQUIRED BACKGROUND:** Load `Skill("debug-methodology")` for structured root-cause analysis. If the crash involves RTOS tasks or ISR context, also load `Skill("embedded-firmware-dev")`.
## Triage Methodology
Every processor exception triage follows the same four-step flow:
### Step 1 — Capture
View the complete source on GitHubkeil-mdk-build
When your agent uses it
Use when building, flashing, or packaging firmware with Keil MDK (UV4 CLI, ARMCLANG), analyzing .map files for ROM/RAM optimization and memory budget, or diagnosing Keil-specific build failures. NOT for non-Keil build systems (Makefile, CMake, IAR, GCC-only). For crash triage see hardfault-triage.
What it loads into context
Frontmatter
86 tokensAlways available to the agent
SKILL.md
3,128 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- UV4 CLI Build (Authoritative)
- Compiler Selection
- ARM Compiler 5 (armcc)
- ARM Compiler 6 (armclang)
- AC5 to AC6 Migration Traps
- Build Lifecycle
- Merge / Packaging
- Common Build Failures
- MAP File Analysis
- HardFault / Exception Triage
Files
SKILL.mdcore11,913 bytesSKILL.mdcore11,913 bytesSKILL.mdcore11,913 bytesSKILL.mdcore11,913 bytes
Read SKILL.md
<HARD-GATE>
This is a domain implementation skill. If you are planning, designing, or entering plan mode — load `Skill("embedded-workbench")` first to activate the workflow gates (Plan Verification Gate, Approval Gate, Closure Gate). Domain skills carry implementation guidance, not workflow enforcement.
</HARD-GATE>
# Keil MDK Build
Patterns for building embedded firmware with Keil MDK. Covers both ARM Compiler 5 (armcc) and ARM Compiler 6 (armclang).
## UV4 CLI Build (Authoritative)
UV4.exe batch mode is the canonical build path. A CI reimplementation is possible but may miss include paths.
```powershell
<Keil>\UV4\UV4.exe -b project.uvprojx -t TargetName -j0 -o <log_path>View the complete source on GitHubstate-machine-design
When your agent uses it
Use when reviewing or fixing async protocols, retries, ACK/NACK handling, pending flags, timeout logic, or state-machine lockups in embedded firmware. NOT for generic network protocol design (TCP/HTTP/MQTT) unless targeting embedded firmware stack.
What it loads into context
Frontmatter
59 tokensAlways available to the agent
SKILL.md
1,994 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Core Rules
- Transition Gates
- Transient Tolerance
- Implementation Patterns
- When To Escalate
Files
SKILL.mdcore9,082 bytesSKILL.mdcore9,082 bytesSKILL.mdcore9,082 bytes
Read SKILL.md
<HARD-GATE>
This is a domain implementation skill. If you are planning, designing, or entering plan mode — load `Skill("embedded-workbench")` first to activate the workflow gates (Plan Verification Gate, Approval Gate, Closure Gate). Domain skills carry implementation guidance, not workflow enforcement.
</HARD-GATE>
# State Machine Design
> **For a design that has to be decided rather than reviewed:** `dsh-model-everything` verifies the machine itself — `model_verify` explores every interleaving for unreachable states, deadlock, a timeout that can never fire, and a lock held across an await; `model_compose_verify` decides two mechanisms interacting, including a lost update on a shared location. Load its `model-everything` skill when the plugin is installed. This skill stays the implementation guide: the C code, the flags, the timeouts.
## Core Rules
- Fix the state model, not the symptom. Every in-progress or pending flag must have explicit success, failure, timeout, and reset exits.
- Timeout logic must be gated on real pending work. Idle states must not trigger retry, recovery, or error transitions.
- Do not trust a low-level send return value as proof of delivery when an application-layer ACK exists. Use the protocol's completion signal.
- When adding retries, also define attempt timestamps, backoff rules, and cleanup paths so the state machine cannot lock up silently.View the complete source on GitHubSkills included
- c-cpp-dev
- debug-methodology
- embedded-firmware-dev
- embedded-workbench
- fact-check
- hardfault-triage
- keil-mdk-build
- state-machine-design
Repository facts
- License
- MIT
- Created
- Jun 22, 2026
- Last pushed
- Nov 5, 2026
- Forks
- 3
- Open issues
- 0
- Project activity
- Active
Before you install
Instructions onlyAutomated signals, not a guarantee
Checked Nov 6, 2026
Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.
Show 17 notes
hooks/hooks.json:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/c-cpp-dev/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/debug-methodology/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/debug-methodology/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/debug-methodology/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/debug-methodology/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/debug-methodology/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/debug-methodology/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedhooks/hooks.json:1Plugin-wide analysis incomplete; see repository notesskills/embedded-workbench/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedhooks/hooks.json:1Plugin-wide analysis incomplete; see repository notesskills/hardfault-triage/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/keil-mdk-build/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/keil-mdk-build/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/keil-mdk-build/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/state-machine-design/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/state-machine-design/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzed
- No broad tool permissions
- No dangerous shell commands
- 9 network referencesin 3 files: .claude-plugin/plugin.json:5 keil-mdk-build/SKILL.md:84 embedded-workbench/SKILL.md:116
- No hidden or obfuscated text
- No instruction overrides
- No executable scripts
- No access to secrets
- No requests to vote in Hot
Show all 9 signals by file
.claude-plugin/plugin.json
- Network accessline 5
"author": { "name": "Amethyst Luna", "url": "https://github.com/AmethystLuna" - Network accessline 6
"name": "Amethyst Luna", "url": "https://github.com/AmethystLuna" }, - Network accessline 7
"url": "https://github.com/AmethystLuna" - Network accessline 8
}, "homepage": "https://github.com/AmethystLuna/embedded-workbench", "repository": "https://github.com/AmethystLuna/embedded-workbench", - Network accessline 9
"homepage": "https://github.com/AmethystLuna/embedded-workbench", - Network accessline 10
"repository": "https://github.com/AmethystLuna/embedded-workbench",
skills/embedded-workbench/SKILL.md
- Network accessline 116
> **⚠<U+FE0F> The verification skill ships in another plugin.** It started in `logicprobe` (v0.6.0, <https://github.com/AmethystLuna/logicprobe>) and that plugin continues as [`dsh-model-everything`](https://github.com/AmethystLuna/dsh-model-every
skills/keil-mdk-build/SKILL.md
- Network accessline 84
Sources: ARM Compiler v5.06 User Guide ([DUI0472M](https://developer.arm.com/documentation/dui0472m)), §3.154-3.159. - Network accessline 123
Projects migrating from AC5 to AC6 commonly hit these issues. Sources: [ARM Compiler Migration Guide (DUI0742)](https://developer.arm.com/documentation/dui0742), [Arm Compiler for Embedded FuSa Migration Guide](https://developer.arm.com/doc
How the signals fit together
Facts from a static read of the files at the pinned commit. They describe what the code does, not why.
Some files could not be read; the facts below still hold.
Signal confidence: 3 facts
- Network access in prose of the SKILL.mdembedded-workbench/SKILL.md:116Low confidence
- Network access in prose of the SKILL.mdkeil-mdk-build/SKILL.md:84Low confidence
- Network access in prose of the SKILL.mdkeil-mdk-build/SKILL.md:123Low confidence
Works with
| Agent | Status | Evidence | Install to |
|---|---|---|---|
| Claude Code | Native | Manifest .claude-plugin/marketplace.json | .claude/skills/<skill-name>/ |
| Codex | Native | Manifest AGENTS.md | .agents/skills/<skill-name>/ |
| Cursor | Compatible | Standard SKILL.md skills/c-cpp-dev/SKILL.md | .cursor/skills/<skill-name>/ |
| Gemini CLI | Compatible | Standard SKILL.md skills/c-cpp-dev/SKILL.md | .gemini/skills/<skill-name>/ |
| GitHub Copilot | Compatible | Standard SKILL.md skills/c-cpp-dev/SKILL.md | .github/skills/<skill-name>/ |
| OpenCode | Native | Path .opencode/INSTALL.md | .opencode/skills/<skill-name>/ |
- Native The repository ships a manifest, folder or frontmatter field for this agent.
- Compatible A standard SKILL.md that this agent can read.
- Unknown No evidence either way.
Derived automatically from paths, manifests and frontmatter. Not tested on each agent.