create-pathfinder 1.8.0 → 2.0.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.
Files changed (44) hide show
  1. package/AGENTS.md +3 -1
  2. package/CLAUDE.md +20 -0
  3. package/README.md +383 -65
  4. package/context/ai-interaction.md +78 -39
  5. package/context/coding-standards.md +119 -60
  6. package/copy-list.json +1 -0
  7. package/package.json +2 -1
  8. package/roles/developer.md +37 -0
  9. package/roles/planner.md +38 -0
  10. package/roles/tester.md +40 -0
  11. package/skills/challenge-me/SKILL.md +11 -7
  12. package/skills/complete-feature/SKILL.md +16 -11
  13. package/skills/handoff/SKILL.md +24 -4
  14. package/skills/kickstart-pathfinder/SKILL.md +6 -1
  15. package/skills/learning-review/SKILL.md +9 -6
  16. package/skills/load-feature/SKILL.md +21 -11
  17. package/skills/prototype/SKILL.md +3 -1
  18. package/skills/quiz-me/SKILL.md +33 -7
  19. package/skills/review-feature/SKILL.md +19 -11
  20. package/skills/role/SKILL.md +33 -0
  21. package/skills/setup-tracker/SKILL.md +29 -61
  22. package/skills/start-feature/SKILL.md +19 -16
  23. package/skills/sync-tracker/SKILL.md +67 -106
  24. package/skills/teach-architecture/SKILL.md +6 -5
  25. package/skills/teach-feature/SKILL.md +11 -8
  26. package/skills/to-specs/SKILL.md +40 -28
  27. package/skills/whereami/SKILL.md +87 -0
  28. package/src/cli.mjs +2 -1
  29. package/src/install.mjs +5 -1
  30. package/src/kit.mjs +70 -1
  31. package/templates/CHANGELOG.template.md +2 -1
  32. package/templates/feature-spec.template.md +18 -80
  33. package/templates/history.template.md +12 -0
  34. package/templates/lesson.template.md +22 -51
  35. package/templates/project-overview.template.md +80 -145
  36. package/context/current-feature.md +0 -46
  37. package/context/features/example-feature-spec.md +0 -103
  38. package/context/history.md +0 -14
  39. package/context/learning/learner-profile.md +0 -35
  40. package/context/learning/lessons/.gitkeep +0 -0
  41. package/context/learning/progress.md +0 -28
  42. package/context/project-overview.md +0 -211
  43. package/templates/progress-entry.template.md +0 -23
  44. package/templates/tracker.template.md +0 -359
@@ -12,11 +12,12 @@ The goal is to turn isolated feature lessons into a coherent learning path.
12
12
 
13
13
  ## Read First
14
14
 
15
- 1. `context/learning/learner-profile.md`
16
- 2. `context/learning/progress.md`
17
- 3. Recent lessons under `context/learning/lessons/`
18
- 4. Recent completed feature specs and history
19
- 5. Quiz or challenge evidence available in the repo
15
+ 1. `context/learning/progress.md`
16
+ 2. Recent lessons under `context/learning/lessons/`
17
+ 3. Recent completed feature specs and history
18
+ 4. Quiz or challenge evidence available in the repo
19
+
20
+ Skip any of these that does not exist. Pathfinder creates these files only when a workflow first needs them, so their absence is normal and is not an error. Do not create them just to satisfy this list.
20
21
 
21
22
  ## Review Modes
22
23
 
@@ -66,7 +67,9 @@ At most three, ordered by value.
66
67
 
67
68
  ## Progress Changes
68
69
 
69
- Update `context/learning/progress.md` conservatively.
70
+ Update `context/learning/progress.md` conservatively, using the confidence scale
71
+ defined in its `## Confidence Scale` section. If the file does not exist,
72
+ `quiz-me` carries the header to create it with.
70
73
 
71
74
  ## Rules
72
75
 
@@ -1,18 +1,28 @@
1
1
  ---
2
2
  name: load-feature
3
- description: Prepare one feature for implementation by checking readiness, context size, dependencies, and delivery chunks.
3
+ description: Load one approved Feature and the minimum context needed to work on it.
4
4
  ---
5
5
 
6
6
  # Load Feature
7
7
 
8
- 1. Select the requested or next approved feature spec.
9
- 2. Read its dependencies and the smallest relevant durable context.
10
- 3. Check repository reality without scanning unrelated areas.
11
- 4. Identify contradictions, missing decisions, stale paths, and prototype dependencies.
12
- 5. Assess whether the feature fits a focused LLM context window.
13
- 6. Split or revise it before implementation if the context is too broad.
14
- 7. Populate `context/current-feature.md` with the feature, first delivery chunk, context boundary, assumptions, Git state, definition of done, and out-of-scope work.
15
- 8. If `context/tracker.md` exists, note this feature's tracked item, or that it has none yet. The lookup is best-effort: an unreachable tracker is reported and never blocks loading.
16
- 9. Present a short readiness summary.
8
+ 1. Select the requested approved Feature. Its spec is
9
+ `NN-feature-name.md` in the spec source, and `NN` is its Feature number.
10
+ 2. Read the Feature spec.
11
+ 3. Read only the files or context needed for the current work.
12
+ 4. Inspect the current Git state.
13
+ 5. Stop if a required human decision or explicit dependency blocks the work.
14
+ 6. Create or update `context/current-feature.md` it does not ship, so the
15
+ first load writes it with:
16
+ - Feature number, name, and spec path
17
+ - active delivery chunk
18
+ - Git state
19
+ - blocker, if any
20
+ - next action
21
+ 7. If `context/tracker.md` exists, name the tracked item for this Feature —
22
+ its key is that Feature number. Do nothing here if it does not.
23
+ 8. Present a short readiness summary.
17
24
 
18
- Do not implement, create Git history, or resolve `TBD` decisions silently.
25
+ Do not implement the Feature.
26
+
27
+ Do not scan unrelated repository areas, load history or roadmap by default,
28
+ rewrite the Feature, or silently resolve `TBD` decisions.
@@ -16,7 +16,9 @@ Use this skill after debate recommends validation or when the human asks to see
16
16
  5. Create only the prototype; avoid production architecture unless the task is explicitly a technical proof.
17
17
  6. Present focused review questions.
18
18
  7. On feedback, revise the same direction, replace it, approve it, or stop.
19
- 8. Record approved direction, rejected assumptions, and explicit production exclusions in `context/project-overview.md`.
19
+ 8. Record approved direction, rejected assumptions, and explicit production exclusions
20
+ under `## Durable Decisions` in `context/project-overview.md`, creating the file
21
+ from `templates/project-overview.template.md` if it does not exist yet.
20
22
 
21
23
  ## Supported Forms
22
24
 
@@ -12,11 +12,12 @@ The goal is retrieval and diagnosis, not entertainment and not a long exam.
12
12
 
13
13
  ## Read First
14
14
 
15
- 1. `context/learning/learner-profile.md`
16
- 2. The relevant lesson in `context/learning/lessons/`
17
- 3. `context/current-feature.md`
18
- 4. Only the implementation or tests needed to verify answers
19
- 5. `context/learning/progress.md`
15
+ 1. The relevant lesson in `context/learning/lessons/`
16
+ 2. `context/current-feature.md`
17
+ 3. Only the implementation or tests needed to verify answers
18
+ 4. `context/learning/progress.md`
19
+
20
+ Skip any of these that does not exist. Pathfinder creates these files only when a workflow first needs them, so their absence is normal and is not an error. Do not create them just to satisfy this list.
20
21
 
21
22
  ## Quiz Shape
22
23
 
@@ -67,9 +68,34 @@ Do not use a percentage unless every question had a clear scoring basis.
67
68
 
68
69
  Update `context/learning/progress.md` with demonstrated evidence.
69
70
 
70
- Use the confidence scale already defined there.
71
+ The file does not ship. If it is missing, create it with this header, then add
72
+ the entry:
73
+
74
+ ```markdown
75
+ # Learning Progress
76
+
77
+ Demonstrated understanding, not feature completion.
78
+
79
+ ## Confidence Scale
80
+
81
+ - `introduced` — explained once; no evidence of recall yet
82
+ - `practiced` — answered or applied with help
83
+ - `independent` — applied correctly without meaningful help
84
+ - `transferable` — applied correctly in a different context
85
+ - `review-needed` — misunderstanding or weak recall was observed
86
+
87
+ ## Concepts
88
+
89
+ | Concept | Confidence | Evidence | Last reviewed |
90
+ | --- | --- | --- | --- |
91
+ ```
92
+
93
+ This block is the scale's only definition. The other learning skills read it
94
+ from the file rather than restating it.
71
95
 
72
- A correct answer with heavy hints is `practiced`, not `independent`.
96
+ Record one confidence value per concept, and record uncertainty honestly. A
97
+ correct answer with heavy hints is `practiced`, not `independent`. Passive
98
+ reading is never `independent`.
73
99
 
74
100
  ## Scope
75
101
 
@@ -1,25 +1,33 @@
1
1
  ---
2
2
  name: review-feature
3
- description: Review an implemented feature against its spec, repository standards, regressions, and project quality priorities.
3
+ description: Verify implemented work against its Feature and report findings.
4
4
  ---
5
5
 
6
6
  # Review Feature
7
7
 
8
- Review the actual diff and behavior, not only a summary.
8
+ Review the actual diff and behavior, not only the developer's summary.
9
9
 
10
10
  ## Check
11
11
 
12
- - acceptance criteria and missed requirements
13
- - regressions, logic errors, edge/failure states
14
- - security/privacy and data boundaries
15
- - accessibility, performance, compatibility, and operations when applicable
16
- - tests and verification quality
17
- - scope creep and unrelated churn
18
- - consistency with approved architecture and prototype direction
12
+ - acceptance criteria
13
+ - regressions and important edge cases
14
+ - security/privacy when relevant
15
+ - accessibility, performance, compatibility, and operations when relevant
16
+ - tests and verification
17
+ - scope creep
19
18
  - documentation accuracy
20
19
 
20
+ Use the project's quality priorities and existing standards where relevant.
21
+
21
22
  ## Output
22
23
 
23
- List findings by severity with file/location, impact, and practical fix. Then list verification performed, residual risk, and whether it is ready to complete.
24
+ Report:
25
+
26
+ - `PASS`, or findings by severity
27
+ - file/location and impact for each finding
28
+ - what was actually verified
29
+ - anything important that remains unverified
30
+
31
+ Do not modify the implementation unless the human explicitly asks.
24
32
 
25
- Do not modify code unless the user asks for fixes. Do not manufacture findings to fill a template.
33
+ Do not invent findings or treat passing tests as automatic acceptance.
@@ -0,0 +1,33 @@
1
+ ---
2
+ name: role
3
+ description: Activate one named Pathfinder role for the current session.
4
+ ---
5
+
6
+ # Role
7
+
8
+ Activate exactly one role.
9
+
10
+ The human names it, for example:
11
+
12
+ `/role planner`
13
+ `/role developer`
14
+ `/role tester`
15
+
16
+ ## Process
17
+
18
+ 1. Take the role name from the invocation.
19
+ If none was given, list the available files in `roles/` and stop.
20
+ 2. Read only `roles/<name>.md`.
21
+ If it does not exist, say so, list the available role names, and stop.
22
+ 3. Confirm in one line and wait for work:
23
+
24
+ `Active role: <name>`
25
+
26
+ ## Rules
27
+
28
+ - Activate only the role the human named.
29
+ - Read only that role file.
30
+ - Do not start the role's work.
31
+ - Do not write project state just to remember the role.
32
+ - The role applies only to the current session/conversation context.
33
+ - A role narrows responsibility. It never grants human authority.
@@ -1,74 +1,42 @@
1
1
  ---
2
2
  name: setup-tracker
3
- description: Configure an optional external work tracker by interviewing the human and writing context/tracker.md from the shipped template.
3
+ description: Configure optional work tracking for the project.
4
4
  ---
5
5
 
6
6
  # Setup Tracker
7
7
 
8
- Use this skill to describe, in prose, which tracker a project uses and how
9
- Pathfinder's work items project onto it. The result is `context/tracker.md`.
8
+ Configure a work tracker only when the human asks.
10
9
 
11
- Work Tracking is **optional**. A project that never runs this skill is
12
- unaffected: no file, no prompt, no behaviour change anywhere. Do not run this
13
- skill unasked, and do not propose it as a missing step.
14
-
15
- This skill configures. It never contacts a tracker.
16
-
17
- ## Rules
18
-
19
- - Do not write `context/tracker.md` without human approval.
20
- - Do not add code, dependencies, or an adapter for any tracker.
21
- - Do not invent a taxonomy the team did not ask for.
22
- - Keep the model section backend-neutral; vendor vocabulary belongs only under
23
- the projection heading.
24
- - Never remove the work-item marker block. It is the one machine-stable token in
25
- a prose contract, and identity depends on it.
26
-
27
- ## Interview
28
-
29
- Ask progressively, in small groups. Ask only what the config cannot be written
30
- without:
31
-
32
- 1. Which tracker, and where it lives.
33
- 2. How an agent reaches it — a CLI, a path, or a described manual step.
34
- 3. Which tag namespaces the project actually uses. `area`, `type`, `priority`,
35
- and `agent` are available; a project needing none of them says so.
36
- 4. What the tracker already carries. **List its existing labels, fields, or
37
- conventions before proposing any tag value.** If something already means the
38
- same thing, reuse it and record the mapping rather than creating a
39
- near-duplicate.
40
- 5. Anything about the projection that the shipped starting points do not cover.
10
+ Pathfinder works normally without one.
41
11
 
42
12
  ## Process
43
13
 
44
- 1. Check whether `context/tracker.md` already exists. If it does, read it, and
45
- treat this run as a revision — show what would change and change nothing
46
- else. Never overwrite a working config wholesale.
47
- 2. Read `templates/tracker.template.md`.
48
- 3. Run the interview.
49
- 4. Choose the projection:
50
- - **GitHub Issues via `gh`** and **local Markdown files** ship as starting
51
- points, both proven.
52
- - Any other tracker is supported by the human describing it in prose, using a
53
- shipped projection as the shape to follow. **That is the mechanism, not a
54
- gap** do not report an unsupported tracker as a blocker.
55
- 5. Fill the placeholders and keep **one** projection block. Delete, in the
56
- written config:
57
- - the template's guidance blockquote at the top;
58
- - the projection block you did not keep;
59
- - the `pathfinder:model-start` and `pathfinder:projection-boundary` markers;
60
- - the italic *"Keep this block for…"* line under the projection you kept — it
61
- is an instruction to you, not content for the project to read.
14
+ 1. Ask where work should be tracked:
15
+ - GitHub Issues
16
+ - local Markdown files
17
+ - another tracker the human describes
18
+ 2. Ask only for the information needed to use that tracker.
19
+ 3. Check where the approved Feature specs live. Ask only when they are not in
20
+ `context/features/`; when the default is what the repository has, record it
21
+ and move on.
22
+ 4. Create a proposed `context/tracker.md` naming, at minimum:
23
+ - the tracker and how an agent reaches it
24
+ - the spec source
25
+ - how a published item records its Pathfinder key, so a later run
26
+ recognises the item it published last time
27
+ 5. Show it to the human.
28
+ 6. Write it only after approval.
29
+
30
+ If `context/tracker.md` already exists, modify only the requested settings.
31
+
32
+ ## Rules
62
33
 
63
- **The model everything between the two markers — is kept byte-for-byte.**
64
- The tracker-identity paragraph above it is the one part you rewrite, because
65
- it names the tracker and how to reach it.
66
- 6. Present the proposed file and request approval.
67
- 7. Write `context/tracker.md` only after the human approves.
68
- 8. Report what was configured, and say plainly that nothing has been published.
34
+ - Do not publish or create work items.
35
+ - Do not create labels, tags, or tracker conventions unless requested.
36
+ - Do not add dependencies or tracker-specific code.
37
+ - Feature specs remain canonical.
38
+ - Tracking is always optional.
69
39
 
70
- ## Stop Condition
40
+ Publishing belongs to `sync-tracker`.
71
41
 
72
- Stop once the config is written. Publishing to a tracker is `sync-tracker`, not
73
- this skill. If `sync-tracker` is not installed, say so rather than publishing by
74
- hand.
42
+ Stop after configuration.
@@ -1,26 +1,29 @@
1
1
  ---
2
2
  name: start-feature
3
- description: Implement the active feature one stable delivery chunk at a time under the project's approved workflow.
3
+ description: Implement the active Feature in small, stable increments.
4
4
  ---
5
5
 
6
6
  # Start Feature
7
7
 
8
- ## Before Coding
8
+ Implement the active delivery chunk.
9
9
 
10
- Restate goal, chunk, files/areas, context, risks, assumptions, verification, exclusions, Git state, and intended Git action.
11
-
12
- ## Process
13
-
14
- 1. Follow the project's documented Git and approval policy.
15
- 2. Read only the active chunk's context.
16
- 3. Implement the smallest complete change.
17
- 4. Verify the chunk with relevant checks.
18
- 5. Keep the project stable.
19
- 6. Update current-feature state and move to the next chunk only when appropriate.
10
+ 1. Read only the context needed for the current work.
11
+ 2. Restate the pre-implementation summary the project's agent guide requires,
12
+ and wait for it to be answered where it names a human decision. Do not edit
13
+ any file before this step is done.
14
+ 3. Follow the Feature and existing project conventions.
15
+ 4. Make the smallest complete change.
16
+ 5. Verify the behavior you changed.
17
+ 6. Keep the repository stable.
18
+ 7. Create or update `context/current-feature.md` with the current state and next action.
20
19
 
21
20
  ## Rules
22
21
 
23
- - Stop on conflicts between spec, durable context, and repository reality.
24
- - Do not add dependencies, expand scope, adopt prototype code, commit, merge, or deploy without the documented approval.
25
- - Do not hide multiple features inside one delivery chunk.
26
- - Do not publish to a work tracker, even when `context/tracker.md` exists — the repository is canonical and a chunk boundary is not a tracker event.
22
+ - Stay inside the approved scope.
23
+ - Stop if implementation requires a human decision or material scope change.
24
+ - Do not silently add dependencies or adopt prototype code.
25
+ - Follow the project's approval and Git rules.
26
+ - Do not decide that your own work is accepted.
27
+
28
+ When the chunk is done, report what changed, what was verified, and anything
29
+ unresolved.
@@ -1,120 +1,81 @@
1
1
  ---
2
2
  name: sync-tracker
3
- description: Publish approved feature specs to the configured work tracker, one-way and idempotently, writing nothing when nothing has changed.
3
+ description: Project Feature specs onto the configured work tracker.
4
4
  ---
5
5
 
6
6
  # Sync Tracker
7
7
 
8
- Use this skill to project the project's approved feature specs onto the tracker
9
- described in `context/tracker.md`.
8
+ Sync project Features to the tracker configured in `context/tracker.md`.
10
9
 
11
- The repository is canonical. This is a **one-way projection** of work that
12
- already exists. Nothing here reads tracker state back into a spec,
13
- `context/current-feature.md`, or `context/history.md`.
14
-
15
- ## The off switch comes first
16
-
17
- **If `context/tracker.md` does not exist, do nothing at all.** Report that work
18
- tracking is not configured for this project, and stop.
19
-
20
- Do not create the config, do not propose configuring one, and do not describe
21
- its absence as a gap. Work Tracking is optional, and a project without it is
22
- behaving correctly.
23
-
24
- ## The config is the contract
25
-
26
- Read `context/tracker.md` in full and follow its prose. It states the model, the
27
- projection, and the publishing rules for this project.
28
-
29
- There is **no adapter code, no vendor branch, and no required tool** beyond what
30
- the config itself names. If the config describes a tracker this skill has never
31
- heard of, that is the design working, not a blocker.
32
-
33
- Where the config is silent on something a run needs, **ask the human**. Do not
34
- fill the gap with a convention of your own — the next run would fill it
35
- differently, and every item would look modified.
36
-
37
- ## What gets published
38
-
39
- **Approved feature specs only**, from `to-specs` onward — one work item per spec.
40
- Never debate notes, kickstart output, or prototypes. The one exception is a
41
- prototype that gates a decision, published as a single item phrased as the
42
- decision it resolves, never as a deliverable.
43
-
44
- **Do not decompose a feature.** Choosing units of execution inside a feature is a
45
- judgement about how work will be shared out, and it belongs to a human or to a
46
- skill written for it. Publish the feature.
10
+ The repository is canonical.
11
+ Tracker state never changes Pathfinder state.
47
12
 
48
13
  ## Process
49
14
 
50
- 1. Check for `context/tracker.md`. If it is absent, report and stop.
51
- 2. Read the config. Read the approved specs. Read nothing else.
52
- 3. Build the work items: key, kind, title, body, blocked-by edges, tags, and
53
- chunks, derived and composed exactly as the config's model section says. Every
54
- field comes from the spec **tags only from its optional `## Tags` section,
55
- never inferred.** A spec without one has no tags, which is correct and common.
56
- 4. Order them by dependency, blockers first. If the edges contain a cycle,
57
- report it and publish nothing a guessed order is a wrong order that looks
58
- fine.
59
- 5. **Ask the human before the first write that leaves this repository.** See
60
- below.
61
- 6. Publish, following the config's *Publishing, and re-publishing* section
62
- exactly: index existing items by key, create what is missing, compare
63
- normalized, and leave an unchanged item completely alone.
64
- 7. Report what was created, what was edited, and what was left alone.
65
-
66
- ## The approval gate
67
-
68
- **Ask before the first write to a tracker outside this repository in a session.**
69
- Creating items on a shared board is outward-facing and is not covered by ordinary
70
- file-edit approval. One approval covers the run; do not ask per item.
71
-
72
- **A projection onto files inside this repository is not gated.** It is an
73
- ordinary file edit and reaches nothing outside the repository. The gate is about
74
- leaving the repository, not about writing.
75
-
76
- ## Idempotency is the whole feature
77
-
78
- A second run over unchanged specs must **create nothing, change nothing, and
79
- issue zero writes**. Not writes that happen to be no-ops no writes.
80
-
81
- - **Compare normalized, never raw bytes.** A tracker is not obliged to hand a
82
- body back exactly as it was sent, and APIs differ in whether they adjust
83
- trailing whitespace. Where that happens, a naive byte comparison reports every
84
- item as changed on every run and rewrites all of them forever, which looks like
85
- working sync and is not. Strip trailing whitespace from each line and collapse
86
- trailing blank lines at the end, **on both sides**, before comparing. It costs
87
- nothing when the round-trip is exact.
88
- - **Compare tag sets as sets**, not as ordered lists. Application order is not
89
- preserved.
90
- - Never close, reopen, delete, or recreate an item. Edit in place.
91
- - Never touch an item whose key is absent from the current set. It belongs to
92
- work outside this run.
93
- - Match on the key alone, never on the title.
94
-
95
- **Report writes, not final state.** "The tracker looks right" is satisfied by a
96
- run that rewrote every item, which is the specific failure this skill exists to
97
- avoid. `3 items, 0 changes` is the expected result of a second run and the most
98
- important line of output.
15
+ 1. If `context/tracker.md` does not exist, report that tracking is not
16
+ configured and stop. Do not propose configuring one.
17
+ 2. Read the tracker configuration. It names the tracker, how to reach it, the
18
+ spec source, and how a published item records its Pathfinder key. Stop if it
19
+ does not say how the key is recorded without it a re-run cannot recognise
20
+ what it published last time, and would duplicate every item.
21
+ 3. Read the approved Feature specs from the spec source. A config that names
22
+ none means `context/features/`. If the named source does not exist, report
23
+ it and stop rather than falling back.
24
+ 4. Build one item per Feature: key, title, and body, composed only from the
25
+ spec.
26
+ 5. Show the proposed writes.
27
+ 6. Ask before the first write that leaves this repository. One approval covers
28
+ the run. A projection onto files inside the repository is an ordinary file
29
+ write and is not gated.
30
+ 7. Create or update only the items that changed.
31
+ 8. Report created, updated, and unchanged as counts of writes, not as final
32
+ tracker state.
33
+
34
+ ## Identity
35
+
36
+ Each Feature has one stable key derived from the number in its spec filename.
37
+ `to-specs` names every spec `NN-feature-name.md`, so
38
+ `27-export-saved-searches.md` is `pathfinder:feature/27` in whichever directory
39
+ it sits moving specs orphans nothing.
40
+
41
+ Read the number from the basename only. Never from the directory above it, the
42
+ title inside it, or the order the specs happen to be read in.
43
+
44
+ Match published items on that key alone. Titles are edited by humans.
45
+
46
+ Skip a spec whose filename carries no number and report it by name. Do not
47
+ assign one numbering is `to-specs`' job, and inventing one here would publish
48
+ an item that the next run cannot recognise.
49
+
50
+ ## Idempotency
51
+
52
+ A second run over unchanged Features must issue **zero writes** — not writes
53
+ that happen to be no-ops.
54
+
55
+ - Compose the body as a pure function of the spec: fixed section order, no
56
+ timestamps, no counters, nothing derived from the run.
57
+ - Compare normalized, never raw bytes. Strip trailing whitespace per line and
58
+ collapse trailing blank lines, on both sides. A tracker is not obliged to
59
+ return a body byte-for-byte, and a naive comparison then rewrites every item
60
+ forever while looking like working sync.
61
+ - Where the config defines tags, compare them as sets, not ordered lists.
62
+ - Edit in place. Never close, reopen, delete, or recreate an item.
63
+ - Leave any item whose key is absent from this run completely alone.
64
+
65
+ `3 items, 0 changes` is the expected second run and the most important line of
66
+ output.
99
67
 
100
68
  ## Rules
101
69
 
102
- - Do not add code, dependencies, or an adapter for any tracker.
103
- - Do not branch on `kind`.
104
- - Do not infer tags, and do not apply a value the config's mapping table does not
105
- carry. A spec naming an unmapped tag is a question for the human, not a
106
- judgement call.
107
- - Do not drop an edge that resolves outside the published set, and do not invent
108
- an item for it. Resolve it against the tracker as a whole: render the item's
109
- identifier if the key already has one, and name the key as untracked only when
110
- it genuinely has none.
111
- - Do not read anything back. A ticked checkbox means nothing to Pathfinder and
112
- never advances any state.
113
- - Do not close, reopen, or delete anything, ever.
70
+ - Do not decompose Features into tickets.
71
+ - Do not derive dependency edges, ordering, or a graph from a spec. A Feature
72
+ may mention a dependency under `## Notes / Decisions` for a human to read;
73
+ it is prose, not structure, and this skill does not parse or orchestrate it.
74
+ - Do not infer labels, tags, status, or other metadata.
75
+ - Do not modify Feature specs from tracker state.
76
+ - Do not read tracker state back into anything.
77
+ - Do not delete tracker items automatically.
78
+ - Do not rewrite unchanged items.
79
+ - Local Markdown tracking is an ordinary repository/file write.
80
+ - External trackers require human approval before writing.
114
81
  - Stop and report when the config, the specs, and the tracker disagree.
115
-
116
- ## Stop Condition
117
-
118
- Stop once the run is reported. Configuring a tracker is `setup-tracker`, not this
119
- skill. If a spec set is not ready to publish, say so rather than publishing part
120
- of it.
@@ -13,11 +13,12 @@ The goal is to connect implementation details to system boundaries, ownership, s
13
13
  ## Read First
14
14
 
15
15
  1. `context/project-overview.md`
16
- 2. `context/learning/learner-profile.md`
17
- 3. Relevant completed feature specs and lessons
18
- 4. Architecture-relevant source files only
19
- 5. Data contracts, API boundaries, stores, routing, and deployment configuration relevant to the requested scope
20
- 6. Existing ADRs, if present
16
+ 2. Relevant completed feature specs and lessons
17
+ 3. Architecture-relevant source files only
18
+ 4. Data contracts, API boundaries, stores, routing, and deployment configuration relevant to the requested scope
19
+ 5. Existing ADRs, if present
20
+
21
+ Skip any of these that does not exist. Pathfinder creates these files only when a workflow first needs them, so their absence is normal and is not an error. Do not create them just to satisfy this list.
21
22
 
22
23
  Do not infer services or infrastructure that do not exist. Clearly distinguish current architecture from likely future architecture.
23
24
 
@@ -13,13 +13,14 @@ The goal is not to produce generic documentation. The goal is to help the learne
13
13
 
14
14
  Read only the smallest useful context:
15
15
 
16
- 1. `context/learning/learner-profile.md`
17
- 2. `context/current-feature.md`
18
- 3. The source feature spec under `context/features/`
19
- 4. `context/project-overview.md`
20
- 5. The current branch, working tree status, and focused diff
21
- 6. Tests and implementation files touched by the feature
22
- 7. Relevant ADR, coding standard, or design-system guidance only when it materially affects the feature
16
+ 1. `context/current-feature.md`
17
+ 2. The source feature spec under `context/features/`
18
+ 3. `context/project-overview.md`
19
+ 4. The current branch, working tree status, and focused diff
20
+ 5. Tests and implementation files touched by the feature
21
+ 6. Relevant ADR, coding standard, or design-system guidance only when it materially affects the feature
22
+
23
+ Skip any of these that does not exist. Pathfinder creates these files only when a workflow first needs them, so their absence is normal and is not an error. Do not create them just to satisfy this list.
23
24
 
24
25
  Do not read the entire repository by default.
25
26
 
@@ -57,7 +58,9 @@ Explain:
57
58
 
58
59
  ## Adaptation
59
60
 
60
- Use `context/learning/learner-profile.md`.
61
+ Pitch the lesson at what the learner has already demonstrated, using
62
+ `context/learning/progress.md` when it exists and what the human tells you when
63
+ it does not. Ask rather than assume.
61
64
 
62
65
  For an experienced engineer:
63
66