forgetrail 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. package/CONTINUATION_PROMPT.md +42 -0
  2. package/INITIAL_PROMPT.md +214 -0
  3. package/LICENSE +201 -0
  4. package/README.md +198 -0
  5. package/TRACKING_SCHEMA.md +162 -0
  6. package/TRY_FORGETRAIL.md +78 -0
  7. package/WORKFLOW.md +921 -0
  8. package/content/AGENT_INTEGRATION_claude.md +38 -0
  9. package/content/AGENT_INTEGRATION_cursor.md +53 -0
  10. package/content/AGENT_INTEGRATION_generic.md +50 -0
  11. package/content/AGENT_INTEGRATION_grok.md +82 -0
  12. package/content/DEV_AUTOMATION_SCRIPTS.md +103 -0
  13. package/content/FORGETRAIL_LITE.md +1202 -0
  14. package/content/FORGETRAIL_LITE_UPDATES.md +13 -0
  15. package/content/FORGETRAIL_PROGRESS.md +26 -0
  16. package/content/GENESIS_SPEC_PROMPT.md +70 -0
  17. package/content/GENESIS_STUB.md +18 -0
  18. package/content/GREENFIELD_INTAKE.md +76 -0
  19. package/content/KICKOFF_WITHOUT_MCP.md +16 -0
  20. package/content/LITE_WORKFLOW_TRACKING.json +42 -0
  21. package/content/NEW_PROJECT_BOOTSTRAP.md +180 -0
  22. package/content/ONE_CLICK_DEV_SETUP.md +142 -0
  23. package/content/PLAN_MODE_PATTERNS.md +43 -0
  24. package/content/POCKETBASE_SCHEMA_SCRIPT.md +52 -0
  25. package/content/POST_BOOTSTRAP_USER_MESSAGE.md +51 -0
  26. package/content/SCAFFOLD_INSTALL.json +110 -0
  27. package/content/SESSION_RESUME_MCP.md +35 -0
  28. package/content/SYSTEM_HEALTH_CHECKS.md +131 -0
  29. package/content/USER_REPLY_FORMAT.md +41 -0
  30. package/content/cursor-rules/forgetrail-lessons-gate.mdc +30 -0
  31. package/content/cursor-rules/forgetrail-lessons-mcp.mdc +24 -0
  32. package/content/cursor-rules/forgetrail-no-trailer.mdc +49 -0
  33. package/content/cursor-rules/forgetrail-phase-status.mdc +61 -0
  34. package/content/cursor-rules/forgetrail-updates-log.mdc +30 -0
  35. package/content/cursor-rules/spec-completion.mdc +33 -0
  36. package/content/cursor-rules/specs-and-todo.mdc +26 -0
  37. package/content/cursor-rules/url-host-matching.mdc +31 -0
  38. package/content/cursor-rules/us-english.mdc +9 -0
  39. package/content/cursor-rules/user-facing-content.mdc +31 -0
  40. package/content/examples/GENESIS_SAMPLE_mars-habitat-roster.md +154 -0
  41. package/content/forgetrail-workspace-README.md +43 -0
  42. package/content/scripts/forgetrail-dev-launcher.mjs +208 -0
  43. package/content/scripts/forgetrail-env.mjs +51 -0
  44. package/content/scripts/setup-ollama.mjs +207 -0
  45. package/content/scripts/setup-pocketbase.mjs +133 -0
  46. package/content/scripts/test-ollama.mjs +71 -0
  47. package/content/scripts/test-pocketbase.mjs +110 -0
  48. package/content/skills/forgetrail/SKILL.md +92 -0
  49. package/docs/AUTOMATED_TESTING.md +269 -0
  50. package/docs/BLACK_HAT_REPORT.md +143 -0
  51. package/docs/BRAND_AND_PRODUCT.md +381 -0
  52. package/docs/BUGS.md +62 -0
  53. package/docs/BUSINESS_PLAN.md +256 -0
  54. package/docs/CODE_QUALITY.md +170 -0
  55. package/docs/CONTEXT_PROMPT.md +357 -0
  56. package/docs/DEPLOYMENT.md +181 -0
  57. package/docs/DESIGN_SYSTEM.md +414 -0
  58. package/docs/DEV_ESTIMATE.md +127 -0
  59. package/docs/FORGETRAIL_RENAME.md +193 -0
  60. package/docs/IDEAS.md +19 -0
  61. package/docs/MARKETING_GROWTH.md +301 -0
  62. package/docs/NAMING_EXPLORATION.md +406 -0
  63. package/docs/NPM.md +98 -0
  64. package/docs/PHASE_1_BRIEF.md +161 -0
  65. package/docs/README.md +75 -0
  66. package/docs/SPEC_FEATURE_TEMPLATE.md +155 -0
  67. package/docs/SPEC_UI_CHROME_NAV_TEMPLATE.md +48 -0
  68. package/docs/TECHNICAL_REFERENCE.md +836 -0
  69. package/docs/TEST_PLAN.md +467 -0
  70. package/docs/TODO.md +125 -0
  71. package/package.json +68 -0
  72. package/prompts/black-hat-audit.md +235 -0
  73. package/prompts/brand-copy-edit-pass.md +55 -0
  74. package/prompts/cialdini-marketing-audit.md +141 -0
  75. package/prompts/competitor-deep-dive.md +201 -0
  76. package/prompts/docs-alignment-audit.md +108 -0
  77. package/prompts/engineering-skill-library.md +75 -0
  78. package/prompts/landing-page-rewrite.md +63 -0
  79. package/prompts/microcopy-centralization.md +128 -0
  80. package/prompts/panel-usability-audit.md +197 -0
  81. package/prompts/personal-beta-outreach.md +195 -0
  82. package/prompts/pre-launch-audit.md +148 -0
  83. package/prompts/product-feedback-to-spec.md +76 -0
  84. package/prompts/propagate-to-forgetrail.md +315 -0
  85. package/prompts/user-facing-content-sync-audit.md +200 -0
  86. package/prompts/ux-cohesion-audit.md +165 -0
  87. package/scripts/ensure-lease.mjs +23 -0
  88. package/scripts/forgetrail-cli.mjs +85 -0
  89. package/scripts/install-forgetrail-lite.mjs +11 -0
  90. package/scripts/install-forgetrail.mjs +11 -0
  91. package/scripts/install-lib.mjs +115 -0
  92. package/scripts/install.mjs +163 -0
  93. package/scripts/link-global.mjs +100 -0
  94. package/scripts/mcp-lib.mjs +177 -0
  95. package/scripts/mcp-status.mjs +155 -0
  96. package/scripts/publish-gate.mjs +110 -0
  97. package/scripts/rename-to-forgetrail.mjs +273 -0
  98. package/workflow_tracking.json +124 -0
@@ -0,0 +1,162 @@
1
+ # workflow_tracking.json Schema Reference
2
+
3
+ This file documents how to read and update **`.forgetrail/workflow_tracking.json`** in customer project repos. (This ForgeTrail repo keeps a starter copy at **`workflow_tracking.json`** at the repo root for MCP `getInitialWorkflowTracking` — agents write the output to **`.forgetrail/workflow_tracking.json`** in the app repo.)
4
+
5
+ Agents should reference this when updating the tracking file.
6
+
7
+ ## Phase ID vocabulary (Lite vs MCP)
8
+
9
+ Both schemas describe the same seven lifecycle phases. **`scripts/forgetrail-dev-launcher.mjs`** maps either shape to the display names below.
10
+
11
+ | # | Lite `currentPhase` | MCP `currentPhase` | Display name |
12
+ |---|---------------------|--------------------|--------------|
13
+ | 1 | `1` | `1-architecture` | Plan |
14
+ | 2 | `2` | `2-scaffolding` | Build |
15
+ | 3 | `3` | `3-stabilization` | Stabilize |
16
+ | 4 | `4` | `4-feature-iteration` | Iterate |
17
+ | 5 | `5` | `5-refactoring` | Refine |
18
+ | 6 | `6` | `6-strategic-review` | Align |
19
+ | 7 | `7` | `7-hardening` | Harden |
20
+
21
+ **Lite (`schemaVersion: "lite-1"`):** numeric `currentPhase`; each phase has **`exitCriteria`** as `{ "flagName": true/false }`. Starter: **`FORGETRAIL_LITE.md`** §11.
22
+
23
+ **MCP / full starter:** string `currentPhase`; each phase has **`exitCriteriaMet`** and **`exitCriteriaRemaining`** string arrays. Starter: repo-root **`workflow_tracking.json`** via `getInitialWorkflowTracking`.
24
+
25
+ ## Top-Level Fields
26
+
27
+ ### `project`
28
+
29
+ Static metadata. Set once at project creation (except `status`, which flips at wrap).
30
+
31
+ ```json
32
+ {
33
+ "name": "My App",
34
+ "created": "2026-03-12",
35
+ "description": "One-sentence description",
36
+ "archetype": "product",
37
+ "status": "active"
38
+ }
39
+ ```
40
+
41
+ - **`archetype`** — `product` (default) | `internal-tool` | `one-shot`. Set during Phase 1 per **WORKFLOW.md §1d**. When the archetype is not `product`, **prune** non-applicable exit criteria from the phase arrays at bootstrap (e.g. drop payments/business-plan criteria for an internal tool; collapse phases 5–7 into a single polish-and-ship gate for a one-shot). Log the pruning in `decisions[]` so the removal reads as intentional. Do **not** leave inapplicable criteria in place and mark them "N/A" one by one — prune once instead.
42
+ - **`status`** — `active` (default) | `wrapped`. Set to `wrapped` when the project is finished or shelved, after running the **wrap protocol** (WORKFLOW.md §1e): sweep `gotchas[]` + `decisions[]` for generalizable lessons, run the propagation prompt (Harvest mode), add a final `sessions[]` entry with end state and handoff pointers.
43
+
44
+ ### `currentPhase`
45
+
46
+ String. One of: `1-architecture`, `2-scaffolding`, `3-stabilization`, `4-feature-iteration`, `5-refactoring`, `6-strategic-review`, `7-hardening`.
47
+
48
+ Note: Phases 4 and 5 can alternate. A project might go 4 -> 5 -> 4 -> 6 -> 4 -> 7. The tracking file reflects reality, not a strict linear path.
49
+
50
+ ### `phases`
51
+
52
+ Each phase has:
53
+
54
+ - `status`: `not_started` | `in_progress` | `completed` | `revisiting` (for phases you return to)
55
+ - `startedAt` / `completedAt`: ISO timestamps
56
+ - `exitCriteriaMet`: Array of strings (criteria that have been satisfied)
57
+ - `exitCriteriaRemaining`: Array of strings (criteria not yet met)
58
+ - `notes`: Array of `{ timestamp, text }` objects for anything worth recording during this phase
59
+
60
+ When Claude believes exit criteria are met, it moves items from `exitCriteriaRemaining` to `exitCriteriaMet` and proposes the phase transition.
61
+
62
+ ### `decisions`
63
+
64
+ Architectural and design decisions with rationale. **Start logging in Phase 1** alongside **`docs/PHASE_1_BRIEF.md`** so Phase 2 can begin without the Phase 1 chat. After Phase 2, this array stays aligned with **Key Architectural Decisions** in `CONTEXT_PROMPT.md` (which should be populated by merging the brief).
65
+
66
+ ```json
67
+ {
68
+ "id": "d1",
69
+ "timestamp": "2026-03-12T10:30:00",
70
+ "phase": "1-architecture",
71
+ "session": 1,
72
+ "decision": "Use PocketBase instead of filesystem storage",
73
+ "rationale": "Need multi-user support and real-time sync. Filesystem won't scale.",
74
+ "alternatives_considered": ["SQLite", "Supabase", "No database"],
75
+ "status": "active"
76
+ }
77
+ ```
78
+
79
+ `status` can be `active`, `superseded` (replaced by a later decision), or `revisit` (flagged for reconsideration). If superseded, add `superseded_by` field with the ID of the replacement decision.
80
+
81
+ ### `gotchas`
82
+
83
+ Issues, surprises, or traps encountered during development. These persist across sessions so the same mistake isn't repeated.
84
+
85
+ ```json
86
+ {
87
+ "timestamp": "2026-03-12T14:00:00",
88
+ "phase": "3-stabilization",
89
+ "session": 1,
90
+ "issue": "SvelteKit .env doesn't populate process.env",
91
+ "resolution": "Use $env/dynamic/private instead",
92
+ "category": "environment"
93
+ }
94
+ ```
95
+
96
+ Categories: `environment`, `integration`, `data-model`, `ui`, `performance`, `ai-output`, `security`, `tooling`, `other`.
97
+
98
+ ### `sessions`
99
+
100
+ Log of each session with what was accomplished and where it left off.
101
+
102
+ ```json
103
+ {
104
+ "session": 1,
105
+ "date": "2026-03-12",
106
+ "phasesWorked": ["1-architecture", "2-scaffolding"],
107
+ "accomplished": ["Confirmed tech stack", "Built full skeleton", "Imported 44 existing jobs"],
108
+ "leftOff": "App runs but env vars need fixing. Phase 3 next.",
109
+ "contextLimitHit": false,
110
+ "approximateLines": 3500
111
+ }
112
+ ```
113
+
114
+ ## Update Rules for Claude
115
+
116
+ 1. **After completing a task:** Update the relevant phase's `notes` and move any satisfied exit criteria.
117
+ 2. **After making a decision:** Add to `decisions` array with full rationale.
118
+ 3. **After hitting a gotcha:** Add to `gotchas` array immediately so it's captured.
119
+ 4. **At session end:** Add a session entry to `sessions` array.
120
+ 5. **At phase transition:** Update `currentPhase`, set `completedAt` on the old phase, `startedAt` on the new one.
121
+ 6. **When revisiting a phase:** Set status to `revisiting`, don't overwrite the original `completedAt`.
122
+
123
+ ## Custom Extensions
124
+
125
+ Projects may add custom fields to phases as needed. For example, `4-feature-iteration` has an `iterations` array for tracking feature-by-feature progress:
126
+
127
+ ```json
128
+ {
129
+ "feature": "DOCX tailoring",
130
+ "status": "complete",
131
+ "turnsSpent": 8,
132
+ "approach": "Programmatic placeholder replacement",
133
+ "notes": "LLM find/replace failed due to Word XML run splitting. Pivoted in turn 6."
134
+ }
135
+ ```
136
+
137
+ Add whatever fields make sense for your project. The schema is a starting point, not a cage.
138
+
139
+ ### `agentContext` (optional, top-level)
140
+
141
+ Record which agent stack drives the project and what native primitives are available:
142
+
143
+ ```json
144
+ {
145
+ "primaryAgent": "cursor-agent",
146
+ "supportsSubagents": true,
147
+ "supportsPlanMode": true,
148
+ "lastSessionId": "optional-host-session-id"
149
+ }
150
+ ```
151
+
152
+ ### `subagentRuns` (optional, per phase)
153
+
154
+ Optional array under a phase object to log parallel subagent work (especially Phase 4, 5, 7):
155
+
156
+ ```json
157
+ {
158
+ "id": "sa-7-security",
159
+ "description": "Black-hat audit via read-only subagent",
160
+ "outcome": "12 findings; 2 critical — synthesized into BLACK_HAT_REPORT.md"
161
+ }
162
+ ```
@@ -0,0 +1,78 @@
1
+ # Try ForgeTrail (no MCP required)
2
+
3
+ Prove ForgeTrail in one sitting: write a **what, not how** spec in any AI chat, drop it next to **ForgeTrail Lite**, and let your coding agent forge the path and keep the trail.
4
+
5
+ **You need:** any LLM chat (ChatGPT, Claude, Grok, a local Ollama UI, …) and any coding agent that can read files (Cursor, Claude Code, Codex, …).
6
+
7
+ **You do not need:** Node MCP setup, `pnpm run mcp:build`, or `forgetrail` on PATH (those are optional shortcuts below).
8
+
9
+ **Important:** Use a **new empty project folder**. Do not run this inside a clone of the ForgeTrail methodology repo.
10
+
11
+ ---
12
+
13
+ ## 15-minute recipe
14
+
15
+ 1. **Get the Genesis prompt**
16
+ Open [`content/GENESIS_SPEC_PROMPT.md`](content/GENESIS_SPEC_PROMPT.md) (or the [raw file on GitHub](https://github.com/Catalyst-Forge-LLC/forgetrail/blob/main/content/GENESIS_SPEC_PROMPT.md)). Copy the **Copy-paste prompt** section.
17
+
18
+ 2. **Iterate a spec in your favorite chat app**
19
+ Fill the bracketed parts, send it, and refine until you trust the markdown. Optional shape reference: [`content/examples/GENESIS_SAMPLE_mars-habitat-roster.md`](content/examples/GENESIS_SAMPLE_mars-habitat-roster.md) (fictional Mars duty roster; relatable shared-schedule problem).
20
+
21
+ 3. **Create a new project folder**
22
+ Example: `mkdir my-app && cd my-app`
23
+
24
+ 4. **Add ForgeTrail Lite**
25
+ - **Copy:** save [`content/FORGETRAIL_LITE.md`](content/FORGETRAIL_LITE.md) as `.forgetrail/FORGETRAIL_LITE.md` in your project, **or**
26
+ - **CLI** (Node 20+):
27
+ `npx forgetrail install --lite`
28
+ Stub for Genesis too:
29
+ `npx forgetrail install --lite --with-genesis-stub`
30
+
31
+ 5. **Save your spec as `docs/GENESIS.md`**
32
+ Create `docs/` if needed. That path is the canonical handoff for ForgeTrail (not the repo root).
33
+
34
+ 6. **Open the folder in your coding agent** and paste this kickoff line:
35
+
36
+ > Follow `.forgetrail/FORGETRAIL_LITE.md` as the project protocol. Treat `docs/GENESIS.md` as the product spec (what, not how). Create `.forgetrail/workflow_tracking.json` and draft `docs/PHASE_1_BRIEF.md` from the Genesis file, asking me only about gaps. Do not scaffold application code until I explicitly approve the Phase 1 brief.
37
+
38
+ 7. **Approve the Phase 1 brief** before any app scaffold. If the agent starts writing application code early, stop it and paste the kickoff line again.
39
+
40
+ ---
41
+
42
+ ## What “it worked” looks like
43
+
44
+ - [ ] `.forgetrail/FORGETRAIL_LITE.md` is present
45
+ - [ ] `docs/GENESIS.md` is present
46
+ - [ ] `.forgetrail/workflow_tracking.json` exists
47
+ - [ ] `docs/PHASE_1_BRIEF.md` drafted from your Genesis (or clearly in progress)
48
+ - [ ] The agent asked for approval before scaffolding
49
+
50
+ Stuck? Open a [Try ForgeTrail checklist](https://github.com/Catalyst-Forge-LLC/forgetrail/issues/new?template=try-forgetrail-checklist.md) issue and mark how far you got.
51
+
52
+ ---
53
+
54
+ ## If you skip Genesis
55
+
56
+ No written idea yet? Tell the agent: *Follow `.forgetrail/FORGETRAIL_LITE.md`. Ask me the §5 intake questions before writing any code.* You can add `docs/GENESIS.md` later.
57
+
58
+ Already have a long PRD? Save it as `docs/GENESIS.md` and use the kickoff line above. Optionally run the Genesis prompt only to fill gaps (prior art, file-format research, edge cases).
59
+
60
+ ---
61
+
62
+ ## After the try: graduation ladder
63
+
64
+ 1. **Stay on Lite** for small tools and weekend builds. Enough for many projects.
65
+ 2. **Add MCP** when you live in Cursor/Claude: `npx -y forgetrail-mcp` (set `FORGETRAIL_ROOT` to a `forgetrail` install or clone). See [mcp-server/README.md](mcp-server/README.md).
66
+ 3. **Full `_forgetrail/` install** when you need the whole template tree on disk (offline / no MCP). `npx forgetrail install` (without `--lite`).
67
+
68
+ ---
69
+
70
+ ## Related files
71
+
72
+ | File | Role |
73
+ |------|------|
74
+ | [`content/GENESIS_SPEC_PROMPT.md`](content/GENESIS_SPEC_PROMPT.md) | Prompt to paste into any LLM chat |
75
+ | [`content/examples/GENESIS_SAMPLE_mars-habitat-roster.md`](content/examples/GENESIS_SAMPLE_mars-habitat-roster.md) | Fictional sample Genesis |
76
+ | [`content/FORGETRAIL_LITE.md`](content/FORGETRAIL_LITE.md) | Portable agent protocol |
77
+ | [`content/GENESIS_STUB.md`](content/GENESIS_STUB.md) | Stub written by `--with-genesis-stub` |
78
+ | [`README.md`](README.md) | Full methodology overview |