ontology-librarian
Read-only ontology reference — checks staleness of BOTH layers (hand-curated semantic overlay + generated structural index) and retrieves relevant context. Never modifies either layer.
- License 许可
- Apache-2.0
- 最近更新
- 2026-09-21
- Stars
- ★ 0
- Forks
- 0
01 前言 Front Matter
- args
- query
- name
- ontology-librarian
- description
- Read-only ontology reference — checks staleness of BOTH layers (hand-curated semantic overlay + generated structural index) and retrieves relevant context. Never modifies either layer.
03 SKILL.md 正文
The ontology librarian provides read-only access to the project ontology. It checks staleness in both layers — the hand-curated semantic overlay and the generated structural index — retrieves relevant context, and reports which references may be out of date. It never modifies either layer.
Two-layer model. The semantic overlay (
<ontology>/domain.yaml,services.yaml,conventions.md,<ontology>/repos/*.yaml) is hand-curated and tracked by<ontology>/checksums.json. The structural index (<ontology>/structural/llms.txt,code-graph.json,cross-repo-graph.json) is generated wholesale byontology_gen(+ theontology_gen.aggregatecross-repo aggregator) — always-current when regenerated, never hand-edited, not checksum-tracked. The librarian surfaces both; staleness reports distinguish which layer is behind.
<ontology>=paths.ontologyfrom.claude/framework.config.json(defaultontology). Read it once:ONTO="$(jq -r '.paths.ontology // "ontology"' .claude/framework.config.json 2>/dev/null)".
The query argument is optional. If provided, it's a natural-language question or entity/service
name to look up. If omitted, runs a staleness check and provides a summary.
When to use
- Session start —
/session-startreports ontology health when this skill is installed. - Starting work — look up relevant entities/services/patterns + the structural neighborhood of the code you're about to change.
- Manual — answer questions about the domain, architecture, or conventions.
Instructions
1. Staleness check — BOTH layers
REPO_ROOT="$(git rev-parse --show-toplevel 2>/dev/null || pwd)"
ONTO="$(jq -r '.paths.ontology // "ontology"' "$REPO_ROOT/.claude/framework.config.json" 2>/dev/null || echo ontology)"
[ -d "$REPO_ROOT/$ONTO" ] || { echo "No ontology layer at $ONTO — nothing to report."; exit 0; }
1a. Semantic overlay (checksums.json) — count dirty files (last_tracked != last_resolved):
CK="$REPO_ROOT/$ONTO/checksums.json"
if [ -f "$CK" ]; then
DIRTY=$(jq '[.files | to_entries[] | select(.value.last_tracked != .value.last_resolved)] | length' "$CK" 2>/dev/null)
echo "Semantic overlay: ${DIRTY:-0} dirty file(s) — $([ "${DIRTY:-0}" -eq 0 ] && echo current || echo 'run /ontology-rebuild')"
else
echo "Semantic overlay: no checksums.json (untracked)."
fi
Buckets: 0 = current · 1–5 = slightly behind · 6–15 = consider rebuild · 16+ = rebuild before work. The librarian does NOT trigger the resolver — it reports so the user decides.
1b. Structural index (committed index vs source tree) — measured by the git commit that
last touched llms.txt vs source files changed since:
STRUCT="$REPO_ROOT/$ONTO/structural/llms.txt"
if [ -f "$STRUCT" ]; then
SHA=$(git -C "$REPO_ROOT" log -1 --format=%H -- "$ONTO/structural/llms.txt" 2>/dev/null)
grep '^# ' "$STRUCT" | head -5
if [ -n "$SHA" ]; then
CHANGED=$(git -C "$REPO_ROOT" diff --name-only "$SHA"..HEAD -- \
'*.py' '*.ts' '*.tsx' '*.js' '*.jsx' '*.cypher' '*.cql' 2>/dev/null | wc -l | tr -d ' ')
echo "Structural index: ${CHANGED:-0} source file(s) changed since last generation."
[ "${CHANGED:-0}" -gt 0 ] && echo " Regenerate: PYTHONPATH=.claude/lib python3 -m ontology_gen . --out $ONTO/structural/"
fi
else
echo "Structural index: not generated — PYTHONPATH=.claude/lib python3 -m ontology_gen . --out $ONTO/structural/"
fi
The two layers are independent: the overlay can be dirty while the structural index is current, and vice versa.
2. Context retrieval (if a query was given)
2a. Semantic overlay — search domain.yaml (entities/relationships), services.yaml
(services/APIs/stores), conventions.md (patterns), repos/*.yaml (repo internals).
2b. Structural index — llms.txt is section-loadable: each ## <path> block is
independent, so read only relevant sections rather than the whole file.
grep -n "^## .*${Q}\|- .*${Q}\|- class .*${Q}\|- func .*${Q}" "$REPO_ROOT/$ONTO/structural/llms.txt" | head -30
Node-id forms: file/module = repo-relative POSIX path (bare) or <repo>/<path> in the
cross-repo graph; symbol = <path>::<qualname>.
Present findings concisely under Semantic overlay / Structural index / Staleness notes.
3. Summary (if no query)
Give a brief health summary of both layers: overlay (dirty count, entity/service counts, repos covered) and structural index (files/nodes/edges header, last generated, drift, cross-repo graph present?).
4. Stale-reference warnings
When reporting query results, flag any contributing source files that are dirty (overlay) or modified since the last structural regeneration.
Remediation (the librarian reports; it never runs these)
| Layer | Stale signal | Remediation |
|---|---|---|
| Semantic overlay | N dirty in checksums.json |
/ontology-rebuild |
| Structural index (per repo) | N source files changed since last llms.txt commit |
PYTHONPATH=.claude/lib python3 -m ontology_gen . --out <ontology>/structural/ |
| Cross-repo graph | structural index or a child index updated | PYTHONPATH=.claude/lib python3 -m ontology_gen.aggregate . |
04 同仓库更多 Skills
wave-wrapup
Finalize a wave — PR review, merge sequencing, issue cleanup, worktree cleanup, and handoff to retro
wave-start
Initialize a new wave — worktree cleanup, branch creation, label setup, status file update
wave-scope
Reconcile declared-vs-labeled wave scope between /wave-retro and /wave-kickoff — collect dispositions, fold in retro carry-forwards and memory must-includes, and refresh the meta-issue
wave-retro
Automated wave retrospective — PR analysis, assessments, trust matrix updates, feedback log, charter change proposals
wave-kickoff
Automated wave planning — branch creation, label management, issue labeling, kickoff comments, and execution plan
wave-audit
Audit open issues against merged PRs — find and close orphaned issues with proper comments