@mars-stack/core 0.4.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 (192) hide show
  1. package/README.md +32 -0
  2. package/cursor/manifest.json +304 -0
  3. package/cursor/rules/mars-composition-patterns.mdc +186 -0
  4. package/cursor/rules/mars-data-access.mdc +26 -0
  5. package/cursor/rules/mars-project-structure.mdc +34 -0
  6. package/cursor/rules/mars-security.mdc +25 -0
  7. package/cursor/rules/mars-testing.mdc +24 -0
  8. package/cursor/rules/mars-ui-conventions.mdc +29 -0
  9. package/cursor/skills/mars-add-api-route/SKILL.md +120 -0
  10. package/cursor/skills/mars-add-audit-log/SKILL.md +373 -0
  11. package/cursor/skills/mars-add-blog/SKILL.md +447 -0
  12. package/cursor/skills/mars-add-command-palette/SKILL.md +438 -0
  13. package/cursor/skills/mars-add-component/SKILL.md +158 -0
  14. package/cursor/skills/mars-add-crud-routes/SKILL.md +221 -0
  15. package/cursor/skills/mars-add-e2e-test/SKILL.md +227 -0
  16. package/cursor/skills/mars-add-error-boundary/SKILL.md +472 -0
  17. package/cursor/skills/mars-add-feature/SKILL.md +174 -0
  18. package/cursor/skills/mars-add-middleware/SKILL.md +135 -0
  19. package/cursor/skills/mars-add-page/SKILL.md +153 -0
  20. package/cursor/skills/mars-add-prisma-model/SKILL.md +148 -0
  21. package/cursor/skills/mars-add-protected-resource/SKILL.md +192 -0
  22. package/cursor/skills/mars-add-role/SKILL.md +156 -0
  23. package/cursor/skills/mars-add-server-action/SKILL.md +167 -0
  24. package/cursor/skills/mars-add-webhook/SKILL.md +192 -0
  25. package/cursor/skills/mars-build-complete-feature/SKILL.md +228 -0
  26. package/cursor/skills/mars-build-dashboard/SKILL.md +211 -0
  27. package/cursor/skills/mars-build-data-table/SKILL.md +284 -0
  28. package/cursor/skills/mars-build-form/SKILL.md +229 -0
  29. package/cursor/skills/mars-build-landing-page/SKILL.md +248 -0
  30. package/cursor/skills/mars-capture-conversation-context/SKILL.md +119 -0
  31. package/cursor/skills/mars-configure-ai/SKILL.md +617 -0
  32. package/cursor/skills/mars-configure-analytics/SKILL.md +413 -0
  33. package/cursor/skills/mars-configure-dark-mode/SKILL.md +309 -0
  34. package/cursor/skills/mars-configure-email/SKILL.md +170 -0
  35. package/cursor/skills/mars-configure-email-verification/SKILL.md +333 -0
  36. package/cursor/skills/mars-configure-feature-flags/SKILL.md +361 -0
  37. package/cursor/skills/mars-configure-i18n/SKILL.md +518 -0
  38. package/cursor/skills/mars-configure-jobs/SKILL.md +500 -0
  39. package/cursor/skills/mars-configure-magic-links/SKILL.md +385 -0
  40. package/cursor/skills/mars-configure-multi-tenancy/SKILL.md +611 -0
  41. package/cursor/skills/mars-configure-notifications/SKILL.md +569 -0
  42. package/cursor/skills/mars-configure-oauth/SKILL.md +217 -0
  43. package/cursor/skills/mars-configure-onboarding/SKILL.md +483 -0
  44. package/cursor/skills/mars-configure-payments/SKILL.md +243 -0
  45. package/cursor/skills/mars-configure-realtime/SKILL.md +733 -0
  46. package/cursor/skills/mars-configure-search/SKILL.md +581 -0
  47. package/cursor/skills/mars-configure-storage/SKILL.md +273 -0
  48. package/cursor/skills/mars-configure-two-factor/SKILL.md +518 -0
  49. package/cursor/skills/mars-create-execution-plan/SKILL.md +204 -0
  50. package/cursor/skills/mars-create-seed/SKILL.md +191 -0
  51. package/cursor/skills/mars-deploy-to-vercel/SKILL.md +300 -0
  52. package/cursor/skills/mars-design-tokens/SKILL.md +138 -0
  53. package/cursor/skills/mars-setup-billing/SKILL.md +322 -0
  54. package/cursor/skills/mars-setup-project/SKILL.md +104 -0
  55. package/cursor/skills/mars-setup-teams/SKILL.md +688 -0
  56. package/cursor/skills/mars-test-api-route/SKILL.md +219 -0
  57. package/cursor/skills/mars-update-architecture-docs/SKILL.md +189 -0
  58. package/dist/api-error/index.d.ts +27 -0
  59. package/dist/api-error/index.d.ts.map +1 -0
  60. package/dist/api-error/index.js +2 -0
  61. package/dist/auth/credential-tag.d.ts +5 -0
  62. package/dist/auth/credential-tag.d.ts.map +1 -0
  63. package/dist/auth/credential-tag.js +2 -0
  64. package/dist/auth/crypto-utils.d.ts +43 -0
  65. package/dist/auth/crypto-utils.d.ts.map +1 -0
  66. package/dist/auth/crypto-utils.js +1 -0
  67. package/dist/auth/csrf.d.ts +32 -0
  68. package/dist/auth/csrf.d.ts.map +1 -0
  69. package/dist/auth/csrf.js +2 -0
  70. package/dist/auth/hooks/index.d.ts +4 -0
  71. package/dist/auth/hooks/index.d.ts.map +1 -0
  72. package/dist/auth/hooks/index.js +68 -0
  73. package/dist/auth/hooks/useCSRF.d.ts +7 -0
  74. package/dist/auth/hooks/useCSRF.d.ts.map +1 -0
  75. package/dist/auth/hooks/usePasswordStrength.d.ts +17 -0
  76. package/dist/auth/hooks/usePasswordStrength.d.ts.map +1 -0
  77. package/dist/auth/internal-api-key.d.ts +5 -0
  78. package/dist/auth/internal-api-key.d.ts.map +1 -0
  79. package/dist/auth/internal-api-key.js +30 -0
  80. package/dist/auth/link-utils.d.ts +13 -0
  81. package/dist/auth/link-utils.d.ts.map +1 -0
  82. package/dist/auth/link-utils.js +1 -0
  83. package/dist/auth/middleware.d.ts +56 -0
  84. package/dist/auth/middleware.d.ts.map +1 -0
  85. package/dist/auth/middleware.js +3 -0
  86. package/dist/auth/password.d.ts +28 -0
  87. package/dist/auth/password.d.ts.map +1 -0
  88. package/dist/auth/password.js +1 -0
  89. package/dist/auth/reset-token.d.ts +3 -0
  90. package/dist/auth/reset-token.d.ts.map +1 -0
  91. package/dist/auth/reset-token.js +9 -0
  92. package/dist/auth/responses.d.ts +15 -0
  93. package/dist/auth/responses.d.ts.map +1 -0
  94. package/dist/auth/responses.js +2 -0
  95. package/dist/auth/session.d.ts +79 -0
  96. package/dist/auth/session.d.ts.map +1 -0
  97. package/dist/auth/session.js +1 -0
  98. package/dist/auth/types.d.ts +18 -0
  99. package/dist/auth/types.d.ts.map +1 -0
  100. package/dist/auth/types.js +10 -0
  101. package/dist/auth/validation.d.ts +146 -0
  102. package/dist/auth/validation.d.ts.map +1 -0
  103. package/dist/auth/validation.js +116 -0
  104. package/dist/auth/validators.d.ts +4 -0
  105. package/dist/auth/validators.d.ts.map +1 -0
  106. package/dist/auth/validators.js +27 -0
  107. package/dist/auth/verification.d.ts +54 -0
  108. package/dist/auth/verification.d.ts.map +1 -0
  109. package/dist/auth/verification.js +39 -0
  110. package/dist/chunk-4LS3QDD5.js +162 -0
  111. package/dist/chunk-ABBUHT5Z.js +110 -0
  112. package/dist/chunk-CTYAVMOF.js +15 -0
  113. package/dist/chunk-GVLH2GQP.js +14 -0
  114. package/dist/chunk-HOSMMQMA.js +109 -0
  115. package/dist/chunk-MXQ66RUN.js +28 -0
  116. package/dist/chunk-PZE3JGXO.js +149 -0
  117. package/dist/chunk-QAH2Y5WK.js +93 -0
  118. package/dist/chunk-QWMN5UJC.js +76 -0
  119. package/dist/chunk-ROQV54MU.js +117 -0
  120. package/dist/chunk-U4NZQ366.js +46 -0
  121. package/dist/chunk-WBJOIENS.js +22 -0
  122. package/dist/chunk-WO6FHJHG.js +29 -0
  123. package/dist/chunk-Z5BEKPJI.js +96 -0
  124. package/dist/chunk-ZA46T6GX.js +24 -0
  125. package/dist/configure-mars.d.ts +104 -0
  126. package/dist/configure-mars.d.ts.map +1 -0
  127. package/dist/database/index.d.ts +8 -0
  128. package/dist/database/index.d.ts.map +1 -0
  129. package/dist/database/index.js +1 -0
  130. package/dist/email/index.d.ts +25 -0
  131. package/dist/email/index.d.ts.map +1 -0
  132. package/dist/email/index.js +2 -0
  133. package/dist/email/types.d.ts +18 -0
  134. package/dist/email/types.d.ts.map +1 -0
  135. package/dist/env/index.d.ts +36 -0
  136. package/dist/env/index.d.ts.map +1 -0
  137. package/dist/env/index.js +1 -0
  138. package/dist/index.d.ts +6 -0
  139. package/dist/index.d.ts.map +1 -0
  140. package/dist/index.js +163 -0
  141. package/dist/logger/index.d.ts +80 -0
  142. package/dist/logger/index.d.ts.map +1 -0
  143. package/dist/logger/index.js +1 -0
  144. package/dist/payments/index.d.ts +53 -0
  145. package/dist/payments/index.d.ts.map +1 -0
  146. package/dist/payments/index.js +72 -0
  147. package/dist/plugin/builtin/email-plugins.d.ts +10 -0
  148. package/dist/plugin/builtin/email-plugins.d.ts.map +1 -0
  149. package/dist/plugin/builtin/index.d.ts +4 -0
  150. package/dist/plugin/builtin/index.d.ts.map +1 -0
  151. package/dist/plugin/builtin/index.js +324 -0
  152. package/dist/plugin/builtin/payment-plugins.d.ts +4 -0
  153. package/dist/plugin/builtin/payment-plugins.d.ts.map +1 -0
  154. package/dist/plugin/builtin/storage-plugins.d.ts +5 -0
  155. package/dist/plugin/builtin/storage-plugins.d.ts.map +1 -0
  156. package/dist/plugin/index.d.ts +21 -0
  157. package/dist/plugin/index.d.ts.map +1 -0
  158. package/dist/plugin/index.js +30 -0
  159. package/dist/rate-limit/index.d.ts +89 -0
  160. package/dist/rate-limit/index.d.ts.map +1 -0
  161. package/dist/rate-limit/index.js +166 -0
  162. package/dist/seo/faq.d.ts +37 -0
  163. package/dist/seo/faq.d.ts.map +1 -0
  164. package/dist/seo/index.d.ts +75 -0
  165. package/dist/seo/index.d.ts.map +1 -0
  166. package/dist/seo/index.js +1 -0
  167. package/dist/storage/index.d.ts +50 -0
  168. package/dist/storage/index.d.ts.map +1 -0
  169. package/dist/storage/index.js +211 -0
  170. package/dist/test-utils/factories.d.ts +38 -0
  171. package/dist/test-utils/factories.d.ts.map +1 -0
  172. package/dist/test-utils/index.d.ts +6 -0
  173. package/dist/test-utils/index.d.ts.map +1 -0
  174. package/dist/test-utils/index.js +117 -0
  175. package/dist/test-utils/mock-auth.d.ts +25 -0
  176. package/dist/test-utils/mock-auth.d.ts.map +1 -0
  177. package/dist/test-utils/mock-prisma.d.ts +55 -0
  178. package/dist/test-utils/mock-prisma.d.ts.map +1 -0
  179. package/dist/test-utils/render.d.ts +4 -0
  180. package/dist/test-utils/render.d.ts.map +1 -0
  181. package/dist/test-utils/request-helpers.d.ts +6 -0
  182. package/dist/test-utils/request-helpers.d.ts.map +1 -0
  183. package/dist/types.d.ts +53 -0
  184. package/dist/types.d.ts.map +1 -0
  185. package/dist/utils/math.d.ts +2 -0
  186. package/dist/utils/math.d.ts.map +1 -0
  187. package/dist/utils/math.js +7 -0
  188. package/dist/utils/optional-import.d.ts +14 -0
  189. package/dist/utils/optional-import.d.ts.map +1 -0
  190. package/package.json +205 -0
  191. package/scripts/generate-skill-adapters.ts +146 -0
  192. package/scripts/postinstall.mjs +146 -0
@@ -0,0 +1,248 @@
1
+ # Skill: Build a Landing Page
2
+
3
+ Create a marketing landing page with hero, features, CTA sections using MARS design system tokens.
4
+
5
+ ## When to Use
6
+
7
+ Use this skill when the user asks to build a landing page, marketing page, home page, or public-facing product page.
8
+
9
+ ## Architecture
10
+
11
+ Landing pages are server components (no `'use client'`) for optimal SEO and performance. They live in the public route group.
12
+
13
+ ## Directory
14
+
15
+ ```
16
+ src/app/(public)/page.tsx # Home landing page
17
+ src/app/(public)/pricing/page.tsx # Pricing page
18
+ src/app/(public)/about/page.tsx # About page
19
+ ```
20
+
21
+ ## Template: Full Landing Page
22
+
23
+ ```tsx
24
+ import { Button, LinkButton, H1, H2, Paragraph } from '@mars-stack/ui';
25
+ import { appConfig } from '@/config/app.config';
26
+ import type { Metadata } from 'next';
27
+
28
+ export const metadata: Metadata = {
29
+ title: `${appConfig.name} - ${appConfig.tagline}`,
30
+ description: appConfig.description,
31
+ };
32
+
33
+ export default function HomePage() {
34
+ return (
35
+ <main>
36
+ <HeroSection />
37
+ <FeaturesSection />
38
+ <CTASection />
39
+ </main>
40
+ );
41
+ }
42
+
43
+ function HeroSection() {
44
+ return (
45
+ <section className="relative overflow-hidden bg-surface-background px-4 py-24 sm:py-32">
46
+ <div className="mx-auto max-w-4xl text-center">
47
+ <h1 className="text-4xl font-bold tracking-tight text-text-primary sm:text-6xl">
48
+ {appConfig.tagline}
49
+ </h1>
50
+ <p className="mx-auto mt-6 max-w-2xl text-lg leading-8 text-text-secondary">
51
+ {appConfig.description}
52
+ </p>
53
+ <div className="mt-10 flex items-center justify-center gap-4">
54
+ <LinkButton href="/register" size="lg">
55
+ Get Started Free
56
+ </LinkButton>
57
+ <LinkButton href="#features" variant="secondary" size="lg">
58
+ Learn More
59
+ </LinkButton>
60
+ </div>
61
+ </div>
62
+ </section>
63
+ );
64
+ }
65
+
66
+ function FeaturesSection() {
67
+ const features = [
68
+ {
69
+ title: 'Lightning Fast',
70
+ description: 'Built on Next.js 15 with Turbopack for instant feedback during development.',
71
+ icon: '⚡',
72
+ },
73
+ {
74
+ title: 'Secure by Default',
75
+ description: 'Authentication, CSRF protection, rate limiting, and input validation out of the box.',
76
+ icon: '🔒',
77
+ },
78
+ {
79
+ title: 'Beautiful UI',
80
+ description: 'A design token system that ensures consistency across every component.',
81
+ icon: '🎨',
82
+ },
83
+ ];
84
+
85
+ return (
86
+ <section id="features" className="bg-surface-card px-4 py-24">
87
+ <div className="mx-auto max-w-6xl">
88
+ <div className="text-center">
89
+ <H2>Everything you need</H2>
90
+ <Paragraph className="mx-auto mt-4 max-w-2xl text-text-secondary">
91
+ All the tools and infrastructure to build and ship your product.
92
+ </Paragraph>
93
+ </div>
94
+ <div className="mt-16 grid grid-cols-1 gap-8 sm:grid-cols-2 lg:grid-cols-3">
95
+ {features.map((feature) => (
96
+ <div
97
+ key={feature.title}
98
+ className="rounded-xl border border-border-default bg-surface-background p-6"
99
+ >
100
+ <div className="mb-4 text-3xl">{feature.icon}</div>
101
+ <h3 className="text-lg font-semibold text-text-primary">{feature.title}</h3>
102
+ <p className="mt-2 text-text-secondary">{feature.description}</p>
103
+ </div>
104
+ ))}
105
+ </div>
106
+ </div>
107
+ </section>
108
+ );
109
+ }
110
+
111
+ function CTASection() {
112
+ return (
113
+ <section className="bg-brand-primary px-4 py-24">
114
+ <div className="mx-auto max-w-4xl text-center">
115
+ <h2 className="text-3xl font-bold text-text-on-brand sm:text-4xl">
116
+ Ready to get started?
117
+ </h2>
118
+ <p className="mx-auto mt-4 max-w-xl text-lg text-text-on-brand/80">
119
+ Create your account in 30 seconds. No credit card required.
120
+ </p>
121
+ <div className="mt-8">
122
+ <LinkButton
123
+ href="/register"
124
+ variant="secondary"
125
+ size="lg"
126
+ className="bg-white text-brand-primary hover:bg-white/90"
127
+ >
128
+ Start Building
129
+ </LinkButton>
130
+ </div>
131
+ </div>
132
+ </section>
133
+ );
134
+ }
135
+ ```
136
+
137
+ ## Common Sections
138
+
139
+ ### Social Proof / Logos
140
+
141
+ ```tsx
142
+ function LogoCloud() {
143
+ return (
144
+ <section className="bg-surface-background px-4 py-16">
145
+ <div className="mx-auto max-w-6xl">
146
+ <p className="text-center text-sm font-medium text-text-muted uppercase tracking-wide">
147
+ Trusted by teams at
148
+ </p>
149
+ <div className="mt-8 flex flex-wrap items-center justify-center gap-8 opacity-60">
150
+ {/* Logo images or SVGs */}
151
+ </div>
152
+ </div>
153
+ </section>
154
+ );
155
+ }
156
+ ```
157
+
158
+ ### Testimonials
159
+
160
+ ```tsx
161
+ function TestimonialsSection() {
162
+ const testimonials = [
163
+ { quote: '...', author: 'Jane', role: 'CTO at Acme' },
164
+ ];
165
+
166
+ return (
167
+ <section className="bg-surface-background px-4 py-24">
168
+ <div className="mx-auto max-w-6xl">
169
+ <H2 className="text-center">What people say</H2>
170
+ <div className="mt-12 grid grid-cols-1 gap-8 md:grid-cols-3">
171
+ {testimonials.map((t, i) => (
172
+ <div key={i} className="rounded-xl border border-border-default bg-surface-card p-6">
173
+ <p className="text-text-primary italic">&ldquo;{t.quote}&rdquo;</p>
174
+ <div className="mt-4">
175
+ <p className="font-medium text-text-primary">{t.author}</p>
176
+ <p className="text-sm text-text-secondary">{t.role}</p>
177
+ </div>
178
+ </div>
179
+ ))}
180
+ </div>
181
+ </div>
182
+ </section>
183
+ );
184
+ }
185
+ ```
186
+
187
+ ### Pricing Cards
188
+
189
+ ```tsx
190
+ function PricingCard({ name, price, features, highlighted }: PricingCardProps) {
191
+ return (
192
+ <div className={clsx(
193
+ 'rounded-xl border p-8',
194
+ highlighted
195
+ ? 'border-brand-primary bg-surface-card shadow-lg ring-2 ring-brand-primary'
196
+ : 'border-border-default bg-surface-card'
197
+ )}>
198
+ <h3 className="text-lg font-semibold text-text-primary">{name}</h3>
199
+ <p className="mt-4">
200
+ <span className="text-4xl font-bold text-text-primary">£{price}</span>
201
+ <span className="text-text-secondary">/month</span>
202
+ </p>
203
+ <ul className="mt-6 space-y-3">
204
+ {features.map((f) => (
205
+ <li key={f} className="flex items-center gap-2 text-text-secondary">
206
+ <span className="text-text-success">✓</span> {f}
207
+ </li>
208
+ ))}
209
+ </ul>
210
+ <LinkButton
211
+ href="/register"
212
+ variant={highlighted ? 'primary' : 'secondary'}
213
+ className="mt-8 w-full"
214
+ >
215
+ Get Started
216
+ </LinkButton>
217
+ </div>
218
+ );
219
+ }
220
+ ```
221
+
222
+ ## SEO
223
+
224
+ Landing pages should export `metadata` with:
225
+ - `title` -- from `appConfig.name` + tagline
226
+ - `description` -- from `appConfig.description`
227
+ - `openGraph` -- images, type, url
228
+ - Structured data via `JsonLd` component
229
+
230
+ ```tsx
231
+ import { JsonLd } from '@mars-stack/ui';
232
+ import { buildOrganizationJsonLd } from '@/lib/mars';
233
+
234
+ // In the page:
235
+ <JsonLd data={buildOrganizationJsonLd()} />
236
+ ```
237
+
238
+ ## Checklist
239
+
240
+ - [ ] Server component (no `'use client'`)
241
+ - [ ] SEO metadata exported
242
+ - [ ] Hero with clear value proposition and CTA
243
+ - [ ] Features section with grid layout
244
+ - [ ] CTA section with brand background
245
+ - [ ] All colours use semantic tokens
246
+ - [ ] Responsive at all breakpoints
247
+ - [ ] Uses `appConfig` for dynamic content (name, tagline, description)
248
+ - [ ] `JsonLd` structured data included
@@ -0,0 +1,119 @@
1
+ # Skill: Capture Conversation Context
2
+
3
+ Feed decisions, discoveries, and context from the current agent conversation back into the repository so future agents can access them.
4
+
5
+ ## When to Use
6
+
7
+ Use this skill when:
8
+ - A significant architectural decision was made during conversation
9
+ - A multi-step plan was executed and should be recorded
10
+ - A bug was investigated and the root cause should be documented
11
+ - A refactoring rationale needs to be preserved
12
+ - The conversation is ending and produced valuable context
13
+
14
+ ## Prerequisites
15
+
16
+ - Read `docs/design-docs/conversation-as-system-record.md` for the full design doc.
17
+ - Read `docs/exec-plans/` to see existing plans.
18
+ - Read `docs/QUALITY_SCORE.md` for current quality grades.
19
+
20
+ ## Step 1: Identify What Was Produced
21
+
22
+ Review the conversation and categorise the output:
23
+
24
+ | What happened | Artifact to create/update |
25
+ |---|---|
26
+ | Planned work and executed it | `docs/exec-plans/completed/<name>.md` |
27
+ | Planned work (not yet executed) | `docs/exec-plans/active/<name>.md` |
28
+ | Made an architecture decision | `docs/design-docs/<name>.md` |
29
+ | Fixed a bug with interesting root cause | `docs/exec-plans/completed/<bug-name>.md` |
30
+ | Discovered tech debt | `docs/exec-plans/tech-debt.md` |
31
+ | Changed quality grades | `docs/QUALITY_SCORE.md` |
32
+ | Updated core beliefs | `docs/design-docs/core-beliefs.md` |
33
+
34
+ ## Step 2: Write the Artifact
35
+
36
+ ### For completed execution plans
37
+
38
+ Follow the `create-execution-plan` skill format but with status `Completed`. Include:
39
+
40
+ ```markdown
41
+ # Execution Plan: <Title>
42
+
43
+ **Status:** Completed
44
+ **Created:** <date>
45
+ **Completed:** <date>
46
+ **Origin:** <Brief description of what prompted this work>
47
+
48
+ ## Context
49
+ <Why this work was needed>
50
+
51
+ ## What Was Done
52
+ <Summary of changes, organised by phase or area>
53
+
54
+ ## Key Decisions
55
+ <Decisions made during execution, with rationale>
56
+
57
+ ## Discoveries
58
+ <Anything unexpected that was found — framework quirks, bugs, constraints>
59
+ ```
60
+
61
+ ### For design docs
62
+
63
+ ```markdown
64
+ # Design Doc: <Title>
65
+
66
+ **Status:** Accepted / Proposed / Superseded
67
+ **Created:** <date>
68
+
69
+ ## Problem
70
+ <What problem does this solve?>
71
+
72
+ ## Decision
73
+ <What was decided?>
74
+
75
+ ## Alternatives Considered
76
+ <What else was evaluated and why it was rejected?>
77
+
78
+ ## Consequences
79
+ <What are the implications of this decision?>
80
+ ```
81
+
82
+ ### For tech debt updates
83
+
84
+ Append to the appropriate section of `docs/exec-plans/tech-debt.md`:
85
+
86
+ ```markdown
87
+ | <Item> | <Location> | <Impact> | <Tracking> |
88
+ ```
89
+
90
+ ## Step 3: Update Cross-References
91
+
92
+ 1. If a new design doc was created, add it to `docs/design-docs/index.md`.
93
+ 2. If quality scores changed, update `docs/QUALITY_SCORE.md`.
94
+ 3. If an active plan was completed, move it from `active/` to `completed/`.
95
+ 4. If core beliefs were affected, update `docs/design-docs/core-beliefs.md`.
96
+
97
+ ## Step 4: Verify
98
+
99
+ - [ ] Artifact is in the correct directory with correct status
100
+ - [ ] Key decisions include rationale (not just what, but why)
101
+ - [ ] Discoveries document the unexpected (things code can't convey)
102
+ - [ ] Cross-references are updated
103
+ - [ ] No conversation-specific noise (corrections, false starts, tone)
104
+
105
+ ## Anti-Patterns
106
+
107
+ - **Don't dump the transcript.** Extract decisions and context, not the conversation.
108
+ - **Don't document the obvious.** If the code diff tells the story, the artifact should explain only what the diff cannot.
109
+ - **Don't create empty placeholders.** If the conversation didn't produce meaningful context, don't create an artifact.
110
+ - **Don't duplicate what's in the code.** The artifact explains *why*, not *what*.
111
+
112
+ ## Checklist
113
+
114
+ - [ ] Identified conversation output type (plan, decision, discovery, debt)
115
+ - [ ] Created or updated the appropriate artifact
116
+ - [ ] Included rationale for key decisions
117
+ - [ ] Documented unexpected discoveries
118
+ - [ ] Updated cross-references (index files, quality scores)
119
+ - [ ] No transcript noise in the artifact