{
  "schema": "leumas.docs.page/1",
  "id": "skill:leumas-studio#domains/graphs",
  "slug": "skills/leumas-studio/domains/graphs",
  "kind": "tools",
  "bucket": "skill",
  "title": "Reasoning Graphs — what you can do",
  "name": "Reasoning Graphs",
  "eyebrow": "what you can do",
  "chip": null,
  "summary": "<!-- GENERATED by ops/tools/skill-sync — do not edit by hand. Run pnpm skills:sync. -->",
  "keywords": [
    "leumas-studio",
    "skill-sync",
    "pnpm",
    "skills",
    "edit",
    "hand",
    "generated",
    "domain owns"
  ],
  "audience": "both",
  "funnel": {
    "product": null,
    "cta": null
  },
  "body": "<!-- GENERATED by ops/tools/skill-sync — do not edit by hand. Run `pnpm skills:sync`. -->\n\n# Reasoning Graphs — what you can do\n\n`/admin/d/graphs` · pillar `ai`\n\nTurn any text into a living knowledge map — topics as colors, influence as size, structural gaps as your next question. Build, edit, export & feed the AI.\n\n## Tabs\n\nEvery one is a real URL. A tab with its own section below carries a real job.\n\n| Tab | Path | Group | What it is for |\n|---|---|---|---|\n| `gallery` | `/admin/graphs` | - | - |\n\n## Tools an agent can call here\n\nThese are **live page capabilities**: they exist only while that surface is open, and they\ncall the page's own mutators, so a change made through one is a change the operator can see. A tool\nmissing from this list is not callable — reach for the API or an adapter instead.\n\n### `graphs:gallery` — Reasoning Graphs gallery\n\nSource: `graphs/GraphsHome.jsx`\n\nWhat the page tells an agent about itself:\n\n> The user is browsing their reasoning graphs. Use list_graphs before opening by name; after open_graph or create_graph the editor page grants deeper edit tools.\n\n| Tool | Args | Does |\n|---|---|---|\n| `list_graphs` | — | List the user's reasoning graphs: name, discourse state, node/edge/statement counts, top topics. |\n| `open_graph` | `graph` | Open a reasoning graph in the editor by name (partial match) or id. |\n| `create_graph` | `name` | Create a new empty reasoning graph (optionally named) and open it in the editor. |\n\n### `graphs:editor` — Reasoning graph: …\n\nSource: `graphs/model/useGraphCapabilities.js`\n\nWhat the page tells an agent about itself:\n\n> The user is editing a reasoning graph — their text as a live knowledge map (statements → concepts → weighted co-occurrence edges; topics are colored communities; node size is influence; structural gaps are weakly connected topic pairs).\n>\n> Always call get_graph_overview before reasoning about or changing the graph.\n>\n> To connect the dots: read the gaps, then add 1-3 SHORT declarative bridging statements via add_statements — each combining concepts from both sides. Prefer small, surgical edits and report exactly what you changed.\n>\n> Statements must be single short declarative sentences with concrete nouns — they are parsed into the graph.\n\n| Tool | Args | Does |\n|---|---|---|\n| `get_graph_overview` | — | Read the open reasoning graph: name, metrics (nodes/edges/statements, modularity, discourse state), topics (community label + size + top concepts), structural gaps (weakly connected topic pairs — where bridging ideas belong), muted words and the current selection. Call this FIRST before reasoning about or editing the graph. |\n| `list_statements` | — | List the graph's statements in order ({ id, n, text, source }) — the source text every concept and edge derives from. Up to ${MAX_LIST} rows. |\n| `get_concept` | `word` | Inspect one concept by word (id, label or any inflection): influence (betweenness 0..1), frequency, topic, strongest neighbors, and the statements that mention it. |\n| `add_statements` | `texts` | Add one or more statements to the graph (each ONE short declarative sentence with concrete nouns — it becomes concepts and connections). Use this to develop ideas and to BRIDGE structural gaps: a bridging statement combines concepts from both sides of a gap. Added statements are tagged as AI-written. |\n| `edit_statement` | `id` `text` | Rewrite one statement by id (get ids from list_statements). The graph recomputes from the new text. |\n| `delete_statement` | `id` | Delete one statement by id (get ids from list_statements). Its concepts/edges leave the graph unless other statements still carry them. |\n| `rename_graph` | `name` | Rename the open reasoning graph. |\n| `mute_words` | `words` | Mute noise words so they stop being concepts (extra stopwords; either inflection works — \"networks\" or \"network\"). Use when generic words dominate the map. |\n| `rescue_words` | `words` | Un-mute previously muted words, or force-keep words the base stopword list would drop. |\n| `select_concept` | `word` | Highlight a concept on the canvas (its statements light up in the side panel). Pass an empty word to clear the selection. |\n| `focus_topic` | `topic` | Spotlight one topic cluster on the canvas (everything else dims). Pass the topic label or a concept from it; empty clears the spotlight. |\n\n## What this domain owns\n\nIts verb is **Open the gallery**.\n\nEntity kinds: `reasoning-graphs.graph`\n\n## API\n\nMounted prefixes that serve this domain: `/api/graphs`\n\nThe full route table is `leumas-capabilities/reference/api-routes.md`.\n\n",
  "source": {
    "path": ".claude/skills/leumas-studio/reference/domains/graphs.md",
    "blobSha": "",
    "commit": "",
    "committedAt": "",
    "provenance": "no-git",
    "bytes": 4615,
    "hash": "6550828c64de518a74af73dabfec9a81a41fa0f6"
  },
  "urls": {
    "html": "/p/skills/leumas-studio/domains/graphs",
    "json": "/docs/skills/leumas-studio/domains/graphs.json",
    "md": "/docs/skills/leumas-studio/domains/graphs.md"
  },
  "links": {
    "composes": [],
    "usedBy": [],
    "product": [],
    "howTo": [],
    "skills": []
  }
}
