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.
- package/CONTINUATION_PROMPT.md +42 -0
- package/INITIAL_PROMPT.md +214 -0
- package/LICENSE +201 -0
- package/README.md +198 -0
- package/TRACKING_SCHEMA.md +162 -0
- package/TRY_FORGETRAIL.md +78 -0
- package/WORKFLOW.md +921 -0
- package/content/AGENT_INTEGRATION_claude.md +38 -0
- package/content/AGENT_INTEGRATION_cursor.md +53 -0
- package/content/AGENT_INTEGRATION_generic.md +50 -0
- package/content/AGENT_INTEGRATION_grok.md +82 -0
- package/content/DEV_AUTOMATION_SCRIPTS.md +103 -0
- package/content/FORGETRAIL_LITE.md +1202 -0
- package/content/FORGETRAIL_LITE_UPDATES.md +13 -0
- package/content/FORGETRAIL_PROGRESS.md +26 -0
- package/content/GENESIS_SPEC_PROMPT.md +70 -0
- package/content/GENESIS_STUB.md +18 -0
- package/content/GREENFIELD_INTAKE.md +76 -0
- package/content/KICKOFF_WITHOUT_MCP.md +16 -0
- package/content/LITE_WORKFLOW_TRACKING.json +42 -0
- package/content/NEW_PROJECT_BOOTSTRAP.md +180 -0
- package/content/ONE_CLICK_DEV_SETUP.md +142 -0
- package/content/PLAN_MODE_PATTERNS.md +43 -0
- package/content/POCKETBASE_SCHEMA_SCRIPT.md +52 -0
- package/content/POST_BOOTSTRAP_USER_MESSAGE.md +51 -0
- package/content/SCAFFOLD_INSTALL.json +110 -0
- package/content/SESSION_RESUME_MCP.md +35 -0
- package/content/SYSTEM_HEALTH_CHECKS.md +131 -0
- package/content/USER_REPLY_FORMAT.md +41 -0
- package/content/cursor-rules/forgetrail-lessons-gate.mdc +30 -0
- package/content/cursor-rules/forgetrail-lessons-mcp.mdc +24 -0
- package/content/cursor-rules/forgetrail-no-trailer.mdc +49 -0
- package/content/cursor-rules/forgetrail-phase-status.mdc +61 -0
- package/content/cursor-rules/forgetrail-updates-log.mdc +30 -0
- package/content/cursor-rules/spec-completion.mdc +33 -0
- package/content/cursor-rules/specs-and-todo.mdc +26 -0
- package/content/cursor-rules/url-host-matching.mdc +31 -0
- package/content/cursor-rules/us-english.mdc +9 -0
- package/content/cursor-rules/user-facing-content.mdc +31 -0
- package/content/examples/GENESIS_SAMPLE_mars-habitat-roster.md +154 -0
- package/content/forgetrail-workspace-README.md +43 -0
- package/content/scripts/forgetrail-dev-launcher.mjs +208 -0
- package/content/scripts/forgetrail-env.mjs +51 -0
- package/content/scripts/setup-ollama.mjs +207 -0
- package/content/scripts/setup-pocketbase.mjs +133 -0
- package/content/scripts/test-ollama.mjs +71 -0
- package/content/scripts/test-pocketbase.mjs +110 -0
- package/content/skills/forgetrail/SKILL.md +92 -0
- package/docs/AUTOMATED_TESTING.md +269 -0
- package/docs/BLACK_HAT_REPORT.md +143 -0
- package/docs/BRAND_AND_PRODUCT.md +381 -0
- package/docs/BUGS.md +62 -0
- package/docs/BUSINESS_PLAN.md +256 -0
- package/docs/CODE_QUALITY.md +170 -0
- package/docs/CONTEXT_PROMPT.md +357 -0
- package/docs/DEPLOYMENT.md +181 -0
- package/docs/DESIGN_SYSTEM.md +414 -0
- package/docs/DEV_ESTIMATE.md +127 -0
- package/docs/FORGETRAIL_RENAME.md +193 -0
- package/docs/IDEAS.md +19 -0
- package/docs/MARKETING_GROWTH.md +301 -0
- package/docs/NAMING_EXPLORATION.md +406 -0
- package/docs/NPM.md +98 -0
- package/docs/PHASE_1_BRIEF.md +161 -0
- package/docs/README.md +75 -0
- package/docs/SPEC_FEATURE_TEMPLATE.md +155 -0
- package/docs/SPEC_UI_CHROME_NAV_TEMPLATE.md +48 -0
- package/docs/TECHNICAL_REFERENCE.md +836 -0
- package/docs/TEST_PLAN.md +467 -0
- package/docs/TODO.md +125 -0
- package/package.json +68 -0
- package/prompts/black-hat-audit.md +235 -0
- package/prompts/brand-copy-edit-pass.md +55 -0
- package/prompts/cialdini-marketing-audit.md +141 -0
- package/prompts/competitor-deep-dive.md +201 -0
- package/prompts/docs-alignment-audit.md +108 -0
- package/prompts/engineering-skill-library.md +75 -0
- package/prompts/landing-page-rewrite.md +63 -0
- package/prompts/microcopy-centralization.md +128 -0
- package/prompts/panel-usability-audit.md +197 -0
- package/prompts/personal-beta-outreach.md +195 -0
- package/prompts/pre-launch-audit.md +148 -0
- package/prompts/product-feedback-to-spec.md +76 -0
- package/prompts/propagate-to-forgetrail.md +315 -0
- package/prompts/user-facing-content-sync-audit.md +200 -0
- package/prompts/ux-cohesion-audit.md +165 -0
- package/scripts/ensure-lease.mjs +23 -0
- package/scripts/forgetrail-cli.mjs +85 -0
- package/scripts/install-forgetrail-lite.mjs +11 -0
- package/scripts/install-forgetrail.mjs +11 -0
- package/scripts/install-lib.mjs +115 -0
- package/scripts/install.mjs +163 -0
- package/scripts/link-global.mjs +100 -0
- package/scripts/mcp-lib.mjs +177 -0
- package/scripts/mcp-status.mjs +155 -0
- package/scripts/publish-gate.mjs +110 -0
- package/scripts/rename-to-forgetrail.mjs +273 -0
- 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 |
|