rahman-resources 1.4.0 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/cli.js +39 -6
- package/bin/compose-print.mjs +83 -0
- package/bin/compose-state.mjs +105 -0
- package/bin/compose.mjs +30 -194
- package/bin/graph-render.mjs +179 -0
- package/bin/graph.mjs +3 -182
- package/bin/migrate-load.mjs +189 -0
- package/bin/migrate-print.mjs +75 -0
- package/bin/migrate.mjs +56 -297
- package/bin/update-context.mjs +184 -0
- package/bin/update-output.mjs +110 -0
- package/bin/update.mjs +15 -293
- package/lib/compose-solver-arbitrate.mjs +84 -0
- package/lib/compose-solver-conflicts.mjs +163 -0
- package/lib/compose-solver-loader.mjs +79 -0
- package/lib/compose-solver-resolve.mjs +165 -0
- package/lib/compose-solver.mjs +42 -376
- package/lib/contract-types.ts +184 -0
- package/lib/contract-validate.ts +155 -0
- package/lib/contract.ts +31 -319
- package/lib/dna-graph.mjs +53 -0
- package/lib/dna.mjs +5 -46
- package/lib/env-augment.mjs +116 -0
- package/lib/manifest.json +303 -351
- package/lib/merge3-diff.mjs +187 -0
- package/lib/merge3-snapshot.mjs +108 -0
- package/lib/merge3.mjs +7 -305
- package/lib/migration-plan-render.mjs +111 -0
- package/lib/migration-plan-steps.mjs +144 -0
- package/lib/migration-plan.mjs +17 -258
- package/lib/post-init.mjs +1 -1
- package/lib/skills.json +1 -1
- package/package.json +1 -1
package/lib/manifest.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 2,
|
|
3
|
-
"generatedAt": "2026-05-
|
|
3
|
+
"generatedAt": "2026-05-17T13:25:57.345Z",
|
|
4
4
|
"repo": "rahmanef63/resource-site",
|
|
5
5
|
"branch": "main",
|
|
6
6
|
"layouts": [
|
|
@@ -135,7 +135,7 @@
|
|
|
135
135
|
"tabs",
|
|
136
136
|
"textarea"
|
|
137
137
|
],
|
|
138
|
-
"agentRecipe": "Personal Brand OS = full-app template (public + admin). 1)
|
|
138
|
+
"agentRecipe": "Run `npx rr init <app> --template personal-brand-os` (or `npx rr add personal-brand-os` inside an existing project). Personal Brand OS = full-app template (public + admin). 1) Default `npx rr add personal-brand-os` runs `--at root`: routes promoted to app/(public)/ + app/admin/, and /preview/personal-brand-os/* path constants in nav-config/site-config/robots/sitemap auto-rewritten. (Pass `--at preview` only for sandbox demos that keep /preview/personal-brand-os/* URLs.) 2) Edit components/templates/personal-brand/shared/site-config.ts — set brandName, ownerName, baseUrl, twitter, email. 3) Wire convex-templates/personal-brand-os/* into your convex/features/personal-brand-os/ (kitab ships them outside `convex/` so the bundler doesn't try to compile scaffolds without _generated) and add @convex-dev/auth on admin routes. 4) Replace localStorage StoreProvider with Convex queries (schema mirrors localStorage shape).",
|
|
139
139
|
"tags": [
|
|
140
140
|
"template",
|
|
141
141
|
"personal-brand",
|
|
@@ -233,7 +233,7 @@
|
|
|
233
233
|
"sheet",
|
|
234
234
|
"textarea"
|
|
235
235
|
],
|
|
236
|
-
"agentRecipe": "Agency Studio OS = full-app B2B agency template (public + admin). 1) Move app/preview/agency-studio-os/{robots,sitemap,opengraph-image}.* to app root. 2) Copy public into app/(public)/, admin into app/(admin)/. 3) Edit components/templates/agency-studio/shared/site-config.ts — set studioName, brandName, baseUrl, twitter, email. 4) Wire convex-templates/agency-studio-os/* into your convex/ (kitab ships them outside `convex/` so the bundler doesn't try to compile scaffolds without _generated) and add @convex-dev/auth on admin routes. 5) Replace localStorage StoreProvider with Convex queries.",
|
|
236
|
+
"agentRecipe": "Run `npx rr init <app> --template agency-studio-os`. Agency Studio OS = full-app B2B agency template (public + admin). 1) Move app/preview/agency-studio-os/{robots,sitemap,opengraph-image}.* to app root. 2) Copy public into app/(public)/, admin into app/(admin)/. 3) Edit components/templates/agency-studio/shared/site-config.ts — set studioName, brandName, baseUrl, twitter, email. 4) Wire convex-templates/agency-studio-os/* into your convex/ (kitab ships them outside `convex/` so the bundler doesn't try to compile scaffolds without _generated) and add @convex-dev/auth on admin routes. 5) Replace localStorage StoreProvider with Convex queries.",
|
|
237
237
|
"tags": [
|
|
238
238
|
"template",
|
|
239
239
|
"agency",
|
|
@@ -258,14 +258,14 @@
|
|
|
258
258
|
"files": [],
|
|
259
259
|
"dependencies": [],
|
|
260
260
|
"shadcnComponents": [],
|
|
261
|
-
"agentRecipe": "Mount the HeroSection from cookbook/layouts/landing-hero-carousel as the hero of the marketing route group. Provide image array via props or wire to Convex api.heroImages.list.",
|
|
261
|
+
"agentRecipe": "Run `npx rr add landing-hero-carousel`. Mount the HeroSection from cookbook/layouts/landing-hero-carousel as the hero of the marketing route group. Provide image array via props or wire to Convex api.heroImages.list.",
|
|
262
262
|
"tags": [
|
|
263
263
|
"marketing",
|
|
264
264
|
"carousel",
|
|
265
265
|
"image",
|
|
266
266
|
"cms"
|
|
267
267
|
],
|
|
268
|
-
"primaryFile": "src/HeroSection.tsx"
|
|
268
|
+
"primaryFile": "cookbook/layouts/landing-hero-carousel/src/HeroSection.tsx"
|
|
269
269
|
},
|
|
270
270
|
{
|
|
271
271
|
"slug": "landing-asymmetric-masonry",
|
|
@@ -280,14 +280,14 @@
|
|
|
280
280
|
"files": [],
|
|
281
281
|
"dependencies": [],
|
|
282
282
|
"shadcnComponents": [],
|
|
283
|
-
"agentRecipe": "Use PortfolioGrid for case-study or portfolio pages. Items array shape: { id, title, cover, href, category }. The 8-slot pattern repeats; supply at least 8 items for the layout to bloom.",
|
|
283
|
+
"agentRecipe": "Run `npx rr add landing-asymmetric-masonry`. Use PortfolioGrid for case-study or portfolio pages. Items array shape: { id, title, cover, href, category }. The 8-slot pattern repeats; supply at least 8 items for the layout to bloom.",
|
|
284
284
|
"tags": [
|
|
285
285
|
"marketing",
|
|
286
286
|
"portfolio",
|
|
287
287
|
"masonry",
|
|
288
288
|
"scroll-reveal"
|
|
289
289
|
],
|
|
290
|
-
"primaryFile": "src/PortfolioGrid.tsx"
|
|
290
|
+
"primaryFile": "cookbook/layouts/landing-asymmetric-masonry/src/PortfolioGrid.tsx"
|
|
291
291
|
},
|
|
292
292
|
{
|
|
293
293
|
"slug": "landing-bento",
|
|
@@ -302,7 +302,7 @@
|
|
|
302
302
|
"files": [],
|
|
303
303
|
"dependencies": [],
|
|
304
304
|
"shadcnComponents": [],
|
|
305
|
-
"agentRecipe": "Compose a 3-column CSS grid with explicit area assignments per feature. Mix Card sizes (1x1, 1x2, 2x1, 2x2) for visual rhythm.",
|
|
305
|
+
"agentRecipe": "Run `npx rr add landing-bento`. Compose a 3-column CSS grid with explicit area assignments per feature. Mix Card sizes (1x1, 1x2, 2x1, 2x2) for visual rhythm.",
|
|
306
306
|
"tags": [
|
|
307
307
|
"marketing",
|
|
308
308
|
"bento",
|
|
@@ -323,7 +323,7 @@
|
|
|
323
323
|
"files": [],
|
|
324
324
|
"dependencies": [],
|
|
325
325
|
"shadcnComponents": [],
|
|
326
|
-
"agentRecipe": "Use motion primitives marquee, kinetic-heading, magnetic from components/motion (already imported into the kitab from rahmanef.com). All respect prefers-reduced-motion automatically.",
|
|
326
|
+
"agentRecipe": "Run `npx rr add landing-kinetic-text`. Use motion primitives marquee, kinetic-heading, magnetic from components/motion (already imported into the kitab from rahmanef.com). All respect prefers-reduced-motion automatically.",
|
|
327
327
|
"tags": [
|
|
328
328
|
"marketing",
|
|
329
329
|
"motion",
|
|
@@ -344,7 +344,7 @@
|
|
|
344
344
|
"files": [],
|
|
345
345
|
"dependencies": [],
|
|
346
346
|
"shadcnComponents": [],
|
|
347
|
-
"agentRecipe": "Mount inside app/dashboard/<slice>/page.tsx. Wrap with the kitab's <ThreeColumnLayout>. Slot in slice-specific sidebars and inspectors. Mobile auto-collapses to drawers.",
|
|
347
|
+
"agentRecipe": "Run `npx rr add dashboard-three-column`. Mount inside app/dashboard/<slice>/page.tsx. Wrap with the kitab's <ThreeColumnLayout>. Slot in slice-specific sidebars and inspectors. Mobile auto-collapses to drawers.",
|
|
348
348
|
"tags": [
|
|
349
349
|
"dashboard",
|
|
350
350
|
"three-column",
|
|
@@ -366,7 +366,7 @@
|
|
|
366
366
|
"files": [],
|
|
367
367
|
"dependencies": [],
|
|
368
368
|
"shadcnComponents": [],
|
|
369
|
-
"agentRecipe": "Compose grid: 48px activity bar + tabs row + editor/inspector flex row + bottom console. Wire activity bar items to dispatch into tabs/inspector store.",
|
|
369
|
+
"agentRecipe": "Run `npx rr add dashboard-ide`. Compose grid: 48px activity bar + tabs row + editor/inspector flex row + bottom console. Wire activity bar items to dispatch into tabs/inspector store.",
|
|
370
370
|
"tags": [
|
|
371
371
|
"dashboard",
|
|
372
372
|
"ide",
|
|
@@ -387,7 +387,7 @@
|
|
|
387
387
|
"files": [],
|
|
388
388
|
"dependencies": [],
|
|
389
389
|
"shadcnComponents": [],
|
|
390
|
-
"agentRecipe": "Use ResponsiveDashboardShell which branches desktop (sidebar) vs mobile (dock). Customize MobileDashboardDock items and MobileTopBar workspace switcher to your domain.",
|
|
390
|
+
"agentRecipe": "Run `npx rr add dashboard-mobile-dock`. Use ResponsiveDashboardShell which branches desktop (sidebar) vs mobile (dock). Customize MobileDashboardDock items and MobileTopBar workspace switcher to your domain.",
|
|
391
391
|
"tags": [
|
|
392
392
|
"dashboard",
|
|
393
393
|
"mobile",
|
|
@@ -408,7 +408,7 @@
|
|
|
408
408
|
"files": [],
|
|
409
409
|
"dependencies": [],
|
|
410
410
|
"shadcnComponents": [],
|
|
411
|
-
"agentRecipe": "Port kitab-core slices/cms-lite/ into your project's app/(cms)/ route group. Fetch products/pages from Convex via api.cmsLite.* queries.",
|
|
411
|
+
"agentRecipe": "Run `npx rr add cms-public-storefront`. Port kitab-core slices/cms-lite/ into your project's app/(cms)/ route group. Fetch products/pages from Convex via api.cmsLite.* queries.",
|
|
412
412
|
"tags": [
|
|
413
413
|
"cms",
|
|
414
414
|
"ecommerce",
|
|
@@ -475,7 +475,7 @@
|
|
|
475
475
|
"sheet",
|
|
476
476
|
"textarea"
|
|
477
477
|
],
|
|
478
|
-
"agentRecipe": "SaaS Marketing OS = public-only marketing template. Blog + changelog use MDX (add the mdx-blog feature). Edit components/templates/saas-marketing/shared/site-config.ts to set product name, tagline, pricing tiers, contact email.",
|
|
478
|
+
"agentRecipe": "Run `npx rr init <app> --template saas-marketing-os`. SaaS Marketing OS = public-only marketing template. Blog + changelog use MDX (add the mdx-blog feature). Edit components/templates/saas-marketing/shared/site-config.ts to set product name, tagline, pricing tiers, contact email.",
|
|
479
479
|
"tags": [
|
|
480
480
|
"template",
|
|
481
481
|
"saas",
|
|
@@ -557,7 +557,7 @@
|
|
|
557
557
|
"separator",
|
|
558
558
|
"sheet"
|
|
559
559
|
],
|
|
560
|
-
"agentRecipe": "Kreator Studio OS = full-app content-creator template (public newsletter + 9-tab admin). 1) Edit components/templates/kreator-studio/shared/site-config.ts (brandName, ownerName, baseUrl, twitter). 2) Replace localStorage StoreProvider with Convex queries (state shape mirrors localStorage). 3) Wire Resend for newsletter + Midtrans tip-jar on public CTA. 4) Voice/Scripts/Carousels admin views are scaffolds — wire to ai-router (mid tier for voice-train/voice-apply, nano for shortform script).",
|
|
560
|
+
"agentRecipe": "Run `npx rr init <app> --template kreator-studio-os`. Kreator Studio OS = full-app content-creator template (public newsletter + 9-tab admin). 1) Edit components/templates/kreator-studio/shared/site-config.ts (brandName, ownerName, baseUrl, twitter). 2) Replace localStorage StoreProvider with Convex queries (state shape mirrors localStorage). 3) Wire Resend for newsletter + Midtrans tip-jar on public CTA. 4) Voice/Scripts/Carousels admin views are scaffolds — wire to ai-router (mid tier for voice-train/voice-apply, nano for shortform script).",
|
|
561
561
|
"tags": [
|
|
562
562
|
"template",
|
|
563
563
|
"creator",
|
|
@@ -636,7 +636,7 @@
|
|
|
636
636
|
"sheet",
|
|
637
637
|
"textarea"
|
|
638
638
|
],
|
|
639
|
-
"agentRecipe": "Konsultan OS = full-app consultancy template (public services + 7-tab admin). 1) Edit components/templates/konsultan/shared/site-config.ts (brandName, ownerName, baseUrl). 2) Replace localStorage StoreProvider with Convex queries. 3) Add @convex-dev/auth + RBAC on /admin routes. 4) Wire Resend for proposal email + e-sign provider for contracts. 5) Billing view is PajakAware-ready — connect to Midtrans + Indonesian-tax calc on invoice generation.",
|
|
639
|
+
"agentRecipe": "Run `npx rr init <app> --template konsultan-os`. Konsultan OS = full-app consultancy template (public services + 7-tab admin). 1) Edit components/templates/konsultan/shared/site-config.ts (brandName, ownerName, baseUrl). 2) Replace localStorage StoreProvider with Convex queries. 3) Add @convex-dev/auth + RBAC on /admin routes. 4) Wire Resend for proposal email + e-sign provider for contracts. 5) Billing view is PajakAware-ready — connect to Midtrans + Indonesian-tax calc on invoice generation.",
|
|
640
640
|
"tags": [
|
|
641
641
|
"template",
|
|
642
642
|
"consultant",
|
|
@@ -715,7 +715,7 @@
|
|
|
715
715
|
"sheet",
|
|
716
716
|
"textarea"
|
|
717
717
|
],
|
|
718
|
-
"agentRecipe": "Wirausaha OS = full-app UKM template (mobile-first public storefront + 8-tab admin). 1) Edit components/templates/wirausaha/shared/site-config.ts. 2) Replace localStorage StoreProvider with Convex queries. 3) Wire Midtrans + QRIS for orders. 4) Add WhatsApp-bot for order confirmations. 5) Finance view scaffolds AI-laporan — connect to ai-router (mid tier) for narrative generation from monthly aggregates.",
|
|
718
|
+
"agentRecipe": "Run `npx rr init <app> --template wirausaha-os`. Wirausaha OS = full-app UKM template (mobile-first public storefront + 8-tab admin). 1) Edit components/templates/wirausaha/shared/site-config.ts. 2) Replace localStorage StoreProvider with Convex queries. 3) Wire Midtrans + QRIS for orders. 4) Add WhatsApp-bot for order confirmations. 5) Finance view scaffolds AI-laporan — connect to ai-router (mid tier) for narrative generation from monthly aggregates.",
|
|
719
719
|
"tags": [
|
|
720
720
|
"template",
|
|
721
721
|
"smb",
|
|
@@ -792,7 +792,7 @@
|
|
|
792
792
|
"separator",
|
|
793
793
|
"sheet"
|
|
794
794
|
],
|
|
795
|
-
"agentRecipe": "Riset Kit = full-app research template (public KB reader + 6-tab admin). 1) Edit components/templates/research/shared/site-config.ts. 2) Replace localStorage StoreProvider with Convex queries. 3) Add @convex-dev/auth on /admin (single owner suffices). 4) Document library expects pdf-extract + vector-search — wire convex-vector-search component. 5) AI Reader wires ai-router (mid tier) for QA over uploaded PDFs. 6) Lit-review matrix is a scaffold — wire AI summarizer per cell.",
|
|
795
|
+
"agentRecipe": "Run `npx rr init <app> --template riset-kit`. Riset Kit = full-app research template (public KB reader + 6-tab admin). 1) Edit components/templates/research/shared/site-config.ts. 2) Replace localStorage StoreProvider with Convex queries. 3) Add @convex-dev/auth on /admin (single owner suffices). 4) Document library expects pdf-extract + vector-search — wire convex-vector-search component. 5) AI Reader wires ai-router (mid tier) for QA over uploaded PDFs. 6) Lit-review matrix is a scaffold — wire AI summarizer per cell.",
|
|
796
796
|
"tags": [
|
|
797
797
|
"template",
|
|
798
798
|
"research",
|
|
@@ -816,7 +816,7 @@
|
|
|
816
816
|
"files": [],
|
|
817
817
|
"dependencies": [],
|
|
818
818
|
"shadcnComponents": [],
|
|
819
|
-
"agentRecipe": "Pure layout. Drop into landing pages where the product needs minimum framing. Replace the eyebrow pill with a status badge or release tag. Two CTAs is the sweet spot.",
|
|
819
|
+
"agentRecipe": "Run `npx rr add hero-centered`. Pure layout. Drop into landing pages where the product needs minimum framing. Replace the eyebrow pill with a status badge or release tag. Two CTAs is the sweet spot.",
|
|
820
820
|
"tags": [
|
|
821
821
|
"block",
|
|
822
822
|
"hero",
|
|
@@ -838,7 +838,7 @@
|
|
|
838
838
|
"files": [],
|
|
839
839
|
"dependencies": [],
|
|
840
840
|
"shadcnComponents": [],
|
|
841
|
-
"agentRecipe": "Right column accepts any visual — screenshot, product mock, illustration, or live demo iframe. Feature list pairs Lucide icons with one-line value props.",
|
|
841
|
+
"agentRecipe": "Run `npx rr add hero-split`. Right column accepts any visual — screenshot, product mock, illustration, or live demo iframe. Feature list pairs Lucide icons with one-line value props.",
|
|
842
842
|
"tags": [
|
|
843
843
|
"block",
|
|
844
844
|
"hero",
|
|
@@ -861,7 +861,7 @@
|
|
|
861
861
|
"files": [],
|
|
862
862
|
"dependencies": [],
|
|
863
863
|
"shadcnComponents": [],
|
|
864
|
-
"agentRecipe": "Background tiles get a radial mask so the center stays readable. Use 6-8 tiles with asymmetric spans (col-span-2 row-span-2 for one, others 1x1). Lucide icon in each tile.",
|
|
864
|
+
"agentRecipe": "Run `npx rr add hero-bento-bg`. Background tiles get a radial mask so the center stays readable. Use 6-8 tiles with asymmetric spans (col-span-2 row-span-2 for one, others 1x1). Lucide icon in each tile.",
|
|
865
865
|
"tags": [
|
|
866
866
|
"block",
|
|
867
867
|
"hero",
|
|
@@ -884,7 +884,7 @@
|
|
|
884
884
|
"files": [],
|
|
885
885
|
"dependencies": [],
|
|
886
886
|
"shadcnComponents": [],
|
|
887
|
-
"agentRecipe": "Replace the conic-gradient backdrop with a muted <video autoplay loop>. Keep the dark theme — light text on motion only reads when the contrast is hard.",
|
|
887
|
+
"agentRecipe": "Run `npx rr add hero-video-loop`. Replace the conic-gradient backdrop with a muted <video autoplay loop>. Keep the dark theme — light text on motion only reads when the contrast is hard.",
|
|
888
888
|
"tags": [
|
|
889
889
|
"block",
|
|
890
890
|
"hero",
|
|
@@ -907,7 +907,7 @@
|
|
|
907
907
|
"files": [],
|
|
908
908
|
"dependencies": [],
|
|
909
909
|
"shadcnComponents": [],
|
|
910
|
-
"agentRecipe": "Use absolute-positioned word slots with translate-y + opacity transitions. The invisible placeholder word keeps the bounding box stable.",
|
|
910
|
+
"agentRecipe": "Run `npx rr add hero-animated-text`. Use absolute-positioned word slots with translate-y + opacity transitions. The invisible placeholder word keeps the bounding box stable.",
|
|
911
911
|
"tags": [
|
|
912
912
|
"block",
|
|
913
913
|
"hero",
|
|
@@ -930,7 +930,7 @@
|
|
|
930
930
|
"files": [],
|
|
931
931
|
"dependencies": [],
|
|
932
932
|
"shadcnComponents": [],
|
|
933
|
-
"agentRecipe": "Three is the magic number for SaaS pricing — fewer feels limited, more triggers analysis paralysis. Middle tier should be the one you actually want to sell.",
|
|
933
|
+
"agentRecipe": "Run `npx rr add pricing-three`. Three is the magic number for SaaS pricing — fewer feels limited, more triggers analysis paralysis. Middle tier should be the one you actually want to sell.",
|
|
934
934
|
"tags": [
|
|
935
935
|
"block",
|
|
936
936
|
"pricing",
|
|
@@ -952,7 +952,7 @@
|
|
|
952
952
|
"files": [],
|
|
953
953
|
"dependencies": [],
|
|
954
954
|
"shadcnComponents": [],
|
|
955
|
-
"agentRecipe": "Use when you genuinely have four distinct tiers (free / solo / team / enterprise). Don't pad to four — use the three-tier variant if the fourth is forced.",
|
|
955
|
+
"agentRecipe": "Run `npx rr add pricing-four`. Use when you genuinely have four distinct tiers (free / solo / team / enterprise). Don't pad to four — use the three-tier variant if the fourth is forced.",
|
|
956
956
|
"tags": [
|
|
957
957
|
"block",
|
|
958
958
|
"pricing",
|
|
@@ -974,7 +974,7 @@
|
|
|
974
974
|
"files": [],
|
|
975
975
|
"dependencies": [],
|
|
976
976
|
"shadcnComponents": [],
|
|
977
|
-
"agentRecipe": "Default to yearly — that's the conversion-optimized choice. Show the monthly strikethrough so the savings feel real, not implied.",
|
|
977
|
+
"agentRecipe": "Run `npx rr add pricing-toggle`. Default to yearly — that's the conversion-optimized choice. Show the monthly strikethrough so the savings feel real, not implied.",
|
|
978
978
|
"tags": [
|
|
979
979
|
"block",
|
|
980
980
|
"pricing",
|
|
@@ -996,7 +996,7 @@
|
|
|
996
996
|
"files": [],
|
|
997
997
|
"dependencies": [],
|
|
998
998
|
"shadcnComponents": [],
|
|
999
|
-
"agentRecipe": "Use for complex products where buyers actually compare. Mix boolean rows (Check/Minus) with string-value rows (\"1\", \"10\", \"Unlimited\") for clarity.",
|
|
999
|
+
"agentRecipe": "Run `npx rr add pricing-compare`. Use for complex products where buyers actually compare. Mix boolean rows (Check/Minus) with string-value rows (\"1\", \"10\", \"Unlimited\") for clarity.",
|
|
1000
1000
|
"tags": [
|
|
1001
1001
|
"block",
|
|
1002
1002
|
"pricing",
|
|
@@ -1019,7 +1019,7 @@
|
|
|
1019
1019
|
"files": [],
|
|
1020
1020
|
"dependencies": [],
|
|
1021
1021
|
"shadcnComponents": [],
|
|
1022
|
-
"agentRecipe": "Use for usage-based or seat-based products. Make the breakpoints transparent — buyers should be able to predict the next price without surprises.",
|
|
1022
|
+
"agentRecipe": "Run `npx rr add pricing-slider`. Use for usage-based or seat-based products. Make the breakpoints transparent — buyers should be able to predict the next price without surprises.",
|
|
1023
1023
|
"tags": [
|
|
1024
1024
|
"block",
|
|
1025
1025
|
"pricing",
|
|
@@ -1042,7 +1042,7 @@
|
|
|
1042
1042
|
"files": [],
|
|
1043
1043
|
"dependencies": [],
|
|
1044
1044
|
"shadcnComponents": [],
|
|
1045
|
-
"agentRecipe": "Single-open keeps the page short. Use when answers are independent. Switch to multi-open if buyers tend to scan multiple answers at once.",
|
|
1045
|
+
"agentRecipe": "Run `npx rr add accordion-faq`. Single-open keeps the page short. Use when answers are independent. Switch to multi-open if buyers tend to scan multiple answers at once.",
|
|
1046
1046
|
"tags": [
|
|
1047
1047
|
"block",
|
|
1048
1048
|
"accordion",
|
|
@@ -1064,7 +1064,7 @@
|
|
|
1064
1064
|
"files": [],
|
|
1065
1065
|
"dependencies": [],
|
|
1066
1066
|
"shadcnComponents": [],
|
|
1067
|
-
"agentRecipe": "Use when the FAQ is long (>10 items) and questions cluster naturally. Each group's Item owns its open state for predictable UX.",
|
|
1067
|
+
"agentRecipe": "Run `npx rr add accordion-grouped`. Use when the FAQ is long (>10 items) and questions cluster naturally. Each group's Item owns its open state for predictable UX.",
|
|
1068
1068
|
"tags": [
|
|
1069
1069
|
"block",
|
|
1070
1070
|
"accordion",
|
|
@@ -1087,7 +1087,7 @@
|
|
|
1087
1087
|
"files": [],
|
|
1088
1088
|
"dependencies": [],
|
|
1089
1089
|
"shadcnComponents": [],
|
|
1090
|
-
"agentRecipe": "Use for help/docs pages with section breadth. Keep section count ≤ 5 — beyond that, the sidebar gets noisy. Reset accordion state on section change.",
|
|
1090
|
+
"agentRecipe": "Run `npx rr add accordion-sidebar`. Use for help/docs pages with section breadth. Keep section count ≤ 5 — beyond that, the sidebar gets noisy. Reset accordion state on section change.",
|
|
1091
1091
|
"tags": [
|
|
1092
1092
|
"block",
|
|
1093
1093
|
"accordion",
|
|
@@ -1110,7 +1110,7 @@
|
|
|
1110
1110
|
"files": [],
|
|
1111
1111
|
"dependencies": [],
|
|
1112
1112
|
"shadcnComponents": [],
|
|
1113
|
-
"agentRecipe": "The grid-template-rows trick lets CSS animate to-auto-height natively. No JS measurement, no jank. Pair with rounded card chrome for premium feel.",
|
|
1113
|
+
"agentRecipe": "Run `npx rr add accordion-animated`. The grid-template-rows trick lets CSS animate to-auto-height natively. No JS measurement, no jank. Pair with rounded card chrome for premium feel.",
|
|
1114
1114
|
"tags": [
|
|
1115
1115
|
"block",
|
|
1116
1116
|
"accordion",
|
|
@@ -1132,7 +1132,7 @@
|
|
|
1132
1132
|
"files": [],
|
|
1133
1133
|
"dependencies": [],
|
|
1134
1134
|
"shadcnComponents": [],
|
|
1135
|
-
"agentRecipe": "Use when answers reference each other or buyers want to keep multiple sections visible (changelogs, release notes, feature comparison FAQs).",
|
|
1135
|
+
"agentRecipe": "Run `npx rr add accordion-multi`. Use when answers reference each other or buyers want to keep multiple sections visible (changelogs, release notes, feature comparison FAQs).",
|
|
1136
1136
|
"tags": [
|
|
1137
1137
|
"block",
|
|
1138
1138
|
"accordion",
|
|
@@ -1154,7 +1154,7 @@
|
|
|
1154
1154
|
"files": [],
|
|
1155
1155
|
"dependencies": [],
|
|
1156
1156
|
"shadcnComponents": [],
|
|
1157
|
-
"agentRecipe": "Default to 3 columns at lg. Use the Thumb helper for cover generation when posts don't ship an image yet — HSL gradient by post.hue keeps each card distinct.",
|
|
1157
|
+
"agentRecipe": "Run `npx rr add blog-grid`. Default to 3 columns at lg. Use the Thumb helper for cover generation when posts don't ship an image yet — HSL gradient by post.hue keeps each card distinct.",
|
|
1158
1158
|
"tags": [
|
|
1159
1159
|
"block",
|
|
1160
1160
|
"blog",
|
|
@@ -1176,7 +1176,7 @@
|
|
|
1176
1176
|
"files": [],
|
|
1177
1177
|
"dependencies": [],
|
|
1178
1178
|
"shadcnComponents": [],
|
|
1179
|
-
"agentRecipe": "Use for archives or category pages where the reader is hunting a specific post. Compact thumbnail keeps the line height tight.",
|
|
1179
|
+
"agentRecipe": "Run `npx rr add blog-list`. Use for archives or category pages where the reader is hunting a specific post. Compact thumbnail keeps the line height tight.",
|
|
1180
1180
|
"tags": [
|
|
1181
1181
|
"block",
|
|
1182
1182
|
"blog",
|
|
@@ -1198,7 +1198,7 @@
|
|
|
1198
1198
|
"files": [],
|
|
1199
1199
|
"dependencies": [],
|
|
1200
1200
|
"shadcnComponents": [],
|
|
1201
|
-
"agentRecipe": "Use for content-heavy publications. Hero post earns the visual real estate; the sidebar carries breadth. Mix typography sizes for editorial rhythm.",
|
|
1201
|
+
"agentRecipe": "Run `npx rr add blog-magazine`. Use for content-heavy publications. Hero post earns the visual real estate; the sidebar carries breadth. Mix typography sizes for editorial rhythm.",
|
|
1202
1202
|
"tags": [
|
|
1203
1203
|
"block",
|
|
1204
1204
|
"blog",
|
|
@@ -1221,7 +1221,7 @@
|
|
|
1221
1221
|
"files": [],
|
|
1222
1222
|
"dependencies": [],
|
|
1223
1223
|
"shadcnComponents": [],
|
|
1224
|
-
"agentRecipe": "CSS columns are the cheap masonry — no JS, no layout shift. Vary the thumbnail height via a HEIGHTS array (h-44 to h-80). DOM order ≠ visual order — design around it.",
|
|
1224
|
+
"agentRecipe": "Run `npx rr add blog-masonry`. CSS columns are the cheap masonry — no JS, no layout shift. Vary the thumbnail height via a HEIGHTS array (h-44 to h-80). DOM order ≠ visual order — design around it.",
|
|
1225
1225
|
"tags": [
|
|
1226
1226
|
"block",
|
|
1227
1227
|
"blog",
|
|
@@ -1243,7 +1243,7 @@
|
|
|
1243
1243
|
"files": [],
|
|
1244
1244
|
"dependencies": [],
|
|
1245
1245
|
"shadcnComponents": [],
|
|
1246
|
-
"agentRecipe": "Use for marketing-driven content sites (newsletter, podcast, brand journal) where the lead story carries the visit. Tail grid keeps the index scrollable without losing the hero impact.",
|
|
1246
|
+
"agentRecipe": "Run `npx rr add blog-featured`. Use for marketing-driven content sites (newsletter, podcast, brand journal) where the lead story carries the visit. Tail grid keeps the index scrollable without losing the hero impact.",
|
|
1247
1247
|
"tags": [
|
|
1248
1248
|
"block",
|
|
1249
1249
|
"blog",
|
|
@@ -1258,9 +1258,9 @@
|
|
|
1258
1258
|
"features": [
|
|
1259
1259
|
{
|
|
1260
1260
|
"slug": "convex-auth",
|
|
1261
|
-
"title": "Convex Auth —
|
|
1261
|
+
"title": "Convex Auth — Multi-Provider Sign-in",
|
|
1262
1262
|
"category": "auth",
|
|
1263
|
-
"description": "@convex-dev/auth with
|
|
1263
|
+
"description": "@convex-dev/auth with Password (PBKDF2-SHA256 100k, self-hosted-friendly), Anonymous (guest), Google OAuth, and Resend magic-link. Ships a production SignInPage with i18n, prop-driven provider list, and split Login/Register tabs. No Clerk.",
|
|
1264
1264
|
"source": "rahmanef63/resource-site",
|
|
1265
1265
|
"docsUrl": "https://labs.convex.dev/auth",
|
|
1266
1266
|
"install": "npm i @convex-dev/auth @auth/core resend",
|
|
@@ -1274,8 +1274,12 @@
|
|
|
1274
1274
|
"tags": [
|
|
1275
1275
|
"auth",
|
|
1276
1276
|
"convex",
|
|
1277
|
+
"password",
|
|
1277
1278
|
"magic-link",
|
|
1278
|
-
"
|
|
1279
|
+
"google",
|
|
1280
|
+
"anonymous",
|
|
1281
|
+
"no-clerk",
|
|
1282
|
+
"pbkdf2"
|
|
1279
1283
|
]
|
|
1280
1284
|
},
|
|
1281
1285
|
{
|
|
@@ -1288,7 +1292,7 @@
|
|
|
1288
1292
|
"install": "",
|
|
1289
1293
|
"npmPackages": [],
|
|
1290
1294
|
"exampleCode": "",
|
|
1291
|
-
"agentRecipe": "DOKU dual-mode: Checkout (hosted, all channels) atau Direct (single channel, returns VA/QRIS/deeplink). Webhook di /webhooks/doku verify HMAC-SHA256 (canonical: Client-Id + Request-Id + Request-Timestamp + Request-Target + Digest). Idempotency by request_id index. Server-only — no NEXT_PUBLIC_*. Sandbox default (api-sandbox.doku.com); flip DOKU_IS_PRODUCTION=true for live.",
|
|
1295
|
+
"agentRecipe": "Run `npx rr add doku-payment`. DOKU dual-mode: Checkout (hosted, all channels) atau Direct (single channel, returns VA/QRIS/deeplink). Webhook di /webhooks/doku verify HMAC-SHA256 (canonical: Client-Id + Request-Id + Request-Timestamp + Request-Target + Digest). Idempotency by request_id index. Server-only — no NEXT_PUBLIC_*. Sandbox default (api-sandbox.doku.com); flip DOKU_IS_PRODUCTION=true for live.",
|
|
1292
1296
|
"tags": [
|
|
1293
1297
|
"payment",
|
|
1294
1298
|
"doku",
|
|
@@ -1311,7 +1315,7 @@
|
|
|
1311
1315
|
"midtrans-client"
|
|
1312
1316
|
],
|
|
1313
1317
|
"exampleCode": "",
|
|
1314
|
-
"agentRecipe": "Midtrans Snap untuk pembayaran instant. Webhook ke Convex HTTP action /api/midtrans-callback untuk update order status. Ingat: PPN 11% sudah included di amount, jangan double-count.",
|
|
1318
|
+
"agentRecipe": "Run `npx rr add midtrans-payment`. Midtrans Snap untuk pembayaran instant. Webhook ke Convex HTTP action /api/midtrans-callback untuk update order status. Ingat: PPN 11% sudah included di amount, jangan double-count.",
|
|
1315
1319
|
"tags": [
|
|
1316
1320
|
"payment",
|
|
1317
1321
|
"midtrans",
|
|
@@ -1334,7 +1338,7 @@
|
|
|
1334
1338
|
"@react-email/components"
|
|
1335
1339
|
],
|
|
1336
1340
|
"exampleCode": "",
|
|
1337
|
-
"agentRecipe": "Use Resend Audiences API for newsletter — store subscriber emails in Convex too for segmentation. Double opt-in: subscriber.create with status 'pending' → click link → status 'confirmed'.",
|
|
1341
|
+
"agentRecipe": "Run `npx rr add resend-newsletter`. Use Resend Audiences API for newsletter — store subscriber emails in Convex too for segmentation. Double opt-in: subscriber.create with status 'pending' → click link → status 'confirmed'.",
|
|
1338
1342
|
"tags": [
|
|
1339
1343
|
"email",
|
|
1340
1344
|
"newsletter",
|
|
@@ -1342,31 +1346,10 @@
|
|
|
1342
1346
|
]
|
|
1343
1347
|
},
|
|
1344
1348
|
{
|
|
1345
|
-
"slug": "ai-
|
|
1346
|
-
"title": "AI
|
|
1349
|
+
"slug": "ai-chat",
|
|
1350
|
+
"title": "AI Chat — Workbench / Sidebar / Search",
|
|
1347
1351
|
"category": "ai",
|
|
1348
|
-
"description": "
|
|
1349
|
-
"source": "rahmanef63/resource-site",
|
|
1350
|
-
"docsUrl": "https://sdk.vercel.ai/docs",
|
|
1351
|
-
"install": "npm i ai @openrouter/ai-sdk-provider",
|
|
1352
|
-
"npmPackages": [
|
|
1353
|
-
"ai",
|
|
1354
|
-
"@openrouter/ai-sdk-provider"
|
|
1355
|
-
],
|
|
1356
|
-
"exampleCode": "",
|
|
1357
|
-
"agentRecipe": "Wrap every AI call through ai-router action. Pick tier based on workload: nano for spam-flag/headline-suggest, mid for chat/draft, flagship for methodology-review. Log token usage to ai_usage table for cost dashboard.",
|
|
1358
|
-
"tags": [
|
|
1359
|
-
"ai",
|
|
1360
|
-
"ai:backend",
|
|
1361
|
-
"tier-routing",
|
|
1362
|
-
"cost-guard"
|
|
1363
|
-
]
|
|
1364
|
-
},
|
|
1365
|
-
{
|
|
1366
|
-
"slug": "ai-chatbot",
|
|
1367
|
-
"title": "AI Chatbot — Three-Column Workbench",
|
|
1368
|
-
"category": "ai",
|
|
1369
|
-
"description": "Claude.ai / ChatGPT-style chatbot. Three-column shell: threads + attachments + active tools on the left, streaming messages in the center, model + params + skills + actions on the right. Multi-provider, multimodal (text/image/PDF/audio), typed tool calls with inline inspector, agent mode (plan→execute→reflect), branching threads, RAG citations, resumable streams, usage telemetry. Public surface = consumer workbench; admin surface = per-bot persona, fallback responses, guardrails.",
|
|
1352
|
+
"description": "One conversational AI feature, three render modes. Same Convex backend (threads + streaming + tool calls + RAG), pick the surface via prop:\n\n • workbench — Claude.ai / ChatGPT three-column page (default)\n • sidebar — collapsible copilot panel inside another CRUD app\n • search — single-question + answer + citations (Perplexity)\n\nUse cases:\n – Customer-support chatbot embedded in your marketing site\n – Developer copilot in your PR/docs admin\n – Knowledge-base search over your blog + docs corpus\n – Internal AI assistant in your dashboard\n\nWhat it ships: multi-provider (Anthropic / OpenAI / Google / Mistral / Ollama), multimodal (text + image + PDF + audio), typed tool calls with inline inspector, agent mode (plan→execute→reflect), branching threads, RAG citations, resumable streams, usage telemetry. Public surface = consumer chat; admin surface = persona, fallback, guardrails per-bot.",
|
|
1370
1353
|
"source": "rahmanef63/resource-site",
|
|
1371
1354
|
"docsUrl": "https://sdk.vercel.ai/docs",
|
|
1372
1355
|
"install": "npm i ai @ai-sdk/anthropic @ai-sdk/openai",
|
|
@@ -1376,10 +1359,10 @@
|
|
|
1376
1359
|
"@ai-sdk/openai"
|
|
1377
1360
|
],
|
|
1378
1361
|
"exampleCode": "",
|
|
1379
|
-
"agentRecipe": "Run `npx rr add ai-
|
|
1362
|
+
"agentRecipe": "Run `npx rr add ai-chat`. Pick `mode=\"workbench\" | \"sidebar\" | \"search\"` on `<AIChat />` (or use the convenience exports `<AIChatWorkbench />`, `<AIChatSidebar />`, `<AIChatSearch />`). Same backend tables + streaming action for all three.",
|
|
1380
1363
|
"tags": [
|
|
1381
1364
|
"ai",
|
|
1382
|
-
"ai:
|
|
1365
|
+
"ai:chat",
|
|
1383
1366
|
"streaming",
|
|
1384
1367
|
"multimodal",
|
|
1385
1368
|
"tool-calls",
|
|
@@ -1391,18 +1374,18 @@
|
|
|
1391
1374
|
]
|
|
1392
1375
|
},
|
|
1393
1376
|
{
|
|
1394
|
-
"slug": "ai-
|
|
1395
|
-
"title": "AI
|
|
1377
|
+
"slug": "ai-studio",
|
|
1378
|
+
"title": "AI Studio — Generation Canvas",
|
|
1396
1379
|
"category": "ai",
|
|
1397
|
-
"description": "AI is the primary UI — single big prompt input → live-streaming
|
|
1380
|
+
"description": "AI is the primary UI — single big prompt input → live-streaming output → variation grid → version tree. Suno / Midjourney / Lovable / v0 pattern. Output kinds: text, code, image, audio (configurable per template).\n\nUse cases:\n – AI image generation product (creative output)\n – AI logo / banner / social-post studio\n – AI code-snippet generator (component scaffolder)\n – AI music / voiceover producer\n – AI blog-draft factory (text)\n\nFeatures: prompt history, branch + compare outputs, like + favorite, share-to-link, templates from ai-admin.",
|
|
1398
1381
|
"source": "rahmanef63/resource-site",
|
|
1399
1382
|
"install": "",
|
|
1400
1383
|
"npmPackages": [],
|
|
1401
1384
|
"exampleCode": "",
|
|
1402
|
-
"agentRecipe": "Run `npx rr add ai-
|
|
1385
|
+
"agentRecipe": "Run `npx rr add ai-studio`. Mount `<GeneratorCanvas />` at /. Use case: prompt → output IS the entire product. Wire your output renderer (text/image/code/audio) via the OutputSlot adapter. Templates loaded from ai-admin.studio.templates.",
|
|
1403
1386
|
"tags": [
|
|
1404
1387
|
"ai",
|
|
1405
|
-
"ai:
|
|
1388
|
+
"ai:studio",
|
|
1406
1389
|
"generation",
|
|
1407
1390
|
"streaming",
|
|
1408
1391
|
"history",
|
|
@@ -1411,37 +1394,18 @@
|
|
|
1411
1394
|
]
|
|
1412
1395
|
},
|
|
1413
1396
|
{
|
|
1414
|
-
"slug": "ai-
|
|
1415
|
-
"title": "AI
|
|
1397
|
+
"slug": "ai-agents",
|
|
1398
|
+
"title": "AI Agents — Autonomous Workers",
|
|
1416
1399
|
"category": "ai",
|
|
1417
|
-
"description": "AI
|
|
1400
|
+
"description": "Background AI workers. Define an agent (skill × model × tools × max-iter), trigger it on-demand or on a cron schedule, watch the step-by-step trace as it runs. Devin / Replit-Agent / Manus pattern.\n\nUse cases:\n – Nightly audit-bp on the codebase (PR-reviewer style)\n – Weekly SEO crawl + content suggestions\n – Auto-moderate comment queue\n – Scheduled data ingestion + summarization\n – Long-form research task with multi-source citations\n\nFeatures: queue + live trace, per-step retry policy, hard cost cap, shareable trace URLs, full audit-log integration.",
|
|
1418
1401
|
"source": "rahmanef63/resource-site",
|
|
1419
1402
|
"install": "",
|
|
1420
1403
|
"npmPackages": [],
|
|
1421
1404
|
"exampleCode": "",
|
|
1422
|
-
"agentRecipe": "Run `npx rr add ai-
|
|
1405
|
+
"agentRecipe": "Run `npx rr add ai-agents`. Mount `<RunnerDashboard />` at /agents. Trigger runs via `runAgent({agentSlug, input, scheduleAt?})`. Cron scheduler via Convex cron — wire if you need scheduled runs. Agent definitions managed in ai-admin.",
|
|
1423
1406
|
"tags": [
|
|
1424
1407
|
"ai",
|
|
1425
|
-
"ai:
|
|
1426
|
-
"streaming",
|
|
1427
|
-
"tool-calls",
|
|
1428
|
-
"suggestions",
|
|
1429
|
-
"context-aware"
|
|
1430
|
-
]
|
|
1431
|
-
},
|
|
1432
|
-
{
|
|
1433
|
-
"slug": "ai-agent-runner",
|
|
1434
|
-
"title": "AI Agent Runner — Async Worker Dashboard",
|
|
1435
|
-
"category": "ai",
|
|
1436
|
-
"description": "Autonomous background agents. Public surface = task queue + run results dashboard with step-by-step traces (Devin/Replit-Agent style). Admin surface = agent registry (skill + model + tool subset + max-iter + schedule + concurrency caps) + retry/backoff policy. Each run produces an audit-log entry, cost tally, and shareable trace URL.",
|
|
1437
|
-
"source": "rahmanef63/resource-site",
|
|
1438
|
-
"install": "",
|
|
1439
|
-
"npmPackages": [],
|
|
1440
|
-
"exampleCode": "",
|
|
1441
|
-
"agentRecipe": "Run `npx rr add ai-agent-runner`. Mount `<RunnerDashboard />` at /agents. Trigger runs via `runAgent({agentSlug, input, scheduleAt?})`. Cron scheduler optional via Convex cron — wire if you need scheduled runs.",
|
|
1442
|
-
"tags": [
|
|
1443
|
-
"ai",
|
|
1444
|
-
"ai:agent",
|
|
1408
|
+
"ai:agents",
|
|
1445
1409
|
"agent-mode",
|
|
1446
1410
|
"tool-calls",
|
|
1447
1411
|
"async",
|
|
@@ -1450,44 +1414,47 @@
|
|
|
1450
1414
|
]
|
|
1451
1415
|
},
|
|
1452
1416
|
{
|
|
1453
|
-
"slug": "ai-
|
|
1454
|
-
"title": "AI
|
|
1417
|
+
"slug": "ai-admin",
|
|
1418
|
+
"title": "AI Admin — Console (Instructions · Skills · Tools · Agents · Providers)",
|
|
1455
1419
|
"category": "ai",
|
|
1456
|
-
"description": "
|
|
1420
|
+
"description": "Central operator console for the whole AI stack. Every other ai-* feature reads its registries from here. Tabs ordered to match the build-flow:\n\n 1. Providers — register Anthropic / OpenAI / Google / Mistral / Ollama (API keys AES-encrypted at rest)\n 2. Models — per-provider catalog (capabilities, context window, pricing)\n 3. Instructions — custom system-prompt library (Claude Projects-style)\n 4. Skills — named instruction + model default + tool defaults (consumed by chat + studio)\n 5. Tools — JSON-schema function specs + impl (http / convex / shell) + sandbox flag\n 6. Agents — skill × model × tools × max-iter (consumed by ai-agents)\n 7. Budgets — per-workspace cost caps + alerts + hard kill\n 8. Audit — every AI call: actor / agent / tokens / cost / latency / outcome\n\nIncludes Create-Agent / Create-Skill / Create-Tool / Create-Instruction wizards.",
|
|
1457
1421
|
"source": "rahmanef63/resource-site",
|
|
1458
1422
|
"install": "",
|
|
1459
1423
|
"npmPackages": [],
|
|
1460
1424
|
"exampleCode": "",
|
|
1461
|
-
"agentRecipe": "Run `npx rr add ai-
|
|
1425
|
+
"agentRecipe": "Run `npx rr add ai-admin`. Adds an `AI` section to the admin-panel ADMIN_SECTIONS registry. Sub-tabs ordered to match build-flow: Providers → Models → Instructions → Skills → Tools → Agents → Budgets → Audit. Includes Create-* wizards for instructions / skills / tools / agents. API keys AES-encrypted via AI_ADMIN_ENCRYPTION_KEY env. The instruction / skill / tool / agent registries are SSOTs consumed by every ai-* consumer slice (chat + studio + agents).",
|
|
1462
1426
|
"tags": [
|
|
1463
1427
|
"ai",
|
|
1464
|
-
"ai:
|
|
1465
|
-
"
|
|
1466
|
-
"
|
|
1467
|
-
"
|
|
1468
|
-
"
|
|
1428
|
+
"ai:admin",
|
|
1429
|
+
"instructions",
|
|
1430
|
+
"skills",
|
|
1431
|
+
"tools",
|
|
1432
|
+
"agents",
|
|
1433
|
+
"providers",
|
|
1434
|
+
"models",
|
|
1435
|
+
"budgets",
|
|
1436
|
+
"audit"
|
|
1469
1437
|
]
|
|
1470
1438
|
},
|
|
1471
1439
|
{
|
|
1472
|
-
"slug": "ai-
|
|
1473
|
-
"title": "AI
|
|
1440
|
+
"slug": "ai-router",
|
|
1441
|
+
"title": "AI Router — Backend Provider Proxy",
|
|
1474
1442
|
"category": "ai",
|
|
1475
|
-
"description": "
|
|
1443
|
+
"description": "Backend infrastructure (no UI). Single proxy that every other ai-* feature calls. Tier-routed — nano (Haiku) for classification, mid (Sonnet) for chat, flagship (Opus) for deep reasoning. Per-call usage log + cost guard. Works with direct provider keys or OpenRouter umbrella.\n\nNot something you mount — installed automatically as a peer when you add ai-chat / ai-studio / ai-agents.",
|
|
1476
1444
|
"source": "rahmanef63/resource-site",
|
|
1477
|
-
"
|
|
1478
|
-
"
|
|
1445
|
+
"docsUrl": "https://sdk.vercel.ai/docs",
|
|
1446
|
+
"install": "npm i ai @openrouter/ai-sdk-provider",
|
|
1447
|
+
"npmPackages": [
|
|
1448
|
+
"ai",
|
|
1449
|
+
"@openrouter/ai-sdk-provider"
|
|
1450
|
+
],
|
|
1479
1451
|
"exampleCode": "",
|
|
1480
|
-
"agentRecipe": "Run `npx rr add ai-
|
|
1452
|
+
"agentRecipe": "Run `npx rr add ai-router`. Wrap every AI call through ai-router. Tiers: nano = quick classification (spam-flag, headline-suggest), mid = chat / draft, flagship = methodology-review / deep-think. Token usage logs to ai_usage table for the cost dashboard.",
|
|
1481
1453
|
"tags": [
|
|
1482
1454
|
"ai",
|
|
1483
|
-
"ai:
|
|
1484
|
-
"
|
|
1485
|
-
"
|
|
1486
|
-
"models",
|
|
1487
|
-
"skills",
|
|
1488
|
-
"tools",
|
|
1489
|
-
"agents",
|
|
1490
|
-
"budgets"
|
|
1455
|
+
"ai:backend",
|
|
1456
|
+
"tier-routing",
|
|
1457
|
+
"cost-guard"
|
|
1491
1458
|
]
|
|
1492
1459
|
},
|
|
1493
1460
|
{
|
|
@@ -1502,7 +1469,7 @@
|
|
|
1502
1469
|
"openai"
|
|
1503
1470
|
],
|
|
1504
1471
|
"exampleCode": "",
|
|
1505
|
-
"agentRecipe": "Add embedding field + vectorIndex per searchable table. Re-embed on upsert via Convex action. Cache embeddings — don't re-call OpenAI on every read.",
|
|
1472
|
+
"agentRecipe": "Run `npx rr add vector-search`. Add embedding field + vectorIndex per searchable table. Re-embed on upsert via Convex action. Cache embeddings — don't re-call OpenAI on every read.",
|
|
1506
1473
|
"tags": [
|
|
1507
1474
|
"search",
|
|
1508
1475
|
"vector",
|
|
@@ -1526,7 +1493,7 @@
|
|
|
1526
1493
|
"reading-time"
|
|
1527
1494
|
],
|
|
1528
1495
|
"exampleCode": "",
|
|
1529
|
-
"agentRecipe": "Store post body sebagai markdown di content/blog/*.mdx. Render dengan MDXRemote di [slug]/page.tsx. Auto-extract headings ke ToC via remark plugin custom.",
|
|
1496
|
+
"agentRecipe": "Run `npx rr add mdx-blog`. Store post body sebagai markdown di content/blog/*.mdx. Render dengan MDXRemote di [slug]/page.tsx. Auto-extract headings ke ToC via remark plugin custom.",
|
|
1530
1497
|
"tags": [
|
|
1531
1498
|
"content",
|
|
1532
1499
|
"blog",
|
|
@@ -1546,7 +1513,7 @@
|
|
|
1546
1513
|
"@calcom/embed-react"
|
|
1547
1514
|
],
|
|
1548
1515
|
"exampleCode": "",
|
|
1549
|
-
"agentRecipe": "Embed Cal.com via @calcom/embed-react di halaman services. Configure webhook di Cal.com dashboard → POST ke /api/cal-webhook → upsert booking di Convex.",
|
|
1516
|
+
"agentRecipe": "Run `npx rr add cal-com-booking`. Embed Cal.com via @calcom/embed-react di halaman services. Configure webhook di Cal.com dashboard → POST ke /api/cal-webhook → upsert booking di Convex.",
|
|
1550
1517
|
"tags": [
|
|
1551
1518
|
"data",
|
|
1552
1519
|
"scheduling",
|
|
@@ -1564,7 +1531,7 @@
|
|
|
1564
1531
|
"install": "",
|
|
1565
1532
|
"npmPackages": [],
|
|
1566
1533
|
"exampleCode": "",
|
|
1567
|
-
"agentRecipe": "Drop <WidthContainer> around page content, <FullWidthToggle variant='icon' /> in topbar. Variant 'segment' best for settings page. Hook useFullWidth() returns [mode, setMode, cycle]. SSR-safe — defaults to 'contained' until hydrate.",
|
|
1534
|
+
"agentRecipe": "Run `npx rr add full-width-toggle`. Drop <WidthContainer> around page content, <FullWidthToggle variant='icon' /> in topbar. Variant 'segment' best for settings page. Hook useFullWidth() returns [mode, setMode, cycle]. SSR-safe — defaults to 'contained' until hydrate.",
|
|
1568
1535
|
"tags": [
|
|
1569
1536
|
"ui",
|
|
1570
1537
|
"layout",
|
|
@@ -1585,7 +1552,7 @@
|
|
|
1585
1552
|
"cmdk"
|
|
1586
1553
|
],
|
|
1587
1554
|
"exampleCode": "",
|
|
1588
|
-
"agentRecipe": "Wire <CommandPalette groups={...} onHistorySelect={...} labels={...} /> at the dashboard shell. Build groups from your feature registry; each item.onSelect handles navigation. Use <SearchModal bindings={{ pages, databases, recents, isLoading, onQueryChange, onSelectPage, onSelectDatabase }} /> for the search dialog — see slice README.md for adapter shapes.",
|
|
1555
|
+
"agentRecipe": "Run `npx rr add command-menu`. Wire <CommandPalette groups={...} onHistorySelect={...} labels={...} /> at the dashboard shell. Build groups from your feature registry; each item.onSelect handles navigation. Use <SearchModal bindings={{ pages, databases, recents, isLoading, onQueryChange, onSelectPage, onSelectDatabase }} /> for the search dialog — see slice README.md for adapter shapes.",
|
|
1589
1556
|
"tags": [
|
|
1590
1557
|
"ui",
|
|
1591
1558
|
"palette",
|
|
@@ -1607,7 +1574,7 @@
|
|
|
1607
1574
|
"framer-motion"
|
|
1608
1575
|
],
|
|
1609
1576
|
"exampleCode": "",
|
|
1610
|
-
"agentRecipe": "Each primitive is independently importable from @/features/motion-primitives. Use marquee for logo strips, kinetic-heading for hero text, magnetic for CTA buttons, cursor-spotlight for hover-reveal panels, stat-counter for animated numbers, reading-progress for blog top bar, grain for film texture, lightbox for image gallery.",
|
|
1577
|
+
"agentRecipe": "Run `npx rr add motion-primitives`. Each primitive is independently importable from @/features/motion-primitives. Use marquee for logo strips, kinetic-heading for hero text, magnetic for CTA buttons, cursor-spotlight for hover-reveal panels, stat-counter for animated numbers, reading-progress for blog top bar, grain for film texture, lightbox for image gallery.",
|
|
1611
1578
|
"tags": [
|
|
1612
1579
|
"ui",
|
|
1613
1580
|
"motion",
|
|
@@ -1626,7 +1593,7 @@
|
|
|
1626
1593
|
"install": "",
|
|
1627
1594
|
"npmPackages": [],
|
|
1628
1595
|
"exampleCode": "",
|
|
1629
|
-
"agentRecipe": "Drop-in for shadcn Dialog. Use <ResponsiveDialog><ResponsiveDialogTrigger>…</ResponsiveDialogTrigger><ResponsiveDialogContent>…</ResponsiveDialogContent></ResponsiveDialog>. On mobile renders as Sheet sliding from bottom; on desktop as centered Dialog. Threshold via useMediaQuery('(min-width: 768px)').",
|
|
1596
|
+
"agentRecipe": "Run `npx rr add responsive-dialog`. Drop-in for shadcn Dialog. Use <ResponsiveDialog><ResponsiveDialogTrigger>…</ResponsiveDialogTrigger><ResponsiveDialogContent>…</ResponsiveDialogContent></ResponsiveDialog>. On mobile renders as Sheet sliding from bottom; on desktop as centered Dialog. Threshold via useMediaQuery('(min-width: 768px)').",
|
|
1630
1597
|
"tags": [
|
|
1631
1598
|
"ui",
|
|
1632
1599
|
"dialog",
|
|
@@ -1646,7 +1613,7 @@
|
|
|
1646
1613
|
"install": "",
|
|
1647
1614
|
"npmPackages": [],
|
|
1648
1615
|
"exampleCode": "",
|
|
1649
|
-
"agentRecipe": "Wraps app/(admin) routes. <ResponsiveDashboardShell sidebar={<AppSidebar />} topbar={<TopBar />}>{children}</ResponsiveDashboardShell>. Mobile: sidebar collapses to <Sheet>. Desktop: persistent sidebar + topbar. Embed FullWidthToggle in topbar for instant container resize.",
|
|
1616
|
+
"agentRecipe": "Run `npx rr add dashboard-shell`. Wraps app/(admin) routes. <ResponsiveDashboardShell sidebar={<AppSidebar />} topbar={<TopBar />}>{children}</ResponsiveDashboardShell>. Mobile: sidebar collapses to <Sheet>. Desktop: persistent sidebar + topbar. Embed FullWidthToggle in topbar for instant container resize.",
|
|
1650
1617
|
"tags": [
|
|
1651
1618
|
"ui",
|
|
1652
1619
|
"layout",
|
|
@@ -1666,7 +1633,7 @@
|
|
|
1666
1633
|
"install": "// no install — Web Platform API",
|
|
1667
1634
|
"npmPackages": [],
|
|
1668
1635
|
"exampleCode": "",
|
|
1669
|
-
"agentRecipe": "Use BroadcastChannel only for demo / cross-iframe state mirroring. Production data still goes through Convex realtime. Use the useBroadcastSync(channelName, initial) hook from @/features/broadcast-channel-sync.",
|
|
1636
|
+
"agentRecipe": "Run `npx rr add broadcast-channel-sync`. Use BroadcastChannel only for demo / cross-iframe state mirroring. Production data still goes through Convex realtime. Use the useBroadcastSync(channelName, initial) hook from @/features/broadcast-channel-sync.",
|
|
1670
1637
|
"tags": [
|
|
1671
1638
|
"realtime",
|
|
1672
1639
|
"cross-tab",
|
|
@@ -1683,7 +1650,7 @@
|
|
|
1683
1650
|
"install": "npx rahman-resources add rbac-roles",
|
|
1684
1651
|
"npmPackages": [],
|
|
1685
1652
|
"exampleCode": "",
|
|
1686
|
-
"agentRecipe": "Three tier presets pick which system roles to seed: solo (owner+admin), influencer (+manager), organization (6 roles). Platform admin via env PLATFORM_ADMIN_EMAILS bypasses all checks. Resolution: platform admin → workspace owner → membership.additionalPermissions → role.permissions.",
|
|
1653
|
+
"agentRecipe": "Run `npx rr add rbac-roles`. Three tier presets pick which system roles to seed: solo (owner+admin), influencer (+manager), organization (6 roles). Platform admin via env PLATFORM_ADMIN_EMAILS bypasses all checks. Resolution: platform admin → workspace owner → membership.additionalPermissions → role.permissions.",
|
|
1687
1654
|
"tags": [
|
|
1688
1655
|
"rbac",
|
|
1689
1656
|
"auth",
|
|
@@ -1701,7 +1668,7 @@
|
|
|
1701
1668
|
"install": "npx rahman-resources add admin-panel",
|
|
1702
1669
|
"npmPackages": [],
|
|
1703
1670
|
"exampleCode": "",
|
|
1704
|
-
"agentRecipe": "Wrap pages with <AdminPage workspaceId tier>. AccessGate hides UI for non-admins, AdminShell renders 2-col layout with sidebar filtered by tier+perms. ADMIN_SECTIONS in config.ts is SSOT (17 entries). Personal-brand-os = tier 'solo' = owner sees everything.",
|
|
1671
|
+
"agentRecipe": "Run `npx rr add admin-panel`. Wrap pages with <AdminPage workspaceId tier>. AccessGate hides UI for non-admins, AdminShell renders 2-col layout with sidebar filtered by tier+perms. ADMIN_SECTIONS in config.ts is SSOT (17 entries). Personal-brand-os = tier 'solo' = owner sees everything.",
|
|
1705
1672
|
"tags": [
|
|
1706
1673
|
"admin",
|
|
1707
1674
|
"owner",
|
|
@@ -1720,7 +1687,7 @@
|
|
|
1720
1687
|
"install": "npx rahman-resources add event-tracking",
|
|
1721
1688
|
"npmPackages": [],
|
|
1722
1689
|
"exampleCode": "",
|
|
1723
|
-
"agentRecipe": "Writes to analyticsEvents table (no new schema). Anonymous page_view allowed pre-signup; other events require workspaceId. Session id per tab (sessionStorage), first-touch UTM in localStorage. Flush every ~500ms via requestIdleCallback. Cap retry queue at 500.",
|
|
1690
|
+
"agentRecipe": "Run `npx rr add event-tracking`. Writes to analyticsEvents table (no new schema). Anonymous page_view allowed pre-signup; other events require workspaceId. Session id per tab (sessionStorage), first-touch UTM in localStorage. Flush every ~500ms via requestIdleCallback. Cap retry queue at 500.",
|
|
1724
1691
|
"tags": [
|
|
1725
1692
|
"events",
|
|
1726
1693
|
"analytics",
|
|
@@ -1739,7 +1706,7 @@
|
|
|
1739
1706
|
"install": "npx rahman-resources add theme-preset-switcher",
|
|
1740
1707
|
"npmPackages": [],
|
|
1741
1708
|
"exampleCode": "",
|
|
1742
|
-
"agentRecipe": "Import ThemePresetSwitcher from @/frontend/shared/ui/components/theme-preset-switcher and mount in the topbar. Presets live in theme-presets.ts; preset-groups.ts groups them for the picker UI.",
|
|
1709
|
+
"agentRecipe": "Run `npx rr add theme-preset-switcher`. Import ThemePresetSwitcher from @/frontend/shared/ui/components/theme-preset-switcher and mount in the topbar. Presets live in theme-presets.ts; preset-groups.ts groups them for the picker UI.",
|
|
1743
1710
|
"tags": [
|
|
1744
1711
|
"theme",
|
|
1745
1712
|
"presets",
|
|
@@ -1896,6 +1863,28 @@
|
|
|
1896
1863
|
"backend"
|
|
1897
1864
|
]
|
|
1898
1865
|
},
|
|
1866
|
+
{
|
|
1867
|
+
"slug": "create-your-mcp",
|
|
1868
|
+
"title": "Create Your MCP",
|
|
1869
|
+
"category": "ai",
|
|
1870
|
+
"description": "Turn any rr-based app into an MCP server that ChatGPT custom apps, Claude.ai connectors, Cursor MCP, and other AI clients authenticate to. OAuth 2.1 + PKCE flow with code → bearer exchange, env-configured vendor-host allowlist, single-use codes, 1-year bearer tokens, scope-tagged tools, opaque error collapsing, constant-time token compare. Static MCP_API_KEY fallback for service-account / CI scripts. Sanitized 2026-05-16 from rahmanef.com's production MCP integration — vendor literals (chatgpt.com / OpenAI paths) replaced with MCP_OAUTH_ALLOWED_HOSTS + MCP_OAUTH_ALLOWED_PATH_PREFIXES env vars so the slice ships portable.",
|
|
1871
|
+
"source": "rahmanef.com",
|
|
1872
|
+
"install": "npx rahman-resources add create-your-mcp",
|
|
1873
|
+
"npmPackages": [],
|
|
1874
|
+
"exampleCode": "",
|
|
1875
|
+
"agentRecipe": "Run `npx rr add create-your-mcp`. Compose `createYourMcpTables` into root schema. Move `slices/create-your-mcp/routes/mcp.route.ts` → `app/api/mcp/route.ts` and `oauth-token.route.ts` → `app/api/oauth/token/route.ts`. Set MCP_OAUTH_ALLOWED_HOSTS (CSV vendor domains). Mount `<McpAdminView />` at /admin/mcp. Connect ChatGPT/Claude/Cursor via the setup form rendered by the admin view.",
|
|
1876
|
+
"tags": [
|
|
1877
|
+
"ai",
|
|
1878
|
+
"mcp",
|
|
1879
|
+
"oauth",
|
|
1880
|
+
"pkce",
|
|
1881
|
+
"chatgpt",
|
|
1882
|
+
"claude",
|
|
1883
|
+
"cursor",
|
|
1884
|
+
"convex",
|
|
1885
|
+
"integration"
|
|
1886
|
+
]
|
|
1887
|
+
},
|
|
1899
1888
|
{
|
|
1900
1889
|
"slug": "contact-form-resend",
|
|
1901
1890
|
"title": "Contact Form + Resend",
|
|
@@ -1905,7 +1894,7 @@
|
|
|
1905
1894
|
"install": "npx rahman-resources add contact-form-resend",
|
|
1906
1895
|
"npmPackages": [],
|
|
1907
1896
|
"exampleCode": "",
|
|
1908
|
-
"agentRecipe": "Wire contactMessages.send mutation in convex/. Server emails via Resend from form@yourdomain.com. Always validate inputs with Zod or v.* server-side. Anonymous allowed.",
|
|
1897
|
+
"agentRecipe": "Run `npx rr add contact-form-resend`. Wire contactMessages.send mutation in convex/. Server emails via Resend from form@yourdomain.com. Always validate inputs with Zod or v.* server-side. Anonymous allowed.",
|
|
1909
1898
|
"tags": [
|
|
1910
1899
|
"form",
|
|
1911
1900
|
"email",
|
|
@@ -1940,7 +1929,7 @@
|
|
|
1940
1929
|
"install": "npx rahman-resources add platform-admin",
|
|
1941
1930
|
"npmPackages": [],
|
|
1942
1931
|
"exampleCode": "",
|
|
1943
|
-
"agentRecipe": "Contract-only scaffold. Wait for superspace /rr-send platform-admin before adopting. Distinct from per-instance `admin` slug.",
|
|
1932
|
+
"agentRecipe": "Run `npx rr add platform-admin`. Contract-only scaffold. Wait for superspace /rr-send platform-admin before adopting. Distinct from per-instance `admin` slug.",
|
|
1944
1933
|
"tags": [
|
|
1945
1934
|
"infra",
|
|
1946
1935
|
"admin",
|
|
@@ -2024,19 +2013,19 @@
|
|
|
2024
2013
|
"slices": [
|
|
2025
2014
|
{
|
|
2026
2015
|
"slug": "convex-auth",
|
|
2027
|
-
"title": "Convex Auth —
|
|
2016
|
+
"title": "Convex Auth — Multi-Provider Sign-in",
|
|
2028
2017
|
"category": "auth",
|
|
2029
2018
|
"kind": "backend",
|
|
2030
|
-
"version": "0.
|
|
2031
|
-
"description": "@convex-dev/auth with
|
|
2019
|
+
"version": "0.2.0",
|
|
2020
|
+
"description": "@convex-dev/auth with Password (PBKDF2-SHA256 100k, self-hosted-friendly), Anonymous (guest), Google OAuth, and Resend magic-link. Ships a production SignInPage with i18n, prop-driven provider list, and split Login/Register tabs. No Clerk.",
|
|
2032
2021
|
"source": "rahmanef63/resource-site",
|
|
2033
2022
|
"slicePath": "frontend/slices/convex-auth",
|
|
2034
2023
|
"convexPaths": [
|
|
2035
2024
|
"convex/features/auth"
|
|
2036
2025
|
],
|
|
2037
2026
|
"npm": [
|
|
2038
|
-
"@convex-dev/auth@^0.0.
|
|
2039
|
-
"@auth/core@^0.37.
|
|
2027
|
+
"@convex-dev/auth@^0.0.92",
|
|
2028
|
+
"@auth/core@^0.37.4",
|
|
2040
2029
|
"resend@^4.0.0"
|
|
2041
2030
|
],
|
|
2042
2031
|
"shadcn": [
|
|
@@ -2044,8 +2033,8 @@
|
|
|
2044
2033
|
"card",
|
|
2045
2034
|
"input",
|
|
2046
2035
|
"label",
|
|
2047
|
-
"
|
|
2048
|
-
"
|
|
2036
|
+
"tabs",
|
|
2037
|
+
"alert"
|
|
2049
2038
|
],
|
|
2050
2039
|
"env": [
|
|
2051
2040
|
{
|
|
@@ -2063,6 +2052,14 @@
|
|
|
2063
2052
|
{
|
|
2064
2053
|
"name": "SITE_URL",
|
|
2065
2054
|
"scope": "convex"
|
|
2055
|
+
},
|
|
2056
|
+
{
|
|
2057
|
+
"name": "AUTH_GOOGLE_ID",
|
|
2058
|
+
"scope": "convex"
|
|
2059
|
+
},
|
|
2060
|
+
{
|
|
2061
|
+
"name": "AUTH_GOOGLE_SECRET",
|
|
2062
|
+
"scope": "convex"
|
|
2066
2063
|
}
|
|
2067
2064
|
],
|
|
2068
2065
|
"peers": [],
|
|
@@ -2070,8 +2067,12 @@
|
|
|
2070
2067
|
"tags": [
|
|
2071
2068
|
"auth",
|
|
2072
2069
|
"convex",
|
|
2070
|
+
"password",
|
|
2073
2071
|
"magic-link",
|
|
2074
|
-
"
|
|
2072
|
+
"google",
|
|
2073
|
+
"anonymous",
|
|
2074
|
+
"no-clerk",
|
|
2075
|
+
"pbkdf2"
|
|
2075
2076
|
],
|
|
2076
2077
|
"agentRecipe": "Run `rr add convex-auth`. Then create convex/auth.ts using the kitab pattern (Resend provider). Set env via `npx convex env set` for self-hosted."
|
|
2077
2078
|
},
|
|
@@ -2137,7 +2138,7 @@
|
|
|
2137
2138
|
"ewallet",
|
|
2138
2139
|
"checkout"
|
|
2139
2140
|
],
|
|
2140
|
-
"agentRecipe": "DOKU dual-mode: Checkout (hosted, all channels) atau Direct (single channel, returns VA/QRIS/deeplink). Webhook di /webhooks/doku verify HMAC-SHA256 (canonical: Client-Id + Request-Id + Request-Timestamp + Request-Target + Digest). Idempotency by request_id index. Server-only — no NEXT_PUBLIC_*. Sandbox default (api-sandbox.doku.com); flip DOKU_IS_PRODUCTION=true for live."
|
|
2141
|
+
"agentRecipe": "Run `npx rr add doku-payment`. DOKU dual-mode: Checkout (hosted, all channels) atau Direct (single channel, returns VA/QRIS/deeplink). Webhook di /webhooks/doku verify HMAC-SHA256 (canonical: Client-Id + Request-Id + Request-Timestamp + Request-Target + Digest). Idempotency by request_id index. Server-only — no NEXT_PUBLIC_*. Sandbox default (api-sandbox.doku.com); flip DOKU_IS_PRODUCTION=true for live."
|
|
2141
2142
|
},
|
|
2142
2143
|
{
|
|
2143
2144
|
"slug": "midtrans-payment",
|
|
@@ -2194,7 +2195,7 @@
|
|
|
2194
2195
|
"qris",
|
|
2195
2196
|
"snap"
|
|
2196
2197
|
],
|
|
2197
|
-
"agentRecipe": "Midtrans Snap untuk pembayaran instant. Webhook ke Convex HTTP action /api/midtrans-callback untuk update order status. Ingat: PPN 11% sudah included di amount, jangan double-count."
|
|
2198
|
+
"agentRecipe": "Run `npx rr add midtrans-payment`. Midtrans Snap untuk pembayaran instant. Webhook ke Convex HTTP action /api/midtrans-callback untuk update order status. Ingat: PPN 11% sudah included di amount, jangan double-count."
|
|
2198
2199
|
},
|
|
2199
2200
|
{
|
|
2200
2201
|
"slug": "resend-newsletter",
|
|
@@ -2237,55 +2238,19 @@
|
|
|
2237
2238
|
"newsletter",
|
|
2238
2239
|
"resend"
|
|
2239
2240
|
],
|
|
2240
|
-
"agentRecipe": "Use Resend Audiences API for newsletter — store subscriber emails in Convex too for segmentation. Double opt-in: subscriber.create with status 'pending' → click link → status 'confirmed'."
|
|
2241
|
+
"agentRecipe": "Run `npx rr add resend-newsletter`. Use Resend Audiences API for newsletter — store subscriber emails in Convex too for segmentation. Double opt-in: subscriber.create with status 'pending' → click link → status 'confirmed'."
|
|
2241
2242
|
},
|
|
2242
2243
|
{
|
|
2243
|
-
"slug": "ai-
|
|
2244
|
-
"title": "AI
|
|
2245
|
-
"category": "ai",
|
|
2246
|
-
"kind": "backend",
|
|
2247
|
-
"version": "0.1.0",
|
|
2248
|
-
"description": "Backend infrastructure slice. Tier-routed LLM access — nano (Haiku) for classification, mid (Sonnet) for chat, flagship (Opus) for deep reasoning. Per-call usage log + cost guard. Works with direct Anthropic/OpenAI/Google keys or OpenRouter umbrella key. Every other AI slice calls through it.",
|
|
2249
|
-
"source": "rahmanef63/resource-site",
|
|
2250
|
-
"slicePath": "frontend/slices/ai-router",
|
|
2251
|
-
"convexPaths": [
|
|
2252
|
-
"convex/features/ai"
|
|
2253
|
-
],
|
|
2254
|
-
"npm": [
|
|
2255
|
-
"ai@^4.0.0",
|
|
2256
|
-
"@openrouter/ai-sdk-provider@^0.0.5"
|
|
2257
|
-
],
|
|
2258
|
-
"shadcn": [
|
|
2259
|
-
"button"
|
|
2260
|
-
],
|
|
2261
|
-
"env": [
|
|
2262
|
-
{
|
|
2263
|
-
"name": "OPENROUTER_API_KEY",
|
|
2264
|
-
"scope": "convex",
|
|
2265
|
-
"required": true
|
|
2266
|
-
}
|
|
2267
|
-
],
|
|
2268
|
-
"peers": [],
|
|
2269
|
-
"providers": [],
|
|
2270
|
-
"tags": [
|
|
2271
|
-
"ai",
|
|
2272
|
-
"ai:backend",
|
|
2273
|
-
"tier-routing",
|
|
2274
|
-
"cost-guard"
|
|
2275
|
-
],
|
|
2276
|
-
"agentRecipe": "Wrap every AI call through ai-router action. Pick tier based on workload: nano for spam-flag/headline-suggest, mid for chat/draft, flagship for methodology-review. Log token usage to ai_usage table for cost dashboard."
|
|
2277
|
-
},
|
|
2278
|
-
{
|
|
2279
|
-
"slug": "ai-chatbot",
|
|
2280
|
-
"title": "AI Chatbot — Three-Column Workbench",
|
|
2244
|
+
"slug": "ai-chat",
|
|
2245
|
+
"title": "AI Chat — Workbench / Sidebar / Search",
|
|
2281
2246
|
"category": "ai",
|
|
2282
2247
|
"kind": "full",
|
|
2283
2248
|
"version": "0.1.0",
|
|
2284
|
-
"description": "Claude.ai / ChatGPT
|
|
2249
|
+
"description": "One conversational AI feature, three render modes. Same Convex backend (threads + streaming + tool calls + RAG), pick the surface via prop:\n\n • workbench — Claude.ai / ChatGPT three-column page (default)\n • sidebar — collapsible copilot panel inside another CRUD app\n • search — single-question + answer + citations (Perplexity)\n\nUse cases:\n – Customer-support chatbot embedded in your marketing site\n – Developer copilot in your PR/docs admin\n – Knowledge-base search over your blog + docs corpus\n – Internal AI assistant in your dashboard\n\nWhat it ships: multi-provider (Anthropic / OpenAI / Google / Mistral / Ollama), multimodal (text + image + PDF + audio), typed tool calls with inline inspector, agent mode (plan→execute→reflect), branching threads, RAG citations, resumable streams, usage telemetry. Public surface = consumer chat; admin surface = persona, fallback, guardrails per-bot.",
|
|
2285
2250
|
"source": "rahmanef63/resource-site",
|
|
2286
|
-
"slicePath": "frontend/slices/ai-
|
|
2251
|
+
"slicePath": "frontend/slices/ai-chat",
|
|
2287
2252
|
"convexPaths": [
|
|
2288
|
-
"convex/features/ai
|
|
2253
|
+
"convex/features/ai"
|
|
2289
2254
|
],
|
|
2290
2255
|
"npm": [
|
|
2291
2256
|
"ai@^4.0.0",
|
|
@@ -2303,7 +2268,9 @@
|
|
|
2303
2268
|
"slider",
|
|
2304
2269
|
"switch",
|
|
2305
2270
|
"textarea",
|
|
2306
|
-
"tabs"
|
|
2271
|
+
"tabs",
|
|
2272
|
+
"command",
|
|
2273
|
+
"sheet"
|
|
2307
2274
|
],
|
|
2308
2275
|
"env": [
|
|
2309
2276
|
{
|
|
@@ -2336,18 +2303,18 @@
|
|
|
2336
2303
|
{
|
|
2337
2304
|
"slug": "ai-admin",
|
|
2338
2305
|
"range": "^0.1",
|
|
2339
|
-
"reason": "Reads skills/tools/models from ai-admin registry."
|
|
2306
|
+
"reason": "Reads instructions / skills / tools / models from ai-admin registry."
|
|
2340
2307
|
},
|
|
2341
2308
|
{
|
|
2342
2309
|
"slug": "vector-search",
|
|
2343
2310
|
"range": "^0.1",
|
|
2344
|
-
"reason": "Optional — RAG
|
|
2311
|
+
"reason": "Optional — RAG / search modes pull workspace embeddings."
|
|
2345
2312
|
}
|
|
2346
2313
|
],
|
|
2347
2314
|
"providers": [],
|
|
2348
2315
|
"tags": [
|
|
2349
2316
|
"ai",
|
|
2350
|
-
"ai:
|
|
2317
|
+
"ai:chat",
|
|
2351
2318
|
"streaming",
|
|
2352
2319
|
"multimodal",
|
|
2353
2320
|
"tool-calls",
|
|
@@ -2357,19 +2324,19 @@
|
|
|
2357
2324
|
"branching",
|
|
2358
2325
|
"history"
|
|
2359
2326
|
],
|
|
2360
|
-
"agentRecipe": "Run `npx rr add ai-
|
|
2327
|
+
"agentRecipe": "Run `npx rr add ai-chat`. Pick `mode=\"workbench\" | \"sidebar\" | \"search\"` on `<AIChat />` (or use the convenience exports `<AIChatWorkbench />`, `<AIChatSidebar />`, `<AIChatSearch />`). Same backend tables + streaming action for all three."
|
|
2361
2328
|
},
|
|
2362
2329
|
{
|
|
2363
|
-
"slug": "ai-
|
|
2364
|
-
"title": "AI
|
|
2330
|
+
"slug": "ai-studio",
|
|
2331
|
+
"title": "AI Studio — Generation Canvas",
|
|
2365
2332
|
"category": "ai",
|
|
2366
2333
|
"kind": "full",
|
|
2367
2334
|
"version": "0.1.0",
|
|
2368
|
-
"description": "AI is the primary UI — single big prompt input → live-streaming
|
|
2335
|
+
"description": "AI is the primary UI — single big prompt input → live-streaming output → variation grid → version tree. Suno / Midjourney / Lovable / v0 pattern. Output kinds: text, code, image, audio (configurable per template).\n\nUse cases:\n – AI image generation product (creative output)\n – AI logo / banner / social-post studio\n – AI code-snippet generator (component scaffolder)\n – AI music / voiceover producer\n – AI blog-draft factory (text)\n\nFeatures: prompt history, branch + compare outputs, like + favorite, share-to-link, templates from ai-admin.",
|
|
2369
2336
|
"source": "rahmanef63/resource-site",
|
|
2370
|
-
"slicePath": "frontend/slices/ai-
|
|
2337
|
+
"slicePath": "frontend/slices/ai-studio",
|
|
2371
2338
|
"convexPaths": [
|
|
2372
|
-
"convex/features/ai
|
|
2339
|
+
"convex/features/ai"
|
|
2373
2340
|
],
|
|
2374
2341
|
"npm": [
|
|
2375
2342
|
"ai@^4.0.0"
|
|
@@ -2399,86 +2366,32 @@
|
|
|
2399
2366
|
{
|
|
2400
2367
|
"slug": "ai-admin",
|
|
2401
2368
|
"range": "^0.1",
|
|
2402
|
-
"reason": "Templates + moderation rules live in ai-admin."
|
|
2369
|
+
"reason": "Templates + few-shot library + moderation rules live in ai-admin."
|
|
2403
2370
|
}
|
|
2404
2371
|
],
|
|
2405
2372
|
"providers": [],
|
|
2406
2373
|
"tags": [
|
|
2407
2374
|
"ai",
|
|
2408
|
-
"ai:
|
|
2375
|
+
"ai:studio",
|
|
2409
2376
|
"generation",
|
|
2410
2377
|
"streaming",
|
|
2411
2378
|
"history",
|
|
2412
2379
|
"branching",
|
|
2413
2380
|
"image-gen"
|
|
2414
2381
|
],
|
|
2415
|
-
"agentRecipe": "Run `npx rr add ai-
|
|
2382
|
+
"agentRecipe": "Run `npx rr add ai-studio`. Mount `<GeneratorCanvas />` at /. Use case: prompt → output IS the entire product. Wire your output renderer (text/image/code/audio) via the OutputSlot adapter. Templates loaded from ai-admin.studio.templates."
|
|
2416
2383
|
},
|
|
2417
2384
|
{
|
|
2418
|
-
"slug": "ai-
|
|
2419
|
-
"title": "AI
|
|
2385
|
+
"slug": "ai-agents",
|
|
2386
|
+
"title": "AI Agents — Autonomous Workers",
|
|
2420
2387
|
"category": "ai",
|
|
2421
2388
|
"kind": "full",
|
|
2422
2389
|
"version": "0.1.0",
|
|
2423
|
-
"description": "AI
|
|
2390
|
+
"description": "Background AI workers. Define an agent (skill × model × tools × max-iter), trigger it on-demand or on a cron schedule, watch the step-by-step trace as it runs. Devin / Replit-Agent / Manus pattern.\n\nUse cases:\n – Nightly audit-bp on the codebase (PR-reviewer style)\n – Weekly SEO crawl + content suggestions\n – Auto-moderate comment queue\n – Scheduled data ingestion + summarization\n – Long-form research task with multi-source citations\n\nFeatures: queue + live trace, per-step retry policy, hard cost cap, shareable trace URLs, full audit-log integration.",
|
|
2424
2391
|
"source": "rahmanef63/resource-site",
|
|
2425
|
-
"slicePath": "frontend/slices/ai-
|
|
2392
|
+
"slicePath": "frontend/slices/ai-agents",
|
|
2426
2393
|
"convexPaths": [
|
|
2427
|
-
"convex/features/ai
|
|
2428
|
-
],
|
|
2429
|
-
"npm": [
|
|
2430
|
-
"ai@^4.0.0"
|
|
2431
|
-
],
|
|
2432
|
-
"shadcn": [
|
|
2433
|
-
"button",
|
|
2434
|
-
"card",
|
|
2435
|
-
"badge",
|
|
2436
|
-
"command",
|
|
2437
|
-
"scroll-area",
|
|
2438
|
-
"sheet",
|
|
2439
|
-
"separator",
|
|
2440
|
-
"tooltip"
|
|
2441
|
-
],
|
|
2442
|
-
"env": [],
|
|
2443
|
-
"peers": [
|
|
2444
|
-
{
|
|
2445
|
-
"slug": "convex-auth",
|
|
2446
|
-
"range": "^0.1",
|
|
2447
|
-
"reason": "Suggestions scoped to authed user."
|
|
2448
|
-
},
|
|
2449
|
-
{
|
|
2450
|
-
"slug": "ai-router",
|
|
2451
|
-
"range": "^0.1",
|
|
2452
|
-
"reason": "Inference via tiered router."
|
|
2453
|
-
},
|
|
2454
|
-
{
|
|
2455
|
-
"slug": "ai-admin",
|
|
2456
|
-
"range": "^0.1",
|
|
2457
|
-
"reason": "Trigger rules + personas live in ai-admin."
|
|
2458
|
-
}
|
|
2459
|
-
],
|
|
2460
|
-
"providers": [],
|
|
2461
|
-
"tags": [
|
|
2462
|
-
"ai",
|
|
2463
|
-
"ai:copilot",
|
|
2464
|
-
"streaming",
|
|
2465
|
-
"tool-calls",
|
|
2466
|
-
"suggestions",
|
|
2467
|
-
"context-aware"
|
|
2468
|
-
],
|
|
2469
|
-
"agentRecipe": "Run `npx rr add ai-copilot`. Wrap your host app in `<CopilotProvider>` and mount `<CopilotPanel />` in the page shell. Register entity → prompt mappings in ai-admin.copilot.triggers."
|
|
2470
|
-
},
|
|
2471
|
-
{
|
|
2472
|
-
"slug": "ai-agent-runner",
|
|
2473
|
-
"title": "AI Agent Runner — Async Worker Dashboard",
|
|
2474
|
-
"category": "ai",
|
|
2475
|
-
"kind": "full",
|
|
2476
|
-
"version": "0.1.0",
|
|
2477
|
-
"description": "Autonomous background agents. Public surface = task queue + run results dashboard with step-by-step traces (Devin/Replit-Agent style). Admin surface = agent registry (skill + model + tool subset + max-iter + schedule + concurrency caps) + retry/backoff policy. Each run produces an audit-log entry, cost tally, and shareable trace URL.",
|
|
2478
|
-
"source": "rahmanef63/resource-site",
|
|
2479
|
-
"slicePath": "frontend/slices/ai-agent-runner",
|
|
2480
|
-
"convexPaths": [
|
|
2481
|
-
"convex/features/ai-agent-runner"
|
|
2394
|
+
"convex/features/ai"
|
|
2482
2395
|
],
|
|
2483
2396
|
"npm": [
|
|
2484
2397
|
"ai@^4.0.0"
|
|
@@ -2507,7 +2420,7 @@
|
|
|
2507
2420
|
{
|
|
2508
2421
|
"slug": "ai-admin",
|
|
2509
2422
|
"range": "^0.1",
|
|
2510
|
-
"reason": "
|
|
2423
|
+
"reason": "Agent definitions live in ai-admin → Agents."
|
|
2511
2424
|
},
|
|
2512
2425
|
{
|
|
2513
2426
|
"slug": "audit-log",
|
|
@@ -2518,84 +2431,26 @@
|
|
|
2518
2431
|
"providers": [],
|
|
2519
2432
|
"tags": [
|
|
2520
2433
|
"ai",
|
|
2521
|
-
"ai:
|
|
2434
|
+
"ai:agents",
|
|
2522
2435
|
"agent-mode",
|
|
2523
2436
|
"tool-calls",
|
|
2524
2437
|
"async",
|
|
2525
2438
|
"queue",
|
|
2526
2439
|
"traces"
|
|
2527
2440
|
],
|
|
2528
|
-
"agentRecipe": "Run `npx rr add ai-
|
|
2529
|
-
},
|
|
2530
|
-
{
|
|
2531
|
-
"slug": "ai-search",
|
|
2532
|
-
"title": "AI Search — Ask with Citations",
|
|
2533
|
-
"category": "ai",
|
|
2534
|
-
"kind": "full",
|
|
2535
|
-
"version": "0.1.0",
|
|
2536
|
-
"description": "Perplexity-style answer engine over a workspace corpus. Public surface = ask box + streaming answer with inline numbered citations + source cards strip. Admin surface = corpus ingestion (URLs / files / Notion / Slack) + crawl schedule + reranker tuning + per-source weight.",
|
|
2537
|
-
"source": "rahmanef63/resource-site",
|
|
2538
|
-
"slicePath": "frontend/slices/ai-search",
|
|
2539
|
-
"convexPaths": [
|
|
2540
|
-
"convex/features/ai-search"
|
|
2541
|
-
],
|
|
2542
|
-
"npm": [
|
|
2543
|
-
"ai@^4.0.0"
|
|
2544
|
-
],
|
|
2545
|
-
"shadcn": [
|
|
2546
|
-
"button",
|
|
2547
|
-
"card",
|
|
2548
|
-
"badge",
|
|
2549
|
-
"input",
|
|
2550
|
-
"tabs",
|
|
2551
|
-
"scroll-area",
|
|
2552
|
-
"separator"
|
|
2553
|
-
],
|
|
2554
|
-
"env": [],
|
|
2555
|
-
"peers": [
|
|
2556
|
-
{
|
|
2557
|
-
"slug": "convex-auth",
|
|
2558
|
-
"range": "^0.1",
|
|
2559
|
-
"reason": "Per-workspace corpus scoping."
|
|
2560
|
-
},
|
|
2561
|
-
{
|
|
2562
|
-
"slug": "ai-router",
|
|
2563
|
-
"range": "^0.1",
|
|
2564
|
-
"reason": "Answer synthesis via router."
|
|
2565
|
-
},
|
|
2566
|
-
{
|
|
2567
|
-
"slug": "ai-admin",
|
|
2568
|
-
"range": "^0.1",
|
|
2569
|
-
"reason": "Reranker + source weights tunable in ai-admin."
|
|
2570
|
-
},
|
|
2571
|
-
{
|
|
2572
|
-
"slug": "vector-search",
|
|
2573
|
-
"range": "^0.1",
|
|
2574
|
-
"reason": "Embeddings index for retrieval."
|
|
2575
|
-
}
|
|
2576
|
-
],
|
|
2577
|
-
"providers": [],
|
|
2578
|
-
"tags": [
|
|
2579
|
-
"ai",
|
|
2580
|
-
"ai:search",
|
|
2581
|
-
"rag",
|
|
2582
|
-
"citations",
|
|
2583
|
-
"streaming",
|
|
2584
|
-
"corpus"
|
|
2585
|
-
],
|
|
2586
|
-
"agentRecipe": "Run `npx rr add ai-search`. Mount `<AskBox />` at /ask. Ingestion runs in ai-admin → AI Search → Sources. Wire vector-search slice for embedding store."
|
|
2441
|
+
"agentRecipe": "Run `npx rr add ai-agents`. Mount `<RunnerDashboard />` at /agents. Trigger runs via `runAgent({agentSlug, input, scheduleAt?})`. Cron scheduler via Convex cron — wire if you need scheduled runs. Agent definitions managed in ai-admin."
|
|
2587
2442
|
},
|
|
2588
2443
|
{
|
|
2589
2444
|
"slug": "ai-admin",
|
|
2590
|
-
"title": "AI Admin —
|
|
2445
|
+
"title": "AI Admin — Console (Instructions · Skills · Tools · Agents · Providers)",
|
|
2591
2446
|
"category": "ai",
|
|
2592
2447
|
"kind": "full",
|
|
2593
|
-
"version": "0.
|
|
2594
|
-
"description": "
|
|
2448
|
+
"version": "0.2.0",
|
|
2449
|
+
"description": "Central operator console for the whole AI stack. Every other ai-* feature reads its registries from here. Tabs ordered to match the build-flow:\n\n 1. Providers — register Anthropic / OpenAI / Google / Mistral / Ollama (API keys AES-encrypted at rest)\n 2. Models — per-provider catalog (capabilities, context window, pricing)\n 3. Instructions — custom system-prompt library (Claude Projects-style)\n 4. Skills — named instruction + model default + tool defaults (consumed by chat + studio)\n 5. Tools — JSON-schema function specs + impl (http / convex / shell) + sandbox flag\n 6. Agents — skill × model × tools × max-iter (consumed by ai-agents)\n 7. Budgets — per-workspace cost caps + alerts + hard kill\n 8. Audit — every AI call: actor / agent / tokens / cost / latency / outcome\n\nIncludes Create-Agent / Create-Skill / Create-Tool / Create-Instruction wizards.",
|
|
2595
2450
|
"source": "rahmanef63/resource-site",
|
|
2596
2451
|
"slicePath": "frontend/slices/ai-admin",
|
|
2597
2452
|
"convexPaths": [
|
|
2598
|
-
"convex/features/ai
|
|
2453
|
+
"convex/features/ai"
|
|
2599
2454
|
],
|
|
2600
2455
|
"npm": [],
|
|
2601
2456
|
"shadcn": [
|
|
@@ -2609,7 +2464,8 @@
|
|
|
2609
2464
|
"label",
|
|
2610
2465
|
"select",
|
|
2611
2466
|
"textarea",
|
|
2612
|
-
"switch"
|
|
2467
|
+
"switch",
|
|
2468
|
+
"command"
|
|
2613
2469
|
],
|
|
2614
2470
|
"env": [
|
|
2615
2471
|
{
|
|
@@ -2628,7 +2484,7 @@
|
|
|
2628
2484
|
{
|
|
2629
2485
|
"slug": "rbac-roles",
|
|
2630
2486
|
"range": "^0.1",
|
|
2631
|
-
"reason": "Section gated by
|
|
2487
|
+
"reason": "Section gated by ai.* permissions (manage_providers, manage_skills, etc)."
|
|
2632
2488
|
},
|
|
2633
2489
|
{
|
|
2634
2490
|
"slug": "admin-panel",
|
|
@@ -2645,15 +2501,52 @@
|
|
|
2645
2501
|
"tags": [
|
|
2646
2502
|
"ai",
|
|
2647
2503
|
"ai:admin",
|
|
2648
|
-
"
|
|
2649
|
-
"providers",
|
|
2650
|
-
"models",
|
|
2504
|
+
"instructions",
|
|
2651
2505
|
"skills",
|
|
2652
2506
|
"tools",
|
|
2653
2507
|
"agents",
|
|
2654
|
-
"
|
|
2508
|
+
"providers",
|
|
2509
|
+
"models",
|
|
2510
|
+
"budgets",
|
|
2511
|
+
"audit"
|
|
2655
2512
|
],
|
|
2656
|
-
"agentRecipe": "Run `npx rr add ai-admin`. Adds an `AI` section to the admin-panel ADMIN_SECTIONS registry
|
|
2513
|
+
"agentRecipe": "Run `npx rr add ai-admin`. Adds an `AI` section to the admin-panel ADMIN_SECTIONS registry. Sub-tabs ordered to match build-flow: Providers → Models → Instructions → Skills → Tools → Agents → Budgets → Audit. Includes Create-* wizards for instructions / skills / tools / agents. API keys AES-encrypted via AI_ADMIN_ENCRYPTION_KEY env. The instruction / skill / tool / agent registries are SSOTs consumed by every ai-* consumer slice (chat + studio + agents)."
|
|
2514
|
+
},
|
|
2515
|
+
{
|
|
2516
|
+
"slug": "ai-router",
|
|
2517
|
+
"title": "AI Router — Backend Provider Proxy",
|
|
2518
|
+
"category": "ai",
|
|
2519
|
+
"kind": "backend",
|
|
2520
|
+
"version": "0.1.0",
|
|
2521
|
+
"description": "Backend infrastructure (no UI). Single proxy that every other ai-* feature calls. Tier-routed — nano (Haiku) for classification, mid (Sonnet) for chat, flagship (Opus) for deep reasoning. Per-call usage log + cost guard. Works with direct provider keys or OpenRouter umbrella.\n\nNot something you mount — installed automatically as a peer when you add ai-chat / ai-studio / ai-agents.",
|
|
2522
|
+
"source": "rahmanef63/resource-site",
|
|
2523
|
+
"slicePath": "frontend/slices/ai-router",
|
|
2524
|
+
"convexPaths": [
|
|
2525
|
+
"convex/features/ai"
|
|
2526
|
+
],
|
|
2527
|
+
"npm": [
|
|
2528
|
+
"ai@^4.0.0",
|
|
2529
|
+
"@openrouter/ai-sdk-provider@^0.0.5"
|
|
2530
|
+
],
|
|
2531
|
+
"shadcn": [
|
|
2532
|
+
"button"
|
|
2533
|
+
],
|
|
2534
|
+
"env": [
|
|
2535
|
+
{
|
|
2536
|
+
"name": "OPENROUTER_API_KEY",
|
|
2537
|
+
"scope": "convex",
|
|
2538
|
+
"required": true
|
|
2539
|
+
}
|
|
2540
|
+
],
|
|
2541
|
+
"peers": [],
|
|
2542
|
+
"providers": [],
|
|
2543
|
+
"tags": [
|
|
2544
|
+
"ai",
|
|
2545
|
+
"ai:backend",
|
|
2546
|
+
"tier-routing",
|
|
2547
|
+
"cost-guard"
|
|
2548
|
+
],
|
|
2549
|
+
"agentRecipe": "Run `npx rr add ai-router`. Wrap every AI call through ai-router. Tiers: nano = quick classification (spam-flag, headline-suggest), mid = chat / draft, flagship = methodology-review / deep-think. Token usage logs to ai_usage table for the cost dashboard."
|
|
2657
2550
|
},
|
|
2658
2551
|
{
|
|
2659
2552
|
"slug": "vector-search",
|
|
@@ -2690,7 +2583,7 @@
|
|
|
2690
2583
|
"convex",
|
|
2691
2584
|
"rag"
|
|
2692
2585
|
],
|
|
2693
|
-
"agentRecipe": "Add embedding field + vectorIndex per searchable table. Re-embed on upsert via Convex action. Cache embeddings — don't re-call OpenAI on every read."
|
|
2586
|
+
"agentRecipe": "Run `npx rr add vector-search`. Add embedding field + vectorIndex per searchable table. Re-embed on upsert via Convex action. Cache embeddings — don't re-call OpenAI on every read."
|
|
2694
2587
|
},
|
|
2695
2588
|
{
|
|
2696
2589
|
"slug": "mdx-blog",
|
|
@@ -2719,7 +2612,7 @@
|
|
|
2719
2612
|
"mdx",
|
|
2720
2613
|
"static"
|
|
2721
2614
|
],
|
|
2722
|
-
"agentRecipe": "Store post body sebagai markdown di content/blog/*.mdx. Render dengan MDXRemote di [slug]/page.tsx. Auto-extract headings ke ToC via remark plugin custom."
|
|
2615
|
+
"agentRecipe": "Run `npx rr add mdx-blog`. Store post body sebagai markdown di content/blog/*.mdx. Render dengan MDXRemote di [slug]/page.tsx. Auto-extract headings ke ToC via remark plugin custom."
|
|
2723
2616
|
},
|
|
2724
2617
|
{
|
|
2725
2618
|
"slug": "cal-com-booking",
|
|
@@ -2759,7 +2652,7 @@
|
|
|
2759
2652
|
"cal-com",
|
|
2760
2653
|
"bookings"
|
|
2761
2654
|
],
|
|
2762
|
-
"agentRecipe": "Embed Cal.com via @calcom/embed-react di halaman services. Configure webhook di Cal.com dashboard → POST ke /api/cal-webhook → upsert booking di Convex."
|
|
2655
|
+
"agentRecipe": "Run `npx rr add cal-com-booking`. Embed Cal.com via @calcom/embed-react di halaman services. Configure webhook di Cal.com dashboard → POST ke /api/cal-webhook → upsert booking di Convex."
|
|
2763
2656
|
},
|
|
2764
2657
|
{
|
|
2765
2658
|
"slug": "full-width-toggle",
|
|
@@ -2785,7 +2678,7 @@
|
|
|
2785
2678
|
"localstorage",
|
|
2786
2679
|
"dashboard"
|
|
2787
2680
|
],
|
|
2788
|
-
"agentRecipe": "Drop <WidthContainer> around page content, <FullWidthToggle variant='icon' /> in topbar. Variant 'segment' best for settings page. Hook useFullWidth() returns [mode, setMode, cycle]. SSR-safe — defaults to 'contained' until hydrate."
|
|
2681
|
+
"agentRecipe": "Run `npx rr add full-width-toggle`. Drop <WidthContainer> around page content, <FullWidthToggle variant='icon' /> in topbar. Variant 'segment' best for settings page. Hook useFullWidth() returns [mode, setMode, cycle]. SSR-safe — defaults to 'contained' until hydrate."
|
|
2789
2682
|
},
|
|
2790
2683
|
{
|
|
2791
2684
|
"slug": "command-menu",
|
|
@@ -2815,7 +2708,7 @@
|
|
|
2815
2708
|
"keyboard",
|
|
2816
2709
|
"search"
|
|
2817
2710
|
],
|
|
2818
|
-
"agentRecipe": "Wire <CommandPalette groups={...} onHistorySelect={...} labels={...} /> at the dashboard shell. Build groups from your feature registry; each item.onSelect handles navigation. Use <SearchModal bindings={{ pages, databases, recents, isLoading, onQueryChange, onSelectPage, onSelectDatabase }} /> for the search dialog — see slice README.md for adapter shapes."
|
|
2711
|
+
"agentRecipe": "Run `npx rr add command-menu`. Wire <CommandPalette groups={...} onHistorySelect={...} labels={...} /> at the dashboard shell. Build groups from your feature registry; each item.onSelect handles navigation. Use <SearchModal bindings={{ pages, databases, recents, isLoading, onQueryChange, onSelectPage, onSelectDatabase }} /> for the search dialog — see slice README.md for adapter shapes."
|
|
2819
2712
|
},
|
|
2820
2713
|
{
|
|
2821
2714
|
"slug": "motion-primitives",
|
|
@@ -2841,7 +2734,7 @@
|
|
|
2841
2734
|
"marquee",
|
|
2842
2735
|
"framer-motion"
|
|
2843
2736
|
],
|
|
2844
|
-
"agentRecipe": "Each primitive is independently importable from @/features/motion-primitives. Use marquee for logo strips, kinetic-heading for hero text, magnetic for CTA buttons, cursor-spotlight for hover-reveal panels, stat-counter for animated numbers, reading-progress for blog top bar, grain for film texture, lightbox for image gallery."
|
|
2737
|
+
"agentRecipe": "Run `npx rr add motion-primitives`. Each primitive is independently importable from @/features/motion-primitives. Use marquee for logo strips, kinetic-heading for hero text, magnetic for CTA buttons, cursor-spotlight for hover-reveal panels, stat-counter for animated numbers, reading-progress for blog top bar, grain for film texture, lightbox for image gallery."
|
|
2845
2738
|
},
|
|
2846
2739
|
{
|
|
2847
2740
|
"slug": "responsive-dialog",
|
|
@@ -2869,7 +2762,7 @@
|
|
|
2869
2762
|
"responsive",
|
|
2870
2763
|
"primitive"
|
|
2871
2764
|
],
|
|
2872
|
-
"agentRecipe": "Drop-in for shadcn Dialog. Use <ResponsiveDialog><ResponsiveDialogTrigger>…</ResponsiveDialogTrigger><ResponsiveDialogContent>…</ResponsiveDialogContent></ResponsiveDialog>. On mobile renders as Sheet sliding from bottom; on desktop as centered Dialog. Threshold via useMediaQuery('(min-width: 768px)')."
|
|
2765
|
+
"agentRecipe": "Run `npx rr add responsive-dialog`. Drop-in for shadcn Dialog. Use <ResponsiveDialog><ResponsiveDialogTrigger>…</ResponsiveDialogTrigger><ResponsiveDialogContent>…</ResponsiveDialogContent></ResponsiveDialog>. On mobile renders as Sheet sliding from bottom; on desktop as centered Dialog. Threshold via useMediaQuery('(min-width: 768px)')."
|
|
2873
2766
|
},
|
|
2874
2767
|
{
|
|
2875
2768
|
"slug": "dashboard-shell",
|
|
@@ -2905,7 +2798,7 @@
|
|
|
2905
2798
|
"topbar",
|
|
2906
2799
|
"responsive"
|
|
2907
2800
|
],
|
|
2908
|
-
"agentRecipe": "Wraps app/(admin) routes. <ResponsiveDashboardShell sidebar={<AppSidebar />} topbar={<TopBar />}>{children}</ResponsiveDashboardShell>. Mobile: sidebar collapses to <Sheet>. Desktop: persistent sidebar + topbar. Embed FullWidthToggle in topbar for instant container resize."
|
|
2801
|
+
"agentRecipe": "Run `npx rr add dashboard-shell`. Wraps app/(admin) routes. <ResponsiveDashboardShell sidebar={<AppSidebar />} topbar={<TopBar />}>{children}</ResponsiveDashboardShell>. Mobile: sidebar collapses to <Sheet>. Desktop: persistent sidebar + topbar. Embed FullWidthToggle in topbar for instant container resize."
|
|
2909
2802
|
},
|
|
2910
2803
|
{
|
|
2911
2804
|
"slug": "broadcast-channel-sync",
|
|
@@ -2928,7 +2821,7 @@
|
|
|
2928
2821
|
"broadcast-channel",
|
|
2929
2822
|
"demo-pattern"
|
|
2930
2823
|
],
|
|
2931
|
-
"agentRecipe": "Use BroadcastChannel only for demo / cross-iframe state mirroring. Production data still goes through Convex realtime. Use the useBroadcastSync(channelName, initial) hook from @/features/broadcast-channel-sync."
|
|
2824
|
+
"agentRecipe": "Run `npx rr add broadcast-channel-sync`. Use BroadcastChannel only for demo / cross-iframe state mirroring. Production data still goes through Convex realtime. Use the useBroadcastSync(channelName, initial) hook from @/features/broadcast-channel-sync."
|
|
2932
2825
|
},
|
|
2933
2826
|
{
|
|
2934
2827
|
"slug": "rbac-roles",
|
|
@@ -2966,7 +2859,7 @@
|
|
|
2966
2859
|
"roles",
|
|
2967
2860
|
"workspaces"
|
|
2968
2861
|
],
|
|
2969
|
-
"agentRecipe": "Three tier presets pick which system roles to seed: solo (owner+admin), influencer (+manager), organization (6 roles). Platform admin via env PLATFORM_ADMIN_EMAILS bypasses all checks. Resolution: platform admin → workspace owner → membership.additionalPermissions → role.permissions."
|
|
2862
|
+
"agentRecipe": "Run `npx rr add rbac-roles`. Three tier presets pick which system roles to seed: solo (owner+admin), influencer (+manager), organization (6 roles). Platform admin via env PLATFORM_ADMIN_EMAILS bypasses all checks. Resolution: platform admin → workspace owner → membership.additionalPermissions → role.permissions."
|
|
2970
2863
|
},
|
|
2971
2864
|
{
|
|
2972
2865
|
"slug": "admin-panel",
|
|
@@ -3003,7 +2896,7 @@
|
|
|
3003
2896
|
"instrumentation",
|
|
3004
2897
|
"panel"
|
|
3005
2898
|
],
|
|
3006
|
-
"agentRecipe": "Wrap pages with <AdminPage workspaceId tier>. AccessGate hides UI for non-admins, AdminShell renders 2-col layout with sidebar filtered by tier+perms. ADMIN_SECTIONS in config.ts is SSOT (17 entries). Personal-brand-os = tier 'solo' = owner sees everything."
|
|
2899
|
+
"agentRecipe": "Run `npx rr add admin-panel`. Wrap pages with <AdminPage workspaceId tier>. AccessGate hides UI for non-admins, AdminShell renders 2-col layout with sidebar filtered by tier+perms. ADMIN_SECTIONS in config.ts is SSOT (17 entries). Personal-brand-os = tier 'solo' = owner sees everything."
|
|
3007
2900
|
},
|
|
3008
2901
|
{
|
|
3009
2902
|
"slug": "event-tracking",
|
|
@@ -3037,7 +2930,7 @@
|
|
|
3037
2930
|
"utm",
|
|
3038
2931
|
"p0"
|
|
3039
2932
|
],
|
|
3040
|
-
"agentRecipe": "Writes to analyticsEvents table (no new schema). Anonymous page_view allowed pre-signup; other events require workspaceId. Session id per tab (sessionStorage), first-touch UTM in localStorage. Flush every ~500ms via requestIdleCallback. Cap retry queue at 500."
|
|
2933
|
+
"agentRecipe": "Run `npx rr add event-tracking`. Writes to analyticsEvents table (no new schema). Anonymous page_view allowed pre-signup; other events require workspaceId. Session id per tab (sessionStorage), first-touch UTM in localStorage. Flush every ~500ms via requestIdleCallback. Cap retry queue at 500."
|
|
3041
2934
|
},
|
|
3042
2935
|
{
|
|
3043
2936
|
"slug": "theme-preset-switcher",
|
|
@@ -3060,7 +2953,7 @@
|
|
|
3060
2953
|
"oklch",
|
|
3061
2954
|
"design-system"
|
|
3062
2955
|
],
|
|
3063
|
-
"agentRecipe": "Import ThemePresetSwitcher from @/frontend/shared/ui/components/theme-preset-switcher and mount in the topbar. Presets live in theme-presets.ts; preset-groups.ts groups them for the picker UI."
|
|
2956
|
+
"agentRecipe": "Run `npx rr add theme-preset-switcher`. Import ThemePresetSwitcher from @/frontend/shared/ui/components/theme-preset-switcher and mount in the topbar. Presets live in theme-presets.ts; preset-groups.ts groups them for the picker UI."
|
|
3064
2957
|
},
|
|
3065
2958
|
{
|
|
3066
2959
|
"slug": "icon-picker",
|
|
@@ -3328,6 +3221,67 @@
|
|
|
3328
3221
|
],
|
|
3329
3222
|
"agentRecipe": "Run `npx rr add socials`. Compose `socialsTables` into root schema. Bootstrap with `npx convex run internal.features.socials.mutations.seed '{\"items\":[{\"platform\":\"github\",\"url\":\"https://github.com/<you>\",\"order\":1,\"visible\":true,\"featured\":true,\"sameAs\":true,\"relMe\":true}]}'`. Wire `useQuery(api.features.socials.queries.listVisible)` into footer for entity-graph SEO."
|
|
3330
3223
|
},
|
|
3224
|
+
{
|
|
3225
|
+
"slug": "create-your-mcp",
|
|
3226
|
+
"title": "Create Your MCP",
|
|
3227
|
+
"category": "ai",
|
|
3228
|
+
"kind": "full",
|
|
3229
|
+
"version": "0.1.0",
|
|
3230
|
+
"description": "Turn any rr-based app into an MCP server that ChatGPT custom apps, Claude.ai connectors, Cursor MCP, and other AI clients authenticate to. OAuth 2.1 + PKCE flow with code → bearer exchange, env-configured vendor-host allowlist, single-use codes, 1-year bearer tokens, scope-tagged tools, opaque error collapsing, constant-time token compare. Static MCP_API_KEY fallback for service-account / CI scripts. Sanitized 2026-05-16 from rahmanef.com's production MCP integration — vendor literals (chatgpt.com / OpenAI paths) replaced with MCP_OAUTH_ALLOWED_HOSTS + MCP_OAUTH_ALLOWED_PATH_PREFIXES env vars so the slice ships portable.",
|
|
3231
|
+
"source": "rahmanef.com",
|
|
3232
|
+
"slicePath": "frontend/slices/create-your-mcp",
|
|
3233
|
+
"convexPaths": [
|
|
3234
|
+
"convex/features/create-your-mcp"
|
|
3235
|
+
],
|
|
3236
|
+
"npm": [],
|
|
3237
|
+
"shadcn": [],
|
|
3238
|
+
"env": [
|
|
3239
|
+
{
|
|
3240
|
+
"name": "MCP_API_KEY",
|
|
3241
|
+
"scope": "server",
|
|
3242
|
+
"required": false,
|
|
3243
|
+
"description": "Static bearer for service-account / CI access. Min 32 chars. Must match Convex env."
|
|
3244
|
+
},
|
|
3245
|
+
{
|
|
3246
|
+
"name": "MCP_OAUTH_ALLOWED_HOSTS",
|
|
3247
|
+
"scope": "convex",
|
|
3248
|
+
"required": false,
|
|
3249
|
+
"description": "CSV vendor domains for redirect_uri (chatgpt.com,claude.ai,cursor.sh)."
|
|
3250
|
+
},
|
|
3251
|
+
{
|
|
3252
|
+
"name": "MCP_OAUTH_ALLOWED_PATH_PREFIXES",
|
|
3253
|
+
"scope": "convex",
|
|
3254
|
+
"required": false,
|
|
3255
|
+
"description": "CSV path prefixes under allowed hosts (/aip/,/connector/,/oauth/)."
|
|
3256
|
+
},
|
|
3257
|
+
{
|
|
3258
|
+
"name": "NEXT_PUBLIC_SITE_URL",
|
|
3259
|
+
"scope": "next-public",
|
|
3260
|
+
"required": true,
|
|
3261
|
+
"description": "Public site origin for WWW-Authenticate challenge."
|
|
3262
|
+
}
|
|
3263
|
+
],
|
|
3264
|
+
"peers": [
|
|
3265
|
+
{
|
|
3266
|
+
"slug": "convex-auth",
|
|
3267
|
+
"range": "^0.1",
|
|
3268
|
+
"reason": "requireAdmin uses getAuthUserId from @convex-dev/auth."
|
|
3269
|
+
}
|
|
3270
|
+
],
|
|
3271
|
+
"providers": [],
|
|
3272
|
+
"tags": [
|
|
3273
|
+
"ai",
|
|
3274
|
+
"mcp",
|
|
3275
|
+
"oauth",
|
|
3276
|
+
"pkce",
|
|
3277
|
+
"chatgpt",
|
|
3278
|
+
"claude",
|
|
3279
|
+
"cursor",
|
|
3280
|
+
"convex",
|
|
3281
|
+
"integration"
|
|
3282
|
+
],
|
|
3283
|
+
"agentRecipe": "Run `npx rr add create-your-mcp`. Compose `createYourMcpTables` into root schema. Move `slices/create-your-mcp/routes/mcp.route.ts` → `app/api/mcp/route.ts` and `oauth-token.route.ts` → `app/api/oauth/token/route.ts`. Set MCP_OAUTH_ALLOWED_HOSTS (CSV vendor domains). Mount `<McpAdminView />` at /admin/mcp. Connect ChatGPT/Claude/Cursor via the setup form rendered by the admin view."
|
|
3284
|
+
},
|
|
3331
3285
|
{
|
|
3332
3286
|
"slug": "contact-form-resend",
|
|
3333
3287
|
"title": "Contact Form + Resend",
|
|
@@ -3370,7 +3324,7 @@
|
|
|
3370
3324
|
"resend",
|
|
3371
3325
|
"convex"
|
|
3372
3326
|
],
|
|
3373
|
-
"agentRecipe": "Wire contactMessages.send mutation in convex/. Server emails via Resend from form@yourdomain.com. Always validate inputs with Zod or v.* server-side. Anonymous allowed."
|
|
3327
|
+
"agentRecipe": "Run `npx rr add contact-form-resend`. Wire contactMessages.send mutation in convex/. Server emails via Resend from form@yourdomain.com. Always validate inputs with Zod or v.* server-side. Anonymous allowed."
|
|
3374
3328
|
},
|
|
3375
3329
|
{
|
|
3376
3330
|
"slug": "admin",
|
|
@@ -3422,9 +3376,7 @@
|
|
|
3422
3376
|
"description": "Multi-tenant SaaS control plane. Workspace lifecycle ops (list/delete/cascade), per-tenant tier presets (gates + quota), KPI dashboard grid. Consumer-domain bits injected via adapter props (tenantTablesAdapter / tierPresets / kpiSources). Contract-only scaffold; canonical implementation lands via /rr-send from superspace. See docs/contract-negotiations-2026-05-15.md §4.",
|
|
3423
3377
|
"source": "rahmanef63/resource-site",
|
|
3424
3378
|
"slicePath": "frontend/slices/platform-admin",
|
|
3425
|
-
"convexPaths": [
|
|
3426
|
-
"convex/features/platform-admin"
|
|
3427
|
-
],
|
|
3379
|
+
"convexPaths": [],
|
|
3428
3380
|
"npm": [],
|
|
3429
3381
|
"shadcn": [],
|
|
3430
3382
|
"env": [
|
|
@@ -3455,7 +3407,7 @@
|
|
|
3455
3407
|
"saas",
|
|
3456
3408
|
"platform"
|
|
3457
3409
|
],
|
|
3458
|
-
"agentRecipe": "Contract-only scaffold. Wait for superspace /rr-send platform-admin before adopting. Distinct from per-instance `admin` slug."
|
|
3410
|
+
"agentRecipe": "Run `npx rr add platform-admin`. Contract-only scaffold. Wait for superspace /rr-send platform-admin before adopting. Distinct from per-instance `admin` slug."
|
|
3459
3411
|
},
|
|
3460
3412
|
{
|
|
3461
3413
|
"slug": "audit-log",
|