@polymorphism-tech/morph-spec 6.0.0 → 7.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. package/README.md +367 -366
  2. package/docs/CHEATSHEET.md +3 -3
  3. package/docs/QUICKSTART.md +4 -4
  4. package/framework/CLAUDE.md +13 -0
  5. package/framework/MORPH.md +57 -36
  6. package/framework/agents.json +132 -127
  7. package/framework/commands/morph-apply.md +4 -21
  8. package/framework/commands/morph-archive.md +1 -1
  9. package/framework/commands/morph-proposal.md +2 -0
  10. package/framework/hooks/claude-code/core/enforce-phase-writes.js +1 -1
  11. package/framework/hooks/claude-code/core/protect-spec-files.js +1 -1
  12. package/framework/hooks/claude-code/core/state-sync.js +212 -0
  13. package/framework/hooks/shared/phase-utils.js +5 -4
  14. package/framework/hooks/shared/state-reader.js +1 -1
  15. package/framework/phases.json +1 -1
  16. package/framework/rubrics/backend.json +41 -36
  17. package/framework/rules/ai-agents-standards.md +45 -15
  18. package/framework/rules/morph-workflow.md +15 -34
  19. package/framework/rules/neon-standards.md +25 -26
  20. package/framework/schemas/tasks.schema.json +35 -0
  21. package/framework/skills/core/morph-apply/SKILL.md +154 -0
  22. package/framework/skills/core/morph-brainstorming/SKILL.md +53 -30
  23. package/framework/skills/core/morph-implement/SKILL.md +25 -14
  24. package/framework/skills/core/morph-plan/SKILL.md +91 -23
  25. package/framework/skills/core/morph-proposal/SKILL.md +137 -0
  26. package/framework/skills/core/morph-review/SKILL.md +43 -7
  27. package/framework/skills/core/morph-stack-scan/SKILL.md +40 -1
  28. package/framework/standards/STANDARDS.json +1729 -1134
  29. package/framework/standards/ai-agents/agent-session.md +160 -0
  30. package/framework/standards/ai-agents/batching.md +193 -0
  31. package/framework/standards/ai-agents/context-providers.md +188 -0
  32. package/framework/standards/ai-agents/mcp-server.md +250 -0
  33. package/framework/standards/ai-agents/mcp-tools.md +197 -0
  34. package/framework/standards/ai-agents/middleware-patterns.md +207 -0
  35. package/framework/standards/ai-agents/modalities-image-gen.md +173 -0
  36. package/framework/standards/ai-agents/modalities-speech-to-text.md +171 -0
  37. package/framework/standards/ai-agents/modalities-text-to-speech.md +181 -0
  38. package/framework/standards/ai-agents/modalities-vision.md +201 -0
  39. package/framework/standards/ai-agents/multi-agent-patterns.md +155 -0
  40. package/framework/standards/ai-agents/production.md +114 -258
  41. package/framework/standards/ai-agents/prompts-in-db.md +214 -0
  42. package/framework/standards/ai-agents/providers/model-registry.md +158 -0
  43. package/framework/standards/ai-agents/rag-custom-pgvector.md +243 -0
  44. package/framework/standards/ai-agents/service-tier-flex.md +135 -0
  45. package/framework/standards/ai-agents/setup.md +142 -316
  46. package/framework/standards/ai-agents/structured-output.md +249 -0
  47. package/framework/standards/ai-agents/sweet-spot.md +109 -0
  48. package/framework/standards/ai-agents/workflows.md +114 -284
  49. package/framework/standards/architecture/vertical-slice/vertical-slice.md +433 -429
  50. package/framework/standards/backend/api/validation.md +92 -88
  51. package/framework/standards/backend/database/postgresql/database.md +336 -332
  52. package/framework/standards/backend/database/vector-search-rag.md +599 -541
  53. package/framework/standards/backend/dotnet/fluent-validation-vsa.md +4 -0
  54. package/framework/standards/backend/dotnet/result-pattern.md +4 -0
  55. package/framework/standards/backend/dotnet/scalar-ui.md +176 -172
  56. package/framework/standards/backend/dotnet/scrutor.md +4 -0
  57. package/framework/standards/backend/dotnet/vsa-handler-patterns.md +278 -274
  58. package/framework/standards/backend/integrations/asaas/asaas-api.md +260 -216
  59. package/framework/standards/backend/integrations/hangfire/hangfire-jobs.md +354 -350
  60. package/framework/standards/backend/integrations/neon-auth/neon-auth.md +30 -19
  61. package/framework/standards/backend/integrations/resend/resend-email.md +400 -385
  62. package/framework/standards/data/nosql/cache/redis.md +106 -97
  63. package/framework/standards/data/nosql/cosmos-db.md +127 -118
  64. package/framework/standards/data/vector-search/rag-chunking.md +113 -104
  65. package/framework/standards/frontend/design-system/ai-image-generation.md +4 -0
  66. package/framework/standards/frontend/design-system/animations.md +164 -160
  67. package/framework/standards/frontend/design-system/naming.md +68 -64
  68. package/framework/standards/frontend/gsap/gsap-core.md +14 -8
  69. package/framework/standards/frontend/gsap/gsap-plugins.md +26 -21
  70. package/framework/standards/frontend/gsap/gsap-scrolltrigger.md +9 -7
  71. package/framework/standards/frontend/nextjs/app-router.md +127 -123
  72. package/framework/standards/frontend/nextjs/components.md +136 -132
  73. package/framework/standards/frontend/nextjs/data-fetching.md +130 -126
  74. package/framework/standards/frontend/nextjs/forms.md +134 -128
  75. package/framework/standards/frontend/nextjs/motion-patterns.md +328 -322
  76. package/framework/standards/frontend/nextjs/naming-conventions.md +71 -67
  77. package/framework/standards/frontend/nextjs/nextjs-patterns.md +229 -225
  78. package/framework/standards/frontend/nextjs/project-structure.md +106 -102
  79. package/framework/standards/frontend/nextjs/state-management.md +76 -72
  80. package/framework/standards/frontend/nextjs/testing.md +115 -111
  81. package/framework/standards/infrastructure/docker/easypanel-deploy.md +196 -192
  82. package/framework/standards/infrastructure/neon/neon-pgrag.md +6 -2
  83. package/framework/standards/infrastructure/neon/neon-pgvector.md +4 -0
  84. package/framework/standards/infrastructure/neon/neon-setup.md +5 -1
  85. package/framework/standards/integration/mcp/mcp-tools.md +471 -462
  86. package/framework/templates/REGISTRY.json +1745 -1239
  87. package/framework/templates/code/dotnet/ai-agents/AgentBootstrap.cs.template +39 -0
  88. package/framework/templates/code/dotnet/ai-agents/EmbeddingService.cs.template +68 -0
  89. package/framework/templates/code/dotnet/ai-agents/ModelRegistry.cs.template +117 -0
  90. package/framework/templates/code/dotnet/ai-agents/PromptRepository.cs.template +95 -0
  91. package/framework/templates/code/dotnet/ai-agents/ResilientToolMiddleware.cs.template +61 -0
  92. package/framework/templates/code/dotnet/ai-agents/VectorSearchTool.cs.template +107 -0
  93. package/framework/templates/code/dotnet/ai-agents/model-registry.json.template +58 -0
  94. package/framework/templates/code/sql/ai-agents/agent-prompts-migration.sql.template +58 -0
  95. package/framework/templates/code/sql/ai-agents/pgvector-embeddings-migration.sql.template +91 -0
  96. package/framework/templates/docs/onboarding.md +4 -4
  97. package/framework/templates/tasks.template.json +17 -0
  98. package/package.json +89 -83
  99. package/src/commands/project/init.js +16 -0
  100. package/src/commands/validation/validate-feature.js +1 -1
  101. package/src/core/paths/output-schema.js +6 -6
  102. package/src/core/state/state-manager.js +1 -1
  103. package/src/core/templates/template-registry.js +289 -256
  104. package/src/lib/detectors/design-system-detector.js +1 -1
  105. package/src/lib/generators/context-generator.js +516 -518
  106. package/src/lib/generators/scaffold-generator.js +23 -26
  107. package/src/lib/installers/memory-installer.js +138 -0
  108. package/src/lib/phase-chain/phase-validator.js +4 -4
  109. package/src/lib/risk-detector.js +80 -0
  110. package/src/lib/tasks/tasks-json-parser.js +185 -0
  111. package/src/scripts/setup-infra.js +25 -0
  112. package/src/utils/hooks-installer.js +59 -10
  113. package/framework/standards/infrastructure/neon/neon-semantic-kernel.md +0 -310
  114. 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 (