[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M74MJ14DW7421PBYVPVGYQKQ":3,"skill-same:01M74MJ14DW7421PBYVPVGYQKQ":54},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":18,"linkOnly":19,"markdownContent":20,"markdownBody":21,"frontMatter":22,"refName":34,"commitSha":35,"skillDirectory":36,"forksCount":13,"repositoryHtmlUrl":37,"repositoryHomepageUrl":6,"ownerHtmlUrl":38,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":39,"install":40,"resources":53},"01M74MJ14DW7421PBYVPVGYQKQ","jupyter-live-kernel",null,"Iterative Python via live Jupyter kernel (hamelnb).","LyrikNilpferd71\u002FHermes-Backup","LyrikNilpferd71","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F187173780?v=4","01M727S8GPB77P0S9ECRRMZT58","01M727S8HF63B0MD53F496MK1V",0,"MIT","https:\u002F\u002Fgithub.com\u002FLyrikNilpferd71\u002FHermes-Backup\u002Fblob\u002Fmain\u002Fsnapshots\u002F2026-07-26T14-01-09+0200\u002Fskills\u002Fdata-science\u002Fjupyter-live-kernel\u002FSKILL.md",[],[],"2026-11-11 15:11:14",false,"---\nname: jupyter-live-kernel\ndescription: \"Iterative Python via live Jupyter kernel (hamelnb).\"\nversion: 1.0.0\nauthor: Hermes Agent\nlicense: MIT\nmetadata:\n  hermes:\n    tags: [jupyter, notebook, repl, data-science, exploration, iterative]\n    category: data-science\n---\n\n# Jupyter Live Kernel (hamelnb)\n\nGives you a **stateful Python REPL** via a live Jupyter kernel. Variables persist\nacross executions. Use this instead of `execute_code` when you need to build up\nstate incrementally, explore APIs, inspect DataFrames, or iterate on complex code.\n\n## When to Use This vs Other Tools\n\n| Tool | Use When |\n|------|----------|\n| **This skill** | Iterative exploration, state across steps, data science, ML, \"let me try this and check\" |\n| `execute_code` | One-shot scripts needing hermes tool access (web_search, file ops). Stateless. |\n| `terminal` | Shell commands, builds, installs, git, process management |\n\n**Rule of thumb:** If you'd want a Jupyter notebook for the task, use this skill.\n\n## Prerequisites\n\n1. **uv** must be installed (check: `which uv`)\n2. **JupyterLab** must be installed: `uv tool install jupyterlab`\n3. A Jupyter server must be running (see Setup below)\n\n## Setup\n\nThe hamelnb script location:\n```\nSCRIPT=\"$HOME\u002F.agent-skills\u002Fhamelnb\u002Fskills\u002Fjupyter-live-kernel\u002Fscripts\u002Fjupyter_live_kernel.py\"\n```\n\nIf not cloned yet:\n```\ngit clone https:\u002F\u002Fgithub.com\u002Fhamelsmu\u002Fhamelnb.git ~\u002F.agent-skills\u002Fhamelnb\n```\n\n### Starting JupyterLab\n\nCheck if a server is already running:\n```\nuv run \"$SCRIPT\" servers\n```\n\nIf no servers found, start one:\n```\njupyter-lab --no-browser --port=8888 --notebook-dir=$HOME\u002Fnotebooks \\\n  --IdentityProvider.token='' --ServerApp.password='' > \u002Ftmp\u002Fjupyter.log 2>&1 &\nsleep 3\n```\n\nNote: Token\u002Fpassword disabled for local agent access. The server runs headless.\n\n### Creating a Notebook for REPL Use\n\nIf you just need a REPL (no existing notebook), create a minimal notebook file:\n```\nmkdir -p ~\u002Fnotebooks\n```\nWrite a minimal .ipynb JSON file with one empty code cell, then start a kernel\nsession via the Jupyter REST API:\n```\ncurl -s -X POST http:\u002F\u002F127.0.0.1:8888\u002Fapi\u002Fsessions \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"path\":\"scratch.ipynb\",\"type\":\"notebook\",\"name\":\"scratch.ipynb\",\"kernel\":{\"name\":\"python3\"}}'\n```\n\n## Core Workflow\n\nAll commands return structured JSON. Always use `--compact` to save tokens.\n\n### 1. Discover servers and notebooks\n\n```\nuv run \"$SCRIPT\" servers --compact\nuv run \"$SCRIPT\" notebooks --compact\n```\n\n### 2. Execute code (primary operation)\n\n```\nuv run \"$SCRIPT\" execute --path \u003Cnotebook.ipynb> --code '\u003Cpython code>' --compact\n```\n\nState persists across execute calls. Variables, imports, objects all survive.\n\nMulti-line code works with $'...' quoting:\n```\nuv run \"$SCRIPT\" execute --path scratch.ipynb --code $'import os\\nfiles = os.listdir(\".\")\\nprint(f\"Found {len(files)} files\")' --compact\n```\n\n### 3. Inspect live variables\n\n```\nuv run \"$SCRIPT\" variables --path \u003Cnotebook.ipynb> list --compact\nuv run \"$SCRIPT\" variables --path \u003Cnotebook.ipynb> preview --name \u003Cvarname> --compact\n```\n\n### 4. Edit notebook cells\n\n```\n# View current cells\nuv run \"$SCRIPT\" contents --path \u003Cnotebook.ipynb> --compact\n\n# Insert a new cell\nuv run \"$SCRIPT\" edit --path \u003Cnotebook.ipynb> insert \\\n  --at-index \u003CN> --cell-type code --source '\u003Ccode>' --compact\n\n# Replace cell source (use cell-id from contents output)\nuv run \"$SCRIPT\" edit --path \u003Cnotebook.ipynb> replace-source \\\n  --cell-id \u003Cid> --source '\u003Cnew code>' --compact\n\n# Delete a cell\nuv run \"$SCRIPT\" edit --path \u003Cnotebook.ipynb> delete --cell-id \u003Cid> --compact\n```\n\n### 5. Verification (restart + run all)\n\nOnly use when the user asks for a clean verification or you need to confirm\nthe notebook runs top-to-bottom:\n\n```\nuv run \"$SCRIPT\" restart-run-all --path \u003Cnotebook.ipynb> --save-outputs --compact\n```\n\n## Practical Tips from Experience\n\n1. **First execution after server start may timeout** — the kernel needs a moment\n   to initialize. If you get a timeout, just retry.\n\n2. **The kernel Python is JupyterLab's Python** — packages must be installed in\n   that environment. If you need additional packages, install them into the\n   JupyterLab tool environment first.\n\n3. **--compact flag saves significant tokens** — always use it. JSON output can\n   be very verbose without it.\n\n4. **For pure REPL use**, create a scratch.ipynb and don't bother with cell editing.\n   Just use `execute` repeatedly.\n\n5. **Argument order matters** — subcommand flags like `--path` go BEFORE the\n   sub-subcommand. E.g.: `variables --path nb.ipynb list` not `variables list --path nb.ipynb`.\n\n6. **If a session doesn't exist yet**, you need to start one via the REST API\n   (see Setup section). The tool can't execute without a live kernel session.\n\n7. **Errors are returned as JSON** with traceback — read the `ename` and `evalue`\n   fields to understand what went wrong.\n\n8. **Occasional websocket timeouts** — some operations may timeout on first try,\n   especially after a kernel restart. Retry once before escalating.\n\n## Timeout Defaults\n\nThe script has a 30-second default timeout per execution. For long-running\noperations, pass `--timeout 120`. Use generous timeouts (60+) for initial\nsetup or heavy computation.\n","# Jupyter Live Kernel (hamelnb)\n\nGives you a **stateful Python REPL** via a live Jupyter kernel. Variables persist\nacross executions. Use this instead of `execute_code` when you need to build up\nstate incrementally, explore APIs, inspect DataFrames, or iterate on complex code.\n\n## When to Use This vs Other Tools\n\n| Tool | Use When |\n|------|----------|\n| **This skill** | Iterative exploration, state across steps, data science, ML, \"let me try this and check\" |\n| `execute_code` | One-shot scripts needing hermes tool access (web_search, file ops). Stateless. |\n| `terminal` | Shell commands, builds, installs, git, process management |\n\n**Rule of thumb:** If you'd want a Jupyter notebook for the task, use this skill.\n\n## Prerequisites\n\n1. **uv** must be installed (check: `which uv`)\n2. **JupyterLab** must be installed: `uv tool install jupyterlab`\n3. A Jupyter server must be running (see Setup below)\n\n## Setup\n\nThe hamelnb script location:\n```\nSCRIPT=\"$HOME\u002F.agent-skills\u002Fhamelnb\u002Fskills\u002Fjupyter-live-kernel\u002Fscripts\u002Fjupyter_live_kernel.py\"\n```\n\nIf not cloned yet:\n```\ngit clone https:\u002F\u002Fgithub.com\u002Fhamelsmu\u002Fhamelnb.git ~\u002F.agent-skills\u002Fhamelnb\n```\n\n### Starting JupyterLab\n\nCheck if a server is already running:\n```\nuv run \"$SCRIPT\" servers\n```\n\nIf no servers found, start one:\n```\njupyter-lab --no-browser --port=8888 --notebook-dir=$HOME\u002Fnotebooks \\\n  --IdentityProvider.token='' --ServerApp.password='' > \u002Ftmp\u002Fjupyter.log 2>&1 &\nsleep 3\n```\n\nNote: Token\u002Fpassword disabled for local agent access. The server runs headless.\n\n### Creating a Notebook for REPL Use\n\nIf you just need a REPL (no existing notebook), create a minimal notebook file:\n```\nmkdir -p ~\u002Fnotebooks\n```\nWrite a minimal .ipynb JSON file with one empty code cell, then start a kernel\nsession via the Jupyter REST API:\n```\ncurl -s -X POST http:\u002F\u002F127.0.0.1:8888\u002Fapi\u002Fsessions \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"path\":\"scratch.ipynb\",\"type\":\"notebook\",\"name\":\"scratch.ipynb\",\"kernel\":{\"name\":\"python3\"}}'\n```\n\n## Core Workflow\n\nAll commands return structured JSON. Always use `--compact` to save tokens.\n\n### 1. Discover servers and notebooks\n\n```\nuv run \"$SCRIPT\" servers --compact\nuv run \"$SCRIPT\" notebooks --compact\n```\n\n### 2. Execute code (primary operation)\n\n```\nuv run \"$SCRIPT\" execute --path \u003Cnotebook.ipynb> --code '\u003Cpython code>' --compact\n```\n\nState persists across execute calls. Variables, imports, objects all survive.\n\nMulti-line code works with $'...' quoting:\n```\nuv run \"$SCRIPT\" execute --path scratch.ipynb --code $'import os\\nfiles = os.listdir(\".\")\\nprint(f\"Found {len(files)} files\")' --compact\n```\n\n### 3. Inspect live variables\n\n```\nuv run \"$SCRIPT\" variables --path \u003Cnotebook.ipynb> list --compact\nuv run \"$SCRIPT\" variables --path \u003Cnotebook.ipynb> preview --name \u003Cvarname> --compact\n```\n\n### 4. Edit notebook cells\n\n```\n# View current cells\nuv run \"$SCRIPT\" contents --path \u003Cnotebook.ipynb> --compact\n\n# Insert a new cell\nuv run \"$SCRIPT\" edit --path \u003Cnotebook.ipynb> insert \\\n  --at-index \u003CN> --cell-type code --source '\u003Ccode>' --compact\n\n# Replace cell source (use cell-id from contents output)\nuv run \"$SCRIPT\" edit --path \u003Cnotebook.ipynb> replace-source \\\n  --cell-id \u003Cid> --source '\u003Cnew code>' --compact\n\n# Delete a cell\nuv run \"$SCRIPT\" edit --path \u003Cnotebook.ipynb> delete --cell-id \u003Cid> --compact\n```\n\n### 5. Verification (restart + run all)\n\nOnly use when the user asks for a clean verification or you need to confirm\nthe notebook runs top-to-bottom:\n\n```\nuv run \"$SCRIPT\" restart-run-all --path \u003Cnotebook.ipynb> --save-outputs --compact\n```\n\n## Practical Tips from Experience\n\n1. **First execution after server start may timeout** — the kernel needs a moment\n   to initialize. If you get a timeout, just retry.\n\n2. **The kernel Python is JupyterLab's Python** — packages must be installed in\n   that environment. If you need additional packages, install them into the\n   JupyterLab tool environment first.\n\n3. **--compact flag saves significant tokens** — always use it. JSON output can\n   be very verbose without it.\n\n4. **For pure REPL use**, create a scratch.ipynb and don't bother with cell editing.\n   Just use `execute` repeatedly.\n\n5. **Argument order matters** — subcommand flags like `--path` go BEFORE the\n   sub-subcommand. E.g.: `variables --path nb.ipynb list` not `variables list --path nb.ipynb`.\n\n6. **If a session doesn't exist yet**, you need to start one via the REST API\n   (see Setup section). The tool can't execute without a live kernel session.\n\n7. **Errors are returned as JSON** with traceback — read the `ename` and `evalue`\n   fields to understand what went wrong.\n\n8. **Occasional websocket timeouts** — some operations may timeout on first try,\n   especially after a kernel restart. Retry once before escalating.\n\n## Timeout Defaults\n\nThe script has a 30-second default timeout per execution. For long-running\noperations, pass `--timeout 120`. Use generous timeouts (60+) for initial\nsetup or heavy computation.\n",{"name":5,"author":23,"license":14,"version":24,"metadata":25,"description":7},"Hermes Agent","1.0.0",{"hermes":26},{"tags":27,"category":31},[28,29,30,31,32,33],"jupyter","notebook","repl","data-science","exploration","iterative","main","404fd33aabef3b6bc1cc913117ba2160ade62625","snapshots\u002F2026-07-26T14-01-09+0200\u002Fskills\u002Fdata-science\u002Fjupyter-live-kernel","https:\u002F\u002Fgithub.com\u002FLyrikNilpferd71\u002FHermes-Backup","https:\u002F\u002Fgithub.com\u002FLyrikNilpferd71","2026-11-08 20:00:57",{"source":8,"skillName":5,"commands":41,"prompt":51,"zipAvailable":52},[42,45,48],{"tool":43,"command":44},"npx","npx skills add LyrikNilpferd71\u002FHermes-Backup --skill jupyter-live-kernel",{"tool":46,"command":47},"bunx","bunx skills add LyrikNilpferd71\u002FHermes-Backup --skill jupyter-live-kernel",{"tool":49,"command":50},"pnpm","pnpm dlx skills add LyrikNilpferd71\u002FHermes-Backup --skill jupyter-live-kernel","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FLyrikNilpferd71\u002FHermes-Backup\u002Fblob\u002Fmain\u002Fsnapshots\u002F2026-07-26T14-01-09+0200\u002Fskills\u002Fdata-science\u002Fjupyter-live-kernel\u002FSKILL.md",true,[],[55,63,70,77,84,91],{"skillNo":56,"name":57,"nameZh":6,"description":58,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":59,"categories":60,"keywords":61,"publishedAt":62},"01M76BBCCNA7WQ82Q8QNZH8PBK","writing-plans","Write implementation plans: bite-sized tasks, paths, code.","https:\u002F\u002Fgithub.com\u002FLyrikNilpferd71\u002FHermes-Backup\u002Fblob\u002Fmain\u002Fsnapshots\u002F2026-11-08T13-00-51+0100\u002Fskills\u002Fsoftware-development\u002Fwriting-plans\u002FSKILL.md",[],[],"2026-11-12 13:55:43",{"skillNo":64,"name":65,"nameZh":6,"description":66,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":67,"categories":68,"keywords":69,"publishedAt":62},"01M76BB8YS41CA3NKW0YMSSB88","systematic-debugging","4-phase root cause debugging: understand bugs before fixing.","https:\u002F\u002Fgithub.com\u002FLyrikNilpferd71\u002FHermes-Backup\u002Fblob\u002Fmain\u002Fsnapshots\u002F2026-11-08T13-00-51+0100\u002Fskills\u002Fsoftware-development\u002Fsystematic-debugging\u002FSKILL.md",[],[],{"skillNo":71,"name":72,"nameZh":6,"description":73,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":74,"categories":75,"keywords":76,"publishedAt":62},"01M76BB680FPNT998E1GM2QW10","subagent-driven-development","Execute plans via delegate_task subagents (2-stage review).","https:\u002F\u002Fgithub.com\u002FLyrikNilpferd71\u002FHermes-Backup\u002Fblob\u002Fmain\u002Fsnapshots\u002F2026-11-08T13-00-51+0100\u002Fskills\u002Fsoftware-development\u002Fsubagent-driven-development\u002FSKILL.md",[],[],{"skillNo":78,"name":79,"nameZh":6,"description":80,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":81,"categories":82,"keywords":83,"publishedAt":62},"01M76BB3C4ZB9S4RWPMM8MX0YB","plan","Write a markdown plan to .hermes\u002Fplans\u002F; no execution.","https:\u002F\u002Fgithub.com\u002FLyrikNilpferd71\u002FHermes-Backup\u002Fblob\u002Fmain\u002Fsnapshots\u002F2026-11-08T13-00-51+0100\u002Fskills\u002Fsoftware-development\u002Fplan\u002FSKILL.md",[],[],{"skillNo":85,"name":86,"nameZh":6,"description":87,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":88,"categories":89,"keywords":90,"publishedAt":62},"01M76BB0NK28KMP51YDB5R3EXA","hermes-agent-skill-authoring","Author in-repo SKILL.md files: frontmatter and structure.","https:\u002F\u002Fgithub.com\u002FLyrikNilpferd71\u002FHermes-Backup\u002Fblob\u002Fmain\u002Fsnapshots\u002F2026-11-08T13-00-51+0100\u002Fskills\u002Fsoftware-development\u002Fhermes-agent-skill-authoring\u002FSKILL.md",[],[],{"skillNo":92,"name":93,"nameZh":6,"description":94,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":95,"categories":96,"keywords":97,"publishedAt":62},"01M76BAYV58H0CKNSTZE3ZH4NY","debugging-hermes-tui-commands","Debug Hermes TUI slash commands: Python, gateway, Ink UI.","https:\u002F\u002Fgithub.com\u002FLyrikNilpferd71\u002FHermes-Backup\u002Fblob\u002Fmain\u002Fsnapshots\u002F2026-11-08T13-00-51+0100\u002Fskills\u002Fsoftware-development\u002Fdebugging-hermes-tui-commands\u002FSKILL.md",[],[]]