[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71MYCAY27RDR7RH5F3RR0DY":3,"skill-same:01M71MYCAY27RDR7RH5F3RR0DY":69},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":38,"linkOnly":39,"markdownContent":40,"markdownBody":41,"frontMatter":42,"refName":47,"commitSha":48,"skillDirectory":49,"forksCount":50,"repositoryHtmlUrl":46,"repositoryHomepageUrl":51,"ownerHtmlUrl":52,"ownerBlogUrl":53,"ownerDescription":6,"updatedAt":54,"install":55,"resources":68},"01M71MYCAY27RDR7RH5F3RR0DY","embedded-firmware",null,"Use when an org role acts as embedded firmware engineer and must ship reliable ESP32, STM32, nRF or Zephyr firmware under FreeRTOS memory and ISR constraints. For hands-on drivers, RTOS and power work with reference files use embedded-systems.","monoes\u002Fmonomind","monoes","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F276744696?v=4","01M71KWF37AJ2NJBP3KWBVSDGT","01M71KWF4CSF8ADH0M6HA09VD2",23,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fmonoes\u002Fmonomind\u002Fblob\u002Fmain\u002Fpackages\u002F@monomind\u002Fcli\u002Forg-skills\u002Fembedded-firmware\u002FSKILL.md",[],[18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37],"embedded firmware","embedded","firmware","github","monomind","work","with","when","embedded-systems","use","files","esp32","engineer","for","memory","power","hands-on","reliability","zephyr","as","2026-11-10 10:56:23",false,"---\nname: embedded-firmware\ndescription: \"Use when an org role acts as embedded firmware engineer and must ship reliable ESP32, STM32, nRF or Zephyr firmware under FreeRTOS memory and ISR constraints. For hands-on drivers, RTOS and power work with reference files use embedded-systems.\"\ntags: [\"devops\",\"embedded\",\"reliability\"]\ntools: []\nlicense: Apache-2.0\nsource: https:\u002F\u002Fgithub.com\u002Fmonoes\u002Fmonomind\n---\n# Embedded Firmware — Best Practices\n\n## Focus\nWrites production-grade firmware for resource-constrained embedded systems (ESP32\u002FESP-IDF, STM32 HAL\u002FLL, Nordic nRF\u002FZephyr, FreeRTOS) where hardware constraints and undefined behavior carry real consequences.\n\n## Best practices\n- Avoid dynamic allocation in RTOS tasks after init — use static allocation or memory pools; heap fragmentation on constrained devices causes unpredictable failures.\n- Always check return values from HAL\u002FSDK calls (`esp_err_t`, HAL status codes) — a silently ignored error is a silent field failure.\n- Calculate stack sizes, don't guess — verify with `uxTaskGetStackHighWaterMark()` or equivalent under real load, not just at boot.\n- Keep ISRs minimal — defer work to tasks via queues\u002Fsemaphores; never call blocking APIs from interrupt context.\n- Use `FromISR` API variants inside interrupt handlers, and never poll from an ISR on timing-critical platforms.\n- Pin toolchain and library versions in build config (`platformio.ini`, `west.yml`) — never track `@latest` in anything shipping to production.\n- Test every error path with fault injection, not just the happy path — the failures that matter are the ones nobody exercises in normal testing.\n\n## Common pitfalls\n- Using `malloc`\u002F`new` freely in long-running tasks, causing heap fragmentation that only manifests after hours or days of uptime.\n- Guessing stack sizes instead of measuring high-water marks, leading to intermittent stack overflow crashes.\n- Doing real work inside an ISR (I2C\u002FSPI transactions, logging, heavy computation) instead of deferring to a task.\n- Hardcoding peripheral addresses or pin assignments instead of using devicetree\u002FKconfig or board-specific config layers.\n\n## Tools & techniques\n- JTAG\u002FSWD debugging and crash-dump analysis (`idf.py coredump-info`, STM32 SWV\u002FITM trace) for post-mortem root cause.\n- FreeRTOS runtime stats \u002F task trace (SystemView) to catch priority inversion and starvation before they hit production.\n- Logic analyzer \u002F oscilloscope captures to verify timing-critical peripheral transactions against datasheet specs.\n- OTA update paths with rollback (`esp_ota_ops.h`, MCUboot) designed and tested before first field deployment, not after.\n","# Embedded Firmware — Best Practices\n\n## Focus\nWrites production-grade firmware for resource-constrained embedded systems (ESP32\u002FESP-IDF, STM32 HAL\u002FLL, Nordic nRF\u002FZephyr, FreeRTOS) where hardware constraints and undefined behavior carry real consequences.\n\n## Best practices\n- Avoid dynamic allocation in RTOS tasks after init — use static allocation or memory pools; heap fragmentation on constrained devices causes unpredictable failures.\n- Always check return values from HAL\u002FSDK calls (`esp_err_t`, HAL status codes) — a silently ignored error is a silent field failure.\n- Calculate stack sizes, don't guess — verify with `uxTaskGetStackHighWaterMark()` or equivalent under real load, not just at boot.\n- Keep ISRs minimal — defer work to tasks via queues\u002Fsemaphores; never call blocking APIs from interrupt context.\n- Use `FromISR` API variants inside interrupt handlers, and never poll from an ISR on timing-critical platforms.\n- Pin toolchain and library versions in build config (`platformio.ini`, `west.yml`) — never track `@latest` in anything shipping to production.\n- Test every error path with fault injection, not just the happy path — the failures that matter are the ones nobody exercises in normal testing.\n\n## Common pitfalls\n- Using `malloc`\u002F`new` freely in long-running tasks, causing heap fragmentation that only manifests after hours or days of uptime.\n- Guessing stack sizes instead of measuring high-water marks, leading to intermittent stack overflow crashes.\n- Doing real work inside an ISR (I2C\u002FSPI transactions, logging, heavy computation) instead of deferring to a task.\n- Hardcoding peripheral addresses or pin assignments instead of using devicetree\u002FKconfig or board-specific config layers.\n\n## Tools & techniques\n- JTAG\u002FSWD debugging and crash-dump analysis (`idf.py coredump-info`, STM32 SWV\u002FITM trace) for post-mortem root cause.\n- FreeRTOS runtime stats \u002F task trace (SystemView) to catch priority inversion and starvation before they hit production.\n- Logic analyzer \u002F oscilloscope captures to verify timing-critical peripheral transactions against datasheet specs.\n- OTA update paths with rollback (`esp_ota_ops.h`, MCUboot) designed and tested before first field deployment, not after.\n",{"name":5,"tags":43,"tools":45,"source":46,"license":14,"description":7},[44,19,35],"devops",[],"https:\u002F\u002Fgithub.com\u002Fmonoes\u002Fmonomind","main","f7cd4595d0f8959822163e14f9787117765c931a","packages\u002F@monomind\u002Fcli\u002Forg-skills\u002Fembedded-firmware",2,"https:\u002F\u002Fmonoes.github.io\u002Fmonomind\u002F","https:\u002F\u002Fgithub.com\u002Fmonoes","https:\u002F\u002Fmonoes.me","2026-11-10 01:53:48",{"source":8,"skillName":5,"commands":56,"prompt":66,"zipAvailable":67},[57,60,63],{"tool":58,"command":59},"npx","npx skills add monoes\u002Fmonomind --skill embedded-firmware",{"tool":61,"command":62},"bunx","bunx skills add monoes\u002Fmonomind --skill embedded-firmware",{"tool":64,"command":65},"pnpm","pnpm dlx skills add monoes\u002Fmonomind --skill embedded-firmware","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmonoes\u002Fmonomind\u002Fblob\u002Fmain\u002Fpackages\u002F@monomind\u002Fcli\u002Forg-skills\u002Fembedded-firmware\u002FSKILL.md",true,[],[70,96,132,157,179,205],{"skillNo":71,"name":72,"nameZh":6,"description":73,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":74,"categories":75,"keywords":76,"publishedAt":95},"01M71PB3SHWKMNJM6MD65VX8D6","zk-steward","Org role guidance for a ZK steward: engineer zero-knowledge proof systems with circuit design, SNARK vs STARK choice and security review. This is zero-knowledge cryptography, not Zettelkasten note-taking.","https:\u002F\u002Fgithub.com\u002Fmonoes\u002Fmonomind\u002Fblob\u002Fmain\u002Fpackages\u002F@monomind\u002Fcli\u002Forg-skills\u002Fzk-steward\u002FSKILL.md",[],[77,78,79,80,30,81,82,83,84,85,86,87,22,88,89,90,91,92,93,94],"zk","zk steward","steward","zero-knowledge","choice","design","knowledge","impact","query","snark","review","security review","stark","zettelkasten","cryptography","security","org","blockchain","2026-11-10 13:02:02",{"skillNo":97,"name":98,"nameZh":6,"description":99,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":100,"licenseFileUrl":101,"sourceHtmlUrl":102,"categories":103,"keywords":114,"publishedAt":95},"01M71PB18SDG28WBKPKJNB814K","writing-plans","Use when you have a spec or requirements for a multi-step coding task and must write an implementation plan before touching code. Produces bite-sized TDD tasks with exact file paths, code and commands for an engineer with zero context.","MIT","https:\u002F\u002Fgithub.com\u002Fmonoes\u002Fmonomind\u002Fblob\u002Fmain\u002Fpackages\u002F@monomind\u002Fcli\u002Forg-skills\u002Fwriting-plans\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fmonoes\u002Fmonomind\u002Fblob\u002Fmain\u002Fpackages\u002F@monomind\u002Fcli\u002Forg-skills\u002Fwriting-plans\u002FSKILL.md",[104,109],{"categoryNo":105,"categoryName":106,"taxonomyType":107,"taxonomyTypeDesc":108},"01JBSEEDCAT000000000000018","写作与文案","SCENARIO","使用场景",{"categoryNo":110,"categoryName":111,"taxonomyType":112,"taxonomyTypeDesc":113},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",[115,116,117,30,118,119,25,120,85,121,122,123,124,125,126,127,128,129,130,131],"writing","writing plans","plans","superpowers","implementation plan","you","code","tasks","plan","product","write","commands","paths","suggest","coding","context","ZeRO",{"skillNo":133,"name":134,"nameZh":6,"description":135,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":136,"sourceHtmlUrl":137,"categories":138,"keywords":142,"publishedAt":95},"01M71PAXFM488X9ARXK0T04TF5","write-spec","Write a feature spec or PRD from a problem statement or feature idea. Use when turning a vague idea or user request into a structured document, scoping a feature with goals and non-goals, defining success metrics and acceptance criteria, or breaking a big ask into a phased spec.","https:\u002F\u002Fgithub.com\u002Fmonoes\u002Fmonomind\u002Fblob\u002Fmain\u002Fpackages\u002F@monomind\u002Fcli\u002Forg-skills\u002Fwrite-spec\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fmonoes\u002Fmonomind\u002Fblob\u002Fmain\u002Fpackages\u002F@monomind\u002Fcli\u002Forg-skills\u002Fwrite-spec\u002FSKILL.md",[139],{"categoryNo":140,"categoryName":141,"taxonomyType":112,"taxonomyTypeDesc":113},"01JBSEEDCAT000000000000031","产品经理",[125,143,144,145,146,83,147,25,148,149,23,124,150,151,152,153,154,155,27,156],"write spec","spec","user request","problem","acceptance","ask","vague","request","scoping","idea","metrics","feature","problem statement","document",{"skillNo":158,"name":159,"nameZh":6,"description":160,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":161,"sourceHtmlUrl":162,"categories":163,"keywords":167,"publishedAt":95},"01M71PASSZY800C0RPEARBS918","write-query","Write optimized SQL for your dialect with best practices. Use when translating a natural-language data need into SQL, building a multi-CTE query with joins and aggregations, optimizing a query against a large partitioned table, or getting dialect-specific syntax for Snowflake, BigQuery, Postgres, etc.","https:\u002F\u002Fgithub.com\u002Fmonoes\u002Fmonomind\u002Fblob\u002Fmain\u002Fpackages\u002F@monomind\u002Fcli\u002Forg-skills\u002Fwrite-query\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fmonoes\u002Fmonomind\u002Fblob\u002Fmain\u002Fpackages\u002F@monomind\u002Fcli\u002Forg-skills\u002Fwrite-query\u002FSKILL.md",[164],{"categoryNo":165,"categoryName":166,"taxonomyType":112,"taxonomyTypeDesc":113},"01JBSEEDCAT000000000000033","数据分析师",[85,125,168,169,31,170,83,27,25,171,172,24,173,23,21,174,175,176,177,178],"write query","postgres","snowflake","best practices","natural-language","multi","sql","https","syntax","plugins","data",{"skillNo":180,"name":181,"nameZh":6,"description":182,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":183,"categories":184,"keywords":191,"publishedAt":95},"01M71PAPTX0T3PF6ETFVR96SJJ","workflow-automation","Org role guidance for workflow automation: build and maintain CI\u002FCD definitions in GitHub Actions or equivalent: triggers, jobs, matrices, caching. Covers path filters, dependency caching, parallel jobs, timeouts and fail-fast ordering.","https:\u002F\u002Fgithub.com\u002Fmonoes\u002Fmonomind\u002Fblob\u002Fmain\u002Fpackages\u002F@monomind\u002Fcli\u002Forg-skills\u002Fworkflow-automation\u002FSKILL.md",[185,188],{"categoryNo":186,"categoryName":187,"taxonomyType":107,"taxonomyTypeDesc":108},"01JBSEEDCAT000000000000011","运维与部署",{"categoryNo":189,"categoryName":190,"taxonomyType":107,"taxonomyTypeDesc":108},"01JBSEEDCAT000000000000023","Skill与智能体开发",[192,193,194,195,31,196,197,198,199,84,200,201,202,85,22,21,203,204,44,175],"Workflow Automation","automation","workflow","parallel","actions","ci","triggers","github actions","maintain","filters","caching","build","dependency",{"skillNo":206,"name":207,"nameZh":6,"description":208,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":209,"categories":210,"keywords":212,"publishedAt":95},"01M71PAM19Z1XTV9NPCFSE2MY8","workflow-architect","Org role guidance for a workflow architect: map full workflow trees for systems, user journeys and agents, covering every branch and failure. Covers discovering workflows from code, handoff contracts, timeouts, recovery paths and observable state.","https:\u002F\u002Fgithub.com\u002Fmonoes\u002Fmonomind\u002Fblob\u002Fmain\u002Fpackages\u002F@monomind\u002Fcli\u002Forg-skills\u002Fworkflow-architect\u002FSKILL.md",[211],{"categoryNo":189,"categoryName":190,"taxonomyType":107,"taxonomyTypeDesc":108},[194,213,214,215,216,217,218,31,219,220,121,221,222,223,22,21,224,225,175,226],"workflow architect","architect","trees","user journeys","branch","planning","map","workflows","architecture","state","leadership","recovery","operations","systems"]