Glossary: Tools

Candidate terms extracted from every Tool node: title as the label, description as the definition, the Tool id as the code. Each is the asset’s own text, verbatim and not curated, and carries the badge “candidate, extracted”. A person promotes one by authoring it. Authored terms are on their owning instance’s page, and those pages, the counts and the sources are linked from the glossary index.

From: cat-harness 171 (SKOS) · cat-harness-tools 1 (SKOS) · folio-assistant-core 12 (SKOS).

Size: this page holds 184 terms and is 145 KB before compression, fetched in one request, within its budget of 1.0 MB. There is no search index: the filter below runs over this page, and the A–Z bar jumps within it.

Already somebody else's concept? — check:term-mapping, bean 7wou
targetmappedunmappedundeterminedwhy undetermined
fhir02100—
skos02100—

Undetermined is never “no match”. A vocabulary that could not be reached has said nothing, and the column above keeps that apart from a checked miss. The counts are reported and not graded: an unmapped candidate may be a term this corpus is right to coin.

Per term. Every term on this page is unmapped on fhir, and unmapped on skos, unless its entry says otherwise. No entry says otherwise.

184 shown

A

A package's exports are its declared, shipped code directories candidate, extracted

Derive a package's package.json exports from the instance declaration beside it: a directory declared with graph typology code (top level or from within) AND named in files is exported as ./<dir>/*.js → ./<dir>/*.ts and ./<dir>/* → ./<dir>/*; a declared code directory that is not shipped (test/) stays private. Keys without * are named entry points, kept as written and checked to point into an exported directory. Without --write it reports each difference; with it, it rewrites exports. Exit 0 in agreement, 1 drift, 2 cannot tell (no declaration, no package.json, or no shipped code directory).

Tools of cat-harness · source cat-harness/tools/package-exports/package-exports.ts#package-exports

A paper's block graph as UML candidate, extracted

Draw a paper's block graph from buildContentGraph: chapters as packages, editorial edges (uses / interprets) solid and formal Lean edges (type / value) dashed purple, never one derived from the other, and each block filled by its formalization status from proof-objects.json when given. One diagram for the paper and one per chapter, each in portrait and landscape, stamped with its source's hash. Run from a folio: the platform carries no paper.

Tools of cat-harness · source cat-harness/tools/content-graph-uml/content-graph-uml.ts#content-graph-uml

Agent memory assembler candidate, extracted

Assemble every declared memory directory's nodes into each agent's memory, per vendor: Claude Code's .claude/agent-memory/<agent>/MEMORY.md (a marked region, injected when the subagent starts) and Antigravity's workspace skill .agents/skills/<agent>-memory/SKILL.md. Other vendors (Gemini CLI, Copilot, Codex, Cursor) are beaned under 31ni and not generated.

Tools of cat-harness · source cat-harness/tools/agent-memory/agent-memory.ts#agent-memory

Apply a vocabulary mapping table candidate, extracted

Carry one source record into a target vocabulary by a declared folio-vocab-mapping/v1 table: each source field becomes the predicate its row names, in the table's order, with a DERIVED target (such as dcterms:title rendering skos:prefLabel) copied from its authoritative one so the two cannot drift. A table is shaped like a FHIR ConceptMap: an existing ConceptMap, R4 or R5, is representable as one without loss (fromConceptMap), and a table can be produced as a ConceptMap (toConceptMap), which returns every loss rather than dropping anything silently. First consumer: glossary-export.

Tools of cat-harness · source cat-harness/tools/vocab-map/vocab-map.ts#vocab-map

Audit README links candidate, extracted

Verify every Markdown link in a folio's README still resolves — relative paths against the tree, repo refs against a real ls-tree, Pages URLs against the publish ref. Writes nothing.

Tools of cat-harness · source cat-harness/tools/readme-audit/readme-audit.ts#readme-audit

Avatar stylesheet candidate, extracted

Render the declared avatar nodes — an actor's glyph and colours, including the overlay states — into the stylesheet the site serves.

Tools of cat-harness · source cat-harness/tools/avatars-css/avatars-css.ts#avatars-css

B

beans CLI candidate, extracted

Read and write the work plan with the beans binary. The normal mechanism when it is installed.

Tools of cat-harness · source cat-harness/tools/beans-cli/beans-cli.ts#beans-cli

beans, by hand candidate, extracted

Read and write the same work plan without the CLI — scripts/beans-fallback.ts, or editing a bean's front matter directly. Equal standing to the CLI, not a degraded mode.

Tools of cat-harness · source cat-harness/tools/beans-manual/beans-manual.ts#beans-manual

Bibliography page candidate, extracted

Render every reference in the checkout (each declared references directory's folio-reference/v1 nodes and each catalogue directory's Dublin Core records) as the bibliography page and one page per sub-graph, each with its BibTeX, CSL-JSON, RIS and Dublin Core JSON-LD exports and a per-reference export, at the route of the visualiser core declares for it.

Tools of folio-assistant-core · source folio-assistant-core/tools/bibliography-page/bibliography-page.ts#bibliography-page

Block edit and feedback links candidate, extracted

Each labelled block's links back to where it can be changed: [edit] opens the block's Markdown source in GitHub's editor on main, and [feedback] opens a new GitHub issue about the block, from the folio's .github/ISSUE_TEMPLATE/block-feedback.yml when it has one (prefilling only the fields it declares: block, section, source, page, url) or as a plain issue whose body carries the same facts. The document build draws these on every block; this Tool prints them as JSON for one block or all. Governed by the block-actions skill (bean uphx, REQ-17).

Tools of folio-assistant-core · source folio-assistant-core/tools/block-actions/block-actions.ts#block-actions

BPMN checklist projection candidate, extracted

Generate, per diagram, a checklist that walks the BPMN as a state machine: each task names the workflow_complete call that records it and ends with next: by node id; each decision lists its labelled branches (or the DMN that computes it); parallel forks name every branch and joins wait for all; start/end events are entry and exit lines. A rendering, never an authority: it says it is generated, and --check fails when one is stale.

Tools of cat-harness · source cat-harness/tools/bpmn-checklist/bpmn-checklist.ts#bpmn-checklist

BPMN diagram rendering candidate, extracted

Render each process diagram to SVG for the documentation site. The .bpmn file is the source of truth; the picture is generated from it, so a diagram and its image cannot disagree.

Tools of cat-harness · source cat-harness/tools/bpmn-render/bpmn-render.ts#bpmn-render

BPMN workflow engine candidate, extracted

Run a declared BPMN process as an instance: workflow_start opens one for a subject, workflow_next reports what is enabled, workflow_complete records a step or answers a decision (a DMN-computed one from facts) and REFUSES a step that is not enabled. State is committed under the work plan, so which edge was taken is a record, not a memory.

Tools of cat-harness-tools · source cat-harness-tools/tools/bpmn-engine/bpmn-engine.ts#bpmn-engine

Build and publish an IG repository's own site with its folio-site.yml workflow candidate, extracted

Dispatch the IG repository's folio-site.yml (copied from the IG layer's ig-repo-site template): on a runner it composes the harness chrome for THIS instance (compose-docs --shell --instance, gen-navbar-include), composes the IG at the root of that Jekyll shell (stage-ig-sites --compose-at-root), builds it with Jekyll so every IG page wears the theme's side bar, search box and icon row, publishes the instance's served directories, rails any page Jekyll did not lay out (rail-standalone-pages --foreign-site --instance), stamps the platform that built it (folio-build.json), and on the default branch deploys the whole site to the gh-pages root. It reports platform drift against sibling sites and re-dispatches the IGs this one depends on when a token allows.

Tools of cat-harness · source cat-harness/tools/ig-folio-site-workflow/ig-folio-site-workflow.ts#ig-folio-site-workflow

Build the docs site locally candidate, extracted

Build the published site on this machine, so a page can be looked at rather than described: the same Jekyll build pages-publish runs in CI, into a directory of your choosing, and never pushed. The local half of the two site builds (owner, 2026-10-05: local and GitHub builds are two Tools for one skill).

Tools of cat-harness · source cat-harness/tools/site-build-local/site-build-local.ts#site-build-local

Build the Latent Semantic Indexing index of a prose graph candidate, extracted

Build the per-graph LSI index sidecar for every declared prose graph (or the one named): input fingerprint, parameters, dimension summaries, nearest neighbours and near-duplicate findings, never the vectors. Records each run's outcome and input fingerprint, success or failure, as a folio-tool-run/v1 record.

Tools of cat-harness · source cat-harness/tools/lsi-index/lsi-index.ts#lsi-index

Build, check and (on request) publish an instance's own site, or a STAGING/<branch> preview candidate, extracted

From a checkout whose layers arrive by remote mount: mount the pinned closure, install, run the instance's own gates (--pre), compose the harness chrome for THIS instance, run its source steps, build with Jekyll at the base path read from the git remote (/<repo>, or /<repo>/STAGING/<branch> for a preview), run the post-build steps (mount-instance-docs, pdf-viewer, set-html-lang, publish-id-lookup, rail-standalone-pages), and check that every relative or base-rooted link in every page resolves to a file under the site, reading each page with an HTML parser. Any failing step stops the run; a link that does not resolve means nothing is published. It never decides to publish: only --publish does, and then a root publish keeps STAGING/ and _render-log/ on the branch, and a preview replaces only its own STAGING/<branch>/.

Tools of cat-harness · source cat-harness/tools/build-instance-site/build-instance-site.ts#build-instance-site

C

Check an instance's ArchiMate models against its config candidate, extracted

The gate for the archimate graph typology: every model cat-archimate.config.json names is held, parses (Archi's native XML or its zipped archive), and resolves — every box in every view draws an element the model holds, every relationship's ends are in the model — and no .archimate file is held that the config does not name.

Tools of cat-harness · source cat-harness/tools/archimate-check/archimate-check.ts#archimate-check

Check declared credential needs against workflow use and expiry, by name candidate, extracted

Compare each repository's declared credential needs (credentials/needs.json, profile and registry) with the secrets.NAME expressions its workflows reference (GitHub Actions' dollar-and-double-brace form, said in words because this text is rendered on a Jekyll page), with the secret names GitHub lists when a token allows it, and with any recorded expiry. NAMES ONLY — no value is ever read. Findings per §6.2: used-not-declared, declared-not-used, declared-not-present, present-not-declared (reported, never deleted), naming advisories, and expiry (≤30 days minor, ≤7 major, expired critical). Exits 2 when anything could not be determined, which outranks clean; else 1 on a major or critical finding; else 0.

Tools of cat-harness · source cat-harness/tools/secrets-check/secrets-check.ts#secrets-check

Comment on a merge request (GitLab) candidate, extracted

Add a comment to one merge request. The comment is read from stdin, never from the command line.

Tools of cat-harness · source cat-harness/tools/gitlab-mr-comment/gitlab-mr-comment.ts#gitlab-mr-comment

Comment on a pull request (GitHub) candidate, extracted

Add a comment to one pull request. The comment is read from stdin, never from the command line.

Tools of cat-harness · source cat-harness/tools/github-pr-comment/github-pr-comment.ts#github-pr-comment

Complete a step candidate, extracted

Record an enabled step as done — or supply the facts a decision gateway is computed from — and advance the instance. Refuses a step that is not enabled.

Tools of cat-harness · source cat-harness/tools/workflow-complete/workflow-complete.ts#workflow-complete

Compose the site's documentation tree from its declared docs layers candidate, extracted

Write the Jekyll source the docs site is built from: the base docs layer, the repository overlay on top (an overlay's _config.yml merged, every override reported), and each composed instance under its own name. --staging keeps staging-only visualisations; --changed-files stubs instances a branch does not reach. --shell writes the CHROME only — the layers' Jekyll machinery and assets, no page, no instance, and the host's generated includes empty — which an IG repository composes its IG into so its own site wears the main site's chrome (#2235).

Tools of cat-harness · source cat-harness/tools/compose-docs/compose-docs.ts#compose-docs

Content graph candidate, extracted

Build the content graph under a path and report its edges, separated into the EDITORIAL relation an author maintains and the FORMAL one derived from Lean. Reading the two as one number is how the editorial signal gets overwritten.

Tools of cat-harness · source cat-harness/tools/content-graph-build/content-graph-build.ts#content-graph-build

Content graph counts candidate, extracted

Node and edge counts for the content graph by provenance and kind, and whether each root exists. Tells 'nothing matched' from 'that population has not been built'.

Tools of cat-harness · source cat-harness/tools/get-graph-stats/get-graph-stats.ts#get-graph-stats

Content JSON-LD context candidate, extracted

Emit the published JSON-LD @context that both populations share — authored block siblings and ingested library/** nodes reference it by URL — generated from its TypeScript definition rather than hand-kept.

Tools of cat-harness · source cat-harness/tools/content-context/content-context.ts#content-context

Content manifest validation candidate, extracted

Validate the block manifests under a path against their schemas. Exits 2 where no folio is present rather than reporting a clean run — the platform carries no content, and a validator that passes over nothing is how this one validated nothing for a while.

Tools of cat-harness · source cat-harness/tools/content-manifest-validate/content-manifest-validate.ts#content-manifest-validate

Convert a checkout to a root index.config.json candidate, extracted

Write the root index.config.json (folio-index-config/v1) that says which instances the checkout instantiates, where each comes from (source.local or source.remote) and which owns / (site.landing), from the root *.config.json files and the declaration's remoteMounts. With --write it moves remoteMounts off the declaration into source.remote entries, writes the generated .gitignore block, and renames a legacy <name>.mount-lock.json to index.lock.json. Without a flag it prints the index it would write. Idempotent: a re-run merges what the declaration gained, and refuses an entry the index already holds differently. A root config naming no instance is reported as unmatched-config and not imported, because what to do with it is a person's decision.

Tools of cat-harness · source cat-harness/tools/index-config-migrate/index-config-migrate.ts#index-config-migrate

CSV tabular metadata candidate, extracted

Read a delimited text file into a folio-tabular-csvw/v1 record: one table, its columns and their CSVW datatypes, each measured or explicitly undetermined. Routing is by content, never by extension: the first rows must agree on one field count of two or more, under exactly one of , ; TAB |. A CSV's fac:anchor sheet and cell are a determined null. Governed by the tabular-metadata skill (bean eief).

Tools of folio-assistant-core · source folio-assistant-core/tools/tabular-csv/tabular-csv.ts#tabular-csv

D

Dependency probe candidate, extracted

Report which of the harness's optional and required dependencies are present on this machine, and what each unmet one blocks.

Tools of cat-harness · source cat-harness/tools/check-dependencies/check-dependencies.ts#check-dependencies

Directory READMEs from the Knowledge Graph candidate, extracted

Write a README for every directory an instance declares, from the declaration and the files themselves: the declared title and description, the Graph Typologies, and one row per file described from the file, with 'used by' only where a diagram records it. Renders the Liquid templates in tools/templates/readme/, part of the tools graph, which may include one another with Jekyll-style include tags. Writes only between <!-- kg:subgraph:begin --> and :end; a README without the markers is left alone and reported. Records every missing title, missing or over-long description, absent directory and unmarked README in test/results/subgraph-readmes.qa-results.json.

Tools of cat-harness · source cat-harness/tools/subgraph-readmes/subgraph-readmes.ts#subgraph-readmes

discussion candidate, extracted

Put a question to a person or a sibling agent and receive an answer, to determine which harness this repository should become and which repositories are read from and written to. The two facts no file holds.

Tools of cat-harness · source cat-harness/tools/discuss/discuss.ts#discuss

Do the Tool nodes agree with their skills? candidate, extracted

Check every Tool node's joins: that each satisfies resolves to a real skill and agrees with that skill's declared contract, that every io port names a declared type, and that no argv input has a type able to express a shell payload.

Tools of cat-harness · source cat-harness/tools/check-tools/check-tools.ts#check-tools

Document kinds viewer candidate, extracted

Render each declared document-kinds directory: every kind's structure, sections and sources, one page per subject instance.

Tools of cat-harness · source cat-harness/tools/document-kinds-viewer/document-kinds-viewer.ts#document-kinds-viewer

Dublin Core renderings candidate, extracted

Render every folio-dublin-core/v1 record a catalogue item names as Dublin Core XML (qualified DC, per DCMI's XML guidelines) and as JSON-LD bound to DCMI Metadata Terms. Both are written into the instance's published root (<instanceRoot>/dublin-core/<stem>.dc.xml and .dc.jsonld), so the site mount publishes them beside the item pages. Deterministic. --check fails on a missing, stale or orphaned rendering. Governed by the dublin-core-renderings skill (bean 7eak).

Tools of folio-assistant-core · source folio-assistant-core/tools/dublin-core-render/dublin-core-render.ts#dublin-core-render

E

Editorial content-graph analysis candidate, extracted

Build the block- and section-level editorial dependency graph of one paper from its .ts manifests and report forward references, cross-chapter coupling, sparse or dense sections and isolated blocks, ranked. Reads uses[]/interprets only — the editorial relation, never the formal one.

Tools of cat-harness · source cat-harness/tools/content-graph-analysis/content-graph-analysis.ts#content-graph-analysis

Embed a PDF inline in a page candidate, extracted

Print the HTML fragment that shows a PDF in the installed viewer: a lazily loaded frame whose address is derived from the page's own location (so one page works at the site root, under a project base and under a staging preview), plus plain open and download links that work without it.

Tools of cat-harness · source cat-harness/tools/pdf-viewer-embed/pdf-viewer-embed.ts#pdf-viewer-embed

Every path a declaration names resolves — directories, assets, visualisers, needs candidate, extracted

Read every instance declaration in the checkout and resolve what it names: directories (and those declared from within) through check:declared-dirs, assets through check:declared-assets, visualisers[].renderedBy through check:visualiser-routes, needs through the instance-graph resolver, and visualisers[].coversKinds against the graph typologies registered IN THIS CHECKOUT — its own and those a mounted layer contributes, read from the checkout under inspection rather than from where the harness module sits (lesson 6). A declaration that does not parse is a finding. One verdict per instance and field, naming the gate that decided it. Exit 0 every reference resolves, 1 one does not, 2 could not determine; a certain finding is reported before anything undetermined.

Tools of cat-harness · source cat-harness/tools/declaration-resolution/declaration-resolution.ts#declaration-resolution

External schemas viewer candidate, extracted

Render the declared external schemas, and which of this instance's modules conform to each, as one page.

Tools of cat-harness · source cat-harness/tools/external-schemas-viewer/external-schemas-viewer.ts#external-schemas-viewer

Extract translatable strings candidate, extracted

Segment a folio's prose into a GNU gettext .pot template, leaving code, math and identifiers untranslated.

Tools of cat-harness · source cat-harness/tools/translation-extract/translation-extract.ts#translation-extract

F

Fetch a skill candidate, extracted

Load one skill's instruction body for the agent to follow, from the local packages or an external bundle.

Tools of cat-harness · source cat-harness/tools/skill-fetch/skill-fetch.ts#skill-fetch

Folio block QA summary candidate, extracted

Summarise a folio's committed per-block QA verdicts into one block-qa.json a staging preview publishes: each block is failing (a FRESH verdict failed, with the worst severity), stale (a verdict predates the block's current files), passing, or unaudited. Freshness is the QA sweep's own rule, including the uses-graph hash for graph-scoped criteria. Runs no checker and writes no verdict.

Tools of cat-harness · source cat-harness/tools/folio-block-qa-summary/folio-block-qa-summary.ts#folio-block-qa-summary

Folio block screenshots candidate, extracted

Picture each changed figure, diagram, table, equation or simulator block on the published main site and on a staging build, and compare the two pictures pixel by pixel in Chromium's canvas. Writes visual-diff.json (folio-visual-diff/v1: per block, the share of pixels changed beyond anti-aliasing, and the before, after and diff pictures) and visual/*.png, which the review page's visual renderer shows. A side that cannot be pictured (page or anchor missing) is recorded as missing, never drawn blank. Adds no dependency: Playwright is already the platform's browser driver.

Tools of cat-harness · source cat-harness/tools/folio-block-screenshots/folio-block-screenshots.ts#folio-block-screenshots

Folio ChangeSet candidate, extracted

What changed in a folio between two git refs, block by block: each block added, removed, or changed — and for a changed block, every aspect that applies (renamed, prose, manifest, moved). Keyed on the block label, which the id-unique / id-stable QA criteria guard, not on file paths.

Tools of folio-assistant-core · source folio-assistant-core/tools/folio-changeset/folio-changeset.ts#folio-changeset

folio MCP server, as a container candidate, extracted

Build and run the folio MCP server as one image carrying Bun, TeX Live, Lean, lean-lsp-mcp and the generated Python set — the image deploy/ serves behind the auth gateway. Run it with docker run -i --rm paper-assistant --stdio, or --http on port 8080.

Tools of cat-harness · source cat-harness/tools/mcp-server-image/mcp-server-image.ts#mcp-server-image

Folio review comments candidate, extracted

Ingest a pull request's tagged conversation comments (block: <label> on the first line) into review-comment/1.0.0 todos, and write them as review-comments.json. Idempotent over its previous output, whose statuses it keeps. Re-anchors every comment against the head's blocks, following renamedFrom, and orphans a comment whose block is gone rather than dropping it.

Tools of folio-assistant-core · source folio-assistant-core/tools/folio-review-comments/folio-review-comments.ts#folio-review-comments

Folio review coverage candidate, extracted

Compute the two facts content-change-review.bpmn's coverage gate (GW_Covered) reads: uncoveredBlocks, the changed blocks with no reviewer verdict on their CURRENT hash, and openDefects. Reads a preview's changeset.json, blocks.json and review-comments.json. With --commit, writes the ingested folio-review-verdict/v1 verdicts into the todos graph's declared review-verdicts directory and commits them to the edit-set's FEATURE branch; refused on the base branch and a detached HEAD. Prints the facts as JSON on stdout.

Tools of folio-assistant-core · source folio-assistant-core/tools/folio-review-coverage/folio-review-coverage.ts#folio-review-coverage

Folio viewer candidate, extracted

Render each declared folio directory as a browsable page over its published index.

Tools of cat-harness · source cat-harness/tools/folio-viewer/folio-viewer.ts#folio-viewer

G

Gates on the merged tree candidate, extracted

Build this branch merged with the current base in a throwaway worktree and run the full bun run cat gates there — the state a merge will actually produce, which neither the branch's CI nor the base's CI evaluates. Exit 0 passes, 1 conflicts or fails, 2 could not determine (never read as clean). The working copy is never touched.

Tools of cat-harness · source cat-harness/tools/gates-merged/gates-merged.ts#gates-merged

Generated index pages candidate, extracted

Render index pages for the declared skills, docs and swimlane-glossary directories, one per directory.

Tools of cat-harness · source cat-harness/tools/auto-docs-viewer/auto-docs-viewer.ts#auto-docs-viewer

GitHub Pages (gh-pages) candidate, extracted

Push a rendered Knowledge Graph to GitHub Pages at a publication root URL — a staging preview (STAGING/<slug>/) or the release root, the same steps either way — and report the push: a status (pushed, not pushed, could not determine) and one message carrying the commit merged onto gh-pages and the QA result. Its steps are bootstrap-tools' render-kg-to-github-pages process, which first provisions the target: an orphan gh-pages branch, then Pages switched on to serve it.

Tools of cat-harness · source cat-harness/tools/gh-pages/gh-pages.ts#gh-pages

GitHub Pages publish candidate, extracted

Push a built directory to the gh-pages branch, where it is served. How the knowledge graph and its schema reach a URL.

Tools of cat-harness · source cat-harness/tools/pages-publish/pages-publish.ts#pages-publish

Give every ArchiMate view, element and relationship a page and an IRI, and draw every view candidate, extracted

Write a JSON-LD node and a thin page for each model an instance's cat-archimate.config.json names and for every view, element and relationship in it — keyed by Archi's own ids — plus the normalised model the pages' one loader draws from, and every view drawn as SVG from the model's own bounds and bendpoints in ArchiMate's notation, each box a link to its element. --out writes into a site being built — the data at the graph's path, the pages at the route of the visualiser the instance declares for this Tool, <locale>/<harness>/<id>/; without it the files go into the graph and --check gates them.

Tools of cat-harness · source cat-harness/tools/archimate-pages/archimate-pages.ts#archimate-pages

Give every page Jekyll did not lay out the folio-assistant navbar candidate, extracted

A LAST pass over the finished site: inject the shared navbar (lib/navbar.ts, the same component the site sidebar draws) into every page that carries none — standalone viewers, generated instance pages, and each IG site built by stage-ig-sites. A page under an igSite instance's route is railed as THAT instance's page (its name, mark and graphs); a page may declare its own section (data-fa-visualiser-nav) and its label (fa-visualiser-label). Mount routes are left to the mount pass, and a page that declines (folio-navbar: none) is left bare.

Tools of cat-harness · source cat-harness/tools/rail-standalone-pages/rail-standalone-pages.ts#rail-standalone-pages

Glossary build candidate, extracted

Build a paper's glossary index from its manifests and render the LaTeX. --check reports drift instead of writing, comparing everything except the generated timestamp so a re-run is not mistaken for a change.

Tools of folio-assistant-core · source folio-assistant-core/tools/glossary-build/glossary-build.ts#glossary-build

Glossary page candidate, extracted

Render every declared glossary — authored SKOS schemes, the swimlane ledger and the terms extracted from knowledge-graph assets — as the glossary page and one page per asset type, at the route of the visualiser core declares for it.

Tools of folio-assistant-core · source folio-assistant-core/tools/glossary-page/glossary-page.ts#glossary-page

H

Harness object model as PlantUML candidate, extracted

Draw the harness object model (Actor, Role, Skill, Process, Task, Todo, Bean, tests, schemas) with every attribute read from the schema behind it. Each relationship names the field that carries it, and the generator refuses to write if that field is gone.

Tools of cat-harness · source cat-harness/tools/uml-object-model/uml-object-model.ts#uml-object-model

Headless render QC (Playwright) candidate, extracted

Drive a folio's built viewer in headless Chromium and report the blocks whose diagrams, SVGs, LaTeX math or markdown do not render — with --screenshot to save the pictures. This is the mechanised half of looking at it: a green gate set is not a rendering.

Tools of cat-harness · source cat-harness/tools/headless-render-qc/headless-render-qc.ts#headless-render-qc

I

Ingest, standard library only candidate, extracted

Ingest an upload into library/ using only the Python standard library — archive listings, CSV and spreadsheet records, technical file metadata, and the content sniff that routes a file to its rung.

Tools of cat-harness · source cat-harness/tools/ingest-stdlib/ingest-stdlib.ts#ingest-stdlib

Ingest, with PDF and image extensions candidate, extracted

Ingest a PDF into library/ — embedded outline, page text, OCR for scans, and image extraction — using PyMuPDF, tesseract and pypdf with Pillow.

Tools of cat-harness · source cat-harness/tools/ingest-extended/ingest-extended.ts#ingest-extended

Inject translations candidate, extracted

Produce a translated copy of a source markdown file from a .po, using the same segmentation the extractor used.

Tools of cat-harness · source cat-harness/tools/translation-inject/translation-inject.ts#translation-inject

Install the inline PDF viewer into a built site candidate, extracted

Download the pinned pdf.js release (legacy build), verify its SHA-256, copy the parts a site needs into <site>/assets/vendor/pdfjs/, and add the shim that opens ?src= only for the allowlisted URL prefixes or the site's own origin. Nothing is committed: the viewer exists only in the built site.

Tools of cat-harness · source cat-harness/tools/pdf-viewer-install/pdf-viewer-install.ts#pdf-viewer-install

Instance declaration schema candidate, extracted

The zod definition of <name>.json — what an instance may declare about itself — and the published JSON Schema generated from it.

Tools of cat-harness · source cat-harness/tools/cat-harness-schema/cat-harness-schema.ts#cat-harness-schema

Is CI passing on the default branch? candidate, extracted

Report each workflow's state on the default branch, which a checkout cannot see: a red workflow looks exactly like a green one from in here. One API call over the recent run history, not one request per workflow — fanning out would exhaust the unauthenticated 60/hr limit and make it unusable at session start.

Tools of cat-harness · source cat-harness/tools/ci-health/ci-health.ts#ci-health

Is this repository's cutover from the monorepo complete? Measured, condition by condition candidate, extracted

Run in a separated repository. Six conditions, each decided by an existing gate: mounts (every declared layer on disk at its pin — remote-mount --check), declarations (every path a declaration names resolves — declaration-resolution), monorepo-paths (no wiring still names the monorepo: livesAt on it, a submodule of it, a reusable workflow called from it, a path into its old checkout — the one condition implemented here), import-direction and reference-direction (no layer reaches a layer above it), and site (the site builds from the mounts alone, every link resolving — build-instance-site --no-mount, only with --site). Findings inside a MOUNTED layer are listed and not counted: a defect in a layer pinned from upstream is fixed upstream and re-pinned. Exit 0 complete, 1 a condition failed, 2 a condition could not be determined or was not run — without --site the answer is never 0.

Tools of cat-harness · source cat-harness/tools/separation-cutover-check/separation-cutover-check.ts#separation-cutover-check

J

JSON-LD content-key check candidate, extracted

Check every committed JSON-LD document that names the content context, or an instance's own generated context: every plain key is a declared term (never descending into an @json value), and no file path sits under an @id-coerced term. An empty corpus is a finding, never a clean run. Prefixes are checked by jsonld:contexts --check.

Tools of cat-harness · source cat-harness/tools/context-prefixes/context-prefixes.ts#context-prefixes

Judge a tree and record the verdict by digest candidate, extracted

Run the layer PR-check gates and tests on a composed tree (head) and on its base, or reuse a stored verdict whose digest is the base tree's, compare them with the layer-pr-checks compare scripts, and write a verdict record: {treeDigest, runner {kind agent|github-actions|local, id}, startedAt, finishedAt, gates [{name, exit, seconds, skipped?}], tests {total, failed, new}, verdict green|red|unknown}. With a token it publishes the verdict as the commit status judge-tree; check answers whether any runner judged a digest green; sample re-runs a seeded few gates of a record.

Tools of cat-harness · source cat-harness/tools/judge-tree/judge-tree.ts#judge-tree

K

Knowledge-graph audit candidate, extracted

Audit every join in the actor→role→skill→task sentence and write a committed QA sidecar per node. A printed verdict is gone; a sidecar is what makes "unbound since it was drawn" distinguishable from "broken in the commit under review".

Tools of cat-harness · source cat-harness/tools/kg-audit/kg-audit.ts#kg-audit

Knowledge-graph export candidate, extracted

Dump this instance's knowledge graph — skills, BPMN activities and their lanes, roles, actors, directories — to one JSON-LD document for publication. The export is data; something else draws it.

Tools of cat-harness · source cat-harness/tools/kg-graph-export/kg-graph-export.ts#kg-graph-export

L

L1 extraction coverage candidate, extracted

Of the normative sentences in a publication (the closed marker list of smart-kg's docs/COVERAGE.md §1), count how many an L1 extraction CAPTURED, how many are EXCLUDED for a fixed-list reason a person signed off, and how many are UNACCOUNTED — per page and in total. Writes the contract's §4 report and exits non-zero below 100% accounted-for. Issue #2405 FR-009.

Tools of folio-assistant-core · source folio-assistant-core/tools/l1-coverage/l1-coverage.ts#l1-coverage

L1 source completeness candidate, extracted

Is a library/<bib-slug>/ entry complete as L1 source content? Each requirement is met, unmet, or NOT-DERIVABLE, so a document that cannot yield an artefact is distinguished from one that simply has not.

Tools of cat-harness · source cat-harness/tools/l1-complete-check/l1-complete-check.ts#l1-complete-check

Latent semantic index viewer candidate, extracted

Render every committed LSI index — dimensions as two poles, narrow-dimension and near-duplicate findings — and which declared prose graphs still need one.

Tools of cat-harness · source cat-harness/tools/lsi-viewer/lsi-viewer.ts#lsi-viewer

Latent Semantic Indexing over a prose graph candidate, extracted

Find units of a declared prose graph (a library, the skills, the beans, docs) that discuss a query in OTHER words — the vocabulary gap lexical search cannot reach. Each hit is labelled lexical+latent or latent only, and the score is a cosine in the latent space, never merged with a lexical result.

Tools of cat-harness · source cat-harness/tools/lsi-query/lsi-query.ts#lsi-query

LaTeX compilation (latexmk) candidate, extracted

Compile LaTeX source documents into PDF using latexmk with safe shell-escape isolation across CI events.

Tools of cat-harness · source cat-harness/tools/latexmk-compile/latexmk-compile.ts#latexmk-compile

LaTeX overfull-box report candidate, extracted

Turn a pdflatex log's Overfull \hbox warnings into a located, actionable report, with a threshold so a long tail of trivial overruns does not bury the real ones.

Tools of cat-harness · source cat-harness/tools/latex-overfull/latex-overfull.ts#latex-overfull

LaTeX preflight candidate, extracted

Lint TeX source for the pdflatex-compile failure classes a permissive AST parser accepts — the ones that pass validation and then break the build.

Tools of cat-harness · source cat-harness/tools/latex-preflight/latex-preflight.ts#latex-preflight

Lean build candidate, extracted

Build every Lean project in the workspace from the root Lake manifest, so cross-package dependencies resolve against it rather than a possibly-stale per-paper manifest. Writes a committable build-status sidecar every run.

Tools of cat-harness · source cat-harness/tools/lean-build/lean-build.ts#lean-build

Lean coverage candidate, extracted

Count how many provable blocks — theorem, lemma, proposition, corollary — carry a full Lean proof rather than a sorry, per paper. The completeness half of the Lean audit: what is formalised, and what is still a gap.

Tools of cat-harness · source cat-harness/tools/lean-coverage/lean-coverage.ts#lean-coverage

Lean toolchain install candidate, extracted

Install the toolchain pinned in lean-toolchain, fetching it from the GitHub release rather than through elan's downloader. Idempotent, and it detects partial state rather than re-downloading.

Tools of cat-harness · source cat-harness/tools/lean-toolchain-setup/lean-toolchain-setup.ts#lean-toolchain-setup

Lean vacuity audit candidate, extracted

Inspect Lean declarations chapter by chapter for proofs that type-check, are sorry-free and axiom-clean, and still carry no mathematical content — assuming what they claim, concluding something trivially true, or resting on a false premise.

Tools of cat-harness · source cat-harness/tools/lean-audit/lean-audit.ts#lean-audit

Lexical search over the content graph candidate, extracted

Find graph nodes, authored or ingested, whose label, title, kind or tags contain a string, with no graph expansion. corpus-search composes this with a neighbour walk.

Tools of cat-harness · source cat-harness/tools/search-graph/search-graph.ts#search-graph

Library viewer candidate, extracted

Render each declared library directory — its entries, intakes and avatars — as a page per subject instance, and give every entry its own path IRI (<library>/<instance>/<id>/): a materialized thin shell that loads the entry from the published projection, with its JSON-LD manifest as the alternate.

Tools of cat-harness · source cat-harness/tools/library-viewer/library-viewer.ts#library-viewer

List a pull request's changed files (GitHub) candidate, extracted

List the paths one pull request changes.

Tools of cat-harness · source cat-harness/tools/github-pr-files/github-pr-files.ts#github-pr-files

List branches (GitHub) candidate, extracted

List the branch names of the current checkout's GitHub project, as the forge reports them.

Tools of cat-harness · source cat-harness/tools/github-branches/github-branches.ts#github-branches

List branches (GitLab) candidate, extracted

List the branch names of the current checkout's GitLab project, as the forge reports them.

Tools of cat-harness · source cat-harness/tools/gitlab-branches/gitlab-branches.ts#gitlab-branches

List merge requests (GitLab) candidate, extracted

List the open merge requests of the current checkout's GitLab project, optionally only those from one branch.

Tools of cat-harness · source cat-harness/tools/gitlab-mr-list/gitlab-mr-list.ts#gitlab-mr-list

List processes candidate, extracted

The BPMN processes this instance defines, and the instances currently open against them.

Tools of cat-harness · source cat-harness/tools/workflow-list/workflow-list.ts#workflow-list

List pull requests (GitHub) candidate, extracted

List the open pull requests of the current checkout's GitHub project, optionally only those from one branch.

Tools of cat-harness · source cat-harness/tools/github-pr-list/github-pr-list.ts#github-pr-list

List skills candidate, extracted

Every skill this instance can resolve, with its one-line summary. The entry point AGENTS.md sends an agent to first.

Tools of cat-harness · source cat-harness/tools/skill-list/skill-list.ts#skill-list

Local rendering server candidate, extracted

Serve an instance's renderings over local HTTP with their declared media types. The publication host wherever GitHub Pages is absent, and the only host that can enforce application/ld+json at all.

Tools of cat-harness · source cat-harness/tools/serve-rendering/serve-rendering.ts#serve-rendering

Local rendering server (Python) candidate, extracted

Serve an instance's renderings over local HTTP with their declared media types using Python 3 standard library. The publication host wherever GitHub Pages is absent, and the only host that can enforce application/ld+json at all.

Tools of cat-harness · source cat-harness/tools/serve-rendering-py/serve-rendering-py.ts#serve-rendering-py

Log a message to the discussion candidate, extracted

Write a log line where the human actor will read it: the discussion you are already in. Takes the five required fields and the optional body, and renders them as one entry.

Tools of cat-harness · source cat-harness/tools/log-message/log-message.ts#log-message

M

May this step be performed? candidate, extracted

Ask before doing work a strict process governs. The content-agnostic processes refuse a step that is not enabled; the per-content-type ones advise.

Tools of cat-harness · source cat-harness/tools/workflow-gate/workflow-gate.ts#workflow-gate

Merge leftover (has a PR's intent landed?) candidate, extracted

After a train merged, compare a PR's head with the base path by path and say whether what it still changes is ONLY generated files, generated README regions, or changes the base already carries (its patch applies in reverse to the base): landed, not-landed with the authored paths still different, or could-not-determine, which is never shown as clean. Only reports; closing the PR stays a steward action.

Tools of cat-harness · source cat-harness/tools/merge-leftover/merge-leftover.ts#merge-leftover

Merge overlap (conflict prediction) candidate, extracted

For the open PRs (via gh, or a list of branches), report which pairs would conflict: pairwise overlap on AUTHORED paths, with generated paths excluded using the merge-conflict-patterns declaration; which PRs touch a shared declaration (an instance's <instance>.json, roles.json, package.json, bun.lock, schemas, BPMN/DMN); and which touch the harness layer's directory or its tools layer's. A PR that could not be measured makes no pair independent. JSON (merge-overlap/v1), the conflict-prediction input for composing trains.

Tools of cat-harness · source cat-harness/tools/merge-overlap/merge-overlap.ts#merge-overlap

Merge train candidate, extracted

Build a train branch from a base SHA: merge each member (a PR number or branch) with merge-base.ts --no-regen, refusing — never hand-resolving — a member whose conflicts no declared pattern covers; then one bun run cat regen, check:l1-complete --write, every check an instance declares afterMerge (its declared writer run when red), and kg:audit:all:check; then merge origin/main, taking main's side of generated conflicts and regenerating once more. Emits a merge-train-report/v1 JSON report. Never pushes, opens or merges a PR.

Tools of cat-harness · source cat-harness/tools/merge-train/merge-train.ts#merge-train

Methodologies viewer candidate, extracted

Render the declared methodology graph as one page.

Tools of cat-harness · source cat-harness/tools/methodologies-viewer/methodologies-viewer.ts#methodologies-viewer

Mount remote harnesses at a pinned commit, only when trusted candidate, extracted

Lay down each declared remote mount — a source.remote instance in the root index.config.json, or, in a folio with no index, a remoteMounts entry on its declaration (both at once is refused) — and its dependency closure, from another repository at a full commit SHA. Write the lock, index.lock.json (a legacy <name>.mount-lock.json is read, and renamed onto it when rewritten), and, with an index, regenerate the root .gitignore block that ignores each mount path. It READS the declared mounts and never writes them: a tool that changes a mount writes through writeDeclaredMounts into index.config.json. Before anything is checked out, each mount must pass the trust gate (schemas/mount-trust.ts, rule H8): a person's consent recorded for THIS pin, or a signature in a declared trust network. No signature verifier exists yet, so a signature alone is could-not-determine and does not mount. Unsigned and unconsented is refused. --staging mounts for a preview and needs neither, by the owner's ruling. --check compares the disk against the lock and never fetches. When a run CHANGES the lock, it then re-renders the agent surface (skill:commands → .claude/commands/, agent-memory → .claude/agent-memory/ and .agents/) from the checkout root, so a re-pin commit carries the skills and memory the new layers define; a generator that fails fails the run, and --no-agent-surface opts out.

Tools of cat-harness · source cat-harness/tools/remote-mount/remote-mount.ts#remote-mount

Move a review comment's status candidate, extracted

A review-process task moves one review-comment/1.0.0 todo's status (address, send back, resolve, adjudicate, withdraw) through transition(), which refuses any move the named BPMN task may not make. The comment is written to the folio's todos graph (its declared todo-feedback directory) and, with --commit, committed to the edit-set's FEATURE branch. Refused on the base branch and on a detached HEAD.

Tools of folio-assistant-core · source folio-assistant-core/tools/folio-review-comment-move/folio-review-comment-move.ts#folio-review-comment-move

N

Namespace vocabulary candidate, extracted

Emit the folio namespace as a document that dereferences — one node per class and property, each with an @id, a type, a label and a definition, so a consumer holding only the JSON-LD can resolve any term it meets.

Tools of cat-harness · source cat-harness/tools/ns-vocabulary/ns-vocabulary.ts#ns-vocabulary

Node kind pages candidate, extracted

Render a page for every node kind, every harness holding nodes of it, and every node, under /<locale>/<declaring>/<kind>/ (issue #2195).

Tools of cat-harness · source cat-harness/tools/node-kind-pages/node-kind-pages.ts#node-kind-pages

O

Open a render candidate, extracted

Open a rendered PDF, HTML page or image in the system browser, or list the renders available to open.

Tools of cat-harness · source cat-harness/tools/paper-preview/paper-preview.ts#paper-preview

OpenAPI ingest from a published spec candidate, extracted

Ingest the OpenAPI documents an instance's cat-openapi.config.json lists under rendered by fetching each published spec URL (https), verbatim, with a provenance recording the URL, when it was fetched and the document's sha256 — a URL has no commit, so the digest pins the bytes. A failed fetch or bytes that are not OpenAPI 3 write nothing and never replace a held copy.

Tools of cat-harness · source cat-harness/tools/openapi-ingest-rendered/openapi-ingest-rendered.ts#openapi-ingest-rendered

OpenAPI ingest from source candidate, extracted

Ingest the OpenAPI documents an instance's cat-openapi.config.json lists under documents from a local checkout of their repository, read AT a branch, tag or commit (git show), verbatim, with a provenance recording the resolved commit and the document's sha256. --check verifies the committed copies offline.

Tools of cat-harness · source cat-harness/tools/openapi-ingest-source/openapi-ingest-source.ts#openapi-ingest-source

P

Package instance into an npm tarball and record binary release candidate, extracted

Build an npm tarball (.tgz) of an instance using bun pm pack, compute its size and SHA-256 digest, and record it as a folio-binary-release/v1 state node.

Tools of cat-harness · source cat-harness/tools/pack-tarball/pack-tarball.ts#pack-tarball

Package manager and registry client for npm and GitHub Packages candidate, extracted

Package, publish, inspect, and retrieve npm packages and Knowledge Graphs distributed as tarballs or packages from npm registry or GitHub Packages.

Tools of cat-harness · source cat-harness/tools/npm/npm.ts#npm

Package release by hand candidate, extracted

A person follows the package-release skill: computes the bump, writes the CHANGELOG entry, tags <package>-v<version>, and creates the release on the host. The same four steps with nothing to configure.

Tools of cat-harness · source cat-harness/tools/package-release-manual/package-release-manual.ts#package-release-manual

Paper build to LaTeX chapters candidate, extracted

Render a paper's content objects to LaTeX chapters: load the paper manifest, resolve its chapters and blocks, render, validate the LaTeX AST, and write the chapter files. With no manifest it builds the folio's only paper, and refuses — naming them — when there are several or none.

Tools of cat-harness · source cat-harness/tools/paper-latex-build/paper-latex-build.ts#paper-latex-build

PDF page raster candidate, extracted

Render one page of a PDF to a PNG — the thumbnail a repository listing shows — and print the provenance a catalogue needs to record it as DERIVED: source, digest, page, geometry, renderer.

Tools of cat-harness · source cat-harness/tools/pdf-cover/pdf-cover.ts#pdf-cover

Per-slice SQLite builder candidate, extracted

Build a named slice of a graph (beans, todos, library, or the whole-repo kg) as one SQLite file a browser mounts without parsing it, beside a manifest carrying its sha256, a row-content digest, its row counts and the search block the one search page reads. Heavy text is indexed by a contentless FTS5 and not stored; each row points at a content-addressed payload. --check builds every slice twice, requires one sha256, and requires the row digest read back from the file to equal the one computed from the source.

Tools of cat-harness · source cat-harness/tools/slice-sqlite/slice-sqlite.ts#slice-sqlite

Pin third-party GitHub Actions to full commit SHAs candidate, extracted

Rewrite every third-party uses: owner/repo@ref outside the declared staging-only workflows to @<full commit SHA> # <ref>, so Dependabot keeps the pair current. A tag resolves to its PEELED commit (an annotated tag's object is never pinned), else a branch head, by git ls-remote with argv. A ref that resolves to nothing, or to more than one commit, is refused and reported, never guessed. This repository's own reusable workflows are first-party and left alone. Idempotent.

Tools of cat-harness · source cat-harness/tools/pin-actions/pin-actions.ts#pin-actions

Prime the work plan candidate, extracted

Load the current work plan for this session — the same committed beans store the CLI reads, so a fresh container starts from the plan rather than from nothing.

Tools of cat-harness · source cat-harness/tools/work-plan-prime/work-plan-prime.ts#work-plan-prime

Processes viewer candidate, extracted

Render the declared BPMN processes as an index page and one page per diagram.

Tools of cat-harness · source cat-harness/tools/processes-viewer/processes-viewer.ts#processes-viewer

Proof dependency graph candidate, extracted

Render the dependency graph of a paper's proof objects from proof-objects.json as SVG (or DOT), each node linking to its anchor in the published PDF.

Tools of cat-harness · source cat-harness/tools/proof-dependency-graph/proof-dependency-graph.ts#proof-dependency-graph

Proof status from a Lean build candidate, extracted

Update each proof object's status in proof-objects.json from a Lean build log — which objects built, which carry sorry, which failed. Exits 1 on a manifest with no objects rather than writing an empty status.

Tools of cat-harness · source cat-harness/tools/proof-status-update/proof-status-update.ts#proof-status-update

Proof-object extraction candidate, extracted

Extract the theorem, lemma and definition environments of a paper's LaTeX chapters into proof-objects.json — the manifest the dependency graph and the proof-status update read.

Tools of cat-harness · source cat-harness/tools/proof-objects-extract/proof-objects-extract.ts#proof-objects-extract

Publish a folio's or an IG's site from the agent's own checkout — the one agent publish path candidate, extracted

Build a repository's site in the agent's checkout and push it to the publish branch, as a preview or as the main site, without an Actions runner. Which build is read from the repository: a declared site.build recipe (built by build-instance-site), else the reusable workflow its own workflow files call — folio-staging.yml for a folio, the WHO SMART Base IG's ghbuild.yml for a FHIR IG, whose build job is planned step by step and run as written. For an IG it then applies the harness chrome over the built output (sync-docs-harness, then rail-standalone-pages --foreign-site --instance <the IG>): every page gains the rail and the icon row #fa-navbar-row, and the IG's own content is left byte for byte. A root publish is REFUSED when the chrome cannot be applied, and a clean root deploy is refused over any root whose index.html wears the icon row unless the new output does too, so a chromed root is never replaced by bare IG Publisher pages. Every run prints its plan first, and the plan lists the chrome step; --plan stops there, --dry-run composes the commit in a temporary worktree and pushes nothing, --artifact writes a claude.ai Artifact bundle instead.

Tools of cat-harness · source cat-harness/tools/stage-local/stage-local.ts#stage-local

Published-paper index page candidate, extracted

Write the gh-pages index.html for a built paper: a Paper tab embedding the PDF and, when given, a Visualizer tab, with download links and the build's branch and commit.

Tools of cat-harness · source cat-harness/tools/pages-index/pages-index.ts#pages-index

Q

QA sweep candidate, extracted

Run every registered criterion over the blocks under a path and write a per-block QA sidecar. A sidecar rather than a console report, because a printed verdict cannot distinguish "never checked" from "checked and clean".

Tools of cat-harness · source cat-harness/tools/qa-sweep/qa-sweep.ts#qa-sweep

Query the beans knowledge graph candidate, extracted

Query the beans knowledge graph using named graph analytics or arbitrary SPARQL 1.1.

Tools of cat-harness · source cat-harness/tools/bean-query/bean-query.ts#bean-query

R

Read a merge request (GitLab) candidate, extracted

Read one merge request: title, state, body, and its comments and reviews.

Tools of cat-harness · source cat-harness/tools/gitlab-mr-view/gitlab-mr-view.ts#gitlab-mr-view

Read a pull request (GitHub) candidate, extracted

Read one pull request: title, state, body, and its comments and reviews.

Tools of cat-harness · source cat-harness/tools/github-pr-view/github-pr-view.ts#github-pr-view

Read a pull request's checks (GitHub) candidate, extracted

Read the check runs of one pull request and their state.

Tools of cat-harness · source cat-harness/tools/github-pr-checks/github-pr-checks.ts#github-pr-checks

Record a round-trip translation verdict candidate, extracted

Write a back-translation verdict, produced by a pair of translation agents, into a block's existing translation-QA sidecar. It records a judgement rather than making one, and refuses where no sidecar exists — a round trip cannot be what decides a block is translated.

Tools of cat-harness · source cat-harness/tools/translation-roundtrip-record/translation-roundtrip-record.ts#translation-roundtrip-record

Record what the publish branch served candidate, extracted

Append one entry to the render log on the publish branch: what was published or taken down, when, from which commit, and — for a removal or a retention — WHY. The log is the only place a preview that vanished leaves a trace.

Tools of cat-harness · source cat-harness/tools/render-log/render-log.ts#render-log

Release package via GitHub Actions release workflow candidate, extracted

Build, tag, and publish an npm package tarball to GitHub Releases and GitHub Packages registry via workflow_dispatch across any repository.

Tools of cat-harness · source cat-harness/tools/package-release-workflow/package-release-workflow.ts#package-release-workflow

release-please (declared, not configured here) candidate, extracted

Propose the next version of each package from conventional-commit messages, open a release PR with the CHANGELOG and version bump, and — when that PR is merged — create the tag and GitHub release. Does not publish to a registry. Declared here, not configured: no config file and no tag exist in this repository (bean frq2).

Tools of cat-harness · source cat-harness/tools/release-please/release-please.ts#release-please

Rendering preferences candidate, extracted

Read, write or clear the stored rendering preferences — engine, format, scope, math renderer, print mode.

Tools of cat-harness · source cat-harness/tools/paper-preferences/paper-preferences.ts#paper-preferences

Replay a committed mount lock with nothing but Node candidate, extracted

Lay down every remote mount index.lock.json records — each instance fetched at the lock's full SHA (sparse, blob-filtered), each directory verified against its treeDigest, a mismatch undone and reported — importing only node:*, so it runs on a fresh clone before any layer is present. It never decides what to mount: remote-mount writes the lock (and checks trust); this only replays it. Refuses to write over a path with tracked files or bytes that no longer hash to the lock. Exit 0 mounted/current, 1 missing, 2 could-not-determine.

Tools of cat-harness · source cat-harness/tools/mount-from-lock/mount-from-lock.ts#mount-from-lock

Request review on a pull request (GitHub) candidate, extracted

Ask one or more accounts to review a pull request. Adds to the reviewers already requested.

Tools of cat-harness · source cat-harness/tools/github-pr-request-review/github-pr-request-review.ts#github-pr-request-review

Resolve a declared subgraph's content source candidate, extracted

Say where a declared subgraph gets its content — the checkout's own directory, a declared repository branch (with its keying), or a branch family (with its prefix, key and repository) — after the instance config's subgraphSources override by id, and which layer answered. The same declaredSubgraph resolver the KG export, the publishers and the mount tool use, so a shell sees the answer they act on.

Tools of cat-harness · source cat-harness/tools/subgraph-resolve/subgraph-resolve.ts#subgraph-resolve

Resolve a review thread on a merge request (GitLab) candidate, extracted

Mark one discussion on a merge request as resolved.

Tools of cat-harness · source cat-harness/tools/gitlab-mr-resolve-thread/gitlab-mr-resolve-thread.ts#gitlab-mr-resolve-thread

Retrieve a remote Knowledge Graph via npm package or tarball candidate, extracted

Retrieve and inspect a remote Knowledge Graph packaged as an npm package or tarball (.tgz), supporting both unhydrated source graph views (authored declarations, skills, schemas) and hydrated materialized graph views (subgraph JSON-LD, metadata indexes, dereferenced graph projections).

Tools of cat-harness · source cat-harness/tools/kg-retrieve-npm/kg-retrieve-npm.ts#kg-retrieve-npm

Rewrite paths that still name a moved file's old layer — never in a record candidate, extracted

After a move between two layers lands, find every mention <from>/<prefix>/<rest> in the scanned tree's tracked files and rewrite it to <to>/<prefix>/<rest> only when the file exists under the destination root and not under the source root. Records are never read: beans, todos, memory, proposals, wireframes, QA results, upstream pins, vocab mappings, provenance figures and terminologies, and test fixtures (DEFAULT_RECORD_GLOBS; the CLI's --keep <glob> adds more, generated trees among them, which their generators rewrite — a glob is not a shell-safe argument type, so it is not a declared input). Reports by default with file and line; --write applies; --check exits 1 while a rewrite is owed.

Tools of cat-harness · source cat-harness/tools/rewrite-moved-paths/rewrite-moved-paths.ts#rewrite-moved-paths

Run every existing security check as one named release step candidate, extracted

Run the repository's security checks — workflow injection, secret leaks, lockfile pinning, the toolchain pin, QA reviewer permission, materialised-asset fixity — plus two advisories (dependency advisories, third-party action SHA pinning), each by name as argv. Every check is reported as pass, fail or unknown; a blocking check that fails OR could not be run refuses the release, because could-not-check is never clean. Advisories are reported and never block. Called by prepare-merge before a push that will merge, and by any publish process before it publishes.

Tools of cat-harness · source cat-harness/tools/security-gate/security-gate.ts#security-gate

S

Scaffold a folio candidate, extracted

Create a new folio repository that uses this platform — folio/, uploads/, library/, the first manifests, the builder shim, agent files, and the link back to the platform.

Tools of cat-harness · source cat-harness/tools/folio-init/folio-init.ts#folio-init

Schemas viewer candidate, extracted

Render each declared schema directory as a page per subject instance, over one shared data index.

Tools of cat-harness · source cat-harness/tools/schemas-viewer/schemas-viewer.ts#schemas-viewer

Screen a hand-over for injected instructions, field by field candidate, extracted

Before a model reads a sub-agent's report, a delegated prompt, a tool result or a comment from someone who is not the principal, screen it against a declared schema whose top-level fields are control (steers what the receiver does) or data (content it reads). A finding in a control field, or any field the strict schema does not declare, is REFUSED, so a report cannot extend the delegator's plan. A finding in a data field is QUARANTINED: the original is kept and marked, never stripped. The patterns are a deterministic tripwire (instruction overrides, role and turn spoofs, fence breaks, tool-call syntax, hidden Unicode, exfiltration links, pipe-to-shell), a mitigation and not a guarantee. Exit 0 clean, 1 refused, 3 quarantined, 2 could not determine.

Tools of cat-harness · source cat-harness/tools/handover-screen/handover-screen.ts#handover-screen

Seed lexically over the authored folio and every declared library, then expand along graph edges, labelling each hit MATCHED or REACHED and by which edge. Counts are split authored vs ingested, and a root that exists but holds no graph nodes is reported rather than read as an empty answer.

Tools of cat-harness · source cat-harness/tools/corpus-search/corpus-search.ts#corpus-search

Sibling sessions in a window candidate, extracted

List the Claude Code sessions that have committed to this repository in a time window, from the Claude-Session: trailer on commits across ALL branches — with each one's commit count, first and last commit, latest subject, and the branches containing its tip. The session API cannot see a sibling session, so the trailer is the only durable session identity here and a session's state is INFERRED from its branch; whether a session is still running is not knowable from a checkout and is deliberately not reported.

Tools of cat-harness · source cat-harness/tools/sibling-sessions/sibling-sessions.ts#sibling-sessions

Sign off a translation candidate, extracted

Record a translation as official — who signed off, when, and the hash of the source it was signed against, so a later source edit is detectable.

Tools of cat-harness · source cat-harness/tools/translation-signoff/translation-signoff.ts#translation-signoff

Site search index candidate, extracted

The just-the-docs search index, assets/js/search-data.json, which the theme writes as part of the Jekyll site build: one entry per page section, searched by every page's search box. Built implicitly by the build rather than by a command of its own.

Tools of cat-harness · source cat-harness/tools/site-search-index/site-search-index.ts#site-search-index

Site search scopes candidate, extracted

The site search index cut into one index per scope — each declared instance, each target locale, and the platform — plus assets/js/search/manifest.json naming them, so a reader's search loads its own scope rather than the whole site (issue #1972, bean m7mn). Run on the assembled site after the index is written or borrowed.

Tools of cat-harness · source cat-harness/tools/site-search-scopes/site-search-scopes.ts#site-search-scopes

Skill contract reference candidate, extracted

Render each skill's input/output JSON Schema as a browsable Markdown reference page, with an index. The generated pages are committed so they are readable on the forge as well as on the site.

Tools of cat-harness · source cat-harness/tools/schema-docs/schema-docs.ts#schema-docs

Skill instruction reference candidate, extracted

Render the skill instruction bodies — the prose an agent actually loads — as browsable pages with an index, so a reader can see what an agent is told without cloning the repository.

Tools of cat-harness · source cat-harness/tools/skill-docs/skill-docs.ts#skill-docs

Snapshot the SPDX License List at its pinned version candidate, extracted

Read json/licenses.json and json/exceptions.json from a copy of github.com/spdx/license-list-data at the pinned tag and write cat-harness/external-schemas/spdx-license-list.terminology.json (folio-pinned-terminology/v1): every licence and exception id with its name and deprecated flag — the offline, version-fixed list check:source-licence validates a licence.json id against.

Tools of cat-harness · source cat-harness/tools/pin-spdx-license-list/pin-spdx-license-list.ts#pin-spdx-license-list

Spreadsheet tabular metadata candidate, extracted

Read a workbook into a folio-tabular-csvw/v1 record, one CSVW table per rectangular block of cells. Blocks are split on empty rows, then on empty columns, so several tables on one sheet are found, each anchored at its real top-left cell (fac:anchor: sheet, A1 cell, row, column). Dates are read through the number formats in styles.xml, not misread as integer serials. A malformed part is refused rather than half-read. No new dependency: ZIP via node:zlib, SpreadsheetML via fast-xml-parser. Governed by the tabular-metadata skill (bean eief).

Tools of folio-assistant-core · source folio-assistant-core/tools/tabular-xlsx/tabular-xlsx.ts#tabular-xlsx

Stage a branch's preview candidate, extracted

Publish a branch's built site to STAGING/<slug>/ on the publish branch, so a reviewer compares a rendered before and after rather than a description of one. Stamps the commit SHA, and removes the preview when its pull request closes.

Tools of cat-harness · source cat-harness/tools/feature-staging/feature-staging.ts#feature-staging

Staging-only graph viewer candidate, extracted

Render a kept-but-unpublished workspace graph as one page, for a local build or a staging preview only; a canonical deploy withholds it.

Tools of cat-harness · source cat-harness/tools/staging-graph-viewer/staging-graph-viewer.ts#staging-graph-viewer

Stakeholder map candidate, extracted

Given the paths a proposed change touches, report which skills change, which roles declare them, and who therefore has a stake in the review.

Tools of cat-harness · source cat-harness/tools/stakeholder-map/stakeholder-map.ts#stakeholder-map

Start a process instance candidate, extracted

Open an instance of a process for a subject. Idempotent: an existing instance for the same subject is returned rather than duplicated.

Tools of cat-harness · source cat-harness/tools/workflow-start/workflow-start.ts#workflow-start

State graph viewer candidate, extracted

Render each declared state graph with a projection as a dashboard page: what the work plan holds, and what state it is in.

Tools of cat-harness · source cat-harness/tools/state-viewer/state-viewer.ts#state-viewer

Sync generated README sections candidate, extracted

Rewrite each generated README region, and only where the README already carries that section's marker pair. Nothing outside a marked region is touched.

Tools of cat-harness · source cat-harness/tools/readme-sync/readme-sync.ts#readme-sync

T

TeX snippet validation (AST) candidate, extracted

Parse every tex snippet in a folio's blocks and report what will not compile — structural, not textual: it reads an AST rather than matching patterns. Complementary to latex-preflight, which gates a main.tex before a compile, and to latex-overfull, which reads a log after one.

Tools of cat-harness · source cat-harness/tools/tex-snippet-validate/tex-snippet-validate.ts#tex-snippet-validate

TeX-source hazard audit candidate, extracted

Catch the source patterns that crash pdflatex but read as ordinary prose — a bare _ or ^ in a bibliography field, | inside a markdown table cell where it is also the column separator, a $…$ span across two lines, markdown link syntax inside a fenced tex block, a double subscript. Born from named build failures rather than from a style opinion.

Tools of cat-harness · source cat-harness/tools/tex-source-audit/tex-source-audit.ts#tex-source-audit

The platform's quality gates candidate, extracted

Run the checks CI runs, derived from the workflow rather than listed here. One Tool for all of them, not one per gate: the list is computed from .github/workflows/code-quality-gates.yml at call time, so it cannot drift from what CI actually enforces.

Tools of cat-harness · source cat-harness/tools/gates/gates.ts#gates

The render pipeline, in dependency order candidate, extracted

Flatten the repository's renders into the order their needs imply, and optionally run them. Two stages: the current declared state as json/jsonld and the README derived from it are FATAL; the dynamic renderers (viewers, visualisers, doc pages, diagrams) skip and log; the dynamic-state export closes it. A cycle or a missing dependency yields NO order rather than a partial one.

Tools of cat-harness · source cat-harness/tools/render-order/render-order.ts#render-order

The upload step, from its Tools candidate, extracted

Render document ingestion's FIRST step as a reference page, generated from the Tool nodes that implement it: the step, its lane and role, its skill and every Tool whose satisfies names that skill, with each Tool's description, installation, invocation, typed ports and selection triple. Everything but the process file's own path is derived — the start event, the activity its single outgoing flow reaches, and that activity's skill — so a step inserted, renamed or re-pointed moves the page rather than staling a literal. Refuses rather than emitting a partial page when the start event flows nowhere or to more than one place, when the first step is not an activity, when it names no skill or several, or when NO Tool satisfies that skill — the last because an empty page reads as a documented absence of mechanism, which is a finding rather than a document.

Tools of cat-harness · source cat-harness/tools/upload-step-docs/upload-step-docs.ts#upload-step-docs

Theme stylesheet candidate, extracted

Render the declared theme nodes into the stylesheet the site serves. The nodes are the source: a colour has one home, and light and dark are two valuations of one token set rather than two hand-kept blocks.

Tools of cat-harness · source cat-harness/tools/themes-css/themes-css.ts#themes-css

Tool I/O type vocabulary candidate, extracted

The zod definitions of the shared types a Tool's inputs and outputs reference by IRI, and the published JSON Schemas those IRIs name: one document per type, tool-types/<Name>.schema.json, plus the combined tool-types.schema.json.

Tools of cat-harness · source cat-harness/tools/tool-types-schema/tool-types-schema.ts#tool-types-schema

Tool node schema candidate, extracted

The zod definition of a Tool node — what defineTool accepts — and the published JSON Schema generated from it.

Tools of cat-harness · source cat-harness/tools/tool-schema/tool-schema.ts#tool-schema

Tools viewer candidate, extracted

Render this instance's Tool nodes, and the skills each satisfies, as one page.

Tools of cat-harness · source cat-harness/tools/tools-viewer/tools-viewer.ts#tools-viewer

Transcribe audio — faster-whisper (option, not installed) candidate, extracted

Transcribe an audio file with faster-whisper (the Whisper models on CTranslate2), from Python. A declared OPTION: not installed in this repository.

Tools of cat-harness · source cat-harness/tools/transcribe-faster-whisper/transcribe-faster-whisper.ts#transcribe-faster-whisper

Transcribe audio — vosk (option, not installed) candidate, extracted

Transcribe an audio file with vosk (Kaldi-based), offline, from Python, with small per-language models. A declared OPTION: not installed in this repository.

Tools of cat-harness · source cat-harness/tools/transcribe-vosk/transcribe-vosk.ts#transcribe-vosk

Transcribe audio — whisper.cpp (option, not installed) candidate, extracted

Transcribe an audio file to a timed transcript with whisper.cpp, offline, on CPU. A declared OPTION: not installed in this repository until the first audio upload (bean 1r0p).

Tools of cat-harness · source cat-harness/tools/transcribe-whisper-cpp/transcribe-whisper-cpp.ts#transcribe-whisper-cpp

Translation coverage candidate, extracted

Per-locale translation coverage, computed from the .po files under the translations directory.

Tools of cat-harness · source cat-harness/tools/translation-status/translation-status.ts#translation-status

Translation status viewer candidate, extracted

Render the translation status of every declared translation-sources directory, per locale, as one page.

Tools of cat-harness · source cat-harness/tools/translation-status-viewer/translation-status-viewer.ts#translation-status-viewer

U

UML overview per named sub-graph candidate, extracted

Draw one UML class diagram per harness and one per named sub-graph it declares, as PlantUML, Mermaid and Graphviz DOT from one model, with every class read from the graph typology's node schema, and render the PlantUML to the SVG each page shows (needs Java; the check does not). The DOT is the page's Interactive view, laid out in the reader's browser by the site's vendored Graphviz WASM with draggable nodes. A kind with none is drawn as could-not-determine, never as an empty box.

Tools of cat-harness · source cat-harness/tools/uml-overview/uml-overview.ts#uml-overview

Uploads viewer candidate, extracted

Render each declared uploads directory's intakes as a page per subject instance.

Tools of cat-harness · source cat-harness/tools/uploads-viewer/uploads-viewer.ts#uploads-viewer

V

Validate a node in the graph candidate, extracted

Check one file against the schema for its graph typology. ONE tool rather than one per schema: the declaration already says which directory holds which kind, so the kind is the parameter and the lookup does the rest.

Tools of cat-harness · source cat-harness/tools/kg-validate/kg-validate.ts#kg-validate

Validate a translation candidate, extracted

Check a .po against its .pot — every msgid present, none obsolete, placeholders preserved.

Tools of cat-harness · source cat-harness/tools/translation-validate/translation-validate.ts#translation-validate

Verify a separated repository from a fresh clone candidate, extracted

Clone a separated sub-KG's repository (with submodules, and any sibling checkouts it needs) into an empty scratch directory, install, and run its gates: its gates script, else its test script (a person may pass --gate on the command line instead; it is not part of this contract because it is a shell command). Reports green, red or unknown; an empty tree, a failed clone or a repository with no gate is unknown, never green. Catches what a rehearsal inside this checkout cannot, because a rehearsal shares this checkout's node_modules and environment (#2082). Writes only inside the scratch directory.

Tools of cat-harness · source cat-harness/tools/sub-kg-verify-clone/sub-kg-verify-clone.ts#sub-kg-verify-clone

Voices viewer candidate, extracted

Render each declared voices directory as a page per subject instance.

Tools of cat-harness · source cat-harness/tools/voices-viewer/voices-viewer.ts#voices-viewer

W

Walk the content graph from one node candidate, extracted

List the nodes adjacent to one node, out (what it depends on) or in (what depends on it), to a given depth and optionally over named edge terms only. An unknown edge term is reported, never silently dropped.

Tools of cat-harness · source cat-harness/tools/get-neighbors/get-neighbors.ts#get-neighbors

What is enabled now candidate, extracted

The activities an instance may work right now, each with the lane that owns it and the skill that implements it.

Tools of cat-harness · source cat-harness/tools/workflow-next/workflow-next.ts#workflow-next

What narratives are waiting on a person candidate, extracted

List the agent-drafted narratives awaiting human confirmation, numbered, with the numbered rejection reasons beside them. The queue is the only place a draft's state is visible before someone accepts it.

Tools of cat-harness · source cat-harness/tools/narrative-queue/narrative-queue.ts#narrative-queue

What this instance's MCP server serves candidate, extracted

Read the real tool surface from the registrars by mounting each against a capture object — the same objects the server asks, so the Zod shapes and their optionality are the served ones rather than a reading of the source.

Tools of cat-harness · source cat-harness/tools/mcp-capture/mcp-capture.ts#mcp-capture

Where to drop a file — the queue's upload URL candidate, extracted

Compose the forge URL a person can drop a file at, from the instance's own declaration: the uploads graph's directory, resolved against the ROOT its scope names, expressed relative to the repository, and appended to the origin remote as GitHub's /upload/<branch>/<path>. Every failure is NAMED and no URL is guessed — no declaration, no declared uploads graph, a declared queue absent from disk, no origin remote, and a non-github.com remote each return a reason and a remedy instead. It exists because the obvious composition mints a live 404: the declared path uploads/ is relative to the INSTANCE and a forge URL needs it relative to the REPOSITORY, so pasting the declared path drops the cat-harness/ segment. Owner, 2026-09-20, on the hand-written form: "were it to exist, but it doesmt on main!!!!!"

Tools of cat-harness · source cat-harness/tools/upload-url/upload-url.ts#upload-url

Which uncovered skills warrant a Tool? candidate, extracted

Triage the skills that have no Tool by EVIDENCE rather than by grep: a serviceTask naming it or an I/O contract puts it in tier A, a userTask only in B, a shell block or a declared script in C, and nothing in D. The answer to "which of these still have their mechanism inlined in their prose".

Tools of cat-harness · source cat-harness/tools/tool-coverage/tool-coverage.ts#tool-coverage

Who is asking, and what may they do candidate, extracted

User authentication and authorization (issue #1207). Asks GitHub for the caller's login and repository role, maps the role to a gateway actor, and answers from the ODRL policies — for an action, or for a BPMN step. Always states that GitHub's role covers the whole repository, not a sub-graph, node or query path.

Tools of cat-harness · source cat-harness/tools/user-auth/user-auth.ts#user-auth

Wireframe check at web and mobile viewports candidate, extracted

Render each mid-fidelity wireframe candidate of one topic at a web viewport (1280x800) and a mobile viewport (390x844). For each viewport it records script entries for renders, no-overflow and no-placeholder, each pass or fail with a note. It writes a screenshot per viewport and a report.json carrying the use, topic and surface, and exits 1 on any fail and 2 when the candidate set is not one the use admits.

Tools of cat-harness · source cat-harness/tools/wireframe-check/wireframe-check.ts#wireframe-check

Witness conformance report candidate, extracted

Check every *.witness.json in the folio's declared computation-witness directories against the two schemas in schemas/computation-witness.ts: the envelope every witness should meet (a failure is a malformed file) and the producer contract (a failure is a finding against the producer, grouped by the fields at fault). Also lists files that are not strict JSON, which Python's reader accepts and every other consumer rejects. Report-only: it never edits a witness, which is generator output.

Tools of cat-harness · source cat-harness/tools/witness-conformance/witness-conformance.ts#witness-conformance

Witness reproduction check candidate, extracted

Re-run a computation witness's producer and say whether it reproduces the committed witness. Reads the command from invocation.reproduce (else python3 <scriptFile>) and the recorded package versions from environment; on a version mismatch it stops at unknown, since a different environment is not a reproduction test. Otherwise it runs the COMMITTED producer in a scratch git worktree, so the folio's own checkout is never written, and compares the result with the committed witness with run-specific fields (commit, timing, environment) masked at every depth. pass, fail (with the differing JSON paths), or unknown (mismatch, non-zero exit, timeout, no witness written).

Tools of cat-harness · source cat-harness/tools/witness-parity/witness-parity.ts#witness-parity

Write the site sidebar's harness navbar include candidate, extracted

Render _includes/generated/navbar-footer.html from docs/_data/harness.json with the same renderer every railed page uses. With --instance, render the navbar of an IG repository's OWN site instead — that instance first, then what it needs; its own pages at this site's root, every other link to the main site at --link-root — into the shell that site is built from (#2235).

Tools of cat-harness · source cat-harness/tools/navbar-include/navbar-include.ts#navbar-include