create-pathfinder 4.2.0 → 4.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLAUDE.md +2 -0
- package/package.json +1 -1
- package/skills/learn-codebase/SKILL.md +188 -17
- package/skills/learn-feature/SKILL.md +136 -15
- package/skills/map-system/SKILL.md +293 -0
- package/skills/render-artifact/SKILL.md +187 -0
- package/skills/render-artifact/engine/bin/render.mjs +225 -0
- package/skills/render-artifact/engine/deliver.mjs +197 -0
- package/skills/render-artifact/engine/doctor.mjs +96 -0
- package/skills/render-artifact/engine/examples/diagram.json +223 -0
- package/skills/render-artifact/engine/examples/lesson.json +242 -0
- package/skills/render-artifact/engine/references/determinism.md +71 -0
- package/skills/render-artifact/engine/references/specification.md +149 -0
- package/skills/render-artifact/engine/references/validation.md +268 -0
- package/skills/render-artifact/engine/render/behavior.mjs +128 -0
- package/skills/render-artifact/engine/render/diagram.mjs +342 -0
- package/skills/render-artifact/engine/render/escape.mjs +34 -0
- package/skills/render-artifact/engine/render/graph/behavior.mjs +394 -0
- package/skills/render-artifact/engine/render/graph/draw.mjs +204 -0
- package/skills/render-artifact/engine/render/graph/interaction.mjs +174 -0
- package/skills/render-artifact/engine/render/graph/layout.mjs +698 -0
- package/skills/render-artifact/engine/render/graph/style.mjs +200 -0
- package/skills/render-artifact/engine/render/graph/width.mjs +204 -0
- package/skills/render-artifact/engine/render/index.mjs +50 -0
- package/skills/render-artifact/engine/render/lesson.mjs +294 -0
- package/skills/render-artifact/engine/render/shell.mjs +275 -0
- package/skills/render-artifact/engine/render/theme.mjs +592 -0
- package/skills/render-artifact/engine/schemas/common.schema.json +101 -0
- package/skills/render-artifact/engine/schemas/diagram.schema.json +176 -0
- package/skills/render-artifact/engine/schemas/lesson.schema.json +210 -0
- package/skills/render-artifact/engine/validate/composition.mjs +395 -0
- package/skills/render-artifact/engine/validate/diagnostics.mjs +83 -0
- package/skills/render-artifact/engine/validate/diagram-parts.mjs +68 -0
- package/skills/render-artifact/engine/validate/evidence.mjs +302 -0
- package/skills/render-artifact/engine/validate/index.mjs +132 -0
- package/skills/render-artifact/engine/validate/jsonschema.mjs +312 -0
- package/skills/render-artifact/engine/validate/structural.mjs +241 -0
- package/skills/render-artifact/engine/verification.mjs +76 -0
- package/skills/render-artifact/engine/version.mjs +24 -0
package/CLAUDE.md
CHANGED
|
@@ -91,6 +91,8 @@ An adapter carries the canonical skill's frontmatter and a pointer to it, and no
|
|
|
91
91
|
- `to-tickets` — decompose one approved Feature into blocker-linked tickets
|
|
92
92
|
- `ticket` — run one action of the ticket delivery loop: `load`, `start`, `review`, `complete`
|
|
93
93
|
- `debug-issue` — diagnose an observed failure to its root cause, apply the smallest justified fix, and verify it
|
|
94
|
+
- `render-artifact` — compile a typed specification into a deterministic, self-contained visual artifact
|
|
95
|
+
- `map-system` — turn a plain request about a system into a semantic diagram artifact
|
|
94
96
|
- `learn-feature` — create an interactive lesson for a completed feature
|
|
95
97
|
- `learn-codebase` — create a modular learning portal for the repository
|
|
96
98
|
- `teach-feature` — teach the verified current feature from its spec, diff, tests, and implementation
|
package/package.json
CHANGED
|
@@ -5,29 +5,200 @@ description: Generate a modular, interactive learning portal that explains an en
|
|
|
5
5
|
|
|
6
6
|
# Learn Codebase
|
|
7
7
|
|
|
8
|
-
Use for onboarding, milestone review, handoff, or interview preparation—not
|
|
8
|
+
Use for onboarding, milestone review, handoff, or interview preparation — not
|
|
9
|
+
after every feature.
|
|
9
10
|
|
|
10
|
-
|
|
11
|
+
You write what is true about the repository. `render-artifact` turns it into the
|
|
12
|
+
page. Those are different jobs, and this skill only does the first one.
|
|
13
|
+
|
|
14
|
+
## Read
|
|
15
|
+
|
|
16
|
+
- the repository's own map: entry points, packages, workspaces, build and CI
|
|
17
|
+
configuration
|
|
18
|
+
- architecture, major subsystems, and the boundaries between them
|
|
19
|
+
- domain concepts and the vocabulary the code already uses
|
|
20
|
+
- the flows that cross subsystems — a request, an install, a release, a build
|
|
21
|
+
- tests, and what they are actually protecting
|
|
22
|
+
- history and durable decisions, where they explain why the code is shaped this
|
|
23
|
+
way
|
|
11
24
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
3. Identify architecture, modules, domain concepts, major flows, tests, deployment, and durable decisions.
|
|
15
|
-
4. Generate modular lessons rather than one giant document.
|
|
16
|
-
5. Include navigable diagrams, demonstrations, exercises, and quizzes.
|
|
17
|
-
6. Cite source paths and distinguish current behavior from recommendations.
|
|
25
|
+
Exclude generated, vendored, and build output deliberately, and say so if the
|
|
26
|
+
exclusion is load-bearing.
|
|
18
27
|
|
|
19
|
-
|
|
28
|
+
Gather all of it **before** writing any specification. The specification is a
|
|
29
|
+
record of what you found, so finding has to finish first — a portal assembled
|
|
30
|
+
while still reading is a portal whose claims were chosen to fit the modules
|
|
31
|
+
already written.
|
|
32
|
+
|
|
33
|
+
## Output
|
|
34
|
+
|
|
35
|
+
Two files, one repository:
|
|
20
36
|
|
|
21
37
|
```text
|
|
22
|
-
learning/codebase/
|
|
23
|
-
|
|
24
|
-
├── modules/
|
|
25
|
-
├── assets/
|
|
26
|
-
└── README.md
|
|
38
|
+
learning/codebase/lesson.json the semantic specification — yours
|
|
39
|
+
learning/codebase/lesson.html the rendered artifact — the renderer's
|
|
27
40
|
```
|
|
28
41
|
|
|
29
|
-
|
|
42
|
+
The JSON is the reviewable source. A human can read it, disagree with a claim,
|
|
43
|
+
and see exactly what was asserted and what backs it. It is also what makes the
|
|
44
|
+
artifact reproducible: the same specification through the same renderer version
|
|
45
|
+
produces the same bytes.
|
|
46
|
+
|
|
47
|
+
One artifact, not a directory. There is no `index.html`, no `modules/` folder,
|
|
48
|
+
and no `assets/` — how a multi-module lesson is split, linked, and navigated is
|
|
49
|
+
a presentation decision, and presentation is the renderer's. You supply module
|
|
50
|
+
order and content; the renderer builds the navigation.
|
|
51
|
+
|
|
52
|
+
Do not author the HTML. Do not author CSS, presentation JavaScript, or MDX. Do
|
|
53
|
+
not stand up a docs system, a site generator, or a framework for this. There is
|
|
54
|
+
one visual-artifact path in Pathfinder and it runs through `render-artifact`.
|
|
55
|
+
|
|
56
|
+
## Process
|
|
57
|
+
|
|
58
|
+
1. **Gather the evidence** — the reading above.
|
|
59
|
+
2. **Pick the commit.** `source.commit` is the milestone the portal is *about*.
|
|
60
|
+
Look it up and pin it; do not use whatever `HEAD` happens to be, which is
|
|
61
|
+
only the same thing by accident and stops being the same thing the moment
|
|
62
|
+
anything else merges. Evidence resolves against this commit and never against
|
|
63
|
+
the working tree, so a later refactor cannot silently change what the portal
|
|
64
|
+
claims.
|
|
65
|
+
3. **Write the specification** to `lesson.json`. Read
|
|
66
|
+
`skills/render-artifact/engine/references/specification.md` for the fields
|
|
67
|
+
and `engine/examples/lesson.json` for the shape. Many modules: this skill
|
|
68
|
+
teaches a whole repository.
|
|
69
|
+
4. **Validate.**
|
|
70
|
+
|
|
71
|
+
```sh
|
|
72
|
+
node skills/render-artifact/engine/bin/render.mjs validate \
|
|
73
|
+
learning/codebase/lesson.json
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
5. **Deliver.**
|
|
77
|
+
|
|
78
|
+
```sh
|
|
79
|
+
node skills/render-artifact/engine/bin/render.mjs deliver \
|
|
80
|
+
learning/codebase/lesson.json \
|
|
81
|
+
learning/codebase/lesson.html --json
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
6. **Report the receipt**, and report it honestly. See "What to say afterwards".
|
|
85
|
+
|
|
86
|
+
## Modules
|
|
87
|
+
|
|
88
|
+
One module per subsystem or concern, ordered so a reader can start at the top
|
|
89
|
+
and keep going. Modules may include: orientation, architecture, domain and data
|
|
90
|
+
flow, interfaces, services and integrations, testing, deployment and operations,
|
|
91
|
+
security boundaries, extension exercises, and a cumulative quiz.
|
|
92
|
+
|
|
93
|
+
Use `requires` when a module genuinely builds on another. That is the learning
|
|
94
|
+
graph, and it is semantic: it says what a reader needs first, not where a box
|
|
95
|
+
sits on a page. Leave it out when the modules are independent — a flat list is a
|
|
96
|
+
legitimate shape, not a missing field.
|
|
97
|
+
|
|
98
|
+
Keep each module a unit someone can finish. A module that has become a second
|
|
99
|
+
portal is two modules.
|
|
100
|
+
|
|
101
|
+
## Flows, not diagrams
|
|
102
|
+
|
|
103
|
+
Express a sequence, a relationship, or an architecture walkthrough as a `flow`
|
|
104
|
+
section. Its steps carry the order and the dependencies, which is the part that
|
|
105
|
+
teaches, and the renderer decides how that looks.
|
|
106
|
+
|
|
107
|
+
There is no diagram section, and this skill no longer promises navigable
|
|
108
|
+
diagrams. Do not hand-author SVG, do not describe coordinates or layout, and do
|
|
109
|
+
not reach for a drawing tool to fill the gap. A picture whose meaning is carried
|
|
110
|
+
by a `flow` loses nothing that teaches; a picture this skill draws itself is
|
|
111
|
+
presentation it does not own. Semantic diagram artifacts do exist — `map-system`
|
|
112
|
+
produces them, as a separate artifact of its own — and that is still not this
|
|
113
|
+
skill's output: a lesson gains no diagram section and references no diagram.
|
|
114
|
+
|
|
115
|
+
## Evidence
|
|
116
|
+
|
|
117
|
+
Every claim about the source carries a citation, in the one shape the renderer
|
|
118
|
+
uses everywhere:
|
|
119
|
+
|
|
120
|
+
```json
|
|
121
|
+
{ "path": "packages/create-pathfinder/src/kit.mjs", "lines": [97, 105] }
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
Every `concept` section must cite at least one. That is not a style preference:
|
|
125
|
+
a concept is an assertion about the code, and an uncited assertion is this skill
|
|
126
|
+
putting words in the renderer's mouth. Validation rejects it.
|
|
127
|
+
|
|
128
|
+
A repository-wide portal makes this easier to get wrong than a feature lesson
|
|
129
|
+
does, because the claims are broader. "The installer never ships tests" is a
|
|
130
|
+
claim about a specific list in a specific file — cite that list, not the package
|
|
131
|
+
it lives in. Breadth is not permission to cite loosely.
|
|
132
|
+
|
|
133
|
+
`lines` is optional and, when present, must lie inside that file at that commit.
|
|
134
|
+
Cite the range a reader should actually look at.
|
|
135
|
+
|
|
136
|
+
`source.generated_at` is yours to supply if you want a date on the page. The
|
|
137
|
+
renderer never reads a clock, so if no date appears in the specification, none
|
|
138
|
+
appears in the artifact.
|
|
139
|
+
|
|
140
|
+
## Quiz
|
|
141
|
+
|
|
142
|
+
Questions are multiple choice: a prompt, two to eight distinct options, and the
|
|
143
|
+
index of the correct one. An explanation and evidence are worth adding.
|
|
144
|
+
|
|
145
|
+
That one shape covers more than it looks:
|
|
146
|
+
|
|
147
|
+
| To ask | Write |
|
|
148
|
+
| --- | --- |
|
|
149
|
+
| true/false | a question with two options |
|
|
150
|
+
| predict the output or the state | a `code` section, then a question about it |
|
|
151
|
+
| a debugging scenario | the symptom as the prompt, candidate causes as options |
|
|
152
|
+
| recall or discrimination | an ordinary multiple-choice question |
|
|
153
|
+
|
|
154
|
+
For something a reader should *do* rather than answer, use an `exercise`
|
|
155
|
+
section, with `hints` when a nudge helps more than a solution. A cumulative
|
|
156
|
+
quiz at the end works well; so does one per module.
|
|
157
|
+
|
|
158
|
+
## What you cannot ask for
|
|
159
|
+
|
|
160
|
+
The specification carries no presentation. There is no field for a colour, a
|
|
161
|
+
class, a width, a layout, an icon, a theme, or a template, and the schema
|
|
162
|
+
rejects the attempt rather than ignoring it. Interface language — navigation
|
|
163
|
+
labels, theme controls, accessibility text, the evidence and citation UI — is
|
|
164
|
+
the renderer's, in its words.
|
|
165
|
+
|
|
166
|
+
Text is text. No field is Markdown and no field is HTML: every string you write
|
|
167
|
+
is escaped on the way out, so `<b>bold</b>` in a title renders as those nine
|
|
168
|
+
characters. Content that smuggles markup is this skill reaching for
|
|
169
|
+
presentation by another route.
|
|
170
|
+
|
|
171
|
+
There is also no field for whether the specification was validated or whether
|
|
172
|
+
its evidence checked out. Those are claims about work the engine performs, and
|
|
173
|
+
the engine is the only thing entitled to make them.
|
|
174
|
+
|
|
175
|
+
## What to say afterwards
|
|
176
|
+
|
|
177
|
+
The receipt names the renderer version and the SHA-256 and byte count of both
|
|
178
|
+
the specification and the artifact. Report it. It supports one real claim: this
|
|
179
|
+
specification, compiled by this renderer, produced these bytes, and its evidence
|
|
180
|
+
resolved at the commit it names.
|
|
181
|
+
|
|
182
|
+
It says nothing about whether the portal reads well, teaches well, or looks
|
|
183
|
+
right. Nobody has looked at it. So report the validation result and say
|
|
184
|
+
separately that perceptual review has not happened. If a human then opens it,
|
|
185
|
+
that is their finding, in their words — and it is not evidence for the
|
|
186
|
+
validation result any more than the validation result is evidence for it.
|
|
187
|
+
|
|
188
|
+
## When the renderer cannot run
|
|
189
|
+
|
|
190
|
+
Check with:
|
|
191
|
+
|
|
192
|
+
```sh
|
|
193
|
+
node skills/render-artifact/engine/bin/render.mjs doctor
|
|
194
|
+
```
|
|
30
195
|
|
|
31
|
-
|
|
196
|
+
If the engine is unavailable, or delivery fails, you may still explain the
|
|
197
|
+
codebase in conversation or in Markdown where that is useful. That answer is not
|
|
198
|
+
a Pathfinder visual artifact. Do not call it one, do not hand-author HTML or MDX
|
|
199
|
+
to stand in for one, and do not reach for a second way to produce a page. A
|
|
200
|
+
non-zero exit is never reported as success, and a failed delivery leaves any
|
|
201
|
+
previously delivered artifact exactly as it was.
|
|
32
202
|
|
|
33
|
-
|
|
203
|
+
This skill reads widely by design. For one completed feature, use
|
|
204
|
+
`learn-feature` instead.
|
|
@@ -7,6 +7,9 @@ description: Generate a rich, interactive, feature-scoped lesson and quiz from c
|
|
|
7
7
|
|
|
8
8
|
Use after a feature is completed and accepted.
|
|
9
9
|
|
|
10
|
+
You write what is true about the feature. `render-artifact` turns it into the
|
|
11
|
+
page. Those are different jobs, and this skill only does the first one.
|
|
12
|
+
|
|
10
13
|
## Read
|
|
11
14
|
|
|
12
15
|
- completed feature spec and history entry
|
|
@@ -14,17 +17,60 @@ Use after a feature is completed and accepted.
|
|
|
14
17
|
- only the implemented files and direct dependencies needed to explain the feature
|
|
15
18
|
- tests and durable decisions
|
|
16
19
|
|
|
17
|
-
|
|
20
|
+
Gather all of it **before** writing any specification. The specification is a
|
|
21
|
+
record of what you found, so finding has to finish first — a lesson assembled
|
|
22
|
+
while still reading is a lesson whose claims were chosen to fit the paragraphs
|
|
23
|
+
already written.
|
|
18
24
|
|
|
19
|
-
|
|
25
|
+
## Output
|
|
20
26
|
|
|
21
|
-
|
|
27
|
+
Two files, one per feature:
|
|
22
28
|
|
|
23
29
|
```text
|
|
24
|
-
learning/features/[feature-slug]/
|
|
30
|
+
learning/features/[feature-slug]/lesson.json the semantic specification — yours
|
|
31
|
+
learning/features/[feature-slug]/lesson.html the rendered artifact — the renderer's
|
|
25
32
|
```
|
|
26
33
|
|
|
27
|
-
|
|
34
|
+
The JSON is the reviewable source. A human can read it, disagree with a claim,
|
|
35
|
+
and see exactly what was asserted and what backs it. It is also what makes the
|
|
36
|
+
artifact reproducible: the same specification through the same renderer version
|
|
37
|
+
produces the same bytes, so the page can be delivered again after a renderer
|
|
38
|
+
release without re-deriving anything.
|
|
39
|
+
|
|
40
|
+
Do not author the HTML. Do not author CSS, presentation JavaScript, or MDX.
|
|
41
|
+
There is one visual-artifact path in Pathfinder and it runs through
|
|
42
|
+
`render-artifact`.
|
|
43
|
+
|
|
44
|
+
## Process
|
|
45
|
+
|
|
46
|
+
1. **Gather the evidence** — the reading above.
|
|
47
|
+
2. **Pick the commit.** `source.commit` is the commit the lesson is *about*:
|
|
48
|
+
the one that landed the feature. Look it up; do not use whatever `HEAD`
|
|
49
|
+
happens to be, which is only the same thing by accident and stops being the
|
|
50
|
+
same thing the moment anything else merges. Evidence resolves against this
|
|
51
|
+
commit and never against the working tree.
|
|
52
|
+
3. **Write the specification** to `lesson.json`. Read
|
|
53
|
+
`skills/render-artifact/engine/references/specification.md` for the fields
|
|
54
|
+
and `engine/examples/lesson.json` for the shape. One module: this skill
|
|
55
|
+
teaches one feature.
|
|
56
|
+
4. **Validate.**
|
|
57
|
+
|
|
58
|
+
```sh
|
|
59
|
+
node skills/render-artifact/engine/bin/render.mjs validate \
|
|
60
|
+
learning/features/[feature-slug]/lesson.json
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
5. **Deliver.**
|
|
64
|
+
|
|
65
|
+
```sh
|
|
66
|
+
node skills/render-artifact/engine/bin/render.mjs deliver \
|
|
67
|
+
learning/features/[feature-slug]/lesson.json \
|
|
68
|
+
learning/features/[feature-slug]/lesson.html --json
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
6. **Report the receipt**, and report it honestly. See "What to say afterwards".
|
|
72
|
+
|
|
73
|
+
## Lesson content
|
|
28
74
|
|
|
29
75
|
- what changed and why
|
|
30
76
|
- architecture and data/control flow
|
|
@@ -32,17 +78,92 @@ learning/features/[feature-slug]/
|
|
|
32
78
|
- key implementation decisions and tradeoffs
|
|
33
79
|
- tests and verification
|
|
34
80
|
- common mistakes and safe extension points
|
|
35
|
-
- visual diagrams or interactive demonstrations when useful
|
|
36
81
|
|
|
37
|
-
|
|
82
|
+
Express a sequence or a set of relationships as a `flow` section — its steps
|
|
83
|
+
carry the order and the dependencies, which is the part that teaches. The
|
|
84
|
+
renderer decides how a flow looks.
|
|
85
|
+
|
|
86
|
+
## Evidence
|
|
87
|
+
|
|
88
|
+
Every claim about the source carries a citation, in the one shape the renderer
|
|
89
|
+
uses everywhere:
|
|
90
|
+
|
|
91
|
+
```json
|
|
92
|
+
{ "path": "packages/create-pathfinder/src/kit.mjs", "lines": [97, 105] }
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
Every `concept` section must cite at least one. That is not a style preference:
|
|
96
|
+
a concept is an assertion about the code, and an uncited assertion is this skill
|
|
97
|
+
putting words in the renderer's mouth. Validation rejects it.
|
|
98
|
+
|
|
99
|
+
`lines` is optional and, when present, must lie inside that file at that commit.
|
|
100
|
+
Cite the range a reader should actually look at.
|
|
101
|
+
|
|
102
|
+
`source.generated_at` is yours to supply if you want a date on the page. The
|
|
103
|
+
renderer never reads a clock, so if no date appears in the specification, none
|
|
104
|
+
appears in the artifact.
|
|
38
105
|
|
|
39
|
-
|
|
106
|
+
## Quiz
|
|
107
|
+
|
|
108
|
+
Questions are multiple choice: a prompt, two to eight distinct options, and the
|
|
109
|
+
index of the correct one. An explanation and evidence are worth adding.
|
|
110
|
+
|
|
111
|
+
That one shape covers more than it looks:
|
|
112
|
+
|
|
113
|
+
| To ask | Write |
|
|
114
|
+
| --- | --- |
|
|
115
|
+
| true/false | a question with two options |
|
|
116
|
+
| predict the output or the state | a `code` section, then a question about it |
|
|
117
|
+
| a debugging scenario | the symptom as the prompt, candidate causes as options |
|
|
118
|
+
| recall or discrimination | an ordinary multiple-choice question |
|
|
119
|
+
|
|
120
|
+
For something a reader should *do* rather than answer, use an `exercise`
|
|
121
|
+
section, with `hints` when a nudge helps more than a solution.
|
|
122
|
+
|
|
123
|
+
## What you cannot ask for
|
|
124
|
+
|
|
125
|
+
The specification carries no presentation. There is no field for a colour, a
|
|
126
|
+
class, a width, a layout, an icon, a theme, or a template, and the schema
|
|
127
|
+
rejects the attempt rather than ignoring it. Interface language — navigation
|
|
128
|
+
labels, theme controls, accessibility text, the evidence and citation UI — is
|
|
129
|
+
the renderer's, in its words.
|
|
130
|
+
|
|
131
|
+
Text is text. No field is Markdown and no field is HTML: every string you write
|
|
132
|
+
is escaped on the way out, so `<b>bold</b>` in a title renders as those nine
|
|
133
|
+
characters. Content that smuggles markup is this skill reaching for
|
|
134
|
+
presentation by another route.
|
|
135
|
+
|
|
136
|
+
There is also no field for whether the specification was validated or whether
|
|
137
|
+
its evidence checked out. Those are claims about work the engine performs, and
|
|
138
|
+
the engine is the only thing entitled to make them.
|
|
139
|
+
|
|
140
|
+
## What to say afterwards
|
|
141
|
+
|
|
142
|
+
The receipt names the renderer version and the SHA-256 and byte count of both
|
|
143
|
+
the specification and the artifact. Report it. It supports one real claim: this
|
|
144
|
+
specification, compiled by this renderer, produced these bytes, and its evidence
|
|
145
|
+
resolved at the commit it names.
|
|
146
|
+
|
|
147
|
+
It says nothing about whether the lesson reads well, teaches well, or looks
|
|
148
|
+
right. Nobody has looked at it. So report the validation result and say
|
|
149
|
+
separately that perceptual review has not happened. If a human then opens it,
|
|
150
|
+
that is their finding, in their words — and it is not evidence for the
|
|
151
|
+
validation result any more than the validation result is evidence for it.
|
|
152
|
+
|
|
153
|
+
## When the renderer cannot run
|
|
154
|
+
|
|
155
|
+
Check with:
|
|
156
|
+
|
|
157
|
+
```sh
|
|
158
|
+
node skills/render-artifact/engine/bin/render.mjs doctor
|
|
159
|
+
```
|
|
40
160
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
-
|
|
44
|
-
|
|
45
|
-
-
|
|
46
|
-
|
|
161
|
+
If the engine is unavailable, or delivery fails, you may still explain the
|
|
162
|
+
feature in conversation or in Markdown where that is useful. That answer is not
|
|
163
|
+
a Pathfinder visual artifact. Do not call it one, do not hand-author HTML or MDX
|
|
164
|
+
to stand in for one, and do not reach for a second way to produce a page. A
|
|
165
|
+
non-zero exit is never reported as success, and a failed delivery leaves any
|
|
166
|
+
previously delivered artifact exactly as it was.
|
|
47
167
|
|
|
48
|
-
|
|
168
|
+
Keep the lesson scoped, and avoid reading the whole repository — use
|
|
169
|
+
`learn-codebase` for that.
|