create-pathfinder 1.7.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.
- package/AGENTS.md +3 -1
- package/CLAUDE.md +22 -0
- package/README.md +383 -65
- package/context/ai-interaction.md +78 -38
- package/context/coding-standards.md +119 -60
- package/copy-list.json +1 -0
- package/package.json +2 -1
- package/roles/developer.md +37 -0
- package/roles/planner.md +38 -0
- package/roles/tester.md +40 -0
- package/skills/challenge-me/SKILL.md +11 -7
- package/skills/complete-feature/SKILL.md +16 -10
- package/skills/handoff/SKILL.md +24 -4
- package/skills/kickstart-pathfinder/SKILL.md +6 -1
- package/skills/learning-review/SKILL.md +9 -6
- package/skills/load-feature/SKILL.md +20 -9
- package/skills/prototype/SKILL.md +3 -1
- package/skills/quiz-me/SKILL.md +33 -7
- package/skills/review-feature/SKILL.md +19 -11
- package/skills/role/SKILL.md +33 -0
- package/skills/setup-tracker/SKILL.md +42 -0
- package/skills/start-feature/SKILL.md +19 -15
- package/skills/sync-tracker/SKILL.md +81 -0
- package/skills/teach-architecture/SKILL.md +6 -5
- package/skills/teach-feature/SKILL.md +11 -8
- package/skills/to-specs/SKILL.md +41 -25
- package/skills/whereami/SKILL.md +87 -0
- package/src/cli.mjs +2 -1
- package/src/detect.mjs +1 -1
- package/src/install.mjs +5 -1
- package/src/kickstart-prompt.mjs +1 -1
- package/src/kit.mjs +70 -1
- package/templates/CHANGELOG.template.md +2 -1
- package/templates/feature-spec.template.md +19 -75
- package/templates/history.template.md +12 -0
- package/templates/lesson.template.md +22 -51
- package/templates/project-overview.template.md +80 -145
- package/context/current-feature.md +0 -46
- package/context/features/example-feature-spec.md +0 -103
- package/context/history.md +0 -14
- package/context/learning/learner-profile.md +0 -35
- package/context/learning/lessons/.gitkeep +0 -0
- package/context/learning/progress.md +0 -28
- package/context/project-overview.md +0 -211
- package/templates/progress-entry.template.md +0 -23
|
@@ -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/
|
|
16
|
-
2. `context/learning/
|
|
17
|
-
3. Recent
|
|
18
|
-
4.
|
|
19
|
-
|
|
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,17 +1,28 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: load-feature
|
|
3
|
-
description:
|
|
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
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
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.
|
|
15
23
|
8. Present a short readiness summary.
|
|
16
24
|
|
|
17
|
-
Do not implement
|
|
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
|
|
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
|
|
package/skills/quiz-me/SKILL.md
CHANGED
|
@@ -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/
|
|
16
|
-
2.
|
|
17
|
-
3.
|
|
18
|
-
4.
|
|
19
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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:
|
|
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
|
|
8
|
+
Review the actual diff and behavior, not only the developer's summary.
|
|
9
9
|
|
|
10
10
|
## Check
|
|
11
11
|
|
|
12
|
-
- acceptance criteria
|
|
13
|
-
- regressions
|
|
14
|
-
- security/privacy
|
|
15
|
-
- accessibility, performance, compatibility, and operations when
|
|
16
|
-
- tests and verification
|
|
17
|
-
- scope creep
|
|
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
|
-
|
|
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
|
|
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.
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: setup-tracker
|
|
3
|
+
description: Configure optional work tracking for the project.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Setup Tracker
|
|
7
|
+
|
|
8
|
+
Configure a work tracker only when the human asks.
|
|
9
|
+
|
|
10
|
+
Pathfinder works normally without one.
|
|
11
|
+
|
|
12
|
+
## Process
|
|
13
|
+
|
|
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
|
|
33
|
+
|
|
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.
|
|
39
|
+
|
|
40
|
+
Publishing belongs to `sync-tracker`.
|
|
41
|
+
|
|
42
|
+
Stop after configuration.
|
|
@@ -1,25 +1,29 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: start-feature
|
|
3
|
-
description: Implement the active
|
|
3
|
+
description: Implement the active Feature in small, stable increments.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Start Feature
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
Implement the active delivery chunk.
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
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
|
-
-
|
|
24
|
-
-
|
|
25
|
-
- Do not
|
|
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.
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: sync-tracker
|
|
3
|
+
description: Project Feature specs onto the configured work tracker.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Sync Tracker
|
|
7
|
+
|
|
8
|
+
Sync project Features to the tracker configured in `context/tracker.md`.
|
|
9
|
+
|
|
10
|
+
The repository is canonical.
|
|
11
|
+
Tracker state never changes Pathfinder state.
|
|
12
|
+
|
|
13
|
+
## Process
|
|
14
|
+
|
|
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.
|
|
67
|
+
|
|
68
|
+
## Rules
|
|
69
|
+
|
|
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.
|
|
81
|
+
- Stop and report when the config, the specs, and the tracker disagree.
|
|
@@ -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.
|
|
17
|
-
3.
|
|
18
|
-
4.
|
|
19
|
-
5.
|
|
20
|
-
|
|
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/
|
|
17
|
-
2. `context/
|
|
18
|
-
3.
|
|
19
|
-
4.
|
|
20
|
-
5.
|
|
21
|
-
6.
|
|
22
|
-
|
|
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
|
-
|
|
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
|
|
package/skills/to-specs/SKILL.md
CHANGED
|
@@ -1,45 +1,61 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: to-specs
|
|
3
|
-
description:
|
|
3
|
+
description: Turn approved direction into small, clear Feature specs.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# To Specs
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
Turn approved direction into the minimum Feature specs needed to implement it.
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
## Process
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
12
|
+
1. Read the approved project context and relevant existing Features.
|
|
13
|
+
2. Stop if a required human decision is still `TBD`.
|
|
14
|
+
3. Decide whether the work is one Feature or needs a small number of Features.
|
|
15
|
+
4. Create `context/features/` if it does not exist.
|
|
16
|
+
5. Create each Feature from `templates/feature-spec.template.md`, named
|
|
17
|
+
`NN-feature-name.md` — see Naming below.
|
|
18
|
+
6. Fill only information that materially helps implementation and review.
|
|
19
|
+
7. Present the created Features and recommend which one to start first.
|
|
20
|
+
8. If `context/tracker.md` exists, offer to publish them with `sync-tracker`.
|
|
21
|
+
Do nothing here if it does not.
|
|
17
22
|
|
|
18
|
-
|
|
23
|
+
## Naming
|
|
19
24
|
|
|
20
|
-
|
|
25
|
+
A Feature spec is named `NN-feature-name.md` in the spec source, for example
|
|
26
|
+
`context/features/27-export-saved-searches.md`.
|
|
21
27
|
|
|
22
|
-
|
|
28
|
+
`NN` is the Feature number: the next unused number in the spec source, counting
|
|
29
|
+
every spec already there whatever its status. Numbers are never reused and never
|
|
30
|
+
renumbered, because a published tracker item is matched on that number and
|
|
31
|
+
renumbering would orphan it.
|
|
23
32
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
- be independently reviewable and verifiable
|
|
27
|
-
- require a coherent, bounded set of context
|
|
28
|
-
- state dependencies, assumptions, and exclusions
|
|
29
|
-
- contain stable delivery chunks
|
|
33
|
+
The number lives in the filename and nowhere else. The Feature template carries
|
|
34
|
+
no number field, and nothing else in the spec records one.
|
|
30
35
|
|
|
31
|
-
|
|
36
|
+
## Sizing
|
|
32
37
|
|
|
33
|
-
|
|
38
|
+
Prefer one Feature when the work is coherent.
|
|
34
39
|
|
|
35
|
-
|
|
40
|
+
Split only when separate outcomes:
|
|
36
41
|
|
|
37
|
-
|
|
42
|
+
- can be implemented or reviewed independently
|
|
43
|
+
- depend on meaningfully different context
|
|
44
|
+
- have a real dependency between them
|
|
45
|
+
- would make one Feature unnecessarily difficult to understand
|
|
38
46
|
|
|
39
|
-
|
|
47
|
+
Prefer fewer Features and fewer artifacts.
|
|
48
|
+
|
|
49
|
+
Use delivery chunks inside a Feature before creating additional Features.
|
|
40
50
|
|
|
41
51
|
## Rules
|
|
42
52
|
|
|
43
|
-
- Do not implement
|
|
44
|
-
- Do not
|
|
45
|
-
- Do not plan the
|
|
53
|
+
- Do not implement.
|
|
54
|
+
- Do not invent unresolved decisions.
|
|
55
|
+
- Do not plan beyond the approved direction.
|
|
56
|
+
- Do not add workflow metadata that the Feature template does not require.
|
|
57
|
+
- Do not create tickets, tracker items, or extra planning files by default.
|
|
58
|
+
- Do not scan unrelated repository areas.
|
|
59
|
+
|
|
60
|
+
When implementation details are unclear, inspect only enough source code to
|
|
61
|
+
write an accurate Feature.
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: whereami
|
|
3
|
+
description: Report a compact read-only snapshot of the current Pathfinder work session.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Where Am I
|
|
7
|
+
|
|
8
|
+
Answer one question: what is this session working on right now?
|
|
9
|
+
|
|
10
|
+
Use it when a session resumes, after a long gap, or before deciding the next
|
|
11
|
+
action. It reports state. It never changes it.
|
|
12
|
+
|
|
13
|
+
## Process
|
|
14
|
+
|
|
15
|
+
1. Role: report the role activated in this session via `/role`.
|
|
16
|
+
Roles are session state and are never written to disk, so if no role was
|
|
17
|
+
activated in this conversation, report `none`. Do not search `roles/`.
|
|
18
|
+
2. Read `context/current-feature.md` if it exists.
|
|
19
|
+
Take Feature, Active chunk, and Next from it verbatim. The Feature number is
|
|
20
|
+
the `NN` recorded there, from its spec filename.
|
|
21
|
+
If the file is missing or still holds template placeholders, report `none`.
|
|
22
|
+
3. Run `git status --short --branch` once.
|
|
23
|
+
Report the branch/ref, and `clean` or the count of changed paths.
|
|
24
|
+
4. Compare the Git section of `context/current-feature.md` with step 3.
|
|
25
|
+
Report a drift line only if the recorded branch differs from the real one.
|
|
26
|
+
5. Context telemetry: report it only if this harness exposes it.
|
|
27
|
+
Otherwise `unavailable`. Do not estimate.
|
|
28
|
+
|
|
29
|
+
## Output
|
|
30
|
+
|
|
31
|
+
Exactly this shape, one line each:
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
Role: <role | none>
|
|
35
|
+
Feature: <## — name | none>
|
|
36
|
+
Chunk: <number and name | none>
|
|
37
|
+
Git: <branch/ref> — <clean | N changed>
|
|
38
|
+
Context: <telemetry | unavailable>
|
|
39
|
+
Next: <single next action | none>
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
Add at most one line after it, and only when step 4 found drift:
|
|
43
|
+
|
|
44
|
+
```
|
|
45
|
+
Drift: current-feature.md records <branch>, working tree is on <branch>
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Then stop.
|
|
49
|
+
|
|
50
|
+
## Rules
|
|
51
|
+
|
|
52
|
+
- Read only. No writes, no commits, no `git` command that mutates anything.
|
|
53
|
+
- Read at most one file: `context/current-feature.md`.
|
|
54
|
+
- Do not open the feature spec, history, roadmap, `.features/`, or source.
|
|
55
|
+
- Report `none` or `unavailable` instead of inferring a missing value.
|
|
56
|
+
- Do not offer to fix drift, update state, or start the next action.
|
|
57
|
+
The human decides what happens after the snapshot.
|
|
58
|
+
|
|
59
|
+
## Example
|
|
60
|
+
|
|
61
|
+
`/whereami` after resuming mid-feature:
|
|
62
|
+
|
|
63
|
+
```
|
|
64
|
+
Role: developer
|
|
65
|
+
Feature: 12 — export saved searches
|
|
66
|
+
Chunk: 2 — CSV writer
|
|
67
|
+
Git: feature/12-export-saved-searches — 3 changed
|
|
68
|
+
Context: unavailable
|
|
69
|
+
Next: Verify the CSV writer against the acceptance criteria
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## Anti-example
|
|
73
|
+
|
|
74
|
+
Do not do this:
|
|
75
|
+
|
|
76
|
+
```
|
|
77
|
+
Role: developer (inferred from recent commits)
|
|
78
|
+
Feature: 12 — export saved searches
|
|
79
|
+
Chunk: 3 — probably the download endpoint
|
|
80
|
+
Git: feature/12-export-saved-searches — 3 changed
|
|
81
|
+
Context: ~60% used
|
|
82
|
+
Next: I can update current-feature.md and start chunk 3 — want me to?
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
It guesses the role from history, invents a chunk the spec never named,
|
|
86
|
+
estimates telemetry it cannot see, and turns a status report into a proposal
|
|
87
|
+
to write state.
|
package/src/cli.mjs
CHANGED
|
@@ -205,7 +205,8 @@ export async function run(
|
|
|
205
205
|
// as it goes.
|
|
206
206
|
//
|
|
207
207
|
// Planning adapters this early is safe, and specifically because of what the
|
|
208
|
-
// copy list contains: AGENTS.md, CLAUDE.md, context, skills, and
|
|
208
|
+
// copy list contains: AGENTS.md, CLAUDE.md, context, roles, skills, and
|
|
209
|
+
// templates.
|
|
209
210
|
// No entry writes into `.claude/` or `.agents/`, so the copy cannot change
|
|
210
211
|
// the answer `planAdapters` gives about an adapter path, and the canonical
|
|
211
212
|
// skills it reads come from the kit rather than from the destination. If a
|
package/src/detect.mjs
CHANGED
|
@@ -119,7 +119,7 @@ function detectTool(tool, { cwd, home, env, platform }) {
|
|
|
119
119
|
* Decided by counting skill directories rather than by testing for `CLAUDE.md`,
|
|
120
120
|
* which any agent-assisted project may have written for its own reasons.
|
|
121
121
|
* A `skills/<name>/SKILL.md` is a far more specific signature, and the count is
|
|
122
|
-
* worth having on its own — it is what makes "already installed (
|
|
122
|
+
* worth having on its own — it is what makes "already installed (N skills)"
|
|
123
123
|
* checkable by the person reading it.
|
|
124
124
|
*/
|
|
125
125
|
function detectPathfinder(cwd) {
|