[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CS0RHCTN0YWYCM8P02CXA2":3,"skill-same:01M6CS0RHCTN0YWYCM8P02CXA2":62},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":35,"linkOnly":36,"markdownContent":37,"markdownBody":38,"frontMatter":39,"refName":41,"commitSha":42,"skillDirectory":43,"forksCount":44,"repositoryHtmlUrl":45,"repositoryHomepageUrl":6,"ownerHtmlUrl":46,"ownerBlogUrl":47,"ownerDescription":6,"updatedAt":48,"install":49,"resources":61},"01M6CS0RHCTN0YWYCM8P02CXA2","pebble-emu",null,"Build, run, and observe Pebble watchapps\u002Fwatchfaces in the Rebble pebble-tool emulator. Captures emulator output as PNGs (and optionally VNC\u002FnoVNC) so an AI agent can see what the watch is showing and iterate on apps without a physical Pebble.","kfet\u002Ffir","kfet","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F14585?v=4","01M6CRZCB8P1V37WM3X0GB2DA6","Kalin Fetvadjiev","01M6CRZCFG1EW1WEN4RK84W1N5",1,"MIT","https:\u002F\u002Fgithub.com\u002Fkfet\u002Ffir\u002Fblob\u002Fmain\u002Fpkg\u002Fresources\u002Fbuiltin_skills\u002Fpebble-emu\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34],"pebble emu","ai agent","run","tool","emulator","observe","build","what the","physical","watch","as","apps","output","true","can","iterate","2026-11-10 10:12:30",false,"---\nname: pebble-emu\ndescription: Build, run, and observe Pebble watchapps\u002Fwatchfaces in the Rebble pebble-tool emulator. Captures emulator output as PNGs (and optionally VNC\u002FnoVNC) so an AI agent can see what the watch is showing and iterate on apps without a physical Pebble.\noverride: true\n---\n\n# Pebble emulator — AI-friendly recipe\n\nThe Pebble platform is alive again via **Rebble \u002F Core Devices**. The modern\n`pebble-tool` (v5.x) bundles QEMU, builds C\u002FJS apps, runs them in an emulator,\nand can stream PNG screenshots or expose a VNC server — perfect for agent loops\nwhere you build → install → look → fix.\n\n## When to use\n\n- User asks to write, debug, or iterate on a Pebble app or watchface.\n- User mentions Pebble, Rebble, Core Devices, `.pbw`, aplite\u002Fbasalt\u002Fchalk\u002Fdiorite\u002Femery\u002Fflint.\n- You need to \"see\" what the watch screen looks like.\n\n## Prerequisites (one-time)\n\nThe host should be macOS or Linux. Check first; only install what is missing.\n\n```bash\ncommand -v pebble && pebble --version    # already installed?\ncommand -v uv     || brew install uv     # macOS; on Linux: curl -LsSf https:\u002F\u002Fastral.sh\u002Fuv\u002Finstall.sh | sh\ncommand -v node   || brew install node   # required for JS\u002FPebbleKit-JS builds\n```\n\nInstall \u002F upgrade `pebble-tool` (publishes its own bundled QEMU per SDK):\n\n```bash\nuv tool install pebble-tool        # or: uv tool upgrade pebble-tool\npebble sdk install latest          # downloads SDK + QEMU binaries for your OS\npebble sdk list                    # confirm an active SDK\n```\n\nThat gives you `pebble` with subcommands: `build`, `install`, `logs`,\n`screenshot`, `kill`, `wipe`, `emu-control`, `emu-tap`, `emu-accel`,\n`emu-battery`, `emu-bt-connection`, `emu-compass`, `emu-app-config`,\n`gdb`, `repl`, `new-project`, `analyze-size`.\n\n## Platforms (watch hardware variants)\n\nPass to every emulator command via `--emulator \u003Cname>`:\n\n| Name      | Watch                  | Display        | Color |\n|-----------|------------------------|----------------|-------|\n| `aplite`  | Original Pebble \u002F Steel| 144×168        | B&W   |\n| `basalt`  | Pebble Time            | 144×168        | Color |\n| `chalk`   | Pebble Time Round      | 180×180 round  | Color |\n| `diorite` | Pebble 2               | 144×168        | B&W   |\n| `emery`   | Pebble Time 2          | 200×228        | Color |\n| `flint`   | Core Devices \u002F Time 2  | 200×228        | Color |\n\nWhen in doubt, default to **`basalt`** (most common color target).\n\n## Core loop — build, run, observe\n\n### 1. Create or enter a project\n\n```bash\npebble new-project my-face          # scaffolds C + package.json\ncd my-face\n```\n\nA project is a directory with `package.json` (`pebble.targetPlatforms`,\n`pebble.watchapp`) and `src\u002Fc\u002Fmain.c`. Older `appinfo.json` projects can be\nupgraded with `pebble convert-project`.\n\n### 2. Build\n\n```bash\npebble build\n# produces build\u002F\u003Cname>.pbw  (a zip of platform-specific binaries + resources)\n```\n\nBuild errors land on stderr with `waf` formatting — read them, fix the C, rebuild.\n\n### 3. Install + launch emulator (with logs)\n\n```bash\npebble install --emulator basalt --logs\n```\n\nThis will:\n- spawn a QEMU process for the platform if none is running,\n- send the freshly-built `.pbw` over the QEMU pebble-protocol socket,\n- launch the app on the emulated watch,\n- stream `APP_LOG(...)` output to your terminal until you Ctrl-C.\n\n**Background it for agent use** so you can keep working:\n\n```bash\npebble install --emulator basalt >\u002Ftmp\u002Fpebble.log 2>&1 &\n# logs separately, non-blocking — open a tail when needed:\npebble logs --emulator basalt >\u002Ftmp\u002Fpebble-logs.log 2>&1 &\n```\n\n### 4. Observe — capture the screen as a PNG\n\nThis is the agent's eye. The screenshot is pulled live from the running QEMU\nover the pebble protocol — no display server needed.\n\n```bash\npebble screenshot --emulator basalt --no-open \u002Ftmp\u002Fpebble.png\n# then read it back as an attachment\n```\n\nUseful flags:\n- `--no-open` — don't shell-open the image (essential for headless\u002Fagent runs).\n- `--no-correction` — raw framebuffer colors (skip Pebble's color correction).\n- `--scale 4` — integer upscale; helpful for tiny aplite displays.\n\nIn a fir agent loop, `Read` the PNG path — Read sends image files as\nattachments so the model can actually see the watch face.\n\n### 5. Drive inputs and sensors\n\n```bash\npebble emu-tap     --emulator basalt --direction +x       # tap on x axis\npebble emu-accel   --emulator basalt tilt-left            # canned motion\npebble emu-battery --emulator basalt --percent 20 --charging\npebble emu-bt-connection --emulator basalt --connected no\npebble emu-compass --emulator basalt --heading 90\npebble emu-app-config --emulator basalt                   # opens config page\npebble emu-control --emulator basalt                      # interactive sensor UI in browser\n```\n\nButtons (back\u002Fup\u002Fselect\u002Fdown) are sent through `emu-control` or via the QEMU\nconsole; for scripted button presses see \"Direct QEMU socket\" below.\n\n### 6. Live VNC \u002F noVNC (when a human or VNC client is watching)\n\nAdd `--vnc` to *any* emulator-launching command and `pebble-tool` will:\n- start QEMU with `-vnc :1` → **TCP port 5901** on localhost (RFB protocol),\n- spawn `websockify` on **port 6080** so you can also point a noVNC web client at\n  `http:\u002F\u002Flocalhost:6080\u002Fvnc.html?host=localhost&port=6080`.\n\n```bash\npebble install --emulator basalt --vnc --logs\n# then, from a VNC client:\nopen vnc:\u002F\u002Flocalhost:5901            # macOS Screen Sharing\n# or for a one-shot capture from the agent:\nvncdo -s localhost:5901 capture \u002Ftmp\u002Fpebble-vnc.png   # pip install vncdotool\n```\n\nNotes:\n- Only **one** VNC-enabled emulator runs at a time (display `:1` is shared).\n  `pebble-tool` will kill any other VNC emulator on launch.\n- VNC and `pebble screenshot` work simultaneously — keep VNC for the human,\n  use `screenshot` for the agent.\n- The VNC framebuffer shows **only the raw watch display**, not the chrome\n  around it.\n\n### 7. Kill \u002F reset between runs\n\n```bash\npebble kill                 # stop all running emulators (and websockify)\npebble wipe                 # clear emulator persistent storage for current SDK\n```\n\nAlways `pebble kill` at the end of a session, or you'll leak QEMU processes.\n\n## Recommended agent loop\n\nFor autonomous iteration on a watchface:\n\n```bash\nset -e\npebble build\npebble install --emulator basalt >\u002Ftmp\u002Fpebble-install.log 2>&1\nsleep 1                                            # let UI settle\npebble screenshot --emulator basalt --no-open --scale 2 \u002Ftmp\u002Fwatch.png\ntail -n 200 \u002Ftmp\u002Fpebble-install.log               # build\u002Finstall diagnostics\n```\n\nThen `Read \u002Ftmp\u002Fwatch.png` to see the result, compare to the goal, edit\n`src\u002Fc\u002Fmain.c`, repeat. After interactive moments (button press, time change,\nnotification) re-screenshot.\n\nFor longer interactions, leave logs streaming to a file and grep:\n\n```bash\npebble logs --emulator basalt >\u002Ftmp\u002Fpebble.log 2>&1 &\n# … exercise the app …\ngrep -E 'APP_LOG|ERROR|WARN' \u002Ftmp\u002Fpebble.log\n```\n\n## Direct QEMU socket (advanced)\n\n`pebble-tool` exposes the running emulator's QEMU monitor on a unix socket\nunder `~\u002FLibrary\u002FApplication Support\u002FPebble SDK\u002FSDKs\u002F\u003Cver>\u002F` (macOS) or\n`~\u002F.pebble-sdk\u002FSDKs\u002F\u003Cver>\u002F` (Linux). Useful when you need to inject a button\npress without `emu-control`:\n\n```bash\n# find the socket\nfind \"$HOME\u002FLibrary\u002FApplication Support\u002FPebble SDK\" -name 'qemu_*.sock' 2>\u002Fdev\u002Fnull\n# send a custom QEMU monitor command via socat \u002F nc -U\n```\n\nYou rarely need this — `emu-*` subcommands cover the common cases.\n\n## Common pitfalls\n\n- **`pebble: command not found` after `uv tool install`** — add `~\u002F.local\u002Fbin`\n  to PATH (uv prints the line to add).\n- **\"No active SDK\"** — run `pebble sdk install latest` then `pebble sdk activate \u003Cver>`.\n- **Screenshot looks wrong color** — the corrected output applies a Pebble-LCD\n  gamma curve. Use `--no-correction` to compare to raw rendering.\n- **Emulator hangs after a crash** — `pebble kill && pebble wipe` then retry.\n- **Two emulators of different platforms** — fine; each platform has its own\n  QEMU process. But only one with `--vnc` at a time.\n- **Apple Silicon** — if you see Rosetta prompts or QEMU fails to launch, try\n  `uv tool upgrade pebble-tool && pebble sdk install latest`.\n- **Don't commit `build\u002F`** — it's regenerated. Add to `.gitignore` if missing.\n\n## References\n\n- SDK install: https:\u002F\u002Fdeveloper.repebble.com\u002Fsdk\u002F\n- pebble-tool source (when an arg surface changes, read the installed module):\n  `python3 -c \"import pebble_tool, os; print(os.path.dirname(pebble_tool.__file__))\"`\n- Older but still-useful guides: https:\u002F\u002Fdeveloper.rebble.io\u002Fguides\u002Ftools-and-resources\u002Fpebble-tool\u002F\n- QEMU fork: https:\u002F\u002Fgithub.com\u002Fpebble\u002Fqemu\n","# Pebble emulator — AI-friendly recipe\n\nThe Pebble platform is alive again via **Rebble \u002F Core Devices**. The modern\n`pebble-tool` (v5.x) bundles QEMU, builds C\u002FJS apps, runs them in an emulator,\nand can stream PNG screenshots or expose a VNC server — perfect for agent loops\nwhere you build → install → look → fix.\n\n## When to use\n\n- User asks to write, debug, or iterate on a Pebble app or watchface.\n- User mentions Pebble, Rebble, Core Devices, `.pbw`, aplite\u002Fbasalt\u002Fchalk\u002Fdiorite\u002Femery\u002Fflint.\n- You need to \"see\" what the watch screen looks like.\n\n## Prerequisites (one-time)\n\nThe host should be macOS or Linux. Check first; only install what is missing.\n\n```bash\ncommand -v pebble && pebble --version    # already installed?\ncommand -v uv     || brew install uv     # macOS; on Linux: curl -LsSf https:\u002F\u002Fastral.sh\u002Fuv\u002Finstall.sh | sh\ncommand -v node   || brew install node   # required for JS\u002FPebbleKit-JS builds\n```\n\nInstall \u002F upgrade `pebble-tool` (publishes its own bundled QEMU per SDK):\n\n```bash\nuv tool install pebble-tool        # or: uv tool upgrade pebble-tool\npebble sdk install latest          # downloads SDK + QEMU binaries for your OS\npebble sdk list                    # confirm an active SDK\n```\n\nThat gives you `pebble` with subcommands: `build`, `install`, `logs`,\n`screenshot`, `kill`, `wipe`, `emu-control`, `emu-tap`, `emu-accel`,\n`emu-battery`, `emu-bt-connection`, `emu-compass`, `emu-app-config`,\n`gdb`, `repl`, `new-project`, `analyze-size`.\n\n## Platforms (watch hardware variants)\n\nPass to every emulator command via `--emulator \u003Cname>`:\n\n| Name      | Watch                  | Display        | Color |\n|-----------|------------------------|----------------|-------|\n| `aplite`  | Original Pebble \u002F Steel| 144×168        | B&W   |\n| `basalt`  | Pebble Time            | 144×168        | Color |\n| `chalk`   | Pebble Time Round      | 180×180 round  | Color |\n| `diorite` | Pebble 2               | 144×168        | B&W   |\n| `emery`   | Pebble Time 2          | 200×228        | Color |\n| `flint`   | Core Devices \u002F Time 2  | 200×228        | Color |\n\nWhen in doubt, default to **`basalt`** (most common color target).\n\n## Core loop — build, run, observe\n\n### 1. Create or enter a project\n\n```bash\npebble new-project my-face          # scaffolds C + package.json\ncd my-face\n```\n\nA project is a directory with `package.json` (`pebble.targetPlatforms`,\n`pebble.watchapp`) and `src\u002Fc\u002Fmain.c`. Older `appinfo.json` projects can be\nupgraded with `pebble convert-project`.\n\n### 2. Build\n\n```bash\npebble build\n# produces build\u002F\u003Cname>.pbw  (a zip of platform-specific binaries + resources)\n```\n\nBuild errors land on stderr with `waf` formatting — read them, fix the C, rebuild.\n\n### 3. Install + launch emulator (with logs)\n\n```bash\npebble install --emulator basalt --logs\n```\n\nThis will:\n- spawn a QEMU process for the platform if none is running,\n- send the freshly-built `.pbw` over the QEMU pebble-protocol socket,\n- launch the app on the emulated watch,\n- stream `APP_LOG(...)` output to your terminal until you Ctrl-C.\n\n**Background it for agent use** so you can keep working:\n\n```bash\npebble install --emulator basalt >\u002Ftmp\u002Fpebble.log 2>&1 &\n# logs separately, non-blocking — open a tail when needed:\npebble logs --emulator basalt >\u002Ftmp\u002Fpebble-logs.log 2>&1 &\n```\n\n### 4. Observe — capture the screen as a PNG\n\nThis is the agent's eye. The screenshot is pulled live from the running QEMU\nover the pebble protocol — no display server needed.\n\n```bash\npebble screenshot --emulator basalt --no-open \u002Ftmp\u002Fpebble.png\n# then read it back as an attachment\n```\n\nUseful flags:\n- `--no-open` — don't shell-open the image (essential for headless\u002Fagent runs).\n- `--no-correction` — raw framebuffer colors (skip Pebble's color correction).\n- `--scale 4` — integer upscale; helpful for tiny aplite displays.\n\nIn a fir agent loop, `Read` the PNG path — Read sends image files as\nattachments so the model can actually see the watch face.\n\n### 5. Drive inputs and sensors\n\n```bash\npebble emu-tap     --emulator basalt --direction +x       # tap on x axis\npebble emu-accel   --emulator basalt tilt-left            # canned motion\npebble emu-battery --emulator basalt --percent 20 --charging\npebble emu-bt-connection --emulator basalt --connected no\npebble emu-compass --emulator basalt --heading 90\npebble emu-app-config --emulator basalt                   # opens config page\npebble emu-control --emulator basalt                      # interactive sensor UI in browser\n```\n\nButtons (back\u002Fup\u002Fselect\u002Fdown) are sent through `emu-control` or via the QEMU\nconsole; for scripted button presses see \"Direct QEMU socket\" below.\n\n### 6. Live VNC \u002F noVNC (when a human or VNC client is watching)\n\nAdd `--vnc` to *any* emulator-launching command and `pebble-tool` will:\n- start QEMU with `-vnc :1` → **TCP port 5901** on localhost (RFB protocol),\n- spawn `websockify` on **port 6080** so you can also point a noVNC web client at\n  `http:\u002F\u002Flocalhost:6080\u002Fvnc.html?host=localhost&port=6080`.\n\n```bash\npebble install --emulator basalt --vnc --logs\n# then, from a VNC client:\nopen vnc:\u002F\u002Flocalhost:5901            # macOS Screen Sharing\n# or for a one-shot capture from the agent:\nvncdo -s localhost:5901 capture \u002Ftmp\u002Fpebble-vnc.png   # pip install vncdotool\n```\n\nNotes:\n- Only **one** VNC-enabled emulator runs at a time (display `:1` is shared).\n  `pebble-tool` will kill any other VNC emulator on launch.\n- VNC and `pebble screenshot` work simultaneously — keep VNC for the human,\n  use `screenshot` for the agent.\n- The VNC framebuffer shows **only the raw watch display**, not the chrome\n  around it.\n\n### 7. Kill \u002F reset between runs\n\n```bash\npebble kill                 # stop all running emulators (and websockify)\npebble wipe                 # clear emulator persistent storage for current SDK\n```\n\nAlways `pebble kill` at the end of a session, or you'll leak QEMU processes.\n\n## Recommended agent loop\n\nFor autonomous iteration on a watchface:\n\n```bash\nset -e\npebble build\npebble install --emulator basalt >\u002Ftmp\u002Fpebble-install.log 2>&1\nsleep 1                                            # let UI settle\npebble screenshot --emulator basalt --no-open --scale 2 \u002Ftmp\u002Fwatch.png\ntail -n 200 \u002Ftmp\u002Fpebble-install.log               # build\u002Finstall diagnostics\n```\n\nThen `Read \u002Ftmp\u002Fwatch.png` to see the result, compare to the goal, edit\n`src\u002Fc\u002Fmain.c`, repeat. After interactive moments (button press, time change,\nnotification) re-screenshot.\n\nFor longer interactions, leave logs streaming to a file and grep:\n\n```bash\npebble logs --emulator basalt >\u002Ftmp\u002Fpebble.log 2>&1 &\n# … exercise the app …\ngrep -E 'APP_LOG|ERROR|WARN' \u002Ftmp\u002Fpebble.log\n```\n\n## Direct QEMU socket (advanced)\n\n`pebble-tool` exposes the running emulator's QEMU monitor on a unix socket\nunder `~\u002FLibrary\u002FApplication Support\u002FPebble SDK\u002FSDKs\u002F\u003Cver>\u002F` (macOS) or\n`~\u002F.pebble-sdk\u002FSDKs\u002F\u003Cver>\u002F` (Linux). Useful when you need to inject a button\npress without `emu-control`:\n\n```bash\n# find the socket\nfind \"$HOME\u002FLibrary\u002FApplication Support\u002FPebble SDK\" -name 'qemu_*.sock' 2>\u002Fdev\u002Fnull\n# send a custom QEMU monitor command via socat \u002F nc -U\n```\n\nYou rarely need this — `emu-*` subcommands cover the common cases.\n\n## Common pitfalls\n\n- **`pebble: command not found` after `uv tool install`** — add `~\u002F.local\u002Fbin`\n  to PATH (uv prints the line to add).\n- **\"No active SDK\"** — run `pebble sdk install latest` then `pebble sdk activate \u003Cver>`.\n- **Screenshot looks wrong color** — the corrected output applies a Pebble-LCD\n  gamma curve. Use `--no-correction` to compare to raw rendering.\n- **Emulator hangs after a crash** — `pebble kill && pebble wipe` then retry.\n- **Two emulators of different platforms** — fine; each platform has its own\n  QEMU process. But only one with `--vnc` at a time.\n- **Apple Silicon** — if you see Rosetta prompts or QEMU fails to launch, try\n  `uv tool upgrade pebble-tool && pebble sdk install latest`.\n- **Don't commit `build\u002F`** — it's regenerated. Add to `.gitignore` if missing.\n\n## References\n\n- SDK install: https:\u002F\u002Fdeveloper.repebble.com\u002Fsdk\u002F\n- pebble-tool source (when an arg surface changes, read the installed module):\n  `python3 -c \"import pebble_tool, os; print(os.path.dirname(pebble_tool.__file__))\"`\n- Older but still-useful guides: https:\u002F\u002Fdeveloper.rebble.io\u002Fguides\u002Ftools-and-resources\u002Fpebble-tool\u002F\n- QEMU fork: https:\u002F\u002Fgithub.com\u002Fpebble\u002Fqemu\n",{"name":5,"override":40,"description":7},true,"main","76b360b35f87ec18e1776cf6feafc7a025bdea64","pkg\u002Fresources\u002Fbuiltin_skills\u002Fpebble-emu",0,"https:\u002F\u002Fgithub.com\u002Fkfet\u002Ffir","https:\u002F\u002Fgithub.com\u002Fkfet","https:\u002F\u002Fgithub.com\u002Fkalin-sa","2026-11-12 01:36:05",{"source":8,"skillName":5,"commands":50,"prompt":60,"zipAvailable":40},[51,54,57],{"tool":52,"command":53},"npx","npx skills add kfet\u002Ffir --skill pebble-emu",{"tool":55,"command":56},"bunx","bunx skills add kfet\u002Ffir --skill pebble-emu",{"tool":58,"command":59},"pnpm","pnpm dlx skills add kfet\u002Ffir --skill pebble-emu","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fkfet\u002Ffir\u002Fblob\u002Fmain\u002Fpkg\u002Fresources\u002Fbuiltin_skills\u002Fpebble-emu\u002FSKILL.md",[],[63,87,107,128,146,177],{"skillNo":64,"name":65,"nameZh":6,"description":66,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":67,"categories":68,"keywords":69,"publishedAt":35},"01M6CS290490SZNX8V35TF3N6X","wt","Spawn a fresh fir agent in its own tmux session on its own git worktree. Use whenever the user wants the work — or the conversation about the work — to happen over there, not here. If the user points at this skill, or has directly loaded it in the context, that alone is the cue — spawn, don't inline.","https:\u002F\u002Fgithub.com\u002Fkfet\u002Ffir\u002Fblob\u002Fmain\u002Fpkg\u002Fresources\u002Fbuiltin_skills\u002Fwt\u002FSKILL.md",[],[65,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,32,85,86],"tmux","git","worktree","git worktree","work","context","user","spawn","session","use","conversation","cue","fresh","it","about","at","inline",{"skillNo":88,"name":89,"nameZh":6,"description":90,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":91,"categories":92,"keywords":93,"publishedAt":35},"01M6CS26KAKJ7VYRQ3RJ31SJ6S","wrap-up","Wrap up work on a project branch — review, fix, and simplify in a loop until clean, then ff-merge to main.","https:\u002F\u002Fgithub.com\u002Fkfet\u002Ffir\u002Fblob\u002Fmain\u002Fpkg\u002Fresources\u002Fbuiltin_skills\u002Fwrap-up\u002FSKILL.md",[],[94,95,96,97,98,99,100,101,74,102,103,104,41,105,106,32],"wrap up","up","wrap","review","merge","simplify","loop","work on","branch","fix","clean","merge to main","project",{"skillNo":108,"name":109,"nameZh":6,"description":110,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":111,"categories":112,"keywords":113,"publishedAt":35},"01M6CS23P85MSVBX11XMFB29PF","tmux-observer","Attach a tmux window to an already-running fir session — observe its transcript and drive its input via tmux send-keys. Use when you need to watch or steer another fir agent.","https:\u002F\u002Fgithub.com\u002Fkfet\u002Ffir\u002Fblob\u002Fmain\u002Fpkg\u002Fresources\u002Fbuiltin_skills\u002Ftmux-observer\u002FSKILL.md",[],[70,114,115,116,78,79,117,24,118,28,119,120,121,32,122,123,124,125,126,127],"tmux observer","observer","transcript","drive","attach","input","via","you","keys","steer","window","send","when","running",{"skillNo":129,"name":130,"nameZh":6,"description":131,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":132,"categories":133,"keywords":134,"publishedAt":35},"01M6CS21ENQ3D7Z08TDKXHJRR6","tmux-driver","Drive interactive CLIs (python, gdb, etc.) via named tmux sessions with multi-window support. Falls back to fir's built-in PTY driver when tmux is unavailable.","https:\u002F\u002Fgithub.com\u002Fkfet\u002Ffir\u002Fblob\u002Fmain\u002Fpkg\u002Fresources\u002Fbuiltin_skills\u002Ftmux-driver\u002FSKILL.md",[],[70,135,136,137,138,139,140,141,117,142,143,120,144,145,32,124,126],"tmux driver","driver","python","support","sessions","interactive","PTY","back","gdb","multi","with",{"skillNo":147,"name":148,"nameZh":6,"description":149,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":150,"categories":151,"keywords":157,"publishedAt":35},"01M6CS1YWSAH2TQ7S4VK7VKJT6","telegram-bot-setup","Set up a new Telegram bot channel for a fir project — install the telegram MCP, create a per-project state dir, drop in the bot token, wire .fir\u002Fmcp.json with TELEGRAM_STATE_DIR, pair the user, and verify. Use when the user asks to add, configure, or onboard a Telegram bot for a fir worktree\u002Fproject.","https:\u002F\u002Fgithub.com\u002Fkfet\u002Ffir\u002Fblob\u002Fmain\u002Fpkg\u002Fresources\u002Fbuiltin_skills\u002Ftelegram-bot-setup\u002FSKILL.md",[152],{"categoryNo":153,"categoryName":154,"taxonomyType":155,"taxonomyTypeDesc":156},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[158,159,160,161,162,163,164,165,72,166,167,168,169,170,171,172,173,79,95,174,106,145,32,175,126,176],"bot","setup","telegram bot","telegram","telegram bot setup","MCP","create","state","SET","verify","onboard","configure","json","pair","install","channel","drop","for","new",{"skillNo":178,"name":179,"nameZh":6,"description":180,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":181,"categories":182,"keywords":183,"publishedAt":35},"01M6CS1VSW4C1W1QED8NDHBHZ9","sync","Sync with an upstream source repo — detect changed files, apply equivalent downstream edits, update the baseline, and report any new features or non-trivial changes picked up.","https:\u002F\u002Fgithub.com\u002Fkfet\u002Ffir\u002Fblob\u002Fmain\u002Fpkg\u002Fresources\u002Fbuiltin_skills\u002Fsync\u002FSKILL.md",[],[179,184,185,186,187,95,188,189,190,145,32,191,192,193,194,176],"update","report","baseline","repo","files","upstream","detect","source","changes","features","apply"]