{
 "schema": "aiblocks-page/1",
 "id": "agency-engineering-embedded-firmware-engineer",
 "type": "agent",
 "name": "Embedded firmware engineer",
 "summary": "Plan embedded firmware for ESP32, STM32 or Nordic chips: tasks, pin map, memory limits and failure handling. Bring your chip and goal.",
 "headline": "Embedded firmware engineer",
 "subhead": "Name your chip, what the device must do and its limits on memory and power. It plans the firmware: the tasks, the pins and buses, the timing, the memory and what happens when something fails. You get a design and a list of checks to run on your own hardware.",
 "job": {
  "id": "build-software",
  "name": "Build and ship software"
 },
 "level": "intermediate",
 "thinking": "high",
 "tested": true,
 "updated": "2026-11-03",
 "first_published": "2026-10-26",
 "inputs": [
  {
   "type": "question",
   "required": true,
   "label": "Question",
   "what": "the problem, decision or piece of work you want help with, and what a good outcome looks like"
  },
  {
   "type": "source_text",
   "required": false,
   "label": "Source text",
   "what": "a long source in full: an article, a video or talk transcript, or notes from a book, with its title, author and link"
  },
  {
   "type": "codebase",
   "required": false,
   "label": "Codebase",
   "what": "a project's code, in a folder or repo the AI can open"
  }
 ],
 "outputs": [
  {
   "type": "plan",
   "required": true,
   "label": "Plan",
   "what": "a dated plan: what to do, in what order, with a decision rule for each step"
  },
  {
   "type": "code_change",
   "required": false,
   "label": "Code change",
   "what": "a change to the code, with what it fixes and how it was checked"
  }
 ],
 "you_give": [
  "Your chip or board, such as ESP32-S3, STM32F4 or nRF52840, and your toolchain, such as ESP-IDF, PlatformIO or Zephyr",
  "What the device must do, in plain words, and what it connects to (sensors, radio, screen)",
  "Your limits: RAM, flash, power source, battery life target and any timing needs",
  "Existing code or your platformio.ini (optional)",
  "Crash logs, reset reasons or watchdog messages (optional)"
 ],
 "you_get": [
  "A task plan: each task with its priority, a starting stack size and how tasks pass data",
  "A pin and bus map with speeds, time limits and error handling for each part",
  "A memory and power budget with room to grow",
  "A list of failure cases and how the device recovers from each",
  "Short code drafts for the parts you ask for",
  "A list of checks to run on your hardware, and the assumptions made"
 ],
 "use_when": [
  "You are starting a new device and need the task and pin plan before you write code.",
  "Your firmware resets, hangs or runs out of memory, and you need a list of likely causes to test.",
  "You are moving from a dev board to a product and need error handling and a watchdog plan.",
  "You want one driver, such as an SPI or Bluetooth routine, reviewed against safe-firmware rules."
 ],
 "skip_when": [
  "You need circuit board layout, a schematic or radio and safety certification. That takes a hardware engineer and a test lab.",
  "You are updating many devices already in the field. Use the IoT fleet rollout planner.",
  "You are building the phone or web app that talks to the device. Use the Mobile app builder or the Full stack developer."
 ],
 "output_sample": {
  "input": [
   "Your chip or board and your toolchain",
   "What the device must do and what it connects to",
   "Your limits on memory, power and timing",
   "Existing code or crash logs (optional)"
  ],
  "prerequisites": [
   "An AI that can read pasted text or files",
   "Your datasheet and reference manual, to confirm every pin and register",
   "Your own board for the checks"
  ],
  "output": [
   {
    "name": "Target and limits",
    "contains": "Your chip, toolchain and limits, with anything missing marked MISSING."
   },
   {
    "name": "Task plan",
    "contains": "Each task with priority, starting stack size, how it talks to others and how often it runs."
   },
   {
    "name": "Pin and bus map",
    "contains": "Each peripheral with pins, speed, time limit and what happens on failure."
   },
   {
    "name": "Memory and power budget",
    "contains": "RAM and flash use with spare room, and the sleep plan."
   },
   {
    "name": "Failure cases",
    "contains": "What can fail, how it is detected and how the device recovers."
   },
   {
    "name": "Code drafts",
    "contains": "Short untested code for the parts you asked for."
   },
   {
    "name": "Checks to run on your hardware",
    "contains": "Each check, the tool to use and what a pass looks like."
   }
  ]
 },
 "output_shape": "TARGET AND LIMITS\n  <chip and board> | <toolchain> | RAM <size> | Flash <size> | Power <source> | MISSING: <list>\n\nTASK PLAN\n  <task> | Priority <n> | Stack <bytes, to be measured> | Talks to <queue or event> | Runs every <time>\n\nPIN AND BUS MAP\n  <peripheral> | <pins> | <speed> | Time limit <ms> | On failure <action>\n\nMEMORY AND POWER BUDGET\n  RAM <used and spare> | Flash <used and spare> | Sleep plan <modes and wake sources>\n\nFAILURE CASES\n  <what fails> | <how it is detected> | <how the device recovers>\n\nCODE DRAFTS (untested)\n  <file or function> | <what it does>\n\nCHECKS TO RUN ON YOUR HARDWARE\n  <check> | <tool or method> | <pass means>\n\nASSUMPTIONS\n  <item> | <why it was assumed>",
 "how_to_use": [
  "Download the pack from this page and add it to your AI as a skill. If you cannot, open a new chat and paste SKILL.md, then references/source-agent.md.",
  "Paste your chip, toolchain, what the device must do and your limits. Add your code or platformio.ini if you have them.",
  "Add any crash log or reset reason. It points the plan at the real problem.",
  "Say \"Plan the firmware. Ask once if anything is missing. Do not say anything was tested.\"",
  "Read the failure list first. For each failure, check that the recovery matches what your device must do.",
  "Compile the code drafts yourself, then measure stack use and timing on your board. Your AI cannot run your hardware.",
  "Before a device ships, have a hardware engineer review it. If a fault could hurt someone or cause damage, such as in a medical, vehicle, mains power or battery charging device, it also needs the required certification and a test lab."
 ],
 "checks": [
  "The result addresses your actual task and cites the evidence used.",
  "Examples, role-play experience and targets are kept separate from verified results.",
  "Claims of tests, memory, tool access or completed actions match what actually happened."
 ],
 "next": [
  {
   "name": "Simple code coach",
   "url": "https://useaiblocks.com/skills/simple-code-coach",
   "why": "Build it"
  }
 ],
 "source": {
  "by": "Michael Sitarzewski and Agency Agents contributors",
  "repo": "msitarzewski/agency-agents",
  "url": "https://github.com/msitarzewski/agency-agents/blob/b37b5bb33b78f2c1d6567d98e25ca818e3259219/engineering/engineering-embedded-firmware-engineer.md",
  "licence": "MIT",
  "original_name": "Embedded Firmware Engineer",
  "commit": "b37b5bb33b78f2c1d6567d98e25ca818e3259219"
 },
 "credits": [
  {
   "title": "Embedded Firmware Engineer",
   "by": "Michael Sitarzewski and Agency Agents contributors",
   "url": "https://github.com/msitarzewski/agency-agents/blob/b37b5bb33b78f2c1d6567d98e25ca818e3259219/engineering/engineering-embedded-firmware-engineer.md",
   "used": "Original agent profile, preserved in references/source-agent.md; AI Blocks adds setup and review instructions."
  }
 ],
 "files": [
  "LICENSE",
  "references/source-agent.md",
  "SETUP.md",
  "source.json"
 ],
 "links": {
  "page": "https://useaiblocks.com/agents/agency-engineering-embedded-firmware-engineer",
  "markdown": "https://useaiblocks.com/agents/agency-engineering-embedded-firmware-engineer.md",
  "json": "https://useaiblocks.com/agents/agency-engineering-embedded-firmware-engineer.json",
  "instructions": "https://useaiblocks.com/skills/agency-engineering-embedded-firmware-engineer/SKILL.md",
  "download": "https://useaiblocks.com/skills/agency-engineering-embedded-firmware-engineer.zip",
  "api_item": "https://useaiblocks.com/api/v1/items/agency-engineering-embedded-firmware-engineer",
  "api_document": "https://useaiblocks.com/api/v1/documents/agent/agency-engineering-embedded-firmware-engineer",
  "mcp": "https://useaiblocks.com/mcp"
 }
}
