[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6JZ3Z88FC6XERD4PZRSTBD7":3,"skill-same:01M6JZ3Z88FC6XERD4PZRSTBD7":77},{"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":22,"publishedAt":43,"linkOnly":44,"markdownContent":45,"markdownBody":46,"frontMatter":47,"refName":48,"commitSha":49,"skillDirectory":50,"forksCount":51,"repositoryHtmlUrl":52,"repositoryHomepageUrl":53,"ownerHtmlUrl":54,"ownerBlogUrl":55,"ownerDescription":6,"updatedAt":56,"install":57,"resources":70},"01M6JZ3Z88FC6XERD4PZRSTBD7","council-hub-notebook",null,"Drive dev work from Council Hub's notebooks, above all the global `current-work` cockpit. Covers choosing a `room_ref` versus a `task`, closing a task with `check` instead of appending \"DONE\", reading a big notebook without overflowing the client (`status`, `level`, `project`, `limit`, `entry_id`), and the confirmed soft delete (`delete`\u002F`restore`\u002F`purge`) that replaced a silent whole-notebook delete. Use when adding, finishing, reordering or removing work items in a notebook, when a `read_notebook` result is too large or unreadable, when `edit_notebook` returns an error, or when asked to \"track this in current-work\", \"mark that done\", \"delete that task\" or \"what's open across projects\". Not for the session-start ritual as a whole (council-hub-workflow), room synthesis and cleanup (council-hub-janitor), or the timeline of decisions in one project, which is plain `read_notebook(project=...)` with no `notebook_id`.","iksnerd\u002Fcouncil-hub","iksnerd","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F32894415?v=4","01M6JZ35V8YHVB56ED2A3CNPFX","01M6JZ35ZVND50GAT9KDW6VH5P",4,"MIT","https:\u002F\u002Fgithub.com\u002Fiksnerd\u002Fcouncil-hub\u002Fblob\u002Fmain\u002Fplugins\u002Fcouncil-hub\u002Fskills\u002Fcouncil-hub-notebook\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42],"hub","council hub notebook","notebook","council","status","cleanup","which","closing","reading","error","project","across","done","workflow","edit","read","work","projects","open","delete","2026-11-10 10:12:30",false,"---\nname: council-hub-notebook\ndescription: Drive dev work from Council Hub's notebooks, above all the global `current-work` cockpit. Covers choosing a `room_ref` versus a `task`, closing a task with `check` instead of appending \"DONE\", reading a big notebook without overflowing the client (`status`, `level`, `project`, `limit`, `entry_id`), and the confirmed soft delete (`delete`\u002F`restore`\u002F`purge`) that replaced a silent whole-notebook delete. Use when adding, finishing, reordering or removing work items in a notebook, when a `read_notebook` result is too large or unreadable, when `edit_notebook` returns an error, or when asked to \"track this in current-work\", \"mark that done\", \"delete that task\" or \"what's open across projects\". Not for the session-start ritual as a whole (council-hub-workflow), room synthesis and cleanup (council-hub-janitor), or the timeline of decisions in one project, which is plain `read_notebook(project=...)` with no `notebook_id`.\n---\n\n# Council Hub notebooks and the `current-work` cockpit\n\nA notebook is a hand-curated outline over the ledger. Rooms are the journal;\nnotebooks are the index you steer by. Notebooks are **node-local** and never\nfan out across a cluster, so the cockpit lives on one node.\n\n`current-work` is a convention, not a built-in: one global notebook (no\n`project`, so every project lists it). Create it once with\n`edit_notebook(action=create, notebook_id=current-work)`.\n\n## Room, or task?\n\n| Work is... | Add as | Closes by |\n|---|---|---|\n| A thread with its own discussion | `kind=room_ref`, `ref_id=\u003Croom_id>` | `signal_status(resolved)` on the room; the entry moves from In flight to Done by itself |\n| A checklist item too small for a room | `kind=task`, `prose=\u003Clabel>` | `start`, then `check` |\n| A fact to keep in view | `kind=ref` (message) or `query_ref` (`room:type`, resolved live) | stays live; never goes stale |\n\nNever hand-edit a `room_ref` to reflect a status change, and never hand-sort\ntasks: both self-sort into In progress \u002F Open \u002F Done.\n\n## Give a task a date, an owner or a room\n\nA task takes four optional fields: `due` (`YYYY-MM-DD`), `owner` (free text, such as\nan agent name or `OWNER`), `repo` and `room`.\n\n```\nedit_notebook(action=add, kind=task, prose=\"Rotate the signing key\",\n              due=\"2026-11-15\", owner=\"OWNER\", repo=\"iksnerd\u002Fctxgraph\")\nedit_notebook(action=update, entry_id=\u003Cfull entry id>, due=\"\")   # an empty string clears a field\n```\n\nThe outline prints the fields after the label. An open or doing task past its `due`\ndate (UTC) is marked `OVERDUE`. To list only those, call\n`read_notebook(notebook_id=current-work, overdue=true)`. To list one owner's tasks,\npass `owner=\u003Cname>`. Both narrow the result to tasks.\n\nWhen a task has a `room`, resolving or archiving that room lists the tasks still\nopen for it. Nothing closes by itself: close each one with `check`, or point it at\nanother room with `update`.\n\n## Close a task with `check`\n\n```\nedit_notebook(action=check, entry_id=\u003Cfull entry id>)\n```\n\nDo **not** call `add` with `prose=\"DONE 2026-09-22: shipped X\"`. That makes a\nnew open task whose label happens to say DONE, so the cockpit still counts it\nas open (reported 2026-09-21). Since v0.63.0 an `add` whose label starts with\nDONE, a check mark or `[x]` returns a nudge, but it still adds the entry.\n`uncheck` reopens; `update` rewrites a label without changing state.\n\nEntry ids are the `*(entry #...)*` markers in `read_notebook(notebook_id=...)`.\nPass the **full** id: UUIDv7 prefixes collide within a millisecond.\n`ref_id` is the room-id parameter for a `room_ref` (not `room_id`). Re-adding\na target that is already referenced returns the existing entry, so repeating\nan `add` across sessions does not create duplicates. `ref_ids=[...]` adds a\nbatch and keeps the given order.\n\n## Remove one entry vs delete a notebook\n\n- `remove` + `entry_id` drops one entry.\n- `delete` acts on the **whole** notebook and needs `notebook_id` plus\n  `confirm` set to the notebook id or its entry count. It is a soft delete:\n  a markdown snapshot goes under `archives\u002Fnotebooks\u002F`, `restore` undoes it,\n  `purge` (also confirmed) is permanent. It rejects `entry_id`, because\n  before v0.63.0 `delete` with an `entry_id` silently removed an entire\n  419-entry `current-work` (2026-10-18).\n- Every write reports entry counts before and after. If the count dropped by\n  more than you meant, `restore` at once.\n- Never pass `confirm` to make an error go away. Read the count it asks for.\n\n## Reading a big notebook\n\nAn unfiltered `current-work` on a mature hub is 100-170K characters and\noverflows the client. Ask for less, in this order:\n\n```\nread_notebook(notebook_id=current-work, status=open, level=1)       # what is open, headings only\nread_notebook(notebook_id=current-work, status=open, project=atlas) # one project's open items\nread_notebook(notebook_id=current-work, entry_id=\u003Cid>)              # one entry in full\nread_notebook(notebook_id=current-work, status=open, limit=20)\n```\n\n`status` (`open|doing|done`) and `project` filter before entries resolve, so\nthey are cheap. `level=1` also clips task labels and room_ref topics to their\nfirst sentence. If a call overflows anyway, the harness says \"read the saved\nfile\"; retry with these parameters instead of forking a subagent onto the file\n(that cost one session about 625K tokens, 2026-09-27).\n\nWithout `notebook_id`, `read_notebook(project=...)` is the project **timeline**\nof typed messages (decision, action, synthesis by default), a different thing.\nMessages typed `message` never appear there; use `note` if nothing else fits.\n\n## Gotchas\n\n- The `current-work` entry you want may be done: `status=open` hides it. Drop\n  the filter before concluding it does not exist.\n- A `room_ref` is open until its room resolves. A paused room still reads as\n  In flight.\n- A soft-deleted notebook disappears from listings and from the janitor's\n  \"no notebook\" nudge. `restore` is the only way back short of the archive file.\n","# Council Hub notebooks and the `current-work` cockpit\n\nA notebook is a hand-curated outline over the ledger. Rooms are the journal;\nnotebooks are the index you steer by. Notebooks are **node-local** and never\nfan out across a cluster, so the cockpit lives on one node.\n\n`current-work` is a convention, not a built-in: one global notebook (no\n`project`, so every project lists it). Create it once with\n`edit_notebook(action=create, notebook_id=current-work)`.\n\n## Room, or task?\n\n| Work is... | Add as | Closes by |\n|---|---|---|\n| A thread with its own discussion | `kind=room_ref`, `ref_id=\u003Croom_id>` | `signal_status(resolved)` on the room; the entry moves from In flight to Done by itself |\n| A checklist item too small for a room | `kind=task`, `prose=\u003Clabel>` | `start`, then `check` |\n| A fact to keep in view | `kind=ref` (message) or `query_ref` (`room:type`, resolved live) | stays live; never goes stale |\n\nNever hand-edit a `room_ref` to reflect a status change, and never hand-sort\ntasks: both self-sort into In progress \u002F Open \u002F Done.\n\n## Give a task a date, an owner or a room\n\nA task takes four optional fields: `due` (`YYYY-MM-DD`), `owner` (free text, such as\nan agent name or `OWNER`), `repo` and `room`.\n\n```\nedit_notebook(action=add, kind=task, prose=\"Rotate the signing key\",\n              due=\"2026-11-15\", owner=\"OWNER\", repo=\"iksnerd\u002Fctxgraph\")\nedit_notebook(action=update, entry_id=\u003Cfull entry id>, due=\"\")   # an empty string clears a field\n```\n\nThe outline prints the fields after the label. An open or doing task past its `due`\ndate (UTC) is marked `OVERDUE`. To list only those, call\n`read_notebook(notebook_id=current-work, overdue=true)`. To list one owner's tasks,\npass `owner=\u003Cname>`. Both narrow the result to tasks.\n\nWhen a task has a `room`, resolving or archiving that room lists the tasks still\nopen for it. Nothing closes by itself: close each one with `check`, or point it at\nanother room with `update`.\n\n## Close a task with `check`\n\n```\nedit_notebook(action=check, entry_id=\u003Cfull entry id>)\n```\n\nDo **not** call `add` with `prose=\"DONE 2026-09-22: shipped X\"`. That makes a\nnew open task whose label happens to say DONE, so the cockpit still counts it\nas open (reported 2026-09-21). Since v0.63.0 an `add` whose label starts with\nDONE, a check mark or `[x]` returns a nudge, but it still adds the entry.\n`uncheck` reopens; `update` rewrites a label without changing state.\n\nEntry ids are the `*(entry #...)*` markers in `read_notebook(notebook_id=...)`.\nPass the **full** id: UUIDv7 prefixes collide within a millisecond.\n`ref_id` is the room-id parameter for a `room_ref` (not `room_id`). Re-adding\na target that is already referenced returns the existing entry, so repeating\nan `add` across sessions does not create duplicates. `ref_ids=[...]` adds a\nbatch and keeps the given order.\n\n## Remove one entry vs delete a notebook\n\n- `remove` + `entry_id` drops one entry.\n- `delete` acts on the **whole** notebook and needs `notebook_id` plus\n  `confirm` set to the notebook id or its entry count. It is a soft delete:\n  a markdown snapshot goes under `archives\u002Fnotebooks\u002F`, `restore` undoes it,\n  `purge` (also confirmed) is permanent. It rejects `entry_id`, because\n  before v0.63.0 `delete` with an `entry_id` silently removed an entire\n  419-entry `current-work` (2026-10-18).\n- Every write reports entry counts before and after. If the count dropped by\n  more than you meant, `restore` at once.\n- Never pass `confirm` to make an error go away. Read the count it asks for.\n\n## Reading a big notebook\n\nAn unfiltered `current-work` on a mature hub is 100-170K characters and\noverflows the client. Ask for less, in this order:\n\n```\nread_notebook(notebook_id=current-work, status=open, level=1)       # what is open, headings only\nread_notebook(notebook_id=current-work, status=open, project=atlas) # one project's open items\nread_notebook(notebook_id=current-work, entry_id=\u003Cid>)              # one entry in full\nread_notebook(notebook_id=current-work, status=open, limit=20)\n```\n\n`status` (`open|doing|done`) and `project` filter before entries resolve, so\nthey are cheap. `level=1` also clips task labels and room_ref topics to their\nfirst sentence. If a call overflows anyway, the harness says \"read the saved\nfile\"; retry with these parameters instead of forking a subagent onto the file\n(that cost one session about 625K tokens, 2026-09-27).\n\nWithout `notebook_id`, `read_notebook(project=...)` is the project **timeline**\nof typed messages (decision, action, synthesis by default), a different thing.\nMessages typed `message` never appear there; use `note` if nothing else fits.\n\n## Gotchas\n\n- The `current-work` entry you want may be done: `status=open` hides it. Drop\n  the filter before concluding it does not exist.\n- A `room_ref` is open until its room resolves. A paused room still reads as\n  In flight.\n- A soft-deleted notebook disappears from listings and from the janitor's\n  \"no notebook\" nudge. `restore` is the only way back short of the archive file.\n",{"name":5,"description":7},"main","fc3268697ecdf9b61dc55568936a7e07bf55b3d4","plugins\u002Fcouncil-hub\u002Fskills\u002Fcouncil-hub-notebook",0,"https:\u002F\u002Fgithub.com\u002Fiksnerd\u002Fcouncil-hub","https:\u002F\u002Fhub.docker.com\u002Fr\u002Fiksnerd\u002Fcouncil-hub","https:\u002F\u002Fgithub.com\u002Fiksnerd","iksnerd.xyz","2026-11-08 10:43:20",{"source":8,"skillName":5,"commands":58,"prompt":68,"zipAvailable":69},[59,62,65],{"tool":60,"command":61},"npx","npx skills add iksnerd\u002Fcouncil-hub --skill council-hub-notebook",{"tool":63,"command":64},"bunx","bunx skills add iksnerd\u002Fcouncil-hub --skill council-hub-notebook",{"tool":66,"command":67},"pnpm","pnpm dlx skills add iksnerd\u002Fcouncil-hub --skill council-hub-notebook","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fiksnerd\u002Fcouncil-hub\u002Fblob\u002Fmain\u002Fplugins\u002Fcouncil-hub\u002Fskills\u002Fcouncil-hub-notebook\u002FSKILL.md",true,[71],{"path":72,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":75,"sourceHtmlUrl":76},"EVOLUTION.md","REFERENCE","参考文档",1338,"https:\u002F\u002Fgithub.com\u002Fiksnerd\u002Fcouncil-hub\u002Fblob\u002Fmain\u002Fplugins\u002Fcouncil-hub\u002Fskills\u002Fcouncil-hub-notebook\u002FEVOLUTION.md",[78,100,119,135,156,177],{"skillNo":79,"name":80,"nameZh":6,"description":81,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":82,"categories":83,"keywords":85,"publishedAt":43},"01M6JZ4H1GH8JP7T9ATMXV6XN1","council-hub-workflow","Make Council Hub the actual source of truth for dev work, not an afterthought — check mentions\u002Fdigest\u002Fnotebook before starting substantive work, log decisions and actions to a room as you go (not just at the end), and close out with a pinned synthesis + resolved\u002Fpaused status. Use at the start of any coding\u002Fproject session where a council-hub MCP server is connected, at natural checkpoints mid-session (a decision made, a milestone shipped, a blocker hit), and before wrapping up. Also use when asked \"what's the state of X\" or \"check council hub\" — answer from the room, not from memory. Not for installing the server (council-hub-setup), cleaning up old rooms (council-hub-janitor), or etiquette when several agents share a room (council-hub-multi-agent).","https:\u002F\u002Fgithub.com\u002Fiksnerd\u002Fcouncil-hub\u002Fblob\u002Fmain\u002Fplugins\u002Fcouncil-hub\u002Fskills\u002Fcouncil-hub-workflow\u002FSKILL.md",[84],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[36,26,23,86,87,88,89,90,91,92,39,93,94,25,95,96,33,97,98,99],"council hub workflow","MCP","memory","mcp server","server","actions","decision","up","log","milestone","digest","end","close","you",{"skillNo":101,"name":102,"nameZh":6,"description":103,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":104,"categories":105,"keywords":107,"publishedAt":43},"01M6JZ4BV5NJ2Z0DNX968774FR","council-hub-setup","Stand up a Council Hub server and connect MCP clients to it — pick stdio vs HTTP transport, run the container with the right volume and ports, register the endpoint with Claude Code \u002F Claude Desktop \u002F Gemini CLI \u002F any MCP client, verify the connection end to end, and turn on the optional extras (semantic search via Ollama, multi-node clustering, low-memory mode). Use when asked to install \u002F set up \u002F configure Council Hub, connect an agent to council-hub, add the council-hub MCP server, or when council-hub tools are missing, unreachable, or returning ConnectionRefused. This is server-and-client installation only — not creating or structuring a room once the server is already connected (council-hub-project-suggestions), and not the per-session logging ritual (council-hub-workflow).","https:\u002F\u002Fgithub.com\u002Fiksnerd\u002Fcouncil-hub\u002Fblob\u002Fmain\u002Fplugins\u002Fcouncil-hub\u002Fskills\u002Fcouncil-hub-setup\u002FSKILL.md",[106],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[108,26,23,109,87,88,89,36,110,111,112,113,114,115,116,93,117,33,97,118],"setup","council hub setup","connect","search","SET","configure","ports","pick","only","volume","mode",{"skillNo":120,"name":121,"nameZh":6,"description":122,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":123,"categories":124,"keywords":126,"publishedAt":43},"01M6JZ46CM9JHVJ0N2Z5MKHAJE","council-hub-project-suggestions","Set up a Council Hub room for a software project AND capture tool\u002Fplatform feedback as you work. Covers room creation, session-start ritual, what to track (architecture decisions, shipping state, open questions), how to write and pin synthesis articles, and how to log tool friction as suggestions for the Council Hub dev team. Use when starting work on a new project, picking up a project across sessions, or when asked to \"set up a council hub room\" \u002F \"log this to council hub\" \u002F \"post suggestions to council hub\" \u002F \"check what we've done on this project\". Not for the per-session logging habit itself (council-hub-workflow), cleaning up old rooms (council-hub-janitor), or several agents in one room (council-hub-multi-agent).","https:\u002F\u002Fgithub.com\u002Fiksnerd\u002Fcouncil-hub\u002Fblob\u002Fmain\u002Fplugins\u002Fcouncil-hub\u002Fskills\u002Fcouncil-hub-project-suggestions\u002FSKILL.md",[125],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[26,23,33,127,36,128,129,112,41,130,131,39,93,94,35,34,132,133,134,99],"council hub project suggestions","architecture","shipping","team","work on","creation","dev team","how to",{"skillNo":136,"name":137,"nameZh":6,"description":138,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":139,"categories":140,"keywords":142,"publishedAt":43},"01M6JZ3Q1H210N7N97WKF0P0FF","council-hub-multi-agent","Share a Council Hub room with other agents without producing parallel monologues, duplicated work, or two live conclusions. Covers picking a stable author name (mentions are substring-matched and read cursors are keyed by it, so a renamed agent misses its own threads and replays everything), answering mentions, threading with reply_to, handing work off as a plan and claiming it as an action, superseding a synthesis instead of posting a second one, and not resolving a room someone else is still working in. Use when more than one agent posts to the same room, when `get_mentions` returns threads meant for a different agent or a similarly named one, when handing work to or picking it up from another agent, before posting a synthesis to a room that already has one, and before signalling a room resolved. Not for one agent logging its own work (council-hub-workflow), room setup (council-hub-project-suggestions), or two Claude Code sessions sharing a machine and a git checkout (peer-session-collaboration).","https:\u002F\u002Fgithub.com\u002Fiksnerd\u002Fcouncil-hub\u002Fblob\u002Fmain\u002Fplugins\u002Fcouncil-hub\u002Fskills\u002Fcouncil-hub-multi-agent\u002FSKILL.md",[141],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[143,26,23,144,145,36,146,147,148,149,39,38,93,33,150,151,152,153,154,155],"multi agent","multi","council hub multi agent","code","git","claude code sessions","plan","get","live","checkout","posts","threads","action",{"skillNo":157,"name":158,"nameZh":6,"description":159,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":160,"categories":161,"keywords":163,"publishedAt":43},"01M6JZ3FW5YVXC3RSNK1SVN6QY","council-hub-janitor","Run a hygiene pass over a project's Council Hub rooms — triage stale and unsynthesized rooms, write and pin the missing synthesis, resolve or archive what's done, fix metadata (tags, related-room links, project grouping), and post short status updates where a room is still live. Use when asked to clean up \u002F tidy \u002F groom council-hub rooms, do a knowledge-linting pass, wrap up a project's rooms, or \"run the janitor\". Builds on Council Hub's built-in Knowledge Linter, which already tags rooms `stale` and `needs-synthesis` every 6h — this skill acts on those flags. Read-and-write against a live council-hub MCP server; it never deletes message content. Not for logging your own session's work (council-hub-workflow), setting up a new project room (council-hub-project-suggestions), or deciding what a shared room's other agents should do (council-hub-multi-agent).","https:\u002F\u002Fgithub.com\u002Fiksnerd\u002Fcouncil-hub\u002Fblob\u002Fmain\u002Fplugins\u002Fcouncil-hub\u002Fskills\u002Fcouncil-hub-janitor\u002FSKILL.md",[162],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[26,23,164,165,87,36,166,167,168,169,170,171,93,172,173,174,175,33,29,176],"janitor","council hub janitor","tidy","knowledge","linter","short","fix","never","status updates","clean","grouping","shared","updates",{"skillNo":178,"name":179,"nameZh":6,"description":180,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":181,"categories":182,"keywords":184,"publishedAt":43},"01M6JZ38ZAW8ZJJGQ30NXYWKCV","council-hub-cluster","Work correctly on a multi-node Council Hub cluster. Covers which tools read cluster-wide by default (v0.63.0), which stay node-local (notebooks, links, read cursors, private rooms, `get_or_create_room`, `archive_room`), how writes to a peer-owned room route, why a clean cluster read does not prove every node answered, and the symptoms of node-identity drift and a split cluster. Use when a room \"does not exist\" but should, when two nodes hold same-named rooms, before `get_or_create_room` in a project that spans machines, when a result ends with \"local node only\", when `\u002Fhealth` shows fewer `cluster_nodes` than expected, or when asked to cluster or debug clustering. Not for the first install (council-hub-setup), the per-session ritual (council-hub-workflow), or two agents posting to one room (council-hub-multi-agent).","https:\u002F\u002Fgithub.com\u002Fiksnerd\u002Fcouncil-hub\u002Fblob\u002Fmain\u002Fplugins\u002Fcouncil-hub\u002Fskills\u002Fcouncil-hub-cluster\u002FSKILL.md",[183],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[26,23,185,186,36,187,188,189,39,190,38,116,191,173,192,193,194,33,150,29],"cluster","council hub cluster","create","how","why","node","default","route","drift","local"]