Engineering

Skill Graphs - Graph Management and Validation Hardening

February 20, 2026

The graph visualisation works beautifully, but there was a gap: you could view and edit nodes, but you could not create new graphs, rename them, or delete them from the interface. Wrote up a quick plan and handed it to Claude.

Claude one-shotted the entire graph management UI. Create dialog, edit dialog, delete with confirmation, slug auto-generation, the lot. One prompt, one implementation, zero back-and-forth. Sometimes it is just like that.

Graph management

Added two dialogs to the header bar:

  • New Graph - Click the plus button, enter a name and description, optionally set it as your default graph. Hit create. Done. Think of it like creating a new notebook - you name it, describe what it is for, and start filling it with pages.

  • Edit Graph - Click the pencil icon next to the dropdown. Change the name, description, toggle it on/off, set it as default. There is also a delete button at the bottom (with a confirmation prompt, because deleting an entire knowledge graph is not something you want to do by accident). You cannot delete your last graph - there must always be at least one.

Slug auto-generation

Small but important quality-of-life improvement. When you type a node title like "Docker Compose Networking", the URL-friendly identifier (slug) automatically fills in as docker-compose-networking. If you want a custom slug, just edit it directly and it stops auto-syncing.

Same for graph names. Type "DevOps Runbooks" and the slug becomes devops-runbooks. No more manually typing slugs.

Validation fix

Found a sneaky bug during testing. When you tried to create a node with a duplicate name, instead of a friendly "this name already exists" error, the system was crashing with a raw database error. Not a great experience.

Asked Claude to fix it. It went further than I expected - not only fixed the immediate bug but audited every form in the entire codebase (agents, skills, graphs, nodes) and applied proper uniqueness checks everywhere. All scoped per-user, so two different users can have a node called "Docker Basics" without conflict. All 461 tests still passing. Proper.