render-artifact
Skill1 starsChanged 43 days agoMITView on GitHub
Compile a typed semantic specification into a self-contained, deterministic HTML artifact carrying the Pathfinder visual identity. Use when a skill must deliver a visual artifact instead of hand-authoring HTML.
2 other projects use a version of this.
Adopted by
Most recently taken up by
- All-The-Vibes/ATV-PaperBoardtheir own version, first seen Oct 13, 2026
- rikilamadrid/lorekeeperword for word, first seen Oct 13, 2026
Other versions2 projects use a version of this.
Word for word · 1
- rikilamadrid/lorekeeper★ 1100% same
Edited · 0
None found.
Wrote their own version · 1
- All-The-Vibes/ATV-PaperBoard★ 1same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository53 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- blog-post-redactorSkill
- challenge-meSkill
- debate-meSkill
- debug-issueSkill
- handoffSkill
- hooksmithSkill
- kickstart-pathfinderSkill
- learn-codebaseSkill
- learn-featureSkill
- learning-reviewSkill
- map-systemSkill
- orchestrateSkill
- prototypeSkill
- quiz-meSkill
- reflectSkill
- render-artifactSkill
- reverse-engineerSkill
- roleSkill
- setup-trackerSkill
- skillsmithSkill
- teach-architectureSkill
- teach-featureSkill
- ticketSkill
- to-specsSkill
- to-ticketsSkill
- whereamiSkill
- blog-post-redactorSkill
- challenge-meSkill
- debate-meSkill
- debug-issueSkill
- handoffSkill
- hooksmithSkill
- kickstart-pathfinderSkill
- learn-codebaseSkill
- learn-featureSkill
- learning-reviewSkill
- map-systemSkill
- orchestrateSkill
- prototypeSkill
- quiz-meSkill
- reflectSkill
- reverse-engineerSkill
- roleSkill
- setup-trackerSkill
- skillsmithSkill
- teach-architectureSkill
- teach-featureSkill
- ticketSkill
- to-specsSkill
- to-ticketsSkill
- whereamiSkill
The file
We split this skill into the rules it gives an agent
7 rules. About 0 are common, 2 are distinctive, and 5 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈2
Distinctive · estimate
This author's own choices. Worth a look.
5
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 22
Use it when a Pathfinder skill must deliver a visual artifact.
- Distinctive: line 28
Do not hand-author HTML for such an artifact.
- Distinctive: line 40
If the artifact you need is neither kind, stop and say so.
- Very specific: line 45
If the engine cannot run at all, you may still give the human your normal conversational or Markdown answer where that already makes sense.
- Very specific: line 65
Write the specification: Start from the example for the kind — engine/examples/lesson.json or engine/examples/diagram.json — and read …
- Very specific: line 88
Add --repo <dir> when the specification does not live in the repository it cites.
- Very specific: line 157
Read them as examples of the shape.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Render Artifact
A producer skill writes a small typed specification. This engine compiles it into one self-contained HTML file.
The producer owns what is true. The renderer owns what it looks like.
That line is the whole design. A producer decides what exists — modules, concepts and flows in a lesson; components, relationships, boundaries and authored paths in a diagram — what each asserts, and the evidence behind it. It never decides colour, layout, geometry, class names, or a single word of interface language, and the schema rejects the attempt rather than ignoring it.
When this applies
Use it when a Pathfinder skill must deliver a visual artifact.
This engine is infrastructure a producer calls, not the human entry point. A
lesson comes from learn-feature or learn-codebase; a diagram comes from
map-system, which is the only skill that writes a diagram specification.
Do not hand-author HTML for such an artifact. Not as a fallback, not as a placeholder, and not "just this once" — a hand-authored page carries the identity without carrying any of the checks that make the identity mean something.
The refusal
lesson and diagram are the only artifact kinds that exist. A diagram
supports one topology, graph, and an unsupported topology is refused with its
own diagnostic on exactly the same grounds: there is no generic layout to fall
back on.
If the artifact you need is neither kind, stop and say so. Do not invent a kind, do not extend the schema to fit, and do not write the HTML yourself instead. A missing kind is a refusal and a conversation with the human about whether that kind should exist — never permission to improvise.
If the engine cannot run at all, you may still give the human your normal conversational or Markdown answer where that already makes sense. You may not call it the Pathfinder artifact, because it is not one.
Requirements
Node, at the version Pathfinder already supports. Nothing else: the engine has
zero runtime dependencies and imports only node: builtins.
Check with:
node skills/render-artifact/engine/bin/render.mjs doctordoctor answers "can this machine render", not "is my specification good". It
deliberately does not validate the shipped examples — see "The examples" below.
Producing an artifact
- Write the specification. Start from the example for the kind —
engine/examples/lesson.jsonorengine/examples/diagram.json— and readengine/references/specification.mdfor the fields. Every claim about the source carries evidence: every concept in a lesson cites, and aderiveddiagram cites every component and every relationship. - Pick the commit.
source.commitis what evidence resolves against. Use the commit the artifact describes, not "now" — the working tree is never consulted, so a citation either resolves at that commit or fails. A diagram describing a system that does not exist yet declares no source at all;engine/references/validation.mdhas the three provenance states and what each is allowed to claim. Validate.
node skills/render-artifact/engine/bin/render.mjs validate <spec.json>Deliver.
node skills/render-artifact/engine/bin/render.mjs deliver <spec.json> <out.html>Add
--repo <dir>when the specification does not live in the repository it cites. Add--jsonfor a machine-readable receipt.- Report honestly. See "What delivery proves" below.
The four layers
Each supports a different claim, and they are reported apart because collapsing them would throw away the only thing that makes the result honest.
| Layer | The claim it supports |
| Structural | the specification satisfies its schema |
| Composition | identifiers, references, graphs and answers are coherent |
| Evidence | every citation resolves at the declared commit, where there is one |
| Delivery | the artifact was rendered, digested, and committed atomically |
A failure in any layer delivers nothing and leaves a previously delivered artifact exactly as it was. A non-zero exit is never reported as success.
engine/references/validation.md has the diagnostics and what each one means.
What delivery proves
The receipt names the renderer version and the SHA-256 and byte count of both
the specification and the artifact. That is a real claim: this specification,
compiled by this renderer, produced these bytes. deliver reads the
specification as bytes, parses and validates that one copy, and renders it, so
the digest in the receipt is the digest of what was actually rendered.
A delivered artifact whose evidence was actually checked also carries a sentence saying so. Only delivery can put it there — rendering on its own emits no such claim, and nothing in a specification can ask for one. An artifact with no citation to resolve carries no such sentence either: a layer that had nothing to check is not a layer that checked something, and the wording follows what was verified rather than what was asked for.
None of it is a claim that the artifact looks right. Nobody has looked at it.
So when you report a delivery, say what was checked and say separately that perceptual review has not happened. If a human has opened it in a browser, that is their finding to record, in their words, and it is not evidence for the validation result any more than the validation result is evidence for it.
Determinism
The invariant: the same specification bytes and the same renderer version produce byte-identical HTML in every supported environment.
A renderer release may intentionally change output. That is a version change,
which is why the receipt reports the renderer version alongside the digests. If
you change anything that can alter rendered HTML, bump engine/version.mjs in
the same commit.
engine/references/determinism.md has the rules this puts on the code.
The examples
One per kind: engine/examples/lesson.json and engine/examples/diagram.json.
Both cite the Pathfinder source repository at a fixed commit, so both are
reference fixtures for that repository rather than specimens that validate
anywhere.
In an installed project that commit does not exist, and validating either there
fails with source_commit_unavailable. That is correct behaviour, not a broken
installation: evidence is never fetched, never cloned, and never looked up over
a network, so a commit that is not present locally is a commit whose evidence
was not verified — and the engine says so rather than claiming otherwise.
Read them as examples of the shape. Do not run them as a health check; run
doctor for that.
Layout
Paths below are relative to this skill's own directory.
SKILL.md this file
engine/version.mjs the renderer version — the deterministic input
engine/bin/render.mjs validate | deliver | doctor
engine/schemas/ common.schema.json, and one schema per kind
engine/validate/ structural, composition, evidence layers
engine/render/ shared shell and theme, plus one renderer per kind
engine/render/graph/ everything specific to drawing a graph
engine/deliver.mjs the delivery layer
engine/doctor.mjs capability check
engine/examples/ the reference fixtures, one per kind
engine/references/ the detail this file deliberately does not carryThe engine lives under skills/ because that is what the kit copies, so an
installed project, the generated adapters, and the plugin surface all carry it
with no change to copy-list.json.
Attribution
The architecture — typed specification, deterministic compile, layered
validation, verification claims kept apart — is adapted at the level of ideas
from Archify (tt-a1i/archify, MIT). No Archify source is copied. If any is
later adapted, retain its notice and declare it in this frontmatter.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

