Skip to content

Repository layout

This page is for contributors looking for a file in the repository. The architecture says what each skill is for.

skills/
ktl-sidecar/ SKILL.md + references/ + templates/
ktl-librarian/ SKILL.md + references/
ktl-curator/ SKILL.md + references/
ktl-docent/ SKILL.md + references/ + scripts/
ktl-prose/ SKILL.md + references/ + scripts/
ktl-website/ SKILL.md + references/ + scripts/ + templates/
.assets/
*.svg, *-dark.svg the logo, the social card and each figure the docs show, light and dark
companions/ Archify flow diagrams beside some figures: each candidate and its two SVGs
.claude-plugin/
plugin.json the six skills as one Claude Code plugin, with catalogue keywords
marketplace.json lets `/plugin marketplace add` find that plugin
.github/workflows/
validate.yml repository contract, Agent Skills spec, Markdown and links (every PR)
knowledge-registrar.yaml the sidecar's schema and provenance gate (PRs touching the bundle)
knowledge-librarian.yaml the sidecar's scheduled librarian refresh
knowledge-release.yaml the sidecar's release step: bundle and Copilot zips (from publish.yml)
semantic-release.yml version and changelog from Conventional Commits on main; never tags
publish.yml maintainer-gated release (workflow_dispatch only)
knowledge-website.yaml ktl-website's workflow: builds website/ on each PR, publishes the default branch's build to Pages
docent-eval.yml the docent holdout, run through `claude plugin eval` weekly and by hand under a cost cap; never on a pull request
docs/
architecture.md the architecture the poem, LOKF and LinkML inspired: the catalogue, the five roles and the trust ladder
architecture.en-simple.md the architecture page retold for readers aged 13 to 18
install.md the quick start, every way to install the six skills, and pinning to one release
for-the-curious.md the architecture's mechanics: four levels of checking, domain schemas
context-layer.md the context layer: what it is, one bundle as one, and why bundles federate
federation.md a federation of bundles: domains, tiers, the workspace and the decisions
context-layer-technology.md the products a workspace can use: artifact repositories, stores, catalogues, agents
obsidian.md the bundle as a vault of its own, and the two plugins
m365.md read-only roles as Microsoft 365 Copilot skills, the docent first
ingest.md knowledge outside the repository: the manifest, the mirror and the ingest pull request
three-lines.md the roles in the three lines of defence, what an auditor can check, and the critics
skills-repositories.md KTL in a repository whose content is Agent Skills, and what remains to do
releasing.md how the three repositories release, and the settings it needs
signing-commits.md signing commits, which the provenance gate reads
threat-model.md shared security design: what an agent can reach, and what guards it
repository-layout.md this page
examples/
docent.md eight captured docent answers against this repository's own bundle
curator.md placeholder: the curator sessions still to capture
prose.md captured ktl-prose runs that write for younger readers
scripts/
validate-repository.sh the contract: the checks validate.yml runs on this repository's own files
smoke-test-install.sh installs the six skills into a throwaway repo and checks them
smoke-test-website.sh lays the website templates down on a dummy bundle and builds the site twice
sync-sidecar.sh runs one release's knowledge-sync.sh in each sibling repository, and finishes the branches
companion-diagrams.mjs draws the Archify companions in .assets/companions/ again; a maintainer runs it by hand
tests/ the behavioural tests of the sidecar scripts and the prose checker, run with pytest; -n auto runs them in parallel
conftest.py the shared helpers, and how to run the tests
test_*.py one module per script: the pen, the gate, the report, the conventions checker,
the feedback recorder, the preflight, the prose checker, the layouts the
wrapper and the workflows run in, and the website skill's preflight and templates
docent-holdout.yaml the eight captured docent questions and the concept each answer should rest on, as data; outside .lokf/ so the docent cannot read it
docent-holdout-schema.yaml its LinkML shape, importing LOKF's schema for Concept
test_docent_holdout.py checks that each expected concept still exists and that evals/ asks the same questions
evals/ the holdout as `claude plugin eval` cases, one directory per question with its prompt, graders and scaffold; README.md says how to run it
scaffold-bundle.sh copies .lokf/knowledge/ alone into a run's empty directory
justfile `just docent-eval` runs that suite under a cost cap, `just docent-holdout` its test; the sidecar's recipes stay in .lokf/justfile
website/ the website: Astro Starlight, this repository's copy of ktl-website's templates
site.config.mjs the site's values and options: addresses, title, logo, docs groups, extra pages
scripts/config.mjs settles those options against the repository; `node scripts/config.mjs` prints them
scripts/sync.mjs writes the pages and the bundle's exported files before each build
scripts/check-links.mjs fails the build on a link between two pages that does not resolve
.lokf/ this repository's own sidecar: the bundle and its tooling
knowledge_bundle -> .lokf/knowledge, the doorway link ktl-sidecar creates (Step 2)

Each SKILL.md is a short router. Anything not needed on every invocation is in that skill’s references/, loaded only when the router points to it, so the cost of a trigger stays small. Contract check 10a holds each SKILL.md to a word budget.

ktl-sidecar/templates/ and ktl-website/templates/ hold the files each installs, copied verbatim, never retyped. ktl-prose/scripts/ and ktl-website/scripts/ hold the one script each runs in place. ktl-docent/scripts/ holds the docent’s own copies of knowledge-report.sh and knowledge-feedback.sh. Contract check 11a keeps them identical to the sidecar’s templates, so a question to the docent runs no script the host repository supplies.