feat(linkml-engineering): vendor tested Neo4j-targeting generators; add generated skill inventory - #49
Merged
costezki merged 2 commits intoJul 24, 2026
Conversation
…dd generated skill inventory Fixes two confirmed bugs in the Neo4j Cypher-constraint and neomodel generators (a relationship whose LinkML range is abstract resolved to an undefined class; neomodel's reserved id/deleted/element_id attribute names crashed class definition), enriches the Cypher generator (existence constraints for required-multivalued properties, a Community-safe --profile, schema-driven CREATE INDEX via an opt-in annotation), and vendors both as tested repo tooling in tools/linkml_neo4j/ — a skill's home is knowledge, not a maintained codebase, so linkml-engineering documents and cites them rather than owning the code. project-setup gains a real --neo4j scaffold.sh flag that projects a pinned, refreshable copy, verified by actually running it. Also adds docs/skill-inventory.md: a generated (not hand-written) map of all 22 skills — bundle containment, cross-cutting purpose classification, and two distinct skill-to-skill relation types (mechanically parsed "depends on" vs the weaker "related") rendered as Mermaid diagrams, with a freshness gate so it can't silently drift from the skills it describes. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
4 tasks
…v.txt CI's validate job installs only requirements-dev.txt, which never listed the packages tools/linkml_neo4j's generators actually import. Passed locally because these happened to already be present in the dev venv; failed in CI's clean environment with ModuleNotFoundError: No module named 'click' (the first missing import hit), 24 test errors. testcontainers is deliberately left out: its import is guarded inside the Docker-gated integration test, not at module level, so it isn't needed for the default (non-docker) test path. Verified against a genuinely clean venv, not the existing dev one. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
costezki
added a commit
that referenced
this pull request
Jul 24, 2026
Resolves the README skill-count conflict: 22 (PR #49's corrected count) + 1 (writing-antipatterns) = 23. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
LinkML → Neo4j generators (
tools/linkml_neo4j/), driven byopenspec/changes/linkml-neo4j-generators:hulubul-broker, CC-BY-4.0, attributed): a relationship whose LinkML range is an abstract class resolved to an undefined Python class in the generated neomodel code; neomodel's reservedid/deleted/element_idattribute names crashed class definition outright (the schema's identifier slot is conventionally namedid).--profile community/--profile fullsplit (Community-safe subset vs. the unverified-on-Community reference output), and schema-drivenCREATE INDEXvia an opt-inneo4j_indexannotation.spec/skill-repo-governance.md), not a maintained codebase, solinkml-engineeringdocuments and cites them rather than owning the code.project-setupgains a real--neo4jscaffold.shflag that projects a pinned, refreshable copy into a consuming repo — verified by actually running it (dry-run, real copy, skip-on-rerun, force-refresh, and confirming noscripts/appears without the flag).Generated skill inventory (
docs/skill-inventory.md,tools/skill_inventory.py):Delegatestext) from the weaker "related" (the rest of theRelatedlist).tests/test_skill_inventory.py(failsmake teston drift), same pattern as the existing.opencode/drift gate.AGENTS.mddocuments the one manual step (make skill-inventoryafter adding/editing a skill) vs. what's automated (drift detection, everything else).Test plan
make validate(lint + test): 92 passed, 0 failed, 7 deselected (opt-in Docker-marked integration tests).mermaid-cliand visually reviewed as PNGs, not just eyeballed as text.scaffold.sh --neo4jexercised end-to-end against a scratch directory (dry-run, real copy byte-identical to source, skip/force-refresh behavior, and confirmed--neo4j-less runs create noscripts/).tests/test_linkml_neo4j_integration.py,pytest -m docker) is written but not executed — this sandbox had no reachable Docker daemon. Needs a real run before treating its "passed" status as verified; see the generator's own module docstring for the current caveat.🤖 Generated with Claude Code