[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6E5PMSQEXDST30ZVQEN44H6":3,"skill-same:01M6E5PMSQEXDST30ZVQEN44H6":57},{"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":32,"linkOnly":33,"markdownContent":34,"markdownBody":35,"frontMatter":36,"refName":37,"commitSha":38,"skillDirectory":39,"forksCount":13,"repositoryHtmlUrl":40,"repositoryHomepageUrl":6,"ownerHtmlUrl":41,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":42,"install":43,"resources":56},"01M6E5PMSQEXDST30ZVQEN44H6","ontology-librarian",null,"Read-only ontology reference — checks staleness of BOTH layers (hand-curated semantic overlay + generated structural index) and retrieves relevant context. Never modifies either layer.","parametrization\u002F2real-team-framework","parametrization","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F1111097?v=4","01M6E5MC117M94CEXKX3C96PPX","01M6E5MC7YWG5N3VV4792VFK85",0,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fparametrization\u002F2real-team-framework\u002Fblob\u002Fmain\u002Fframework\u002Fassets\u002Fskills\u002Fontology-librarian\u002FSKILL.md",[],[18,19,20,21,22,23,24,25,26,27,28,29,30,31],"librarian","ontology","ontology librarian","index","read","context","generated","never","only","reference","either","query","structural","semantic","2026-11-10 10:12:30",false,"---\nname: ontology-librarian\ndescription: Read-only ontology reference — checks staleness of BOTH layers (hand-curated semantic overlay + generated structural index) and retrieves relevant context. Never modifies either layer.\nargs: query\n---\n\nThe ontology librarian provides **read-only** access to the project ontology. It checks\nstaleness in **both layers** — the hand-curated **semantic overlay** and the generated\n**structural index** — retrieves relevant context, and reports which references may be out of\ndate. It never modifies either layer.\n\n> **Two-layer model.** The **semantic overlay** (`\u003Contology>\u002Fdomain.yaml`, `services.yaml`,\n> `conventions.md`, `\u003Contology>\u002Frepos\u002F*.yaml`) is hand-curated and tracked by\n> `\u003Contology>\u002Fchecksums.json`. The **structural index** (`\u003Contology>\u002Fstructural\u002Fllms.txt`,\n> `code-graph.json`, `cross-repo-graph.json`) is generated wholesale by `ontology_gen` (+ the\n> `ontology_gen.aggregate` cross-repo aggregator) — always-current when regenerated, never\n> hand-edited, not checksum-tracked. The librarian surfaces both; staleness reports distinguish\n> which layer is behind.\n>\n> `\u003Contology>` = `paths.ontology` from `.claude\u002Fframework.config.json` (default `ontology`).\n> Read it once: `ONTO=\"$(jq -r '.paths.ontology \u002F\u002F \"ontology\"' .claude\u002Fframework.config.json 2>\u002Fdev\u002Fnull)\"`.\n\nThe `query` argument is optional. If provided, it's a natural-language question or entity\u002Fservice\nname to look up. If omitted, runs a staleness check and provides a summary.\n\n## When to use\n\n- **Session start** — `\u002Fsession-start` reports ontology health when this skill is installed.\n- **Starting work** — look up relevant entities\u002Fservices\u002Fpatterns + the structural neighborhood\n  of the code you're about to change.\n- **Manual** — answer questions about the domain, architecture, or conventions.\n\n## Instructions\n\n### 1. Staleness check — BOTH layers\n\n```bash\nREPO_ROOT=\"$(git rev-parse --show-toplevel 2>\u002Fdev\u002Fnull || pwd)\"\nONTO=\"$(jq -r '.paths.ontology \u002F\u002F \"ontology\"' \"$REPO_ROOT\u002F.claude\u002Fframework.config.json\" 2>\u002Fdev\u002Fnull || echo ontology)\"\n[ -d \"$REPO_ROOT\u002F$ONTO\" ] || { echo \"No ontology layer at $ONTO — nothing to report.\"; exit 0; }\n```\n\n**1a. Semantic overlay (checksums.json)** — count dirty files (`last_tracked != last_resolved`):\n\n```bash\nCK=\"$REPO_ROOT\u002F$ONTO\u002Fchecksums.json\"\nif [ -f \"$CK\" ]; then\n  DIRTY=$(jq '[.files | to_entries[] | select(.value.last_tracked != .value.last_resolved)] | length' \"$CK\" 2>\u002Fdev\u002Fnull)\n  echo \"Semantic overlay: ${DIRTY:-0} dirty file(s) — $([ \"${DIRTY:-0}\" -eq 0 ] && echo current || echo 'run \u002Fontology-rebuild')\"\nelse\n  echo \"Semantic overlay: no checksums.json (untracked).\"\nfi\n```\n\nBuckets: 0 = current · 1–5 = slightly behind · 6–15 = consider rebuild · 16+ = rebuild before work.\nThe librarian does NOT trigger the resolver — it reports so the user decides.\n\n**1b. Structural index (committed index vs source tree)** — measured by the git commit that\nlast touched `llms.txt` vs source files changed since:\n\n```bash\nSTRUCT=\"$REPO_ROOT\u002F$ONTO\u002Fstructural\u002Fllms.txt\"\nif [ -f \"$STRUCT\" ]; then\n  SHA=$(git -C \"$REPO_ROOT\" log -1 --format=%H -- \"$ONTO\u002Fstructural\u002Fllms.txt\" 2>\u002Fdev\u002Fnull)\n  grep '^# ' \"$STRUCT\" | head -5\n  if [ -n \"$SHA\" ]; then\n    CHANGED=$(git -C \"$REPO_ROOT\" diff --name-only \"$SHA\"..HEAD -- \\\n      '*.py' '*.ts' '*.tsx' '*.js' '*.jsx' '*.cypher' '*.cql' 2>\u002Fdev\u002Fnull | wc -l | tr -d ' ')\n    echo \"Structural index: ${CHANGED:-0} source file(s) changed since last generation.\"\n    [ \"${CHANGED:-0}\" -gt 0 ] && echo \"  Regenerate: PYTHONPATH=.claude\u002Flib python3 -m ontology_gen . --out $ONTO\u002Fstructural\u002F\"\n  fi\nelse\n  echo \"Structural index: not generated — PYTHONPATH=.claude\u002Flib python3 -m ontology_gen . --out $ONTO\u002Fstructural\u002F\"\nfi\n```\n\nThe two layers are independent: the overlay can be dirty while the structural index is current,\nand vice versa.\n\n### 2. Context retrieval (if a query was given)\n\n**2a. Semantic overlay** — search `domain.yaml` (entities\u002Frelationships), `services.yaml`\n(services\u002FAPIs\u002Fstores), `conventions.md` (patterns), `repos\u002F*.yaml` (repo internals).\n\n**2b. Structural index** — `llms.txt` is **section-loadable**: each `## \u003Cpath>` block is\nindependent, so read only relevant sections rather than the whole file.\n\n```bash\ngrep -n \"^## .*${Q}\\|- .*${Q}\\|- class .*${Q}\\|- func .*${Q}\" \"$REPO_ROOT\u002F$ONTO\u002Fstructural\u002Fllms.txt\" | head -30\n```\n\nNode-id forms: file\u002Fmodule = repo-relative POSIX path (bare) or `\u003Crepo>\u002F\u003Cpath>` in the\ncross-repo graph; symbol = `\u003Cpath>::\u003Cqualname>`.\n\nPresent findings concisely under **Semantic overlay** \u002F **Structural index** \u002F **Staleness notes**.\n\n### 3. Summary (if no query)\n\nGive a brief health summary of both layers: overlay (dirty count, entity\u002Fservice counts,\nrepos covered) and structural index (files\u002Fnodes\u002Fedges header, last generated, drift,\ncross-repo graph present?).\n\n### 4. Stale-reference warnings\n\nWhen reporting query results, flag any contributing source files that are dirty (overlay) or\nmodified since the last structural regeneration.\n\n## Remediation (the librarian reports; it never runs these)\n\n| Layer | Stale signal | Remediation |\n|-------|-------------|-------------|\n| Semantic overlay | N dirty in `checksums.json` | `\u002Fontology-rebuild` |\n| Structural index (per repo) | N source files changed since last `llms.txt` commit | `PYTHONPATH=.claude\u002Flib python3 -m ontology_gen . --out \u003Contology>\u002Fstructural\u002F` |\n| Cross-repo graph | structural index or a child index updated | `PYTHONPATH=.claude\u002Flib python3 -m ontology_gen.aggregate .` |\n","The ontology librarian provides **read-only** access to the project ontology. It checks\nstaleness in **both layers** — the hand-curated **semantic overlay** and the generated\n**structural index** — retrieves relevant context, and reports which references may be out of\ndate. It never modifies either layer.\n\n> **Two-layer model.** The **semantic overlay** (`\u003Contology>\u002Fdomain.yaml`, `services.yaml`,\n> `conventions.md`, `\u003Contology>\u002Frepos\u002F*.yaml`) is hand-curated and tracked by\n> `\u003Contology>\u002Fchecksums.json`. The **structural index** (`\u003Contology>\u002Fstructural\u002Fllms.txt`,\n> `code-graph.json`, `cross-repo-graph.json`) is generated wholesale by `ontology_gen` (+ the\n> `ontology_gen.aggregate` cross-repo aggregator) — always-current when regenerated, never\n> hand-edited, not checksum-tracked. The librarian surfaces both; staleness reports distinguish\n> which layer is behind.\n>\n> `\u003Contology>` = `paths.ontology` from `.claude\u002Fframework.config.json` (default `ontology`).\n> Read it once: `ONTO=\"$(jq -r '.paths.ontology \u002F\u002F \"ontology\"' .claude\u002Fframework.config.json 2>\u002Fdev\u002Fnull)\"`.\n\nThe `query` argument is optional. If provided, it's a natural-language question or entity\u002Fservice\nname to look up. If omitted, runs a staleness check and provides a summary.\n\n## When to use\n\n- **Session start** — `\u002Fsession-start` reports ontology health when this skill is installed.\n- **Starting work** — look up relevant entities\u002Fservices\u002Fpatterns + the structural neighborhood\n  of the code you're about to change.\n- **Manual** — answer questions about the domain, architecture, or conventions.\n\n## Instructions\n\n### 1. Staleness check — BOTH layers\n\n```bash\nREPO_ROOT=\"$(git rev-parse --show-toplevel 2>\u002Fdev\u002Fnull || pwd)\"\nONTO=\"$(jq -r '.paths.ontology \u002F\u002F \"ontology\"' \"$REPO_ROOT\u002F.claude\u002Fframework.config.json\" 2>\u002Fdev\u002Fnull || echo ontology)\"\n[ -d \"$REPO_ROOT\u002F$ONTO\" ] || { echo \"No ontology layer at $ONTO — nothing to report.\"; exit 0; }\n```\n\n**1a. Semantic overlay (checksums.json)** — count dirty files (`last_tracked != last_resolved`):\n\n```bash\nCK=\"$REPO_ROOT\u002F$ONTO\u002Fchecksums.json\"\nif [ -f \"$CK\" ]; then\n  DIRTY=$(jq '[.files | to_entries[] | select(.value.last_tracked != .value.last_resolved)] | length' \"$CK\" 2>\u002Fdev\u002Fnull)\n  echo \"Semantic overlay: ${DIRTY:-0} dirty file(s) — $([ \"${DIRTY:-0}\" -eq 0 ] && echo current || echo 'run \u002Fontology-rebuild')\"\nelse\n  echo \"Semantic overlay: no checksums.json (untracked).\"\nfi\n```\n\nBuckets: 0 = current · 1–5 = slightly behind · 6–15 = consider rebuild · 16+ = rebuild before work.\nThe librarian does NOT trigger the resolver — it reports so the user decides.\n\n**1b. Structural index (committed index vs source tree)** — measured by the git commit that\nlast touched `llms.txt` vs source files changed since:\n\n```bash\nSTRUCT=\"$REPO_ROOT\u002F$ONTO\u002Fstructural\u002Fllms.txt\"\nif [ -f \"$STRUCT\" ]; then\n  SHA=$(git -C \"$REPO_ROOT\" log -1 --format=%H -- \"$ONTO\u002Fstructural\u002Fllms.txt\" 2>\u002Fdev\u002Fnull)\n  grep '^# ' \"$STRUCT\" | head -5\n  if [ -n \"$SHA\" ]; then\n    CHANGED=$(git -C \"$REPO_ROOT\" diff --name-only \"$SHA\"..HEAD -- \\\n      '*.py' '*.ts' '*.tsx' '*.js' '*.jsx' '*.cypher' '*.cql' 2>\u002Fdev\u002Fnull | wc -l | tr -d ' ')\n    echo \"Structural index: ${CHANGED:-0} source file(s) changed since last generation.\"\n    [ \"${CHANGED:-0}\" -gt 0 ] && echo \"  Regenerate: PYTHONPATH=.claude\u002Flib python3 -m ontology_gen . --out $ONTO\u002Fstructural\u002F\"\n  fi\nelse\n  echo \"Structural index: not generated — PYTHONPATH=.claude\u002Flib python3 -m ontology_gen . --out $ONTO\u002Fstructural\u002F\"\nfi\n```\n\nThe two layers are independent: the overlay can be dirty while the structural index is current,\nand vice versa.\n\n### 2. Context retrieval (if a query was given)\n\n**2a. Semantic overlay** — search `domain.yaml` (entities\u002Frelationships), `services.yaml`\n(services\u002FAPIs\u002Fstores), `conventions.md` (patterns), `repos\u002F*.yaml` (repo internals).\n\n**2b. Structural index** — `llms.txt` is **section-loadable**: each `## \u003Cpath>` block is\nindependent, so read only relevant sections rather than the whole file.\n\n```bash\ngrep -n \"^## .*${Q}\\|- .*${Q}\\|- class .*${Q}\\|- func .*${Q}\" \"$REPO_ROOT\u002F$ONTO\u002Fstructural\u002Fllms.txt\" | head -30\n```\n\nNode-id forms: file\u002Fmodule = repo-relative POSIX path (bare) or `\u003Crepo>\u002F\u003Cpath>` in the\ncross-repo graph; symbol = `\u003Cpath>::\u003Cqualname>`.\n\nPresent findings concisely under **Semantic overlay** \u002F **Structural index** \u002F **Staleness notes**.\n\n### 3. Summary (if no query)\n\nGive a brief health summary of both layers: overlay (dirty count, entity\u002Fservice counts,\nrepos covered) and structural index (files\u002Fnodes\u002Fedges header, last generated, drift,\ncross-repo graph present?).\n\n### 4. Stale-reference warnings\n\nWhen reporting query results, flag any contributing source files that are dirty (overlay) or\nmodified since the last structural regeneration.\n\n## Remediation (the librarian reports; it never runs these)\n\n| Layer | Stale signal | Remediation |\n|-------|-------------|-------------|\n| Semantic overlay | N dirty in `checksums.json` | `\u002Fontology-rebuild` |\n| Structural index (per repo) | N source files changed since last `llms.txt` commit | `PYTHONPATH=.claude\u002Flib python3 -m ontology_gen . --out \u003Contology>\u002Fstructural\u002F` |\n| Cross-repo graph | structural index or a child index updated | `PYTHONPATH=.claude\u002Flib python3 -m ontology_gen.aggregate .` |\n",{"args":29,"name":5,"description":7},"main","53ec1032b93d41533a48603e8fae7a92f56cc66c","framework\u002Fassets\u002Fskills\u002Fontology-librarian","https:\u002F\u002Fgithub.com\u002Fparametrization\u002F2real-team-framework","https:\u002F\u002Fgithub.com\u002Fparametrization","2026-09-21 01:06:30",{"source":8,"skillName":5,"commands":44,"prompt":54,"zipAvailable":55},[45,48,51],{"tool":46,"command":47},"npx","npx skills add parametrization\u002F2real-team-framework --skill ontology-librarian",{"tool":49,"command":50},"bunx","bunx skills add parametrization\u002F2real-team-framework --skill ontology-librarian",{"tool":52,"command":53},"pnpm","pnpm dlx skills add parametrization\u002F2real-team-framework --skill ontology-librarian","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fparametrization\u002F2real-team-framework\u002Fblob\u002Fmain\u002Fframework\u002Fassets\u002Fskills\u002Fontology-librarian\u002FSKILL.md",true,[],[58,80,97,113,128,141],{"skillNo":59,"name":60,"nameZh":6,"description":61,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":62,"categories":63,"keywords":64,"publishedAt":32},"01M6E5VG1R7FF1025BZAV6BDTS","wave-wrapup","Finalize a wave — PR review, merge sequencing, issue cleanup, worktree cleanup, and handoff to retro","https:\u002F\u002Fgithub.com\u002Fparametrization\u002F2real-team-framework\u002Fblob\u002Fmain\u002Fintake\u002Fnoorinalabs-2026-06\u002Fcandidates\u002Fskills\u002Fwave-wrapup\u002FSKILL.md",[],[65,66,67,68,69,70,71,72,73,74,75,76,77,78,79],"wave wrapup","wrapup","review","handoff","merge","pr review","pr","cleanup","worktree","retro","team","issue","worktree cleanup","name","sequencing",{"skillNo":81,"name":82,"nameZh":6,"description":83,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":84,"categories":85,"keywords":86,"publishedAt":32},"01M6E5V9GDF75GV4YD2WPSH912","wave-start","Initialize a new wave — worktree cleanup, branch creation, label setup, status file update","https:\u002F\u002Fgithub.com\u002Fparametrization\u002F2real-team-framework\u002Fblob\u002Fmain\u002Fintake\u002Fnoorinalabs-2026-06\u002Fcandidates\u002Fskills\u002Fwave-start\u002FSKILL.md",[],[87,88,89,72,90,73,91,75,92,93,94,77,95,78,96],"wave start","start","setup","update","file","branch","file update","initialize","creation","status",{"skillNo":98,"name":99,"nameZh":6,"description":100,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":101,"categories":102,"keywords":103,"publishedAt":32},"01M6E5V4VXEJ39V87VHN1A3AW9","wave-scope","Reconcile declared-vs-labeled wave scope between \u002Fwave-retro and \u002Fwave-kickoff — collect dispositions, fold in retro carry-forwards and memory must-includes, and refresh the meta-issue","https:\u002F\u002Fgithub.com\u002Fparametrization\u002F2real-team-framework\u002Fblob\u002Fmain\u002Fintake\u002Fnoorinalabs-2026-06\u002Fcandidates\u002Fskills\u002Fwave-scope\u002FSKILL.md",[],[104,105,106,107,108,74,109,110,111,76,112],"wave scope","scope","memory","collect","Meta","refresh","reconcile","Fold","kickoff",{"skillNo":114,"name":115,"nameZh":6,"description":116,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":117,"categories":118,"keywords":119,"publishedAt":32},"01M6E5TZNPGG5EXZEN1FKJJT6K","wave-retro","Automated wave retrospective — PR analysis, assessments, trust matrix updates, feedback log, charter change proposals","https:\u002F\u002Fgithub.com\u002Fparametrization\u002F2real-team-framework\u002Fblob\u002Fmain\u002Fintake\u002Fnoorinalabs-2026-06\u002Fcandidates\u002Fskills\u002Fwave-retro\u002FSKILL.md",[],[120,74,121,122,71,123,124,75,125,126,127,78],"wave retro","log","change","retrospective","analysis","feedback","proposals","trust",{"skillNo":129,"name":130,"nameZh":6,"description":131,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":132,"categories":133,"keywords":134,"publishedAt":32},"01M6E5TR8XB3Z10A9SD4ZYNV45","wave-kickoff","Automated wave planning — branch creation, label management, issue labeling, kickoff comments, and execution plan","https:\u002F\u002Fgithub.com\u002Fparametrization\u002F2real-team-framework\u002Fblob\u002Fmain\u002Fintake\u002Fnoorinalabs-2026-06\u002Fcandidates\u002Fskills\u002Fwave-kickoff\u002FSKILL.md",[],[135,112,136,76,95,78,137,75,138,92,139,140],"wave kickoff","management","plan","execution","planning","execution plan",{"skillNo":142,"name":143,"nameZh":6,"description":144,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":145,"categories":146,"keywords":147,"publishedAt":32},"01M6E5TMZAFB6MTVYT750FZDVY","wave-audit","Audit open issues against merged PRs — find and close orphaned issues with proper comments","https:\u002F\u002Fgithub.com\u002Fparametrization\u002F2real-team-framework\u002Fblob\u002Fmain\u002Fintake\u002Fnoorinalabs-2026-06\u002Fcandidates\u002Fskills\u002Fwave-audit\u002FSKILL.md",[],[148,149,150,151,152,153],"audit","wave audit","close","find","open","issues"]