@polymorphism-tech/morph-spec 7.0.0 → 7.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. package/README.md +368 -368
  2. package/claude-plugin.json +14 -14
  3. package/docs/CHEATSHEET.md +199 -199
  4. package/docs/QUICKSTART.md +200 -200
  5. package/framework/CLAUDE.md +1 -1
  6. package/framework/MORPH.md +4 -1
  7. package/framework/agents.json +132 -127
  8. package/framework/rubrics/backend.json +41 -36
  9. package/framework/rules/ai-agents-standards.md +45 -15
  10. package/framework/rules/neon-standards.md +25 -26
  11. package/framework/skills/core/morph-brainstorming/SKILL.md +1 -1
  12. package/framework/skills/core/morph-plan/SKILL.md +3 -1
  13. package/framework/skills/core/morph-stack-scan/SKILL.md +3 -3
  14. package/framework/standards/STANDARDS.json +1729 -1133
  15. package/framework/standards/ai-agents/agent-session.md +160 -0
  16. package/framework/standards/ai-agents/batching.md +193 -0
  17. package/framework/standards/ai-agents/context-providers.md +188 -0
  18. package/framework/standards/ai-agents/mcp-server.md +250 -0
  19. package/framework/standards/ai-agents/mcp-tools.md +197 -0
  20. package/framework/standards/ai-agents/middleware-patterns.md +207 -0
  21. package/framework/standards/ai-agents/modalities-image-gen.md +173 -0
  22. package/framework/standards/ai-agents/modalities-speech-to-text.md +171 -0
  23. package/framework/standards/ai-agents/modalities-text-to-speech.md +181 -0
  24. package/framework/standards/ai-agents/modalities-vision.md +201 -0
  25. package/framework/standards/ai-agents/multi-agent-patterns.md +155 -0
  26. package/framework/standards/ai-agents/production.md +114 -258
  27. package/framework/standards/ai-agents/prompts-in-db.md +214 -0
  28. package/framework/standards/ai-agents/providers/model-registry.md +158 -0
  29. package/framework/standards/ai-agents/rag-custom-pgvector.md +243 -0
  30. package/framework/standards/ai-agents/service-tier-flex.md +135 -0
  31. package/framework/standards/ai-agents/setup.md +142 -316
  32. package/framework/standards/ai-agents/structured-output.md +249 -0
  33. package/framework/standards/ai-agents/sweet-spot.md +109 -0
  34. package/framework/standards/ai-agents/workflows.md +114 -284
  35. package/framework/standards/architecture/vertical-slice/vertical-slice.md +439 -429
  36. package/framework/standards/backend/api/validation.md +92 -88
  37. package/framework/standards/backend/database/postgresql/database.md +336 -332
  38. package/framework/standards/backend/database/vector-search-rag.md +599 -541
  39. package/framework/standards/backend/dotnet/fluent-validation-vsa.md +4 -0
  40. package/framework/standards/backend/dotnet/result-pattern.md +4 -0
  41. package/framework/standards/backend/dotnet/scalar-ui.md +176 -172
  42. package/framework/standards/backend/dotnet/scrutor.md +4 -0
  43. package/framework/standards/backend/dotnet/vsa-handler-patterns.md +310 -274
  44. package/framework/standards/backend/integrations/asaas/asaas-api.md +260 -216
  45. package/framework/standards/backend/integrations/hangfire/hangfire-jobs.md +354 -350
  46. package/framework/standards/backend/integrations/neon-auth/neon-auth.md +30 -19
  47. package/framework/standards/backend/integrations/resend/resend-email.md +400 -385
  48. package/framework/standards/data/nosql/cache/redis.md +106 -97
  49. package/framework/standards/data/nosql/cosmos-db.md +127 -118
  50. package/framework/standards/data/vector-search/rag-chunking.md +113 -104
  51. package/framework/standards/frontend/design-system/ai-image-generation.md +4 -0
  52. package/framework/standards/frontend/design-system/animations.md +164 -160
  53. package/framework/standards/frontend/design-system/naming.md +68 -64
  54. package/framework/standards/frontend/gsap/gsap-core.md +14 -8
  55. package/framework/standards/frontend/gsap/gsap-plugins.md +26 -21
  56. package/framework/standards/frontend/gsap/gsap-scrolltrigger.md +9 -7
  57. package/framework/standards/frontend/nextjs/app-router.md +127 -123
  58. package/framework/standards/frontend/nextjs/components.md +136 -132
  59. package/framework/standards/frontend/nextjs/data-fetching.md +130 -126
  60. package/framework/standards/frontend/nextjs/forms.md +134 -128
  61. package/framework/standards/frontend/nextjs/motion-patterns.md +328 -322
  62. package/framework/standards/frontend/nextjs/naming-conventions.md +71 -67
  63. package/framework/standards/frontend/nextjs/nextjs-patterns.md +229 -225
  64. package/framework/standards/frontend/nextjs/project-structure.md +106 -102
  65. package/framework/standards/frontend/nextjs/state-management.md +76 -72
  66. package/framework/standards/frontend/nextjs/testing.md +115 -111
  67. package/framework/standards/infrastructure/docker/easypanel-deploy.md +196 -192
  68. package/framework/standards/infrastructure/neon/neon-pgrag.md +6 -2
  69. package/framework/standards/infrastructure/neon/neon-pgvector.md +4 -0
  70. package/framework/standards/infrastructure/neon/neon-setup.md +5 -1
  71. package/framework/standards/integration/mcp/mcp-tools.md +471 -462
  72. package/framework/templates/CLAUDE.md.core.template +1 -1
  73. package/framework/templates/REGISTRY.json +1745 -1239
  74. package/framework/templates/code/dotnet/ai-agents/AgentBootstrap.cs.template +39 -0
  75. package/framework/templates/code/dotnet/ai-agents/EmbeddingService.cs.template +68 -0
  76. package/framework/templates/code/dotnet/ai-agents/ModelRegistry.cs.template +117 -0
  77. package/framework/templates/code/dotnet/ai-agents/PromptRepository.cs.template +95 -0
  78. package/framework/templates/code/dotnet/ai-agents/ResilientToolMiddleware.cs.template +61 -0
  79. package/framework/templates/code/dotnet/ai-agents/VectorSearchTool.cs.template +107 -0
  80. package/framework/templates/code/dotnet/ai-agents/model-registry.json.template +58 -0
  81. package/framework/templates/code/dotnet/backend/repository.cs +3 -10
  82. package/framework/templates/code/sql/ai-agents/agent-prompts-migration.sql.template +58 -0
  83. package/framework/templates/code/sql/ai-agents/pgvector-embeddings-migration.sql.template +91 -0
  84. package/package.json +89 -83
  85. package/src/core/templates/template-registry.js +289 -256
  86. package/src/lib/generators/context-generator.js +516 -518
  87. package/src/lib/generators/scaffold-generator.js +23 -26
  88. package/framework/standards/infrastructure/neon/neon-semantic-kernel.md +0 -310
  89. package/framework/templates/integrations/semantic-kernel-neon.cs +0 -125
@@ -5,6 +5,10 @@
5
5
  > **Keywords:** neon auth, better auth, authentication, nextjs, user management, session, JWT
6
6
  > **Load When:** neon auth or authentication keywords detected
7
7
 
8
+ **Verified against:** Neon Auth — @neondatabase/auth + @neondatabase/auth-ui (Better Auth). Last-verified: 2026-05-20.
9
+
10
+ ---
11
+
8
12
  Managed authentication powered by Better Auth, with all auth data stored directly in your Neon database (`neon_auth` schema). No external auth providers, no webhooks, no sync delays.
9
13
 
10
14
  ---
@@ -37,15 +41,23 @@ Neon Auth provides:
37
41
  ### Install Packages
38
42
 
39
43
  ```bash
40
- npm install @neondatabase/auth@latest
44
+ # Core auth + UI components are separate packages
45
+ npm install @neondatabase/auth@latest @neondatabase/auth-ui @neondatabase/serverless
41
46
  ```
42
47
 
48
+ > The UI components (`AuthView`, `UserButton`, `SignedIn`, `SignedOut`,
49
+ > `RedirectToSignIn`) live in `@neondatabase/auth-ui`, not in the core
50
+ > `@neondatabase/auth` package. The legacy `@stackframe/stack` packages and
51
+ > `@neondatabase/neon-auth-next` are deprecated — do not install them.
52
+
43
53
  ### Environment Variables
44
54
 
45
55
  ```bash
46
56
  # .env.local
47
57
  NEON_AUTH_BASE_URL=https://ep-xxx.neonauth.us-east-2.aws.neon.build/neondb/auth
48
58
  NEON_AUTH_COOKIE_SECRET=your-secret-at-least-32-characters-long
59
+ # Public auth URL consumed by the browser auth client
60
+ NEXT_PUBLIC_AUTH_URL=https://ep-xxx.neonauth.us-east-2.aws.neon.build/neondb/auth
49
61
  ```
50
62
 
51
63
  Generate cookie secret:
@@ -59,7 +71,10 @@ openssl rand -base64 32
59
71
  // lib/auth/client.ts
60
72
  'use client';
61
73
  import { createAuthClient } from '@neondatabase/auth/next';
62
- export const authClient = createAuthClient();
74
+ // createAuthClient takes the public auth URL as a positional argument
75
+ export const authClient = createAuthClient(process.env.NEXT_PUBLIC_AUTH_URL!);
76
+ // Re-export the React hooks from the client instance for ergonomic imports
77
+ export const { useSession } = authClient;
63
78
 
64
79
  // lib/auth/server.ts
65
80
  import { createNeonAuth } from '@neondatabase/auth/next/server';
@@ -73,25 +88,21 @@ export const auth = createNeonAuth({
73
88
 
74
89
  ### Root Layout Provider
75
90
 
91
+ Import the Tailwind styles for the UI components in `globals.css`:
92
+
93
+ ```css
94
+ @import '@neondatabase/auth-ui/tailwind';
95
+ ```
96
+
76
97
  ```tsx
77
98
  // app/providers.tsx
78
99
  'use client';
79
- import { NeonAuthUIProvider } from '@neondatabase/auth/react';
80
- import '@neondatabase/auth/ui/css';
81
- import Link from 'next/link';
82
- import { useRouter } from 'next/navigation';
100
+ import { NeonAuthUIProvider } from '@neondatabase/auth-ui';
83
101
  import { authClient } from '@/lib/auth/client';
84
102
 
85
103
  export function Providers({ children }: { children: React.ReactNode }) {
86
- const router = useRouter();
87
104
  return (
88
- <NeonAuthUIProvider
89
- authClient={authClient}
90
- navigate={router.push}
91
- replace={router.replace}
92
- onSessionChange={router.refresh}
93
- Link={Link}
94
- >
105
+ <NeonAuthUIProvider authClient={authClient}>
95
106
  {children}
96
107
  </NeonAuthUIProvider>
97
108
  );
@@ -115,23 +126,23 @@ export const { GET, POST } = auth.handler();
115
126
 
116
127
  ```tsx
117
128
  // app/auth/sign-in/page.tsx
118
- import { AuthView } from '@neondatabase/auth/react';
129
+ import { AuthView } from '@neondatabase/auth-ui';
119
130
 
120
131
  export default function SignInPage() {
121
132
  return (
122
133
  <div className="flex items-center justify-center min-h-screen">
123
- <AuthView pathname="sign-in" />
134
+ <AuthView path="sign-in" />
124
135
  </div>
125
136
  );
126
137
  }
127
138
 
128
139
  // app/auth/sign-up/page.tsx
129
- import { AuthView } from '@neondatabase/auth/react';
140
+ import { AuthView } from '@neondatabase/auth-ui';
130
141
 
131
142
  export default function SignUpPage() {
132
143
  return (
133
144
  <div className="flex items-center justify-center min-h-screen">
134
- <AuthView pathname="sign-up" />
145
+ <AuthView path="sign-up" />
135
146
  </div>
136
147
  );
137
148
  }
@@ -200,7 +211,7 @@ export const config = {
200
211
  ### Component-Level Protection
201
212
 
202
213
  ```tsx
203
- import { SignedIn, RedirectToSignIn } from '@neondatabase/auth/react';
214
+ import { SignedIn, RedirectToSignIn } from '@neondatabase/auth-ui';
204
215
 
205
216
  export default function ProtectedPage() {
206
217
  return (