create-pathfinder 3.1.0 → 4.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 -3
- package/CLAUDE.md +25 -18
- package/README.md +3 -3
- package/context/ai-interaction.md +19 -13
- package/context/coding-standards.md +11 -7
- package/package.json +2 -2
- package/roles/developer.md +2 -1
- package/roles/planner.md +8 -6
- package/roles/tester.md +1 -1
- package/skills/debug-issue/SKILL.md +4 -4
- package/skills/kickstart-pathfinder/SKILL.md +6 -0
- package/skills/quiz-me/SKILL.md +1 -1
- package/skills/reverse-engineer/SKILL.md +1 -1
- package/skills/role/SKILL.md +8 -2
- package/skills/setup-tracker/SKILL.md +38 -18
- package/skills/teach-feature/SKILL.md +1 -1
- package/skills/ticket/SKILL.md +64 -0
- package/skills/ticket/actions/complete.md +50 -0
- package/skills/ticket/actions/load.md +72 -0
- package/skills/ticket/actions/review.md +44 -0
- package/skills/ticket/actions/start.md +50 -0
- package/skills/ticket/store.md +72 -0
- package/skills/to-specs/SKILL.md +15 -5
- package/skills/to-tickets/SKILL.md +98 -0
- package/skills/whereami/SKILL.md +17 -15
- package/src/kit.mjs +26 -10
- package/templates/feature-spec.template.md +0 -7
- package/templates/ticket.template.md +42 -0
- package/skills/feature/SKILL.md +0 -56
- package/skills/feature/actions/complete.md +0 -22
- package/skills/feature/actions/load.md +0 -45
- package/skills/feature/actions/review.md +0 -32
- package/skills/feature/actions/start.md +0 -33
- package/skills/sync-tracker/SKILL.md +0 -81
package/AGENTS.md
CHANGED
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
Read `CLAUDE.md` first.
|
|
4
4
|
|
|
5
|
-
Project truth lives in `context/`. Follow the technology and delivery choices documented in `context/project-overview.md`; do not assume a framework, package manager, branch model, or release process. That file, like `context/features/`, `context/history.md`, `context/current-
|
|
5
|
+
Project truth lives in `context/`. Follow the technology and delivery choices documented in `context/project-overview.md`; do not assume a framework, package manager, branch model, or release process. That file, like `context/features/`, `context/history.md`, `context/current-ticket.md`, and `context/handoff.md`, is created by the workflow that first needs it — its absence is normal, not an error. `context/tickets/` exists only when local Markdown is the project's ticket store; a project whose tickets are in GitHub Issues or another tracker has none, and that is not a gap. Track the durable ones in Git; `context/current-ticket.md` and `context/handoff.md` are transient session state and belong in `.gitignore`. Never ignore `context/` as a whole.
|
|
6
6
|
|
|
7
|
-
Use the smallest relevant context for the active task. Keep each
|
|
7
|
+
Use the smallest relevant context for the active task. Keep each ticket stable, reviewable, and verifiable.
|
|
8
8
|
|
|
9
|
-
The roles are `planner`, `developer`, and `tester`. When the human names
|
|
9
|
+
The roles are `planner`, `developer`, and `tester`. Lifecycle skills assume the responsible role for each invocation and read its contract themselves. When the human explicitly names a role, read `roles/<name>.md` before anything else and use it instead for that session. A role is a declarative contract stating what a worker is responsible for and what it must not do, where a skill states how to perform a task. Assumed or explicit, a role narrows responsibility and never grants human authority.
|
|
10
10
|
|
|
11
11
|
Canonical skills live under `skills/` and are the only behavior contract; anything under `.claude/skills/` or `.agents/skills/` is a generated pointer to one, so edit the canonical file and regenerate the adapter.
|
|
12
12
|
|
package/CLAUDE.md
CHANGED
|
@@ -4,34 +4,41 @@ This repository uses an AI-assisted, human-in-the-loop workflow. Project truth l
|
|
|
4
4
|
|
|
5
5
|
## Read only what is needed
|
|
6
6
|
|
|
7
|
-
For
|
|
7
|
+
For delivery work, usually read:
|
|
8
8
|
|
|
9
|
-
1. `context/current-
|
|
10
|
-
2.
|
|
9
|
+
1. `context/current-ticket.md`
|
|
10
|
+
2. the ticket it names, and that ticket's parent feature spec
|
|
11
11
|
3. relevant sections of `context/project-overview.md`
|
|
12
12
|
4. relevant rules from `context/coding-standards.md`
|
|
13
13
|
5. `context/ai-interaction.md`
|
|
14
|
-
6. only the source files needed for the current
|
|
14
|
+
6. only the source files needed for the current ticket
|
|
15
15
|
|
|
16
16
|
Do not load the whole repo by default.
|
|
17
17
|
|
|
18
18
|
Pathfinder ships two context files: `ai-interaction.md` and
|
|
19
19
|
`coding-standards.md`. Everything else in `context/` — `project-overview.md`,
|
|
20
|
-
`features/`, `history.md`, `current-
|
|
21
|
-
the workflow that first needs it. A missing file here is normal; skip
|
|
22
|
-
than treating it as an error.
|
|
20
|
+
`features/`, `tickets/`, `history.md`, `current-ticket.md`, `handoff.md` — is
|
|
21
|
+
written by the workflow that first needs it. A missing file here is normal; skip
|
|
22
|
+
it rather than treating it as an error. `tickets/` in particular exists only
|
|
23
|
+
when local Markdown is the project's ticket store.
|
|
23
24
|
|
|
24
25
|
Track the durable ones in Git and ignore the two transient ones,
|
|
25
|
-
`current-
|
|
26
|
+
`current-ticket.md` and `handoff.md`. `context/coding-standards.md` carries the
|
|
26
27
|
rule; do not ignore `context/` wholesale.
|
|
27
28
|
|
|
28
29
|
## Roles
|
|
29
30
|
|
|
30
|
-
|
|
31
|
+
Lifecycle skills assume their responsible role for each invocation and read its
|
|
32
|
+
contract themselves: planning uses `planner`, ticket implementation and
|
|
33
|
+
completion use `developer`, and ticket review uses `tester`.
|
|
31
34
|
|
|
32
|
-
The
|
|
35
|
+
The human can explicitly override that default with `/role <name>`. Read the
|
|
36
|
+
named `roles/<name>.md` before anything else and follow it for the session. A
|
|
37
|
+
role says what a worker is responsible for, what it reads, and what it must not
|
|
38
|
+
do, where a skill says how to perform a task.
|
|
33
39
|
|
|
34
|
-
|
|
40
|
+
A role narrows responsibility and never widens authority. Approval, acceptance,
|
|
41
|
+
merge, and release remain the human's whether a role was assumed or explicit.
|
|
35
42
|
|
|
36
43
|
## Project-selected policies
|
|
37
44
|
|
|
@@ -44,7 +51,7 @@ If a policy is `TBD`, do not invent it. Ask the human or clearly mark it unresol
|
|
|
44
51
|
Restate:
|
|
45
52
|
|
|
46
53
|
1. Goal
|
|
47
|
-
2. Active
|
|
54
|
+
2. Active ticket
|
|
48
55
|
3. Expected files or areas
|
|
49
56
|
4. Required context
|
|
50
57
|
5. Risks
|
|
@@ -60,8 +67,8 @@ Ask before actions identified in `context/ai-interaction.md`, especially depende
|
|
|
60
67
|
|
|
61
68
|
## Scope and quality
|
|
62
69
|
|
|
63
|
-
- Implement only the active feature and current
|
|
64
|
-
- Keep the project stable after each
|
|
70
|
+
- Implement only the active feature and current ticket.
|
|
71
|
+
- Keep the project stable after each ticket.
|
|
65
72
|
- Do not convert prototype code into production code without an explicit feature decision.
|
|
66
73
|
- Prefer concrete verification over confident narration.
|
|
67
74
|
- Report conflicts between specs, repository reality, and durable context.
|
|
@@ -81,7 +88,8 @@ An adapter carries the canonical skill's frontmatter and a pointer to it, and no
|
|
|
81
88
|
- `reverse-engineer` — analyze an external reference and produce an evidence-based reconstruction blueprint
|
|
82
89
|
- `prototype` — create and iterate the cheapest useful validation artifact
|
|
83
90
|
- `to-specs` — generate context-sized feature specs
|
|
84
|
-
- `
|
|
91
|
+
- `to-tickets` — decompose one approved Feature into blocker-linked tickets
|
|
92
|
+
- `ticket` — run one action of the ticket delivery loop: `load`, `start`, `review`, `complete`
|
|
85
93
|
- `debug-issue` — diagnose an observed failure to its root cause, apply the smallest justified fix, and verify it
|
|
86
94
|
- `learn-feature` — create an interactive lesson for a completed feature
|
|
87
95
|
- `learn-codebase` — create a modular learning portal for the repository
|
|
@@ -92,8 +100,7 @@ An adapter carries the canonical skill's frontmatter and a pointer to it, and no
|
|
|
92
100
|
- `learning-review` — review accumulated lessons, identify gaps, and create a reinforcement plan
|
|
93
101
|
- `reflect` — review completed work, and the reflection itself, and propose reusable workflow improvements for human approval
|
|
94
102
|
- `handoff` — preserve useful state between sessions or tools
|
|
95
|
-
- `role` —
|
|
103
|
+
- `role` — explicitly override the role the lifecycle would assume
|
|
96
104
|
- `whereami` — report a compact read-only snapshot of the current session
|
|
97
105
|
- `skillsmith` — teach and create small local skills
|
|
98
|
-
- `setup-tracker` —
|
|
99
|
-
- `sync-tracker` — publish approved feature specs to the configured tracker, one-way and idempotently
|
|
106
|
+
- `setup-tracker` — choose the canonical ticket store when it is not local Markdown
|
package/README.md
CHANGED
|
@@ -80,11 +80,11 @@ The installer copies six kit entries into your repository:
|
|
|
80
80
|
| --- | --- |
|
|
81
81
|
| `AGENTS.md`, `CLAUDE.md` | Entry files that tell supported agents how to work in the project |
|
|
82
82
|
| `context/` | Project standards and interaction rules; other context is created only when needed |
|
|
83
|
-
| `roles/` |
|
|
84
|
-
| `skills/` | Reusable procedures for discovery, specs, delivery, debugging, review, learning, and
|
|
83
|
+
| `roles/` | Planner, developer, and tester contracts assumed by lifecycle skills |
|
|
84
|
+
| `skills/` | Reusable procedures for discovery, specs, delivery, debugging, review, learning, and ticket-store selection |
|
|
85
85
|
| `templates/` | Minimal starting shapes; records are created from them later, when a workflow needs one |
|
|
86
86
|
|
|
87
|
-
A fresh Pathfinder
|
|
87
|
+
A fresh Pathfinder project begins with only:
|
|
88
88
|
|
|
89
89
|
```text
|
|
90
90
|
context/
|
|
@@ -20,7 +20,7 @@ Ask before:
|
|
|
20
20
|
- Git history rewriting
|
|
21
21
|
- commits, merges, releases, or deployments
|
|
22
22
|
- adopting prototype code into production
|
|
23
|
-
- writes outside the repository, such as shared
|
|
23
|
+
- writes outside the repository, such as tickets in a shared store
|
|
24
24
|
|
|
25
25
|
The human owns judgment, acceptance, merge, and release decisions.
|
|
26
26
|
|
|
@@ -34,21 +34,24 @@ or deployment workflow.
|
|
|
34
34
|
Inspect current Git state before acting. If the workflow is unclear or
|
|
35
35
|
`TBD`, ask.
|
|
36
36
|
|
|
37
|
-
##
|
|
37
|
+
## Delivery Workflow
|
|
38
38
|
|
|
39
39
|
Use the workflow skills instead of recreating their procedures in chat:
|
|
40
40
|
|
|
41
|
-
1.
|
|
42
|
-
2. `/
|
|
43
|
-
3. `/
|
|
44
|
-
4. `/
|
|
45
|
-
5. `
|
|
41
|
+
1. `to-tickets` — slice one approved Feature into executable tickets.
|
|
42
|
+
2. `/ticket load` — load one ticket, its Feature, and relevant context.
|
|
43
|
+
3. `/ticket start` — implement that ticket.
|
|
44
|
+
4. `/ticket review` — verify the work and report findings.
|
|
45
|
+
5. `/ticket complete` — complete accepted work and durable records, and name
|
|
46
|
+
the tickets that are now ready.
|
|
47
|
+
6. `learn-feature` — optionally teach what was implemented.
|
|
46
48
|
|
|
47
|
-
|
|
49
|
+
Lifecycle skills assume their responsible role automatically. Explicit
|
|
50
|
+
activation with `/role` is optional and overrides that default for the session.
|
|
48
51
|
|
|
49
52
|
### Status
|
|
50
53
|
|
|
51
|
-
|
|
54
|
+
Ticket status records durable lifecycle state only:
|
|
52
55
|
|
|
53
56
|
`Proposed` → `Ready` → `In Progress` → `Complete`
|
|
54
57
|
|
|
@@ -56,17 +59,20 @@ Feature status records durable lifecycle state only:
|
|
|
56
59
|
|
|
57
60
|
- `Ready` means the human approved execution.
|
|
58
61
|
- Review and testing are optional workflow activity, not a status.
|
|
59
|
-
A
|
|
60
|
-
- `Blocked` is not a status
|
|
62
|
+
A ticket stays `In Progress` until it is complete.
|
|
63
|
+
- `Blocked` is not a status. A ticket's blockers are the edges under its
|
|
64
|
+
`## Blocked by`, and anything else that stops work is recorded in current
|
|
65
|
+
workspace state.
|
|
66
|
+
- A Feature's status is derived from its tickets, never maintained by hand.
|
|
61
67
|
- The human decides approval, acceptance, cancellation, and supersession.
|
|
62
68
|
|
|
63
69
|
## Context Discipline
|
|
64
70
|
|
|
65
71
|
- Read only what the current work requires.
|
|
66
72
|
- Prefer exact files or sections over broad repository scans.
|
|
67
|
-
- Do not load history, roadmap,
|
|
73
|
+
- Do not load history, roadmap, other tickets, or unrelated context by
|
|
68
74
|
default.
|
|
69
|
-
- Work one
|
|
75
|
+
- Work one ticket at a time.
|
|
70
76
|
- If the work can no longer be understood safely in a focused session,
|
|
71
77
|
stop and split or hand off.
|
|
72
78
|
- Extra scaffolding must earn its cost by reducing downstream context.
|
|
@@ -92,10 +92,12 @@ Keep durable truth in its appropriate project artifact.
|
|
|
92
92
|
`context/project-overview.md`
|
|
93
93
|
- Feature contracts:
|
|
94
94
|
`context/features/`
|
|
95
|
+
- executable tickets, when local Markdown is the configured store:
|
|
96
|
+
`context/tickets/`
|
|
95
97
|
- completed outcomes:
|
|
96
98
|
`context/history.md`
|
|
97
99
|
- active workspace state:
|
|
98
|
-
`context/current-
|
|
100
|
+
`context/current-ticket.md`
|
|
99
101
|
- state handed to the next session:
|
|
100
102
|
`context/handoff.md`
|
|
101
103
|
|
|
@@ -115,6 +117,7 @@ project", it outlives any session, and a reviewer should see it change:
|
|
|
115
117
|
```text
|
|
116
118
|
context/project-overview.md
|
|
117
119
|
context/features/
|
|
120
|
+
context/tickets/ # only when local Markdown is the ticket store
|
|
118
121
|
context/history.md
|
|
119
122
|
context/tracker.md
|
|
120
123
|
```
|
|
@@ -124,14 +127,14 @@ it belongs to one session on one machine, and committing it puts one person's
|
|
|
124
127
|
in-flight work in everybody's diff:
|
|
125
128
|
|
|
126
129
|
```text
|
|
127
|
-
context/current-
|
|
130
|
+
context/current-ticket.md
|
|
128
131
|
context/handoff.md
|
|
129
132
|
```
|
|
130
133
|
|
|
131
134
|
Two lines in `.gitignore` are the whole mechanism:
|
|
132
135
|
|
|
133
136
|
```text
|
|
134
|
-
context/current-
|
|
137
|
+
context/current-ticket.md
|
|
135
138
|
context/handoff.md
|
|
136
139
|
```
|
|
137
140
|
|
|
@@ -144,7 +147,8 @@ A team that would rather share workspace state — a single-machine project, or
|
|
|
144
147
|
handoff meant to be read by a colleague — can track them instead. Nothing in the
|
|
145
148
|
kit reads Git state to decide how to behave.
|
|
146
149
|
|
|
147
|
-
`context/tracker.md` is durable and tracked
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
150
|
+
`context/tracker.md` is durable and tracked when the project selects a store
|
|
151
|
+
other than local Markdown. With local Markdown, `context/tickets/` is durable
|
|
152
|
+
and tracked instead. Pathfinder's own repository ignores its tracker config,
|
|
153
|
+
because `context` is a directory in the installer's copy list and a committed
|
|
154
|
+
copy would ship Pathfinder's store selection to every new install.
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-pathfinder",
|
|
3
|
-
"version": "
|
|
4
|
-
"description": "Install
|
|
3
|
+
"version": "4.0.0",
|
|
4
|
+
"description": "Install Pathfinder's ticket-first, human-in-the-loop workflow kit into a Git repository.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"pathfinder",
|
|
7
7
|
"ai",
|
package/roles/developer.md
CHANGED
|
@@ -17,7 +17,8 @@ Do not load unrelated history, roadmap, Features, or repository areas by default
|
|
|
17
17
|
|
|
18
18
|
## Use
|
|
19
19
|
|
|
20
|
-
- `
|
|
20
|
+
- `ticket` — its load action to load work, start action to implement it, and
|
|
21
|
+
complete action to record work the human accepted.
|
|
21
22
|
- Use the project's existing build, test, and verification commands as needed.
|
|
22
23
|
|
|
23
24
|
## Rules
|
package/roles/planner.md
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: planner
|
|
3
|
-
description:
|
|
3
|
+
description: Discovers project direction and turns it into implementable Features and tickets.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Planner
|
|
7
7
|
|
|
8
8
|
## Responsibility
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
implement.
|
|
10
|
+
Discover project direction, turn approved direction into clear Feature specs,
|
|
11
|
+
and slice those Features into tickets another session can implement.
|
|
12
12
|
|
|
13
13
|
## Context
|
|
14
14
|
|
|
@@ -18,8 +18,10 @@ Inspect implementation code only when necessary to understand the work.
|
|
|
18
18
|
|
|
19
19
|
## Use
|
|
20
20
|
|
|
21
|
+
- `kickstart-pathfinder` to discover and initialize project context.
|
|
21
22
|
- `debate-me` when direction still needs pressure-testing.
|
|
22
23
|
- `to-specs` to create Feature specs.
|
|
24
|
+
- `to-tickets` to slice one approved Feature into executable tickets.
|
|
23
25
|
|
|
24
26
|
## Rules
|
|
25
27
|
|
|
@@ -33,6 +35,6 @@ Inspect implementation code only when necessary to understand the work.
|
|
|
33
35
|
|
|
34
36
|
## Finish
|
|
35
37
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
38
|
+
Finish at the invoked skill's stop condition: approved project context, Feature
|
|
39
|
+
specs, or a ticket graph. Identify unresolved human decisions and stop before
|
|
40
|
+
implementation.
|
package/roles/tester.md
CHANGED
|
@@ -20,7 +20,7 @@ Do not rely on the developer's summary as proof.
|
|
|
20
20
|
|
|
21
21
|
## Use
|
|
22
22
|
|
|
23
|
-
- `
|
|
23
|
+
- `ticket` — its review action, to verify implemented work.
|
|
24
24
|
- Use the project's existing test commands and relevant testing tools.
|
|
25
25
|
|
|
26
26
|
## Rules
|
|
@@ -29,9 +29,9 @@ Use Debug Issue when there is a concrete unexpected behavior such as:
|
|
|
29
29
|
|
|
30
30
|
Do not use it merely because implementation work is difficult.
|
|
31
31
|
|
|
32
|
-
If the task is planned
|
|
32
|
+
If the task is planned construction, use `/ticket start`.
|
|
33
33
|
|
|
34
|
-
If the goal is reviewing completed implementation for possible defects, use `/
|
|
34
|
+
If the goal is reviewing completed implementation for possible defects, use `/ticket review`.
|
|
35
35
|
|
|
36
36
|
If the real question is broad understanding of the repository, use `learn-codebase`.
|
|
37
37
|
|
|
@@ -202,8 +202,8 @@ It does not:
|
|
|
202
202
|
|
|
203
203
|
* implement unrelated feature scope
|
|
204
204
|
* perform a general repository review
|
|
205
|
-
* replace `/
|
|
206
|
-
* replace `/
|
|
205
|
+
* replace `/ticket review`
|
|
206
|
+
* replace `/ticket complete`
|
|
207
207
|
* silently change architecture or dependencies
|
|
208
208
|
* turn debugging into opportunistic refactoring
|
|
209
209
|
* hide uncertainty behind a successful-looking workaround
|
|
@@ -7,6 +7,12 @@ description: Discover and initialize a new or existing project without writing p
|
|
|
7
7
|
|
|
8
8
|
Use this skill to turn an idea or existing repository into durable, human-approved project context.
|
|
9
9
|
|
|
10
|
+
## Assumed role
|
|
11
|
+
|
|
12
|
+
Unless the human explicitly activated a role, assume `planner` for this
|
|
13
|
+
invocation: read `roles/planner.md` and follow it. An explicit role overrides
|
|
14
|
+
this default. A role narrows responsibility and never grants human authority.
|
|
15
|
+
|
|
10
16
|
## Rules
|
|
11
17
|
|
|
12
18
|
- Do not install packages or write product code.
|
package/skills/quiz-me/SKILL.md
CHANGED
|
@@ -13,7 +13,7 @@ The goal is retrieval and diagnosis, not entertainment and not a long exam.
|
|
|
13
13
|
## Read First
|
|
14
14
|
|
|
15
15
|
1. The relevant lesson in `context/learning/lessons/`
|
|
16
|
-
2. `context/current-
|
|
16
|
+
2. `context/current-ticket.md`
|
|
17
17
|
3. Only the implementation or tests needed to verify answers
|
|
18
18
|
4. `context/learning/progress.md`
|
|
19
19
|
|
|
@@ -173,7 +173,7 @@ Use one of these:
|
|
|
173
173
|
* `debate-me` — when major product or technical decisions remain
|
|
174
174
|
* `prototype` — when the experience or technical assumption needs validation
|
|
175
175
|
* `to-specs` — when the direction is approved and ready to become feature files
|
|
176
|
-
* `/
|
|
176
|
+
* `/ticket load` — when the analysis applies to one already-planned ticket
|
|
177
177
|
* `learn-codebase` — when the user wants to understand their own repository instead
|
|
178
178
|
* no handoff — when the user only requested analysis
|
|
179
179
|
|
package/skills/role/SKILL.md
CHANGED
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: role
|
|
3
|
-
description:
|
|
3
|
+
description: Explicitly override the role Pathfinder's lifecycle would assume.
|
|
4
4
|
argument-hint: planner|developer|tester
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# Role
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
Explicitly activate exactly one role for the current session.
|
|
10
|
+
|
|
11
|
+
Normal lifecycle skills assume their responsible role automatically. Use this
|
|
12
|
+
skill only when the human wants to override that default or inspect/debug work
|
|
13
|
+
under a particular responsibility boundary.
|
|
10
14
|
|
|
11
15
|
The human names it, for example:
|
|
12
16
|
|
|
@@ -27,6 +31,8 @@ The human names it, for example:
|
|
|
27
31
|
## Rules
|
|
28
32
|
|
|
29
33
|
- Activate only the role the human named.
|
|
34
|
+
- The explicit role overrides a lifecycle skill's automatic default for the
|
|
35
|
+
rest of the current session/conversation context.
|
|
30
36
|
- Read only that role file.
|
|
31
37
|
- Do not start the role's work.
|
|
32
38
|
- Do not write project state just to remember the role.
|
|
@@ -1,42 +1,62 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: setup-tracker
|
|
3
|
-
description:
|
|
3
|
+
description: Choose the canonical ticket store when it is not local Markdown.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Setup Tracker
|
|
7
7
|
|
|
8
|
-
Configure a
|
|
8
|
+
Configure a ticket store only when the human asks.
|
|
9
9
|
|
|
10
|
-
Pathfinder works normally without one
|
|
10
|
+
Pathfinder works normally without one: with no configuration, tickets are local
|
|
11
|
+
Markdown files under `context/tickets/`. That is already a store, and for many
|
|
12
|
+
projects it is the right one. This skill is for projects whose tickets belong
|
|
13
|
+
somewhere else instead.
|
|
11
14
|
|
|
12
15
|
## Process
|
|
13
16
|
|
|
14
|
-
1. Ask where
|
|
17
|
+
1. Ask where tickets should live:
|
|
15
18
|
- GitHub Issues
|
|
16
19
|
- local Markdown files
|
|
17
|
-
- another tracker the human describes
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
- another tracker the human describes — Jira, Linear, Azure DevOps, or
|
|
21
|
+
something internal
|
|
22
|
+
2. Ask only for the information needed to use that store.
|
|
23
|
+
3. Say plainly what the choice means: that store becomes the only place the
|
|
24
|
+
project's tickets exist. Moving to a different one later is a deliberate
|
|
25
|
+
human migration, and nothing moves tickets between stores automatically.
|
|
22
26
|
4. Create a proposed `context/tracker.md` naming, at minimum:
|
|
23
|
-
- the
|
|
24
|
-
- the
|
|
25
|
-
- how a
|
|
26
|
-
recognises the item it published last time
|
|
27
|
+
- the store and how an agent reaches it
|
|
28
|
+
- where tickets are within it, when that is a choice the store offers
|
|
29
|
+
- how a ticket carries its key, so a later run finds the ticket it created
|
|
27
30
|
5. Show it to the human.
|
|
28
31
|
6. Write it only after approval.
|
|
29
32
|
|
|
30
33
|
If `context/tracker.md` already exists, modify only the requested settings.
|
|
31
34
|
|
|
35
|
+
## The key
|
|
36
|
+
|
|
37
|
+
A ticket's key is `NN.TT` — the parent Feature number and the ticket number
|
|
38
|
+
within it. In the local Markdown store it is the filename. In any other store
|
|
39
|
+
the config has to say what carries it: a marker in the item body, a recorded
|
|
40
|
+
issue number, a field the tracker offers.
|
|
41
|
+
|
|
42
|
+
Which one is the store's business. What the kit requires is only the property —
|
|
43
|
+
a later session must be able to find the ticket by its key, because blocker
|
|
44
|
+
edges name keys and nothing else.
|
|
45
|
+
|
|
46
|
+
Ask for it explicitly. A config that cannot answer this is not finished.
|
|
47
|
+
|
|
32
48
|
## Rules
|
|
33
49
|
|
|
34
|
-
- Do not
|
|
50
|
+
- Do not create tickets. This skill configures the store and nothing else.
|
|
35
51
|
- Do not create labels, tags, or tracker conventions unless requested.
|
|
36
52
|
- Do not add dependencies or tracker-specific code.
|
|
37
|
-
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
53
|
+
- The configured store is canonical. There is one ticket artifact, and no copy
|
|
54
|
+
of it in the repository.
|
|
55
|
+
- Feature specs are not tickets. They stay in the repository whatever the store.
|
|
56
|
+
- Configuration is always optional. Its absence selects the local Markdown
|
|
57
|
+
store, so never write a placeholder config.
|
|
58
|
+
|
|
59
|
+
Creating and updating tickets belongs to `to-tickets` and the ticket lifecycle,
|
|
60
|
+
not here.
|
|
41
61
|
|
|
42
62
|
Stop after configuration.
|
|
@@ -13,7 +13,7 @@ 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/current-
|
|
16
|
+
1. `context/current-ticket.md`, and the ticket it names
|
|
17
17
|
2. The source feature spec under `context/features/`
|
|
18
18
|
3. `context/project-overview.md`
|
|
19
19
|
4. The current branch, working tree status, and focused diff
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ticket
|
|
3
|
+
description: Run one action of the ticket delivery loop — load, start, review, or complete.
|
|
4
|
+
argument-hint: load|start|review|complete
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Ticket
|
|
8
|
+
|
|
9
|
+
The delivery loop, as one skill. The human names the action:
|
|
10
|
+
|
|
11
|
+
`/ticket load <ticket>`
|
|
12
|
+
`/ticket start`
|
|
13
|
+
`/ticket review`
|
|
14
|
+
`/ticket complete`
|
|
15
|
+
|
|
16
|
+
## Process
|
|
17
|
+
|
|
18
|
+
1. Take the action from the invocation.
|
|
19
|
+
If none was given, list the four actions below and stop.
|
|
20
|
+
If it is not one of the four, say so, list them, and stop.
|
|
21
|
+
2. Read only `skills/ticket/actions/<action>.md` and follow it exactly.
|
|
22
|
+
|
|
23
|
+
## Actions
|
|
24
|
+
|
|
25
|
+
- `load` — prepare one ticket for execution. Resolves the ticket store, reads
|
|
26
|
+
the ticket and its parent Feature spec, verifies every blocker, loads the
|
|
27
|
+
minimum context the ticket names, and writes the session's workspace state.
|
|
28
|
+
- `start` — implement the loaded ticket, restating the pre-implementation
|
|
29
|
+
summary before editing anything.
|
|
30
|
+
- `review` — verify implemented work against the ticket and its parent Feature,
|
|
31
|
+
and report findings. It changes no implementation and accepts nothing.
|
|
32
|
+
- `complete` — complete work the human has accepted, through the project's
|
|
33
|
+
delivery workflow and its durable records, then name the tickets that are now
|
|
34
|
+
ready.
|
|
35
|
+
|
|
36
|
+
## Lifecycle
|
|
37
|
+
|
|
38
|
+
A ticket's status holds the durable lifecycle state named in
|
|
39
|
+
`context/ai-interaction.md`. It lives in the ticket store — see
|
|
40
|
+
`skills/ticket/store.md`, which is where the store and ticket identity are
|
|
41
|
+
defined:
|
|
42
|
+
|
|
43
|
+
`Proposed` → `Ready` → `In Progress` → `Complete`
|
|
44
|
+
|
|
45
|
+
`Cancelled` and `Superseded` are terminal alternatives.
|
|
46
|
+
|
|
47
|
+
- `load` writes `Proposed` → `Ready`.
|
|
48
|
+
- `start` writes `Ready` → `In Progress`.
|
|
49
|
+
- `complete` writes `Complete`.
|
|
50
|
+
- `review` writes no status. Review is workflow activity, not lifecycle state.
|
|
51
|
+
|
|
52
|
+
The parent Feature's status is derived from its tickets, never maintained by
|
|
53
|
+
hand. `start` and `complete` are the only actions that write it, and each writes
|
|
54
|
+
it only as a consequence of the ticket transition it just made.
|
|
55
|
+
|
|
56
|
+
`context/current-ticket.md` is transient workspace state and records no status.
|
|
57
|
+
|
|
58
|
+
## Rules
|
|
59
|
+
|
|
60
|
+
- Run the one action the human named. Do not continue into the next one.
|
|
61
|
+
- Read only that action's file. The other three are not context for this work.
|
|
62
|
+
- One ticket at a time. A session that finishes a ticket stops there.
|
|
63
|
+
- Human authority is unchanged: approval, acceptance, merge, and release are
|
|
64
|
+
the human's, whichever action is running.
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Ticket: Complete
|
|
2
|
+
|
|
3
|
+
Invoking this action is the human's acceptance of the ticket. Do not ask for
|
|
4
|
+
acceptance again.
|
|
5
|
+
|
|
6
|
+
## Assumed role
|
|
7
|
+
|
|
8
|
+
Unless the human explicitly activated a role, assume `developer` for this
|
|
9
|
+
invocation: read `roles/developer.md` and follow it. An explicit role overrides
|
|
10
|
+
this default. A role narrows responsibility and never grants human authority.
|
|
11
|
+
|
|
12
|
+
Acceptance of the ticket is not approval of the delivery steps below. Each one
|
|
13
|
+
that the project's documented workflow gates is still asked for.
|
|
14
|
+
|
|
15
|
+
1. Run the project's required final checks.
|
|
16
|
+
2. Follow the documented Git, merge, version, release, and deployment workflow.
|
|
17
|
+
Ask for approval where it requires it. If that workflow is undocumented or
|
|
18
|
+
`TBD`, stop and ask rather than choosing one.
|
|
19
|
+
3. Mark the ticket `Complete` in the store, closing it where the store has a
|
|
20
|
+
closed state. `skills/ticket/store.md` says how that store is written.
|
|
21
|
+
4. Derive the parent Feature's status: when every ticket of that Feature is
|
|
22
|
+
`Complete`, `Cancelled`, or `Superseded`, and at least one is `Complete`, the
|
|
23
|
+
Feature becomes `Complete`. Otherwise leave it exactly as it is. Read the
|
|
24
|
+
sibling tickets' status from the store for this and nothing else. The Feature
|
|
25
|
+
spec is in the repository, and its `## Status` is the only field to write.
|
|
26
|
+
5. Add a compact entry to `context/history.md` when the Feature completed at
|
|
27
|
+
step 4. A ticket that leaves its Feature unfinished is an increment, not a
|
|
28
|
+
completed outcome, and the durable record is per Feature.
|
|
29
|
+
Create the file from `templates/history.template.md` if it does not exist.
|
|
30
|
+
6. Clear or update `context/current-ticket.md`. Do nothing if it does not exist.
|
|
31
|
+
7. Report the tickets that are now ready — see Next below — and let the human
|
|
32
|
+
choose. Do not load one.
|
|
33
|
+
|
|
34
|
+
## Next
|
|
35
|
+
|
|
36
|
+
A ticket became ready when this completion satisfied its last blocker.
|
|
37
|
+
|
|
38
|
+
Read the sibling tickets' status and blockers from the store, and report every
|
|
39
|
+
ticket whose own status is `Proposed` or `Ready` and whose blockers are now all
|
|
40
|
+
`Complete`.
|
|
41
|
+
|
|
42
|
+
Report each by key and title. When none is ready, say so, and say whether that
|
|
43
|
+
is because the Feature is finished or because the remaining tickets are blocked
|
|
44
|
+
by something else.
|
|
45
|
+
|
|
46
|
+
Do not implement the next ticket, and do not decide which one it is.
|
|
47
|
+
|
|
48
|
+
Do not re-review accepted work unless final verification exposes a new problem.
|
|
49
|
+
|
|
50
|
+
Do not claim completion if required checks or delivery steps failed.
|