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
package/src/install.mjs
CHANGED
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
import { copyFileSync, existsSync, mkdirSync, readFileSync, readdirSync, statSync, writeFileSync } from "node:fs";
|
|
17
17
|
import { dirname, join, relative, sep } from "node:path";
|
|
18
18
|
|
|
19
|
-
import { COPY_LIST, isExcluded } from "./kit.mjs";
|
|
19
|
+
import { COPY_LIST, isExcluded, neverShips } from "./kit.mjs";
|
|
20
20
|
import {
|
|
21
21
|
ADAPTER_STATE,
|
|
22
22
|
adapterPath,
|
|
@@ -43,6 +43,10 @@ export function planInstall(kitRoot, targetRoot, { force = false } = {}) {
|
|
|
43
43
|
for (const entry of COPY_LIST) {
|
|
44
44
|
for (const source of walkFiles(join(kitRoot, entry))) {
|
|
45
45
|
const relativePath = relative(kitRoot, source).split(sep).join("/");
|
|
46
|
+
// Filtered here rather than in walkFiles, which sees basenames only and
|
|
47
|
+
// would have to guess whether a `tracker.md` is *the* one.
|
|
48
|
+
if (neverShips(relativePath)) continue;
|
|
49
|
+
|
|
46
50
|
const destination = join(targetRoot, relativePath);
|
|
47
51
|
const exists = existsSync(destination);
|
|
48
52
|
|
package/src/kickstart-prompt.mjs
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* This used to be one hardcoded string naming a file path, and that was right
|
|
5
5
|
* for exactly as long as Pathfinder configured nothing. Once a run can generate
|
|
6
6
|
* native adapters, the path form is no longer the best answer for someone who
|
|
7
|
-
* just watched
|
|
7
|
+
* just watched the whole kit be installed into their harness — it is the answer
|
|
8
8
|
* for someone whose tool cannot discover them.
|
|
9
9
|
*
|
|
10
10
|
* A pure function of the selection, deliberately: no filesystem, no detection,
|
package/src/kit.mjs
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
import { existsSync, readFileSync } from "node:fs";
|
|
11
|
-
import { dirname, join, resolve } from "node:path";
|
|
11
|
+
import { dirname, join, relative, resolve, sep } from "node:path";
|
|
12
12
|
import { fileURLToPath } from "node:url";
|
|
13
13
|
|
|
14
14
|
const HERE = dirname(fileURLToPath(import.meta.url));
|
|
@@ -49,6 +49,75 @@ export function isExcluded(basename) {
|
|
|
49
49
|
return EXCLUDED.has(basename) || basename.startsWith("._");
|
|
50
50
|
}
|
|
51
51
|
|
|
52
|
+
/**
|
|
53
|
+
* Kit files that are deliberately not part of the kit, by kit-relative path.
|
|
54
|
+
*
|
|
55
|
+
* A different idea from EXCLUDED above, and kept separate for that reason.
|
|
56
|
+
* Those are OS and editor droppings that were never anybody's file. These are
|
|
57
|
+
* real, hand-written files that live inside a copy-list directory and must
|
|
58
|
+
* still never reach a destination project.
|
|
59
|
+
*
|
|
60
|
+
* All three are this repository's own working state, and every one of them
|
|
61
|
+
* would be actively wrong in somebody else's project.
|
|
62
|
+
*
|
|
63
|
+
* `context/tracker.md` is the original case. Work Tracking's off switch is the
|
|
64
|
+
* *absence* of that file in a destination project, so shipping this
|
|
65
|
+
* repository's own copy would hand every new project a configuration naming a
|
|
66
|
+
* tracker it does not own, pointing at a spec directory it does not have, with
|
|
67
|
+
* the off switch already defeated on first install.
|
|
68
|
+
*
|
|
69
|
+
* `context/current-feature.md` and `context/handoff.md` are transient session
|
|
70
|
+
* state, and they are here for the same reason one step further on: the kit
|
|
71
|
+
* stopped shipping a blank `current-feature.md` stencil, because `load-feature`
|
|
72
|
+
* writes the real one on first use and a placeholder is just a file a reader
|
|
73
|
+
* has to recognise as empty. Having stopped shipping the blank one, the thing
|
|
74
|
+
* to guard against is shipping a *filled-in* one — a destination project
|
|
75
|
+
* opening its first session to a note about whichever feature a Pathfinder
|
|
76
|
+
* maintainer had loaded on the day of the release.
|
|
77
|
+
*
|
|
78
|
+
* `context` is a *directory* entry in the copy list, so anything placed beneath
|
|
79
|
+
* it ships by default. Making the invariant enforced rather than intended is
|
|
80
|
+
* the same move `check_no_junk_tracked` made: an ignore rule is advisory, one
|
|
81
|
+
* `git add -f` defeats it, and `stage-kit.mjs` copies from the working tree
|
|
82
|
+
* without consulting it at all.
|
|
83
|
+
*
|
|
84
|
+
* Matched on the kit-relative path, never the basename — a project's own
|
|
85
|
+
* `tracker.md` somewhere else is not this file and must not be caught by it.
|
|
86
|
+
*/
|
|
87
|
+
const NEVER_SHIPS = new Set([
|
|
88
|
+
"context/tracker.md",
|
|
89
|
+
"context/current-feature.md",
|
|
90
|
+
"context/handoff.md",
|
|
91
|
+
]);
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Is this kit-relative path one the kit must never hand over?
|
|
95
|
+
*
|
|
96
|
+
* @param {string} relativePath forward-slashed, relative to the kit root
|
|
97
|
+
*/
|
|
98
|
+
export function neverShips(relativePath) {
|
|
99
|
+
return NEVER_SHIPS.has(relativePath);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* A `cpSync` filter that drops never-ships files from a recursive copy.
|
|
104
|
+
*
|
|
105
|
+
* Lives here rather than inline in `stage-kit.mjs` so the staging path and its
|
|
106
|
+
* test run the same code. A test that rebuilds the predicate proves only that
|
|
107
|
+
* `cpSync` honours `filter`; it cannot catch the path arithmetic below going
|
|
108
|
+
* wrong, which is the part with anything to get wrong in it.
|
|
109
|
+
*
|
|
110
|
+
* `cpSync` hands the filter absolute paths and calls it for the copy root
|
|
111
|
+
* itself, so the root resolves to `""` and is kept — filtering a directory out
|
|
112
|
+
* would take its whole subtree with it.
|
|
113
|
+
*
|
|
114
|
+
* @param {string} rootDir absolute path the kit-relative paths are relative to
|
|
115
|
+
* @returns {(source: string) => boolean} true to copy, false to skip
|
|
116
|
+
*/
|
|
117
|
+
export function neverShipsFilter(rootDir) {
|
|
118
|
+
return (source) => !neverShips(relative(rootDir, source).split(sep).join("/"));
|
|
119
|
+
}
|
|
120
|
+
|
|
52
121
|
const PACKAGE_ROOT = resolve(HERE, "..");
|
|
53
122
|
|
|
54
123
|
/**
|
|
@@ -2,98 +2,42 @@
|
|
|
2
2
|
|
|
3
3
|
## Status
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
## Overview
|
|
8
|
-
|
|
9
|
-
Describe the smallest coherent outcome, where it fits, and why it matters.
|
|
10
|
-
|
|
11
|
-
## Problem
|
|
12
|
-
|
|
13
|
-
- What is missing, risky, confusing, inaccessible, unreliable, or inefficient?
|
|
14
|
-
- Who or what is affected?
|
|
15
|
-
- Why does this matter now?
|
|
5
|
+
Proposed
|
|
16
6
|
|
|
17
7
|
## Goal
|
|
18
8
|
|
|
19
|
-
|
|
9
|
+
[One clear user-visible or system-verifiable outcome.]
|
|
10
|
+
|
|
11
|
+
## Context
|
|
20
12
|
|
|
21
|
-
|
|
13
|
+
Include only what materially helps someone implement this Feature.
|
|
22
14
|
|
|
23
|
-
-
|
|
15
|
+
- Read: `[specific files, sections, or systems]`
|
|
16
|
+
- Relevant area: `[path or component]`
|
|
17
|
+
- Avoid: `[unrelated area, if useful]`
|
|
24
18
|
|
|
25
19
|
## Requirements
|
|
26
20
|
|
|
27
|
-
-
|
|
28
|
-
-
|
|
29
|
-
-
|
|
30
|
-
- Include relevant failure, permission, loading, empty, retry, responsive, accessibility, operational, or compatibility states only when applicable.
|
|
21
|
+
- `[required behavior]`
|
|
22
|
+
- `[important constraint]`
|
|
23
|
+
- `[relevant edge or failure behavior, when applicable]`
|
|
31
24
|
|
|
32
25
|
## Out of Scope
|
|
33
26
|
|
|
34
|
-
-
|
|
35
|
-
- Later feature, if known
|
|
36
|
-
- Unrelated refactors, dependencies, or polish
|
|
37
|
-
|
|
38
|
-
## Experience or Operational Notes — When Applicable
|
|
39
|
-
|
|
40
|
-
- User interaction, system behavior, responsive behavior, accessibility, observability, performance, security, or operational expectations.
|
|
41
|
-
|
|
42
|
-
## Technical Notes
|
|
43
|
-
|
|
44
|
-
Likely areas:
|
|
45
|
-
|
|
46
|
-
- `[specific path or bounded area]`
|
|
47
|
-
|
|
48
|
-
Implementation constraints:
|
|
49
|
-
|
|
50
|
-
- Follow project context and approved prototype direction.
|
|
51
|
-
- Do not silently resolve open architecture decisions.
|
|
52
|
-
- Keep prototype and production code boundaries explicit.
|
|
53
|
-
|
|
54
|
-
## Context Boundary
|
|
55
|
-
|
|
56
|
-
Read:
|
|
57
|
-
|
|
58
|
-
- `[specific context and code]`
|
|
59
|
-
|
|
60
|
-
Avoid loading:
|
|
61
|
-
|
|
62
|
-
- `[unrelated systems, old specs, generated output]`
|
|
63
|
-
|
|
64
|
-
Split this feature further if its required context is not focused enough for reliable implementation and verification.
|
|
27
|
+
- `[explicit exclusion]`
|
|
65
28
|
|
|
66
29
|
## Delivery Chunks
|
|
67
30
|
|
|
68
|
-
1. `[stable, verifiable increment]`
|
|
69
|
-
2. `[
|
|
70
|
-
3. `[optional stable increment]`
|
|
31
|
+
1. `[small, stable, verifiable increment]`
|
|
32
|
+
2. `[next increment, if needed]`
|
|
71
33
|
|
|
72
|
-
|
|
34
|
+
Use one chunk when the Feature is already small.
|
|
73
35
|
|
|
74
36
|
## Acceptance Criteria
|
|
75
37
|
|
|
76
|
-
-
|
|
77
|
-
-
|
|
78
|
-
- Applicable quality requirements are met.
|
|
79
|
-
- Required automated/manual checks pass.
|
|
80
|
-
- The work can be reviewed independently.
|
|
81
|
-
|
|
82
|
-
## Verification
|
|
83
|
-
|
|
84
|
-
- Manual or operational checks:
|
|
85
|
-
- Automated checks:
|
|
86
|
-
- Edge cases:
|
|
87
|
-
- Quality checks:
|
|
88
|
-
|
|
89
|
-
## Learning Targets
|
|
90
|
-
|
|
91
|
-
- Concepts worth explaining after completion:
|
|
92
|
-
- Diagram or demonstration opportunity:
|
|
93
|
-
- Quiz ideas:
|
|
38
|
+
- `[observable result proving the Feature works]`
|
|
39
|
+
- `[important verification result]`
|
|
94
40
|
|
|
95
|
-
##
|
|
41
|
+
## Notes / Decisions
|
|
96
42
|
|
|
97
|
-
-
|
|
98
|
-
- Suggested branch, when applicable: `[project naming convention]`
|
|
99
|
-
- Suggested commit, when applicable: `[project convention]`
|
|
43
|
+
- `[Feature-specific dependency, approved decision, constraint, or None]`
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# Project History
|
|
2
|
+
|
|
3
|
+
Compact record of completed work.
|
|
4
|
+
|
|
5
|
+
## Completed
|
|
6
|
+
|
|
7
|
+
### [YYYY-MM-DD] — [Feature or milestone]
|
|
8
|
+
|
|
9
|
+
- Outcome: `[what changed for the project/user]`
|
|
10
|
+
- Verification: `[brief result or evidence pointer]`
|
|
11
|
+
- Commit/PR: `[sha, PR, or release reference]`
|
|
12
|
+
- Follow-up: `[only if something remains, otherwise none]`
|
|
@@ -1,71 +1,42 @@
|
|
|
1
1
|
# Lesson — [Feature Name]
|
|
2
2
|
|
|
3
3
|
- Date:
|
|
4
|
-
-
|
|
5
|
-
-
|
|
6
|
-
- Commit or diff range:
|
|
7
|
-
- Difficulty:
|
|
8
|
-
- Estimated review time:
|
|
4
|
+
- Feature:
|
|
5
|
+
- Commit/diff:
|
|
9
6
|
|
|
10
|
-
##
|
|
7
|
+
## What Changed
|
|
11
8
|
|
|
12
|
-
|
|
9
|
+
Explain what was implemented and why it matters.
|
|
13
10
|
|
|
14
|
-
##
|
|
11
|
+
## Mental Model
|
|
15
12
|
|
|
16
|
-
Explain the
|
|
13
|
+
Explain the simplest useful way to understand the Feature.
|
|
17
14
|
|
|
18
|
-
|
|
15
|
+
Include a small diagram only when it helps.
|
|
19
16
|
|
|
20
|
-
|
|
17
|
+
## How It Works
|
|
21
18
|
|
|
22
|
-
|
|
19
|
+
Trace one representative flow through the implementation.
|
|
23
20
|
|
|
24
|
-
|
|
25
|
-
| --- | --- | --- |
|
|
21
|
+
## Important Files
|
|
26
22
|
|
|
27
|
-
|
|
23
|
+
| File | Responsibility |
|
|
24
|
+
| --- | --- |
|
|
28
25
|
|
|
29
|
-
|
|
26
|
+
Include only files that materially help understanding.
|
|
30
27
|
|
|
31
|
-
|
|
32
|
-
- Evidence in the repository
|
|
33
|
-
- Benefit
|
|
34
|
-
- Cost
|
|
35
|
-
- Credible alternative
|
|
36
|
-
- When the alternative would be better
|
|
28
|
+
## Key Decisions
|
|
37
29
|
|
|
38
|
-
|
|
30
|
+
- `[important decision and why it was made]`
|
|
39
31
|
|
|
40
|
-
|
|
32
|
+
Include only decisions worth remembering.
|
|
41
33
|
|
|
42
|
-
##
|
|
34
|
+
## Concepts to Retain
|
|
43
35
|
|
|
44
|
-
|
|
36
|
+
- `[transferable concept]`
|
|
45
37
|
|
|
46
|
-
|
|
38
|
+
## Check Your Understanding
|
|
47
39
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
### Error and edge states
|
|
53
|
-
|
|
54
|
-
## 8. Production-Scale Gap
|
|
55
|
-
|
|
56
|
-
What would need to change for higher traffic, larger datasets, multiple teams, stricter security, or real-time collaboration?
|
|
57
|
-
|
|
58
|
-
## 9. Interview Preparation
|
|
59
|
-
|
|
60
|
-
- Likely question:
|
|
61
|
-
- Strong answer outline:
|
|
62
|
-
- Follow-up question:
|
|
63
|
-
- Vocabulary to use carefully:
|
|
64
|
-
|
|
65
|
-
## 10. Check Your Understanding
|
|
66
|
-
|
|
67
|
-
Three short retrieval questions. Do not include answers here.
|
|
68
|
-
|
|
69
|
-
## 11. Suggested Next Action
|
|
70
|
-
|
|
71
|
-
Choose one: quiz, challenge, architecture lesson, spaced review, or no further work.
|
|
40
|
+
1. `[question]`
|
|
41
|
+
2. `[question]`
|
|
42
|
+
3. `[question]`
|
|
@@ -1,129 +1,108 @@
|
|
|
1
1
|
# Project Overview
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Durable, project-wide context.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Keep this concise. Feature scope, active work, history, and temporary
|
|
6
|
+
planning belong elsewhere.
|
|
6
7
|
|
|
7
|
-
|
|
8
|
-
- Stage: `[idea / prototype / MVP / production / maintenance]`
|
|
9
|
-
- Repo type: `[new / existing / application / library / service / monorepo / other]`
|
|
10
|
-
- Primary goal: `[success definition]`
|
|
11
|
-
- Prototype status: `[not required / recommended / in progress / approved / rejected / TBD]`
|
|
8
|
+
Two words keep an unmade decision visible:
|
|
12
9
|
|
|
13
|
-
|
|
10
|
+
- `TBD` — a human decision is still required
|
|
11
|
+
- `None` — considered and intentionally excluded
|
|
14
12
|
|
|
15
|
-
|
|
13
|
+
Leave nothing blank. A blank field is indistinguishable from an abandoned one.
|
|
16
14
|
|
|
17
|
-
|
|
18
|
-
- `None` — intentionally excluded
|
|
19
|
-
- `N/A` — not applicable
|
|
20
|
-
- `Deferred` — intentionally postponed
|
|
15
|
+
## Project
|
|
21
16
|
|
|
22
|
-
|
|
17
|
+
- Name: `[Project Name]`
|
|
18
|
+
- Stage: `[idea / prototype / MVP / production / maintenance]`
|
|
19
|
+
- Repo type: `[application / library / service / monorepo / other]`
|
|
20
|
+
- Primary goal: `[what success means]`
|
|
23
21
|
|
|
24
|
-
|
|
22
|
+
## Product
|
|
25
23
|
|
|
26
|
-
- `
|
|
27
|
-
-
|
|
28
|
-
-
|
|
24
|
+
- Problem: `[problem being solved]`
|
|
25
|
+
- Primary user: `[who it is for]`
|
|
26
|
+
- First useful outcome: `[smallest meaningful result]`
|
|
27
|
+
- Distinctive quality: `[what should make it good or different]`
|
|
28
|
+
- Avoid becoming: `[important anti-goal]`
|
|
29
29
|
|
|
30
|
-
|
|
30
|
+
## Scope
|
|
31
31
|
|
|
32
|
-
|
|
32
|
+
### In
|
|
33
33
|
|
|
34
|
-
-
|
|
35
|
-
- Primary user:
|
|
36
|
-
- First useful outcome:
|
|
37
|
-
- Distinctive quality:
|
|
38
|
-
- What this must avoid becoming:
|
|
34
|
+
- `[core outcome]`
|
|
39
35
|
|
|
40
|
-
|
|
36
|
+
### Out
|
|
41
37
|
|
|
42
|
-
|
|
38
|
+
- `[explicit non-goal]`
|
|
43
39
|
|
|
44
|
-
|
|
40
|
+
## Requirements and Open Decisions
|
|
45
41
|
|
|
46
|
-
|
|
42
|
+
Record only what constrains the work. An open decision stays `TBD` until a
|
|
43
|
+
human resolves it.
|
|
47
44
|
|
|
48
|
-
|
|
45
|
+
| Type | Item | Notes |
|
|
46
|
+
| --- | --- | --- |
|
|
47
|
+
| Requirement | `[must be true]` | |
|
|
48
|
+
| Preference | `[desired but negotiable]` | |
|
|
49
|
+
| Constraint | `[limit or external obligation]` | |
|
|
50
|
+
| Open decision | `TBD` | |
|
|
51
|
+
|
|
52
|
+
## System
|
|
49
53
|
|
|
50
|
-
|
|
54
|
+
Record only important project-wide architecture and constraints.
|
|
51
55
|
|
|
52
|
-
- `[
|
|
56
|
+
- Architecture: `[short description or TBD]`
|
|
57
|
+
- Main components: `[components or TBD]`
|
|
58
|
+
- Constraints: `[important constraint or None]`
|
|
53
59
|
|
|
54
|
-
|
|
60
|
+
Optional flow:
|
|
55
61
|
|
|
56
62
|
```text
|
|
57
|
-
|
|
63
|
+
[input] -> [component] -> [result]
|
|
58
64
|
```
|
|
59
65
|
|
|
60
|
-
##
|
|
66
|
+
## Technology
|
|
61
67
|
|
|
62
|
-
|
|
68
|
+
The stack an agent must follow rather than choose. Keep the rows this project
|
|
69
|
+
actually has.
|
|
70
|
+
|
|
71
|
+
| Layer | Choice | Reason |
|
|
63
72
|
| --- | --- | --- |
|
|
64
|
-
|
|
|
65
|
-
|
|
|
66
|
-
|
|
|
67
|
-
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
| Layer | Choice | Reason | Status |
|
|
74
|
-
| --- | --- | --- | --- |
|
|
75
|
-
| Platform/runtime | `TBD` | | |
|
|
76
|
-
| Language(s) | `TBD` | | |
|
|
77
|
-
| UI/presentation | `TBD / N/A` | | |
|
|
78
|
-
| Backend/application layer | `TBD / None` | | |
|
|
79
|
-
| Data storage | `TBD / None` | | |
|
|
80
|
-
| Data access/ORM | `TBD / None` | | |
|
|
81
|
-
| Authentication | `TBD / None` | | |
|
|
82
|
-
| Authorization | `TBD / None` | | |
|
|
83
|
-
| API/integration style | `TBD / None` | | |
|
|
84
|
-
| State management | `TBD / N/A` | | |
|
|
85
|
-
| Testing | `TBD` | | |
|
|
86
|
-
| Build/package tooling | `TBD` | | |
|
|
87
|
-
| Deployment/runtime environment | `TBD` | | |
|
|
88
|
-
| Observability | `TBD / Deferred` | | |
|
|
89
|
-
| AI providers/models | `TBD / None` | | |
|
|
90
|
-
|
|
91
|
-
## Architecture
|
|
92
|
-
|
|
93
|
-
- Architecture style: `TBD`
|
|
94
|
-
- Repository shape: `TBD`
|
|
95
|
-
- Main boundaries/modules:
|
|
96
|
-
- Data/control flow:
|
|
97
|
-
- Important tradeoffs:
|
|
73
|
+
| Platform/runtime | `TBD` | |
|
|
74
|
+
| Language(s) | `TBD` | |
|
|
75
|
+
| UI/presentation | `TBD / None` | |
|
|
76
|
+
| Backend/application | `TBD / None` | |
|
|
77
|
+
| Data storage and access | `TBD / None` | |
|
|
78
|
+
| Auth | `TBD / None` | |
|
|
79
|
+
| Testing | `TBD` | |
|
|
80
|
+
| Build and package tooling | `TBD` | |
|
|
98
81
|
|
|
99
|
-
|
|
100
|
-
[path or module] # purpose
|
|
101
|
-
[path or module] # purpose
|
|
102
|
-
```
|
|
82
|
+
## Commands
|
|
103
83
|
|
|
104
|
-
|
|
84
|
+
The commands an agent runs to verify its own work.
|
|
105
85
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
86
|
+
```text
|
|
87
|
+
install: TBD
|
|
88
|
+
run/dev: TBD
|
|
89
|
+
test: TBD
|
|
90
|
+
lint/static analysis: TBD
|
|
91
|
+
build/package: TBD
|
|
92
|
+
```
|
|
113
93
|
|
|
114
94
|
## Delivery Workflow
|
|
115
95
|
|
|
116
96
|
| Area | Choice |
|
|
117
97
|
| --- | --- |
|
|
118
98
|
| Git workflow | `TBD` |
|
|
119
|
-
| Default
|
|
120
|
-
| Branch naming | `TBD /
|
|
99
|
+
| Default branch | `TBD` |
|
|
100
|
+
| Branch naming | `TBD / None` |
|
|
121
101
|
| Commit convention | `TBD / None` |
|
|
122
|
-
|
|
|
102
|
+
| Review policy | `TBD` |
|
|
123
103
|
| Merge strategy | `TBD` |
|
|
124
104
|
| CI/CD | `TBD / None` |
|
|
125
|
-
| Versioning | `TBD / None` |
|
|
126
|
-
| Changelog | `TBD / None` |
|
|
105
|
+
| Versioning and changelog | `TBD / None` |
|
|
127
106
|
| Release process | `TBD / None` |
|
|
128
107
|
|
|
129
108
|
## Environments and Integrations
|
|
@@ -133,14 +112,12 @@ Recommended and approved choices both live here. `debate-me` and `kickstart-path
|
|
|
133
112
|
| Local development | `TBD` | |
|
|
134
113
|
| Preview/staging | `TBD / None` | |
|
|
135
114
|
| Production | `TBD / None` | |
|
|
136
|
-
|
|
|
137
|
-
|
|
|
138
|
-
| External APIs/services | `TBD / None` | |
|
|
139
|
-
| Rate/cost limits | `TBD / N/A` | |
|
|
115
|
+
| Configuration and secrets | `TBD` | |
|
|
116
|
+
| External services/APIs | `TBD / None` | |
|
|
140
117
|
|
|
141
118
|
## Quality Priorities
|
|
142
119
|
|
|
143
|
-
Rank only what matters for this project.
|
|
120
|
+
Rank only what matters for this project, highest first.
|
|
144
121
|
|
|
145
122
|
1. `[priority]`
|
|
146
123
|
2. `[priority]`
|
|
@@ -149,63 +126,21 @@ Rank only what matters for this project.
|
|
|
149
126
|
| Concern | Target or decision |
|
|
150
127
|
| --- | --- |
|
|
151
128
|
| Correctness/reliability | `TBD` |
|
|
152
|
-
| Security/privacy | `TBD /
|
|
153
|
-
| Accessibility | `TBD /
|
|
154
|
-
| Performance | `TBD /
|
|
155
|
-
|
|
|
156
|
-
| Localization | `TBD / None` |
|
|
157
|
-
| Offline behavior | `TBD / N/A` |
|
|
158
|
-
|
|
159
|
-
## Core Domain Concepts
|
|
160
|
-
|
|
161
|
-
Describe durable concepts without assuming a language:
|
|
162
|
-
|
|
163
|
-
```text
|
|
164
|
-
Entity/Concept: Example
|
|
165
|
-
Required fields: id, name
|
|
166
|
-
Important states: draft, active, archived
|
|
167
|
-
Relationships: belongs to / contains / references
|
|
168
|
-
```
|
|
169
|
-
|
|
170
|
-
## Build, Test, and Run Commands
|
|
129
|
+
| Security/privacy | `TBD / None` |
|
|
130
|
+
| Accessibility | `TBD / None` |
|
|
131
|
+
| Performance | `TBD / None` |
|
|
132
|
+
| Supported platforms | `TBD / None` |
|
|
171
133
|
|
|
172
|
-
|
|
173
|
-
install: TBD
|
|
174
|
-
run/dev: TBD
|
|
175
|
-
test: TBD
|
|
176
|
-
lint/static analysis: TBD
|
|
177
|
-
build/package: TBD
|
|
178
|
-
other verification: TBD
|
|
179
|
-
```
|
|
134
|
+
## Durable Decisions
|
|
180
135
|
|
|
181
|
-
|
|
136
|
+
Decisions that outlive a Feature, including approved prototype direction and
|
|
137
|
+
anything a prototype proved must not reach production.
|
|
182
138
|
|
|
183
|
-
|
|
|
139
|
+
| Date | Decision | Reason |
|
|
184
140
|
| --- | --- | --- |
|
|
185
|
-
|
|
|
186
|
-
| 2 | Core experience/system | `[result]` |
|
|
187
|
-
| 3 | Real data/integration | `[result]` |
|
|
188
|
-
| 4 | Quality and release readiness | `[result]` |
|
|
141
|
+
| `[YYYY-MM-DD]` | `[decision]` | `[reason]` |
|
|
189
142
|
|
|
190
|
-
## Learning
|
|
143
|
+
## Learning
|
|
191
144
|
|
|
192
|
-
- What the human wants to understand:
|
|
145
|
+
- What the human wants to understand: `[topics or None]`
|
|
193
146
|
- Preferred lesson format: `[HTML / MDX / Markdown / existing docs system / TBD]`
|
|
194
|
-
- Quiz preferences:
|
|
195
|
-
- Topics to emphasize:
|
|
196
|
-
- Topics to avoid over-explaining:
|
|
197
|
-
|
|
198
|
-
## Durable Decisions
|
|
199
|
-
|
|
200
|
-
| Date | Decision | Reason | Status |
|
|
201
|
-
| --- | --- | --- | --- |
|
|
202
|
-
| `[YYYY-MM-DD]` | `[decision]` | `[reason]` | `[proposed / accepted / superseded]` |
|
|
203
|
-
|
|
204
|
-
## Things To Avoid
|
|
205
|
-
|
|
206
|
-
- Building before critical decisions are understood.
|
|
207
|
-
- Treating recommendations as approval.
|
|
208
|
-
- Silently resolving `TBD` items.
|
|
209
|
-
- Turning prototype shortcuts into production defaults.
|
|
210
|
-
- Over-documenting temporary implementation detail.
|
|
211
|
-
- Creating feature specs too large for a focused LLM context window.
|