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,315 @@
1
+ # Propagate to ForgeTrail
2
+
3
+ Run this prompt after implementing a new feature, pattern, plan, or significant enhancement in your app. It generalizes **both** durable **feature shapes** (what to document in **`TECHNICAL_REFERENCE.md`**, **`TEST_PLAN.md`**, brand/design templates) **and** reusable **lessons** (callouts in templates), then updates ForgeTrail so future projects start with that guidance.
4
+
5
+ **Any ForgeTrail project is a valid source** — not just the flagship app that seeded these templates. A weekend one-shot with two gotchas in its tracking file propagates the same way a mature SaaS does; small projects often exercise the newest tool versions and surface the freshest scaffolding lessons. If your project has only a handful of docs (Lite bootstrap, `one-shot` archetype), skip the doc-inventory ceremony and use **Harvest mode** below.
6
+
7
+ ### Harvest mode (small projects and project wrap)
8
+
9
+ Use this when the source project is **small** (no product journal, minimal doc set) or you are running the **wrap protocol** (WORKFLOW.md §1e) at project end. The primary discovery source is the **tracking file**, not the doc tree:
10
+
11
+ 1. **Read `.forgetrail/workflow_tracking.json`** — every `gotchas[]` entry and every `decisions[]` entry — plus `CONTEXT_PROMPT.md`'s gotcha/pattern sections and any `FORGETRAIL_LITE_UPDATES.md`.
12
+ 2. **Classify each entry:** *generalizable* (framework traps, CLI behavior changes, scaffolding surprises, integration lessons — anything a different project on the same stack could hit) vs *app-specific* (content decisions, domain rules). Only the first group propagates.
13
+ 3. **For each generalizable entry**, run the normal Step 2 dedupe (grep ForgeTrail for existing coverage) and Step 3 mapping (which template gets it). Tracking-file gotchas usually land as **pattern memory** (`CONTEXT_PROMPT.md` callouts, `FORGETRAIL_LITE.md` scaffolding notes); occasionally a decision reveals a **feature shape** worth a stub.
14
+ 4. **Zero-yield is fine.** If nothing generalizes, say so and skip the update-log entry — do not pad.
15
+
16
+ Harvest mode replaces the Discovery scan and Journal-driven sections for these projects; everything from Step 2 onward applies unchanged.
17
+
18
+ ### What “propagation” means (read this first)
19
+
20
+ Propagation is **two parallel deliverables**. Skipping either one is an **incomplete** pass:
21
+
22
+ 1. **Feature memory — what shipped** — When your journal shows **`Added`** (or you ship a user-named capability), a greenfield project using ForgeTrail should already see **where to document it**: a **Feature Documentation** (or equivalent) home in **`TECHNICAL_REFERENCE.md`**, **manual coverage** in **`TEST_PLAN.md`**, and **positioning / IA** updates in **`BRAND_AND_PRODUCT.md`** or **`DESIGN_SYSTEM.md`** when the product map changes. Use **stubs, headings, and “document routes, collections, edge cases”** guidance—not only a paragraph in **`CONTEXT_PROMPT.md`**.
23
+
24
+ 2. **Pattern memory — what we learned** — Gotchas, invariants, and anti-patterns belong in **`CONTEXT_PROMPT.md`**, **`CODE_QUALITY.md`**, and other templates using blockquote callouts (`> 💡 **Lesson learned:**`, `> 🔧 **Guidance:**`, `> 📝 **Example:**`). This is the familiar “lesson” track.
25
+
26
+ **Rule of thumb:** If a user could name the feature in one short phrase (“calendar download,” “export my data,” “variants tab”), ForgeTrail should **name that capability outside CONTEXT** somewhere—at least as a bracketed subsection—so the next app documents it by default.
27
+
28
+ **Periodic / backlog review:** When catching up on **`docs/PRODUCT_JOURNAL.md`** (or your git-derived changelog), work **back through weeks or months** if needed: older **`Added`** lines often never got a **TECH_REF / TEST_PLAN** home because only lessons were propagated. Treat those lines as a **backlog of feature stubs** to add in one pass.
29
+
30
+ ### Journal-driven propagation (new and materially improved features)
31
+
32
+ Your app's **`docs/PRODUCT_JOURNAL.md`** is a primary backlog for **ForgeTrail feature-area stubs**, not optional color.
33
+
34
+ When you run a **periodic** propagation (catch-up after a sprint, or anytime **Added** / **Improved** work piled up):
35
+
36
+ 1. **Pick a time window** — e.g. **last 10–14 calendar days** of journal sections, **and/or** every journal date **after** the latest **propagation** entry in **`update-log.md`** (if dated).
37
+ 2. **Walk every bullet** tagged **Added**, **Improved**, or **Fixed** when that fix **changes behavior, data, or contracts** (not typo-only). **Improved** often means **new routes, merge rules, or persistence** — it needs a **TECH_REF / TEST_PLAN** home, not only a lesson.
38
+ 3. **For each substantive bullet, run Step 3 twice:** (A) **Feature memory** — add or extend a **`### [Capability]`** in **`TECHNICAL_REFERENCE.md`**, **`TEST_PLAN.md`**, or brand/design docs. (B) **Pattern memory** — **`CONTEXT_PROMPT.md`**, **`CODE_QUALITY.md`**, etc.
39
+ 4. **Dedupe** with grep on ForgeTrail; extend existing subsections when keywords already exist.
40
+ 5. **Journal rows that cite new `specs/`** — read those specs; propagate durable decisions.
41
+ 6. **`Sounds product-specific`** — Before skipping a journal bullet because it uses your **marketing name** for a feature, ask whether the **shape** is common across SaaS. If yes, add a **`[BRACKETED]` stub** (not your codename): **persistent AI dock/rail** → **`TECHNICAL_REFERENCE` → Persistent contextual assistant** + **`CONTEXT_PROMPT`** + **`TEST_PLAN` §7.5**; **multi-tab lenses on one record** → **`TECHNICAL_REFERENCE` → Companion lenses** + **`TEST_PLAN` §7.6**; **portfolio / professional URLs** → **`TECHNICAL_REFERENCE` → User-visible external identity URLs** + **`TEST_PLAN` §1.8**; **dense admin grids with expand + billing links** → **`DESIGN_SYSTEM` → Admin master–detail tables** + **`TEST_PLAN` §7.7**.
42
+
43
+ ---
44
+
45
+ ## Context
46
+
47
+ **Your app** is the live project. Its docs are the source of truth — **whichever of these exist**. A full Phase-7 product will have most of them; a Lite or `one-shot` project may have only `CONTEXT_PROMPT.md`, `README.md`, `TODO.md`, and the tracking file (use **Harvest mode** above in that case). Treat this list as a menu, not a requirement:
48
+
49
+ - `CONTEXT_PROMPT.md`
50
+ - `docs/PHASE_1_BRIEF.md` (if you improved the Phase 1 handoff template)
51
+ - `docs/BUSINESS_PLAN.md`
52
+ - `docs/TECHNICAL_REFERENCE.md`
53
+ - `docs/CODE_QUALITY.md`
54
+ - `docs/BLACK_HAT_REPORT.md`
55
+ - `docs/BRAND_AND_PRODUCT.md`
56
+ - `docs/DESIGN_SYSTEM.md`
57
+ - `docs/SPEC_UI_CHROME_NAV_TEMPLATE.md` (optional; copy/fill when nav chrome rules solidify — propagate lessons into templates, not verbatim)
58
+ - `docs/DEPLOYMENT.md`
59
+ - `docs/TEST_PLAN.md`
60
+ - `docs/AUTOMATED_TESTING.md` (optional: Vitest / API / Playwright strategy — pairs with **TEST_PLAN**)
61
+ - `docs/DEV_ESTIMATE.md`
62
+ - `docs/MARKETING_GROWTH.md`
63
+ - `docs/BUGS.md`
64
+ - `docs/TODO.md`
65
+ - `docs/IDEAS.md`
66
+ - `specs/` (feature specifications — check for recently created/updated specs)
67
+ - `prompts/` (reusable prompts — check for new prompts worth generalizing)
68
+ - Optional **generated or synced** docs worth propagating when their workflow changes — e.g. `docs/COMPETITIVE_LANDSCAPE.md` (mirror of a `specs/` competitive analysis + sync script), `docs/PRODUCT_JOURNAL.md` (git-derived changelog + LLM/heuristic tooling)
69
+ - Optional **`docs/FEATURE_CATALOG.md`** (or equivalent) — internal inventory of shipped capabilities vs UI entry points; pairs with **`user-facing-content-sync-audit.md`** when checking landing/help/tour parity
70
+ - Optional **`prompts/microcopy-centralization.md`** — phased inline→module migration, export/inline/duplication audits (when the app adopts `$lib/content/*Copy.ts`)
71
+ - Optional **launch / research / checklist** docs if your app maintains them (e.g. `docs/NPS.md`, `docs/MARKETING_LAUNCH.md`, `docs/LAUNCH_CHECKLIST.md`) — propagate copy and methodology lessons into ForgeTrail **MARKETING_GROWTH**, **BRAND_AND_PRODUCT**, or **TEST_PLAN** / **pre-launch-audit** as appropriate
72
+
73
+ ### When to run this prompt (propagation triggers)
74
+
75
+ Run after meaningful implementation work **and** after substantive **documentation** changes — or at least **skim Steps 2–3** when a trigger fires so you don’t skip a small template touch. Non-exhaustive triggers:
76
+
77
+ | Trigger | Why |
78
+ | -------- | --- |
79
+ | **`docs/BRAND_AND_PRODUCT.md` updated** | Positioning, promise, voice, or copy-lesson edits usually map to ForgeTrail `docs/BRAND_AND_PRODUCT.md` and may require `CONTEXT_PROMPT.md` / `pre-launch-audit.md` updates. **Treat this file as a first-class propagation signal**, not only code changes. |
80
+ | **Landing or public marketing copy changed** | Align in-app story surfaces (About, Help) per *Keep in-app marketing surfaces aligned with the public landing*. |
81
+ | **New or updated `specs/`** | Extract reusable architecture, data, and UX patterns. |
82
+ | **Spec lifecycle folder conventions changed** | New/renamed spec folders (e.g. `specs/partial/`, `specs/completed/`, `specs/canonical/` for living references) or changes to when a spec moves between them → **WORKFLOW.md** spec-lifecycle subsection and, if the app codifies it, `.cursor/rules/specs-and-todo.mdc` + `.cursor/rules/spec-completion.mdc` guidance. |
83
+ | **New or updated project `prompts/`** | Generalize methodologies into `prompts/` here when they apply beyond one app. |
84
+ | **Skill library / handoff docs created or updated** (`docs/skills/` or similar) | Generalizable judgment, debugging playbooks, and anti-patterns → **CONTEXT_PROMPT** / **CODE_QUALITY** / **TECHNICAL_REFERENCE** lessons; the capture methodology lives in **`prompts/engineering-skill-library.md`**. |
85
+ | **Competitive intelligence** (e.g. paid-ad screenshot reviews, landscape specs) | See `docs/MARKETING_GROWTH.md` → *Competitive intelligence: paid social screenshots* and `docs/BRAND_AND_PRODUCT.md` → *Don't echo competitor ad tropes*. |
86
+ | **Product journal / changelog automation** | Changes to git→journal scripts, LLM vs heuristic defaults, or append semantics → **CONTEXT_PROMPT** (tooling) and optionally **TECHNICAL_REFERENCE** (pipelines). |
87
+ | **Major feature or integration** | Use the Step 3 mapping table (TECH_REF, CONTEXT_PROMPT, etc.). |
88
+ | **Published repo / ForgeTrail workspace layout** (secrets in tracking; **`.forgetrail/`** gitignore vs commit; GH007 push failures; MCP vs Lite vendoring) | **`content/FORGETRAIL_LITE.md`** §1.5–§1.6, §4.1.1, §13; **`cursor-rules/forgetrail-*.mdc`**; **`forgetrail-workspace-README.md`**; **`NEW_PROJECT_BOOTSTRAP.md`**. |
89
+ | **Lite monorepo env / pnpm native builds / API+UI workspace** (dotenv at Node entry, Vite `loadEnv` merge, `onlyBuiltDependencies`, port health-check) | **`content/FORGETRAIL_LITE.md`** §4.1, §4.2.1, §4.2 step 10, §13–§14 |
90
+ | **PocketBase bootstrap / non-technical local dev** (hardcoded PB semver pain, command-dump onboarding, need setup/run/status launchers) | **`FORGETRAIL_LITE.md`** §4.2.2, §4.5–§4.6; **`ONE_CLICK_DEV_SETUP.md`**, **`FORGETRAIL_PROGRESS.md`**, **`scripts/setup-pocketbase.mjs`**, **`scripts/forgetrail-dev-launcher.mjs`**, **`SCAFFOLD_INSTALL.json`**; **`POCKETBASE_SCHEMA_SCRIPT.md`**, **`DEV_AUTOMATION_SCRIPTS.md`**, **`NEW_PROJECT_BOOTSTRAP.md`** |
91
+ | **Isolated service health checks / local Ollama** (test PB without app; install Ollama + VRAM model + completion test; avoid thinking models by default) | **`SYSTEM_HEALTH_CHECKS.md`**, **`FORGETRAIL_LITE.md`** §4.7–§4.8; **`scripts/test-pocketbase.mjs`**, **`scripts/setup-ollama.mjs`**, **`scripts/test-ollama.mjs`**, **`SCAFFOLD_INSTALL.json`** `systemHealthChecks` |
92
+ | **URL / listing import pipeline** (fetch + HTML parse, refresh-from-source, optional LLM-assisted recover when selectors drift) | `docs/TECHNICAL_REFERENCE.md` (*URL import* — paywalls, **markup drift / optional recover**); `docs/CONTEXT_PROMPT.md`; `docs/TEST_PLAN.md` §2a; **`content/FORGETRAIL_LITE.md` §7.2**; partial spec stub under **`specs/partial/`** when shipped behavior needs follow-up. |
93
+ | **A week+ of shipping without running this prompt** | Use **Journal-driven propagation**: sweep **`docs/PRODUCT_JOURNAL.md`** (e.g. last 10–14 days) so **Added** / **Improved** items get **`TECHNICAL_REFERENCE` / `TEST_PLAN`** stubs, not only **CONTEXT_PROMPT** lessons. |
94
+ | **Project wrap — the source project is finished, delivered, or shelved** | Run **Harvest mode** (top of this prompt) as part of the wrap protocol (**WORKFLOW.md §1e**): sweep the tracking file's `gotchas[]` + `decisions[]` before the project goes quiet. Small projects count. |
95
+ | **CI/CD, Node/`engines`, or package-manager pins changed** | Keep workflow, container, and `package.json` in sync — lessons for **DEPLOYMENT.md**, **TECHNICAL_REFERENCE.md**, **CONTEXT_PROMPT.md**. |
96
+ | **Deploy scripts, systemd units, or process stop/restart behavior** | `TimeoutStopSec`, blue-green `systemctl stop`, and graceful-shutdown tradeoffs affect **wall-clock deploy time** as well as request safety — **DEPLOYMENT.md** (and **CONTEXT_PROMPT** if it changes operator expectations). |
97
+ | **New scripts, hooks, or dev-tooling** | Journal/lint/build wrappers → **CONTEXT_PROMPT** (tooling) or **TECHNICAL_REFERENCE** (pipelines). |
98
+ | **`.cursor/rules/` git / commit policy** | e.g. `git-user-commits.mdc`, `commit-messages.mdc` — keep **this repo’s** `.cursor/rules/` aligned with your app when you propagate workflow changes: **end of each request**, stage only paths from that request and **commit** with message from **`git diff --staged`** (multi-line body by default); push remains explicit-only. |
99
+ | **Microcopy centralization completed or copy-module pattern adopted** | **`prompts/microcopy-centralization.md`**, **`docs/TECHNICAL_REFERENCE.md`** § User-facing copy, **`docs/CODE_QUALITY.md`** audit checklist, **`docs/BRAND_AND_PRODUCT.md`** duplication policy, **`docs/CONTEXT_PROMPT.md`**, **`.cursor/rules/user-facing-content.mdc`**, **`.cursor/rules/us-english.mdc`**, **`content/cursor-rules/`** mirrors — generalize patterns only, not app-specific strings. |
100
+ | **Assertive product voice / hedging *can* removed from capability copy** | **`.cursor/rules/user-facing-content.mdc`** (Assertive capability copy), **`docs/BRAND_AND_PRODUCT.md`** (We say / We don't say table), **`docs/CONTEXT_PROMPT.md`**, **`docs/CODE_QUALITY.md`** pre-launch grep, **`docs/TEST_PLAN.md`** §4.5; MCP **`cursor-rules/`** mirror. |
101
+ | **Structured eligibility or requirement fit** (education, clearance, license, work auth — taxonomy + extraction + badges + filters + LLM context) | **`docs/TECHNICAL_REFERENCE.md`** → *[Structured eligibility / requirement fit]* stub; **`docs/TEST_PLAN.md`** §4.6; **`docs/BRAND_AND_PRODUCT.md`** one-line declare-once lesson; do **not** copy domain-specific enums/regex. |
102
+ | **App-owned transactional email or documented deletion lifecycle** | Central outbound module (BaaS/auth SMTP vs product mail), env vars, webhook idempotency, DNS/SPF/DKIM; **TECHNICAL_REFERENCE** data-model subsection for cascade vs soft delete and orphan risks — also **DEPLOYMENT**, **TEST_PLAN**, **CONTEXT_PROMPT**, **pre-launch-audit**, **WORKFLOW** cross-checks. |
103
+ | **`docs/DEV_ESTIMATE.md` materially updated** | Inventory methodology (LOC, route modules), hour bands, or US cost scenarios → align ForgeTrail **`docs/DEV_ESTIMATE.md`** generalized placeholders and guidance. |
104
+
105
+ ### Discovery scan — where to look for propagation candidates
106
+
107
+ Do **not** rely only on the immediate trigger. Skim **multiple signal sources** so cross-cutting lessons from the same sprint (e.g. export pipeline + CI + lint) are not missed.
108
+
109
+ | Source | What to extract |
110
+ |--------|-----------------|
111
+ | **`.forgetrail/workflow_tracking.json`** (`gotchas[]`, `decisions[]`) | Framework traps, CLI/scaffolding surprises, and integration lessons logged during the build — the primary source for small projects (see **Harvest mode**), and an easy-to-miss one for large projects where docs lag the tracking file. |
112
+ | **`git log` / recent commits** | Subjects and paths; cluster related work; compare to the last `update-log.md` propagation date. |
113
+ | **`docs/PRODUCT_JOURNAL.md`** (or git-derived changelog) | Day-level themes across UX, infra, and docs. Map **`Added`** / major **`Improved`** items to Step 3: new **feature-area** stubs in **`TECHNICAL_REFERENCE.md`**, **`TEST_PLAN.md`** checks, **`BRAND_AND_PRODUCT.md`** / **`DESIGN_SYSTEM.md`** when IA or positioning changes—not only **`CONTEXT_PROMPT.md`** bullets. |
114
+ | **Recently touched `specs/`** | Durable architecture and copy decisions, including WIP specs. |
115
+ | **Project `prompts/`** | Candidates to generalize into this repo’s `prompts/`. |
116
+ | **`.github/workflows/`** | Node/pnpm pins, build, deploy → **DEPLOYMENT.md**, **CONTEXT_PROMPT.md**. |
117
+ | **`package.json`** | `engines`, `packageManager`, scripts → **WORKFLOW.md** / **CODE_QUALITY** cues. |
118
+ | **`scripts/`** | Automation and document pipelines → **TECHNICAL_REFERENCE** or **CONTEXT_PROMPT**. |
119
+ | **`.cursor/rules/` or `AGENTS.md`** | Conventions worth a template *principle*, not a verbatim copy. |
120
+ | **`TODO.md` / backlog** | Recently finished work may encode undocumented patterns. |
121
+ | **Shared app libraries** (server helpers, `*Utils.ts`, entitlements) | Reusable patterns for **CONTEXT_PROMPT** / **TECHNICAL_REFERENCE**. |
122
+ | **Progressive import (stub + finalize) from the browser** | Separate requests: defensive JSON, **GET-by-id reconciliation** when finalize misbehaves, **failure callbacks** on every entry surface; terminal-state polling for phases after import → **TECHNICAL_REFERENCE** (URL import: client reconciliation), **CONTEXT_PROMPT**, **TEST_PLAN** §2a. |
123
+ | **Workflow enums / board columns vs stored status** | Normalize legacy or empty values at the mapper so rows are not invisible to filters while dedupe still applies → **TECHNICAL_REFERENCE** (stored workflow enums), **CONTEXT_PROMPT**. |
124
+ | **Parallel BaaS / SDK reads in list routes** (e.g. `Promise.all` + per-row `getList` on one client) | Auto-cancellation / aborted requests → empty nested payloads; **CONTEXT_PROMPT**, **TECHNICAL_REFERENCE**, **TEST_PLAN** §8.6. |
125
+ | **Journal lines that “sound branded”** | Map to generic shapes per **Journal-driven propagation** §6 (assistant rail, multi-lens detail, profile URLs, admin master–detail) → **TECHNICAL_REFERENCE**, **DESIGN_SYSTEM**, **TEST_PLAN**. |
126
+ | **Tests / E2E** | New coverage categories → **TEST_PLAN.md** or **CODE_QUALITY.md**. |
127
+ | **Marketing / landing routes** | Copy and SEO → **BRAND_AND_PRODUCT.md**, **DESIGN_SYSTEM.md**, `pre-launch-audit.md`. |
128
+ | **Outbound email + delete semantics** | Provider HTTP API from server, idempotent webhook/cron sends, deliverability DNS; hard vs soft delete, cascade gaps, and “what support can restore” → **TECHNICAL_REFERENCE** + **TEST_PLAN** manual checks. |
129
+
130
+ **Cadence:** For a **periodic** pass, run this table **top to bottom** with a **time window** (e.g. last 48–72 hours, or since the last row in **`update-log.md`**).
131
+
132
+ **ForgeTrail** is the reusable template framework at `_forgetrail/` (or wherever you've placed it). Its doc templates are what new projects start from:
133
+
134
+ - `update-log.md` (repo root — **append after each propagation pass**; see Step 7)
135
+ - `docs/CONTEXT_PROMPT.md`
136
+ - `docs/PHASE_1_BRIEF.md`
137
+ - `docs/BUSINESS_PLAN.md`
138
+ - `docs/TECHNICAL_REFERENCE.md`
139
+ - `docs/CODE_QUALITY.md`
140
+ - `docs/BLACK_HAT_REPORT.md`
141
+ - `docs/BRAND_AND_PRODUCT.md`
142
+ - `docs/DESIGN_SYSTEM.md`
143
+ - `docs/SPEC_UI_CHROME_NAV_TEMPLATE.md`
144
+ - `docs/DEPLOYMENT.md`
145
+ - `docs/TEST_PLAN.md`
146
+ - `docs/AUTOMATED_TESTING.md` (optional: Vitest / API / Playwright strategy — pairs with **TEST_PLAN**)
147
+ - `docs/DEV_ESTIMATE.md`
148
+ - `docs/MARKETING_GROWTH.md`
149
+ - `docs/BUGS.md`
150
+ - `docs/TODO.md`
151
+ - `docs/IDEAS.md`
152
+ - `docs/NAMING_EXPLORATION.md`
153
+ - `docs/README.md` (app template)
154
+ - `README.md` (root)
155
+ - `INITIAL_PROMPT.md`
156
+ - `CONTINUATION_PROMPT.md`
157
+ - `WORKFLOW.md`
158
+ - `TRACKING_SCHEMA.md`
159
+ - `prompts/` (reusable prompt library — includes `personal-beta-outreach.md`, `user-facing-content-sync-audit.md`, `microcopy-centralization.md`, `engineering-skill-library.md`)
160
+ - `mcp-server/` — MCP packaging: `README.md`, `content/` (kickoff/bootstrap, greenfield intake, scaffold JSON, post-bootstrap messaging, Cursor rule fragments), **`content/FORGETRAIL_LITE.md`** (portable kickoff — when propagation touches **URL import / scrape**, **markup drift**, **LLM verbatim recover fallback**, or **failure-copy vs wrong-URL** UX, update **§7.2** and bump the Lite **version** in header, footer, and the §12 `AGENTS.md` snippet), `src/index.ts` (e.g. `getNewProjectKickoff`, `getGreenfieldIntakePrompt`)
161
+
162
+ ## What I just built/changed
163
+
164
+ [DESCRIBE THE FEATURE, PATTERN, OR ENHANCEMENT HERE. Be specific: what problem it solves, what the implementation approach was, and what you learned. Include file names if helpful.]
165
+
166
+ If this prompt is being run inside a conversation where changes were just made, use the conversation history and summary as the source of truth — you don't need a manual description. Read the relevant source files and specs to fill in gaps.
167
+
168
+ **Periodic review:** Use **Journal-driven propagation** (journal window + **Added** / **Improved** / substantive **Fixed**) alongside theme-based skim. **Improved** bullets often imply **expanded product surface** deserving a ForgeTrail stub, not just a tweak note.
169
+
170
+ ## Instructions
171
+
172
+ You are propagating from a live app into ForgeTrail templates **on both tracks**: **(A)** **feature documentation**—where a new capability lives in **`TECHNICAL_REFERENCE.md`**, **`TEST_PLAN.md`**, brand/design docs—and **(B)** **lessons**—patterns and anti-patterns in **`CONTEXT_PROMPT.md`** and elsewhere. ForgeTrail is NOT a copy of any specific app; extract **generalized** guidance for future projects.
173
+
174
+ **Generalization first (applies to every Lesson learned callout you add under Step 4 rules 2–7):** State the **abstract principle**—what category of mistake, what invariant to preserve, why future projects should care. *Then* add brief illustrations (e.g. consolidating duplicated **numeric literals**, **magic strings**, or **user-facing copy** that must stay aligned with server rules). **Do not** lead with those examples: opening lines like “centralize the `10` in trial length” or “move rate limits to a file” teach the trivia before the rule. Examples belong in the second half of a callout, in a `📝 **Example:**` block, or as `[BRACKETED]` placeholders—not as the headline.
175
+
176
+ ### Step 1: Understand what changed
177
+
178
+ Complete the **Discovery scan** subsection above unless the run is narrowly scoped to a **single** known artifact.
179
+
180
+ **If the run is periodic or catch-up:** complete **Journal-driven propagation** (journal time window + substantive bullets) **before** relying only on `git log` or chat context.
181
+
182
+ Then read the feature/change description (or the conversation history) and the relevant app source files and docs to fully understand:
183
+
184
+ - What was built and why
185
+ - What architectural decisions were made (and the reasoning)
186
+ - What didn't work before the current approach was chosen
187
+ - What gotchas or debugging insights came up
188
+
189
+ ### Step 2: Check for existing coverage
190
+
191
+ Before writing anything, search ForgeTrail's docs and prompts for each pattern you plan to add. Grep for relevant keywords. If a lesson is already captured (even approximately), skip it. Patterns that appear in multiple ForgeTrail files from different angles (e.g., a design pattern in DESIGN_SYSTEM.md and its anti-pattern in CONTEXT_PROMPT.md) are intentional and fine — but don't duplicate the same lesson in the same framing.
192
+
193
+ ### Step 3: Identify which ForgeTrail templates need updates
194
+
195
+ For **each** journal **`Added`** line, substantive **`Improved`** line (expanded capability — not polish-only), or **`Fixed`** line that changes user-visible contracts, walk this step **twice**: first ask “Where does this feature get a documented home?” (`TECHNICAL_REFERENCE` feature area, `TEST_PLAN`, `BRAND_AND_PRODUCT`, `DESIGN_SYSTEM`), then ask “What lessons or anti-patterns apply?” (`CONTEXT_PROMPT`, `CODE_QUALITY`, callouts). Doing only the second pass misses propagation’s purpose.
196
+
197
+ Map the change to ForgeTrail docs. Not every change touches every file. Use this guide:
198
+
199
+ | If the change involves... | Update these ForgeTrail templates |
200
+ | ------------------------------------------------ | ------------------------------------------------------------------ |
201
+ | A new business metric, pricing, or growth plan | `docs/BUSINESS_PLAN.md` |
202
+ | A new API route, data model, or integration | `docs/TECHNICAL_REFERENCE.md` |
203
+ | A new UI pattern or architectural decision | `docs/CONTEXT_PROMPT.md` (Critical Patterns or Patterns to Follow) |
204
+ | A framework/library gotcha or debugging lesson | `docs/CONTEXT_PROMPT.md` (Critical Patterns) |
205
+ | A deployment or infrastructure change | `docs/DEPLOYMENT.md` |
206
+ | A code quality finding or security pattern | `docs/CODE_QUALITY.md` |
207
+ | A security vulnerability pattern or audit lesson | `docs/BLACK_HAT_REPORT.md` |
208
+ | A brand/voice/UX principle or copy lesson | `docs/BRAND_AND_PRODUCT.md` |
209
+ | A visual design pattern or design system insight | `docs/DESIGN_SYSTEM.md` |
210
+ | An accessibility or a11y pattern | `docs/DESIGN_SYSTEM.md` (Accessibility Patterns) |
211
+ | A landing page UX, copy, or conversion pattern | `docs/BRAND_AND_PRODUCT.md` + `docs/DESIGN_SYSTEM.md` |
212
+ | An SEO, structured data, or indexing pattern | `prompts/pre-launch-audit.md` (SEO section) |
213
+ | A marketing/persuasion strategy | `docs/MARKETING_GROWTH.md` |
214
+ | A bug triage workflow improvement | `docs/BUGS.md` |
215
+ | A new testing strategy or test category | `docs/TEST_PLAN.md` and/or `docs/AUTOMATED_TESTING.md` |
216
+ | **External URL import / scrape** (deterministic HTML parsers, markup drift, optional last-resort structured LLM recover, per-stage diagnostics) | `docs/TECHNICAL_REFERENCE.md` (*URL import* subsections), `docs/CONTEXT_PROMPT.md`, `docs/TEST_PLAN.md` §2a, **`content/FORGETRAIL_LITE.md` §7.2**, optional **`specs/partial/`** |
217
+ | Persistent **assistant / copilot** (dock or rail), streaming, optional record binding | `docs/TECHNICAL_REFERENCE.md`, `docs/CONTEXT_PROMPT.md`, `docs/TEST_PLAN.md` (§7.5) |
218
+ | **Multi-lens / multi-tab** persisted outputs on **one primary entity** | `docs/TECHNICAL_REFERENCE.md`, `docs/CONTEXT_PROMPT.md`, `docs/TEST_PLAN.md` (§7.6) |
219
+ | **Structured eligibility / requirement fit** (posting requirement vs user profile) | `docs/TECHNICAL_REFERENCE.md` (*Structured eligibility* stub), `docs/TEST_PLAN.md` (§4.6), `docs/BRAND_AND_PRODUCT.md` (assertive voice / declare-once) |
220
+ | User or contact **external identity URLs** (profiles, portfolios) | `docs/TECHNICAL_REFERENCE.md`, `docs/CONTEXT_PROMPT.md`, `docs/TEST_PLAN.md` (§1.8) |
221
+ | **Admin/support** dense tables + row expansion + PSP deeplink columns | `docs/DESIGN_SYSTEM.md`, `docs/TECHNICAL_REFERENCE.md` (if dedicated routes), `docs/TEST_PLAN.md` (§7.7) |
222
+ | A development cost/effort estimate | `docs/DEV_ESTIMATE.md` |
223
+ | A growth channel, marketing strategy, or metric | `docs/MARKETING_GROWTH.md` |
224
+ | A workflow or phase change | `WORKFLOW.md` or `TRACKING_SCHEMA.md` |
225
+ | A new doc convention or project setup step | `INITIAL_PROMPT.md` or `docs/README.md` |
226
+ | A reusable prompt or audit methodology | `prompts/` (add as a new generalized file) |
227
+ | Propagation / ForgeTrail changelog entry | `update-log.md` (append; see Step 7) |
228
+ | A new document type worth templating | `docs/` (add as a new template file) |
229
+ | A spec pattern worth reusing | `docs/CONTEXT_PROMPT.md` or relevant template |
230
+
231
+ **Also check:**
232
+
233
+ - Are there new specs in the app's `specs/` directory? Specs often contain reusable architectural patterns, data models, and UX decisions worth extracting.
234
+ - Are there new prompts in the app's `prompts/` directory that would benefit other projects if generalized?
235
+ - Do any **existing** ForgeTrail prompts need updates? (e.g., `pre-launch-audit.md` may need new checklist items based on what you found.) Don't just add new prompts — enhance existing ones.
236
+ - Has a new document type emerged that ForgeTrail doesn't yet have as a template? Check `docs/` for the current inventory.
237
+
238
+ ### Step 4: Write the ForgeTrail updates
239
+
240
+ Follow these rules strictly:
241
+
242
+ 1. **Generalize, don't copy.** Replace app-specific details with `[BRACKETED]` placeholders or generic descriptions. ForgeTrail templates are starting points — they should describe _what_ to build and _why_, not any specific app's exact implementation.
243
+
244
+ 1b. **Feature-area stubs are allowed to be “thin.”** A new **`### [Capability]`** in **`TECHNICAL_REFERENCE.md`** may be mostly **Guidance** callouts (`> ... **Guidance:**`) (“document routes, collections, edge cases”) with bracketed placeholders. Not every feature needs a long **Lesson learned** callout; it **does** need a **named place** future projects will fill.
245
+
246
+ 2. **Principle before examples.** In each new lesson, the first sentences establish the **reusable rule** (single source of truth, no silent drift between layers, etc.). **Examples**—such as shared constants for limits, one milliseconds-per-day helper, or deduplicating copy that mirrors enforcement—come **after** that framing. Never open with literals, paths, or product-specific nouns; those illustrate the pattern, they don't define it.
247
+
248
+ 3. **Use blockquote callouts for lessons.** ForgeTrail templates use blockquote callouts (`> 💡 **Lesson learned:**`) for implementation wisdom. New lessons use this format. Three callout types: `> 💡 **Lesson learned:**` for hard-won wisdom, `> 📝 **Example:**` for concrete samples (use this when you need a specific number, filename, or stack detail), `> 🔧 **Guidance:**` for template instructions.
249
+
250
+ 4. **Preserve the existing structure.** Don't reorganize sections or rename headings. Add content within the existing framework. If no appropriate section exists, add a new subsection at the logical location.
251
+
252
+ 5. **Include the WHY.** Every lesson must explain _why_ the approach works, not just _what_ to do. The "why" is what prevents future Claude sessions from undoing intentional decisions.
253
+
254
+ 6. **Include anti-patterns when relevant.** If you tried something that didn't work before arriving at the current approach, capture that as a "don't do this" note. These are often more valuable than the positive patterns.
255
+
256
+ 7. **Keep it concise.** A lesson should be 3-8 lines. If it needs more, it probably belongs in a dedicated doc in the future app, not in the ForgeTrail template.
257
+
258
+ ### Step 5: Verify consistency
259
+
260
+ After making edits, do a quick cross-check:
261
+
262
+ - If you added something to `BUSINESS_PLAN.md`, does `TECHNICAL_REFERENCE.md` need a corresponding implementation section?
263
+ - If you added a pattern to `CONTEXT_PROMPT.md`, is there a matching anti-pattern to capture?
264
+ - If you added a design or a11y pattern to `DESIGN_SYSTEM.md`, does `pre-launch-audit.md` need a matching checklist item?
265
+ - If you added a copy/messaging lesson to `BRAND_AND_PRODUCT.md`, is there a corresponding anti-pattern for `CONTEXT_PROMPT.md`?
266
+ - If the change affects the development workflow, does `WORKFLOW.md` or `TRACKING_SCHEMA.md` need a phase update?
267
+ - If you added a new doc template, does `README.md` list it?
268
+
269
+ **File inventory parity check:** List the actual files in both repos (`docs/`, `prompts/`, root `*.md`) and compare against what this prompt's Context section claims. If any files exist that aren't listed (new docs added since the last propagation, renamed files, merged files), update the Context section in **both copies** of this prompt (the app's version and ForgeTrail's). Also flag any listed files that no longer exist or have been archived.
270
+
271
+ **Onboarding doc freshness check:** Review ForgeTrail's human-facing and agent-facing onboarding docs for staleness caused by the changes you just propagated:
272
+
273
+ - `README.md` — Does the file tree match what's actually in the repo (including `update-log.md` and new prompts)? Does the "Topics covered" section reflect newly added content? Are all prompts described in the Prompts section? Are session counts or other specific numbers still accurate?
274
+ - `INITIAL_PROMPT.md` — Does the doc template list (Phase 2 and later phases) include all current templates? Are scope descriptions still accurate for templates whose content has expanded? Do path conventions (`_forgetrail/`, etc.) match the README's setup instructions?
275
+ - `CONTINUATION_PROMPT.md` — Same path convention check.
276
+
277
+ Update any that are out of sync. These docs are the first thing a human or agent reads — stale information here propagates confusion into every project that starts from ForgeTrail.
278
+
279
+ **ForgeTrail Lite parity:** When the propagation adds or changes **external URL → structured record** behavior (layered fetch/parse, **empty extract vs bad URL**, optional **last-resort** small-model recover from stripped HTML, env opt-out, diagnostics without full HTML in analytics), update **`content/FORGETRAIL_LITE.md`** (**§7.2**; bump **v1.x** if the section changed materially) and cross-check **`README.md`**, **`WORKFLOW.md`**, and **`INITIAL_PROMPT.md`** for citations — Lite-only projects may never open full **`docs/TECHNICAL_REFERENCE.md`**.
280
+
281
+ **Triplicate optional sections:** When **§4.3**, **§4.4**, or **§7.1** (or **§7.2**) in **`FORGETRAIL_LITE.md`** change, sync the matching optional blocks in **`README.md`** and **`WORKFLOW.md`** in the same pass — see **`update-log.md`** (FORGETRAIL_LITE release checklist, item 3).
282
+
283
+ ### Step 6: Second-pass completeness review
284
+
285
+ After the initial propagation, review the full list of changes one more time. It's common to miss patterns on the first pass — especially:
286
+
287
+ - **Copy/content lessons** that feel app-specific but are actually generalizable (e.g., "don't overstate security claims" applies to any SaaS).
288
+ - **Debugging detours** where something didn't work and you pivoted (e.g., `<link rel="modulepreload">` doesn't work for bundled deps).
289
+ - **User corrections** during the conversation that reveal a general principle (e.g., user correcting a security overclaim → lesson about precision in marketing copy).
290
+ - **Discovery scan gaps:** Compare **`git log`** to the product journal / changelog for the same window — CI-only, dependency, or script commits may not appear as user-facing bullets but still warrant template updates.
291
+ - **Journal backlog:** Scroll **`docs/PRODUCT_JOURNAL.md`** (or your changelog) to **older `##` days** (weeks or months). For each **`Added`** line, ask whether ForgeTrail already has a **feature stub** or **TEST_PLAN** section; if not, add a generalized stub in this pass or list it explicitly as still missing.
292
+ - **Branded-but-generic shapes:** Re-read bullets that mention **marketing names**. If **Journal-driven propagation** §6 fits (persistent assistant rail, multi-lens detail, identity URLs, admin master–detail), ensure **`TECH_REF`**, **`CONTEXT_PROMPT`**, **`DESIGN_SYSTEM`**, **`TEST_PLAN`** got the generalized stub—not only **`CODE_QUALITY`** or lessons.
293
+
294
+ Report any additional items found in the second pass.
295
+
296
+ ### Step 7: Report what you changed and log it
297
+
298
+ 1. List each ForgeTrail file you updated, what section you edited, and a one-line summary of what was added. Format:
299
+
300
+ ```
301
+ - docs/BUSINESS_PLAN.md > [Section] — [what was added]
302
+ - docs/CONTEXT_PROMPT.md > Critical Patterns — [what was added]
303
+ ```
304
+
305
+ 2. **Append to `update-log.md`** (repo root): add a row to the table (ISO date + short summary) and a **Detail** subsection with bullets for files/sections touched. This keeps an auditable history of template evolution.
306
+
307
+ ## Constraints
308
+
309
+ - Write only to **this ForgeTrail repo** (templates under `docs/`, `prompts/`, and root guides). Do not change a customer application's source or product docs during propagation.
310
+ - You may edit **`prompts/propagate-to-forgetrail.md`** itself when updating triggers or the Context inventory (Step 5). If the customer keeps a project-local copy of this prompt, they should mirror trigger/inventory changes there.
311
+ - Do NOT add `[PLACEHOLDER]` sections that are already filled in with app-specific content — keep them as templates.
312
+ - Do NOT remove existing ForgeTrail content. Only add or expand.
313
+ - If a lesson is already captured in ForgeTrail (even approximately), skip it. Check before writing (Step 2).
314
+ - If you're unsure whether something is reusable or app-specific, err on the side of including it. It's easy to remove later, hard to reconstruct.
315
+ - **Incomplete propagation:** Adding only `💡`/`🔧` (or other) **lesson-style callouts** **without** a **feature-area home** in **`TECHNICAL_REFERENCE.md`** or **`TEST_PLAN.md`** (when the source app gained a **new named capability**) is not enough—go back and add the stub or checklist.
@@ -0,0 +1,200 @@
1
+ # User-Facing Content Sync Audit
2
+
3
+ Run this audit periodically (monthly, or after any week with 3+ shipped features) to ensure **every user-facing discovery surface stays current with what the product actually does**. It catches stale copy, missing features, broken information architecture, and naming drift across marketing, help, onboarding, and in-app panels — before a user does.
4
+
5
+ This complements [Docs Alignment Audit](./docs-alignment-audit.md) (accuracy vs. code) by focusing on **completeness and discoverability** of the product's public story.
6
+
7
+ For **where strings live in code** (inline Svelte → `$lib/content/*Copy.ts`, export scripts, duplication policy), see [Microcopy Centralization](./microcopy-centralization.md).
8
+
9
+ ---
10
+
11
+ ## How to Use
12
+
13
+ Give this prompt to an AI coding assistant with full codebase access. Provide:
14
+
15
+ 1. The **date range** to audit (e.g. "last 4 weeks" or "since 2026-03-25").
16
+ 2. Any **recently shipped features** the assistant should pay special attention to (or say "check the product journal / changelog").
17
+ 3. Whether you want the assistant to **implement fixes** or only **report findings**.
18
+
19
+ ```
20
+ Run a User-Facing Content Sync Audit using the checklist in [path to this file].
21
+ Date range: [last N weeks / since YYYY-MM-DD].
22
+ Recently shipped: [list features, or "check changelog"].
23
+ Mode: [report only / report and fix].
24
+ ```
25
+
26
+ ---
27
+
28
+ ## Instructions
29
+
30
+ You are auditing the product's user-facing content surfaces for completeness, accuracy, and discoverability. Your job is to answer: **if a new user explored every surface of this app today, would they find clear, current, consistent information about everything the product can do?**
31
+
32
+ ### Step 0 — Establish the source of truth
33
+
34
+ Read these files first to build a complete picture of what the product does *right now*:
35
+
36
+ - **Changelog / product journal** — recent changes; focus on the date range
37
+ - **Feature catalog** (if maintained) — comprehensive inventory of shipped features
38
+ - **Brand and product doc** — positioning, voice, canonical feature names
39
+ - **TODO / backlog** — what is checked `[x]` = shipped; `[ ]` = not yet
40
+
41
+ > 💡 **Guidance:** The source of truth is always what shipped in code, not what a doc *claims*. When in doubt, check the codebase.
42
+
43
+ From these, compile a **feature checklist** — every shipped capability that should appear *somewhere* in user-facing content. This is the "truth" you audit against.
44
+
45
+ ### Step 1 — Audit each surface
46
+
47
+ For each surface below, compare what is present against your feature checklist. Flag:
48
+
49
+ - **Missing** — a shipped feature has no mention on this surface (and should).
50
+ - **Stale** — copy describes an old version of the feature, uses a deprecated name, or references a UI path that no longer exists.
51
+ - **Misleading** — copy implies a capability the product does not have, or understates what it does.
52
+ - **Discoverable?** — would a user browsing this surface find what they need, or is it buried / misordered?
53
+
54
+ #### 1.1 Landing page / marketing site
55
+
56
+ - [ ] **Hero / value prop** — does it reflect the product's current scope?
57
+ - [ ] **Feature cards or sections** — is every major capability represented (or deliberately excluded for focus)?
58
+ - [ ] **"How it works" steps** — do they match the actual onboarding flow?
59
+ - [ ] **FAQ** — are all common "what can it do?" questions covered? Are answers accurate?
60
+ - [ ] **Pricing table** — do plan names, limits, and feature access match the entitlements code?
61
+ - [ ] **SEO metadata** — does the `<title>`, meta description, and OG copy match the current product?
62
+ - [ ] **Secondary CTAs** — do they mention what lower-tier or pre-signup users can do?
63
+
64
+ #### 1.2 About / features panel (if applicable)
65
+
66
+ - [ ] **Features list** — is every shipped feature listed? Are descriptions current? Is the ordering / grouping logical for browsing?
67
+ - [ ] **What's New / changelog** — does it include features shipped in the audit date range? Are oldest items rotated out or dated so they don't feel stale?
68
+ - [ ] **About / overview** — is copy consistent with the landing page?
69
+
70
+ #### 1.3 Help panel / docs / knowledge base
71
+
72
+ - [ ] **Coverage** — does every major feature have a help section or topic? (Cross-reference feature checklist.)
73
+ - [ ] **Feature elevation** — does every feature that has its own **nav-menu entry and standalone panel** also have its own **top-level help section** (not buried as a topic inside another section)? A feature with its own icon in the menu deserves its own section in help.
74
+ - [ ] **Section grouping** — are help sections assigned to logical groups? Do the group names align with how the landing page and feature guide group features?
75
+ - [ ] **Topic accuracy** — do topic descriptions match current UI paths, tab names, and feature behavior?
76
+ - [ ] **Cross-links** — do topics that reference other features point to the correct surface / panel name?
77
+
78
+ #### 1.4 Guided tours / walkthroughs
79
+
80
+ - [ ] **Coverage** — is there a tour for every major workflow? Are new features covered?
81
+ - [ ] **Tour order and categories** — do categories match actual product areas? Are there empty categories?
82
+ - [ ] **Step copy** — does tour text match current UI (tab names, button labels, panel names)?
83
+ - [ ] **Welcome / overview tour** — does it mention all the major product areas a new user should know about?
84
+
85
+ #### 1.5 Onboarding flow
86
+
87
+ - [ ] **Step flow** — does the onboarding guide users through the current recommended getting-started sequence?
88
+ - [ ] **Feature references** — does onboarding copy use current feature names and descriptions?
89
+ - [ ] **Post-setup nudges** — after completing onboarding, are users pointed to the most valuable next actions?
90
+
91
+ #### 1.6 Navigation / information architecture
92
+
93
+ - [ ] **Entry completeness** — does every major feature surface have a nav entry? Are new features reachable without knowing a hidden path?
94
+ - [ ] **Grouping** — are nav items grouped logically?
95
+ - [ ] **Labels** — do nav labels match the canonical feature names?
96
+
97
+ #### 1.7 Exports and downloads (if applicable)
98
+
99
+ - [ ] **Document titles / headings** — do exported documents use current feature names?
100
+ - [ ] **Branding in exports** — if the product includes "about" content in exports, is it current?
101
+
102
+ ### Step 2 — Information architecture review
103
+
104
+ Look across all surfaces as a whole:
105
+
106
+ - [ ] **Grouping consistency** — are features grouped the same way across landing page, About/features panel, help, and tour categories? Flag mismatches.
107
+ - [ ] **Prominence matches importance** — are the product's most valuable features (the ones users sign up for) prominent on the landing page, early in help, and covered by tours? Or are they buried?
108
+ - [ ] **First-class parity** — does every feature with its own **standalone panel in the navigation menu** have equal treatment across all discovery surfaces: its own help section, its own feature-guide entry, tour coverage, and onboarding mention where appropriate? Features that are nav peers in the app should be content peers in help and marketing.
109
+ - [ ] **New feature elevation** — do recently shipped features have adequate visibility, or are they hidden behind existing UI with no mention in marketing / help / tours?
110
+ - [ ] **Dead ends** — are there help topics, tour steps, or FAQ answers that reference removed or renamed features?
111
+
112
+ ### Step 3 — Naming and branding pass
113
+
114
+ - [ ] **Feature names** — do all surfaces use the same canonical name for each feature? (Check the brand doc for the official name.)
115
+ - [ ] **Branded features** — do features that have branded names use those names consistently?
116
+ - [ ] **New features needing names** — are there recently shipped capabilities that are described generically and would benefit from a branded name?
117
+
118
+ ### Step 4 — Freshness signals
119
+
120
+ - [ ] **What's New / changelog** — is the most recent entry less than 2 weeks old? If older, the section feels stale.
121
+ - [ ] **Version numbers** — if a panel or footer has a version string, does it reflect recent work?
122
+ - [ ] **"Coming soon" / "planned" language** — are there any user-visible strings promising features that have since shipped (or been cut)?
123
+ - [ ] **Date references** — are there hardcoded dates or "last updated" strings that are stale?
124
+
125
+ ---
126
+
127
+ ## Output Format
128
+
129
+ ### 1. Feature checklist (source of truth)
130
+
131
+ Bullet list of every shipped feature the audit covers, with canonical name and one-line description.
132
+
133
+ ### 2. Surface audit table
134
+
135
+ For each surface, a table:
136
+
137
+ | Surface | Finding | Type (Missing / Stale / Misleading / Discoverable) | Severity (High / Medium / Low) | Suggested fix |
138
+ |---------|---------|------|----------|---------------|
139
+
140
+ ### 3. Information architecture findings
141
+
142
+ Bullet list of cross-surface consistency issues, prominence mismatches, and dead ends.
143
+
144
+ ### 4. Naming and freshness findings
145
+
146
+ Bullet list of naming drift and stale signals.
147
+
148
+ ### 5. Recommended actions (prioritized)
149
+
150
+ Ordered list of changes, grouped by file, with estimated scope (one-liner / paragraph / new section / new file).
151
+
152
+ ---
153
+
154
+ ## When to run
155
+
156
+ | Trigger | Scope |
157
+ |---------|-------|
158
+ | **Monthly cadence** | Full audit (all surfaces, full feature checklist) |
159
+ | **After a big feature ships** | Targeted — focus on the new feature across all surfaces |
160
+ | **After a rename or rebrand** | Naming pass (Step 3) + targeted surface checks |
161
+ | **Before a launch or marketing push** | Full audit with extra attention to landing page and FAQ |
162
+ | **After a batch of small changes** (3+ features in a week) | Full audit — small changes are the ones most likely to be missed |
163
+
164
+ ---
165
+
166
+ ## Tips for a thorough audit
167
+
168
+ 1. **Start from the source of truth, not from the surfaces.** Build your feature checklist from what shipped, then check each surface against it. This catches *omissions*. Starting from the surfaces only catches *inaccuracies*.
169
+
170
+ 2. **Read surfaces as a new user would.** Open the landing page, about panel, and help in sequence. Is the story coherent? Does the help answer questions the landing page raises?
171
+
172
+ 3. **Check ordering, not just presence.** A feature can be "mentioned" in help but buried as item #18 of 20. If it is a primary capability, it should be near the top.
173
+
174
+ 4. **Look for orphaned content.** After renames, old help topics or tour steps may reference features by their old name or old UI path. These are confusing for users even if the feature still exists.
175
+
176
+ 5. **Cross-check the onboarding flow.** Onboarding is the user's first impression. If it mentions features that no longer exist, or skips features that are now central, the first experience is misleading.
177
+
178
+ 6. **Consider feature grouping holistically.** If the landing page groups features into themes, the features panel, help sections, and tour categories should use compatible groupings — not identical, but not contradictory.
179
+
180
+ 7. **Watch for features buried as subtopics.** When a feature graduates from being a tab inside another panel to being a standalone panel with its own nav entry, update help and feature-guide content to match. A top-level nav citizen deserves a top-level help section — not a paragraph inside another feature's section. This is the most commonly missed elevation step.
181
+
182
+ 8. **Don't forget exports.** If the product generates downloadable documents (DOCX, PDF, ZIP), those documents carry the product's brand into the user's filesystem. Stale headings or descriptions in exports are just as visible as stale help text.
183
+
184
+ 9. **Flag candidates for new tours or help topics.** If a feature is complex enough to need explanation but has no tour or help topic, that is a finding — not just "nice to have."
185
+
186
+ ---
187
+
188
+ ## Run Logging
189
+
190
+ After completing the audit (and any remediation), append an entry to `docs/AUDIT_LOG.md` (create if needed) under a new date heading:
191
+
192
+ - **Audit type:** User-Facing Content Sync Audit
193
+ - **Date range covered:** [start] – [end]
194
+ - **Surfaces audited:** (list)
195
+ - **Feature checklist size:** N features checked
196
+ - **Findings:** N missing / N stale / N misleading / N discoverability issues
197
+ - **Remediated in session:** N (list key fixes)
198
+ - **Deferred:** N (list with reason)
199
+
200
+ This keeps a dated history so the next audit can focus on the delta.