Skip to content

Commit a653bec

Browse files
jesseouecursoragent
andcommitted
feat: add recipe-ready SaaS prompts
Co-authored-by: Cursor <cursoragent@cursor.com>
1 parent 425aedd commit a653bec

30 files changed

Lines changed: 825 additions & 59 deletions

CHANGELOG.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
- Added an installable `cloudflare-next-starter` module for consuming apps while keeping StackFoundry itself on the standard Next.js/Vercel path.
1010
- Added Vercel AI building blocks: `ai-sdk`, `ai-elements`, and `ai-chatbot-sdk`.
1111
- Added `cloudflare-kumo-ui` as an optional Cloudflare UI building-block module.
12-
- Added `agent-ready-installs` with prompt packs and context files for Cursor, Codex, Claude, and similar coding agents.
12+
- Added `agent-ready-installs` with prompt packs and context files for coding assistants.
1313
- Added docs for recipes, install order, readiness, conventions, and a mirrored docs changelog.
1414
- Added OpenSSF Scorecard scanning and private vulnerability reporting links.
1515

README.md

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ shadcn for production SaaS systems.
99
[![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](./LICENSE)
1010
![Next.js](https://img.shields.io/badge/Next.js-16-black)
1111
![Vercel](https://img.shields.io/badge/deploy-Vercel-black)
12-
![Modules](https://img.shields.io/badge/modules-156-orange)
12+
![Modules](https://img.shields.io/badge/modules-157-orange)
1313
![Recipes](https://img.shields.io/badge/recipes-9-purple)
1414
![Presets](https://img.shields.io/badge/presets-13-teal)
1515
![Inspired by shadcn](https://img.shields.io/badge/inspired%20by-shadcn-111111)
@@ -18,7 +18,7 @@ StackFoundry is a public source registry for the production systems SaaS teams r
1818

1919
Modules install as source files in your app. You review the code, own the code, and keep the maintenance context that ships with it.
2020

21-
StackFoundry installs are also coding-agent-ready: Cursor, Codex, Claude, and similar tools can inspect recipes, dry-run installs, review generated diffs, and follow included prompt packs.
21+
StackFoundry installs are also coding-assistant-ready: tools can inspect recipes, dry-run installs, review generated diffs, and follow included prompt packs.
2222

2323
> [!IMPORTANT]
2424
> The registry is the product. Modules are the unit of value. Recipes are the guided path. Presets are convenience bundles.
@@ -45,7 +45,7 @@ pnpm stackfoundry add recipe api-saas-starter --target ./my-app
4545
The API SaaS recipe installs the path most developer tools, AI APIs, data APIs, and B2B platforms need first:
4646

4747
- API key lifecycle and verification
48-
- agent-ready prompt packs for Cursor, Codex, Claude, and similar tools
48+
- one-shot prompt packs for coding-assistant install and review workflows
4949
- usage metering, quotas, and rate limits
5050
- credit wallet and Stripe billing foundations
5151
- webhook inbox and outbound delivery
@@ -109,7 +109,7 @@ Current source registry coverage:
109109
<details>
110110
<summary>Current scale</summary>
111111

112-
- 156 ready module manifests
112+
- 157 ready module manifests
113113
- 36 canonical categories
114114
- 13 preset bundles
115115
- 9 architecture recipes
@@ -127,13 +127,15 @@ The public hierarchy is intentionally simple:
127127

128128
## Agent-Ready Installs
129129

130-
The `agent-ready-installs` module adds prompt packs and context files for Cursor, Codex, Claude, and other coding agents:
130+
The `agent-ready-installs` module adds one-shot prompt packs and context files for coding assistants:
131131

132132
```bash
133133
pnpm stackfoundry add agent-ready-installs --target ./my-app --dry-run
134134
```
135135

136-
It gives agents a safe workflow for inspecting recipes, dry-running installs, reviewing diffs, checking env notes, and verifying the target app after source lands.
136+
It includes recipe-aligned prompts for API SaaS, minimal SaaS, enterprise SaaS, AI SaaS, customer intelligence, Cloudflare SaaS, integration marketplace, security center, and support ops installs. Each prompt defines the completed SaaS endpoint, dry-run/install workflow, expected modules, verification steps, and production handoff.
137+
138+
It gives agents a safe workflow for inspecting recipes, dry-running installs, reviewing diffs, checking env notes, and verifying the target app after source lands with Biome lint/format, TypeScript typecheck, tests, production build, and responsive smoke checks.
137139

138140
## Recipes
139141

apps/web/app/docs/page.tsx

Lines changed: 96 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,8 @@ const pathCards = [
5353
},
5454
{
5555
title: "Agent-ready installs",
56-
eyebrow: "Cursor, Codex, Claude",
57-
body: "Use agent-ready-installs when a coding agent should inspect recipes, run dry-runs, review diffs, and follow safe infrastructure install prompts.",
56+
eyebrow: "one-shot prompts",
57+
body: "Use agent-ready-installs when a coding assistant should inspect recipes, run dry-runs, review diffs, and follow safe infrastructure install prompts.",
5858
modules: ["agent-ready-installs", "api-saas-starter", "api-keys", "usage-metering"],
5959
},
6060
{
@@ -101,6 +101,63 @@ const pathCards = [
101101
},
102102
];
103103

104+
const promptCards = [
105+
{
106+
title: "API SaaS",
107+
prompt: "one-shot-api-saas.md",
108+
recipe: "api-saas-starter",
109+
body: "Keys, usage, quotas, credits, billing, docs, webhooks, and request visibility.",
110+
},
111+
{
112+
title: "Minimal SaaS",
113+
prompt: "one-shot-minimal-saas.md",
114+
recipe: "saas-starter-minimal",
115+
body: "Small shell, settings, database, auth boundary, billing path, health, and security.",
116+
},
117+
{
118+
title: "Enterprise SaaS",
119+
prompt: "one-shot-enterprise-saas.md",
120+
recipe: "enterprise-saas",
121+
body: "SSO, SCIM, RBAC, audit, compliance, support, incidents, and status workflows.",
122+
},
123+
{
124+
title: "AI SaaS",
125+
prompt: "one-shot-ai-saas.md",
126+
recipe: "ai-saas-starter",
127+
body: "AI SDK routes, chat UI, usage metering, quota enforcement, and cost controls.",
128+
},
129+
{
130+
title: "Customer Intelligence",
131+
prompt: "one-shot-customer-intelligence.md",
132+
recipe: "customer-intelligence",
133+
body: "Analytics, large event ingestion, usage data, customer health, and risk signals.",
134+
},
135+
{
136+
title: "Cloudflare SaaS",
137+
prompt: "one-shot-cloudflare-saas.md",
138+
recipe: "cloudflare-saas",
139+
body: "Workers, Pages, storage, queues, workflows, Durable Objects, security, and deploy path.",
140+
},
141+
{
142+
title: "Integration Marketplace",
143+
prompt: "one-shot-integration-marketplace.md",
144+
recipe: "integration-marketplace",
145+
body: "Connected accounts, provider adapters, permissions, health, webhooks, and sync visibility.",
146+
},
147+
{
148+
title: "Security Center",
149+
prompt: "one-shot-security-center.md",
150+
recipe: "security-center",
151+
body: "Security posture, MFA, browser/API controls, data lifecycle, secrets, and audit history.",
152+
},
153+
{
154+
title: "Support Ops",
155+
prompt: "one-shot-support-ops.md",
156+
recipe: "support-ops",
157+
body: "Support, feedback, incidents, on-call, postmortems, status updates, and health signals.",
158+
},
159+
];
160+
104161
const moduleGroups = [
105162
{
106163
category: "Foundation",
@@ -496,14 +553,18 @@ export default function DocsPage() {
496553
<span />
497554
Choose a path
498555
</a>
556+
<a href="#one-shot-prompts">
557+
<span />
558+
One-shot prompts
559+
</a>
499560
<a href="#module-catalog">
500561
<span />
501562
Module catalog
502563
</a>
503564
</div>
504565
<div className="docs-side-section">
505566
<h4>
506-
Registry <strong>156</strong>
567+
Registry <strong>157</strong>
507568
</h4>
508569
{moduleGroups.slice(0, 7).map((group) => (
509570
<a href="#module-catalog" key={group.category}>
@@ -612,9 +673,9 @@ $ pnpm stackfoundry add recipe api-saas-starter --target ./my-app`}</CodeBlock>
612673
<strong>Review the source</strong>
613674
<p>
614675
A module can add routes, schema, dependencies, env documentation, tests/checklists,
615-
and maintenance skills. Run your app's normal lint, typecheck, migration, and test
616-
flow after install. Secrets belong in your environment manager, not in committed
617-
files.
676+
and maintenance skills. Run Biome lint/format, TypeScript typecheck, migration,
677+
tests, production build, and responsive smoke checks after install. Secrets belong
678+
in your environment manager, not in committed files.
618679
</p>
619680
</section>
620681
</section>
@@ -657,9 +718,33 @@ $ pnpm stackfoundry add recipe api-saas-starter --target ./my-app`}</CodeBlock>
657718
$ pnpm stackfoundry recipe api-saas-starter`}</CodeBlock>
658719
</section>
659720

721+
<section aria-labelledby="one-shot-prompts">
722+
<h2 id="one-shot-prompts">
723+
5. Use a one-shot SaaS prompt <Anchor id="one-shot-prompts" />
724+
</h2>
725+
<p>
726+
The `agent-ready-installs` module now ships prompt files that match real recipes. Use
727+
them when a coding assistant should inspect the target app, run a recipe dry-run,
728+
explain the diff, ask before writing, and verify the installed source with Biome,
729+
typecheck, build, tests, and responsive smoke checks.
730+
</p>
731+
<div className="docs-prompt-grid">
732+
{promptCards.map((card) => (
733+
<article className="docs-prompt-card" key={card.prompt}>
734+
<span>{card.recipe}</span>
735+
<h3>{card.title}</h3>
736+
<p>{card.body}</p>
737+
<code>{card.prompt}</code>
738+
</article>
739+
))}
740+
</div>
741+
<CodeBlock label="terminal">{`$ pnpm stackfoundry add agent-ready-installs --target ./my-app
742+
$ code ./my-app/.stackfoundry/prompts/one-shot-api-saas.md`}</CodeBlock>
743+
</section>
744+
660745
<section aria-labelledby="module-catalog">
661746
<h2 id="module-catalog">
662-
5. Module catalog <Anchor id="module-catalog" />
747+
6. Module catalog <Anchor id="module-catalog" />
663748
</h2>
664749
<p>
665750
The registry covers foundation, data, auth and tenancy, billing, API product,
@@ -683,7 +768,7 @@ $ pnpm stackfoundry recipe api-saas-starter`}</CodeBlock>
683768

684769
<section aria-labelledby="authoring">
685770
<h2 id="authoring">
686-
6. Author modules with contracts <Anchor id="authoring" />
771+
7. Author modules with contracts <Anchor id="authoring" />
687772
</h2>
688773
<p>
689774
Every module is more than a code snippet. It ships the implementation, the install
@@ -721,7 +806,7 @@ $ pnpm stackfoundry recipe api-saas-starter`}</CodeBlock>
721806

722807
<section aria-labelledby="safety">
723808
<h2 id="safety">
724-
7. Review and update safely <Anchor id="safety" />
809+
8. Review and update safely <Anchor id="safety" />
725810
</h2>
726811
<p>
727812
StackFoundry is designed for normal code review. Install commands should be paired
@@ -758,12 +843,13 @@ $ pnpm stackfoundry recipe api-saas-starter`}</CodeBlock>
758843
</a>
759844
<a href="#install-existing">Existing app</a>
760845
<a href="#choose-path">Choose a path</a>
846+
<a href="#one-shot-prompts">One-shot prompts</a>
761847
<a href="#module-catalog">Module catalog</a>
762848
<a href="#authoring">Authoring</a>
763849
<a href="#safety">Safety</a>
764850
<div className="docs-toc-meta">
765851
<span>Registry-first</span>
766-
<span>156 modules</span>
852+
<span>157 modules</span>
767853
<a href="https://github.com/jesseoue/stackfoundry">GitHub →</a>
768854
</div>
769855
</aside>

apps/web/app/globals.css

Lines changed: 53 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,7 @@ pre {
176176
.docs-side-section a:focus-visible,
177177
.docs-toc a:focus-visible,
178178
.docs-chip-row a:focus-visible,
179+
.docs-prompt-card:focus-within,
179180
.docs-pager a:focus-visible {
180181
outline: 2px solid var(--focus);
181182
outline-offset: 4px;
@@ -930,11 +931,14 @@ pre {
930931
justify-content: space-between;
931932
margin-top: 2px;
932933
padding-top: 10px;
934+
min-width: 0;
933935
}
934936

935937
.module-footer-actions {
936938
display: inline-flex;
939+
flex-wrap: wrap;
937940
gap: 10px;
941+
justify-content: flex-end;
938942
}
939943

940944
.module-footer a {
@@ -1823,6 +1827,7 @@ pre {
18231827

18241828
.docs-steps,
18251829
.docs-path-grid,
1830+
.docs-prompt-grid,
18261831
.docs-catalog-grid,
18271832
.docs-manifest-grid {
18281833
display: grid;
@@ -1836,6 +1841,7 @@ pre {
18361841

18371842
.docs-step,
18381843
.docs-path-card,
1844+
.docs-prompt-card,
18391845
.docs-catalog-card,
18401846
.docs-manifest-card {
18411847
background: var(--surface);
@@ -1854,6 +1860,7 @@ pre {
18541860

18551861
.docs-step p,
18561862
.docs-path-card p,
1863+
.docs-prompt-card p,
18571864
.docs-catalog-card p,
18581865
.docs-manifest-card p {
18591866
font-size: 13.5px;
@@ -1867,6 +1874,39 @@ pre {
18671874
margin: 22px 0 28px;
18681875
}
18691876

1877+
.docs-prompt-grid {
1878+
grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
1879+
margin: 22px 0 18px;
1880+
}
1881+
1882+
.docs-prompt-card {
1883+
display: grid;
1884+
gap: 10px;
1885+
min-height: 190px;
1886+
}
1887+
1888+
.docs-prompt-card span {
1889+
color: var(--accent);
1890+
font-family: var(--font-mono);
1891+
font-size: 10px;
1892+
letter-spacing: 0.08em;
1893+
text-transform: uppercase;
1894+
}
1895+
1896+
.docs-prompt-card code {
1897+
align-self: end;
1898+
background: color-mix(in oklch, var(--bg) 58%, transparent);
1899+
border: 1px solid var(--border);
1900+
border-radius: 999px;
1901+
color: var(--muted-2);
1902+
display: block;
1903+
font-size: 11px;
1904+
overflow: hidden;
1905+
padding: 5px 8px;
1906+
text-overflow: ellipsis;
1907+
white-space: nowrap;
1908+
}
1909+
18701910
.docs-card-eyebrow {
18711911
color: var(--accent);
18721912
font-family: var(--font-mono);
@@ -2151,6 +2191,7 @@ pre {
21512191
.docs-layout,
21522192
.docs-steps,
21532193
.docs-path-grid,
2194+
.docs-prompt-grid,
21542195
.docs-catalog-grid,
21552196
.docs-manifest-grid,
21562197
.sponsor-strip {
@@ -2340,10 +2381,21 @@ pre {
23402381
.artifact-module strong,
23412382
.artifact-module small,
23422383
.module-name,
2343-
.module-pill span:first-child {
2384+
.module-pill span:first-child,
2385+
.module-row-desc {
23442386
white-space: normal;
23452387
}
23462388

2389+
.module-footer {
2390+
align-items: flex-start;
2391+
flex-direction: column;
2392+
gap: 8px;
2393+
}
2394+
2395+
.module-footer-actions {
2396+
justify-content: flex-start;
2397+
}
2398+
23472399
.section {
23482400
padding: 64px 0;
23492401
}

apps/web/app/page.tsx

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ type LandingModuleCard = {
2222
};
2323

2424
const stats = [
25-
{ value: "156", label: "Modules" },
25+
{ value: "157", label: "Modules" },
2626
{ value: "13", label: "Presets" },
2727
{ value: "36", label: "Categories" },
2828
{ value: "MIT", label: "License" },
@@ -83,15 +83,15 @@ const moduleCards: LandingModuleCard[] = [
8383
category: "developer platform",
8484
version: "ready",
8585
description:
86-
"Prompt packs and context files for Cursor, Codex, Claude, and other coding agents to install infra safely.",
86+
"One-shot prompt packs and context files for coding assistants to install SaaS paths safely.",
8787
tags: [
8888
{ label: "agent-ready", tone: "accent" },
89-
{ label: "prompts", tone: "success" },
90-
{ label: "Cursor/Codex/Claude", tone: "provider" },
89+
{ label: "one-shot prompts", tone: "success" },
90+
{ label: "recipe-aware", tone: "provider" },
9191
{ label: "review workflow", tone: "skill" },
9292
],
9393
footer: {
94-
summary: "4 files · prompts · context JSON",
94+
summary: "13 files · prompts · context JSON",
9595
actions: [{ label: "json", href: "/r/agent-ready-installs.json" }],
9696
},
9797
},

apps/web/app/registry/page.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -336,7 +336,7 @@ const providerOptions = [
336336
];
337337

338338
const stats = [
339-
["156", "Module manifests"],
339+
["157", "Module manifests"],
340340
["13", "Preset bundles"],
341341
["9", "Recipes"],
342342
["17", "Provider cards"],

0 commit comments

Comments
 (0)