@polymorphism-tech/morph-spec 8.28.0 → 8.29.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/README.md +2 -2
- package/claude-plugin.json +1 -1
- package/docs/CHEATSHEET.md +1 -1
- package/docs/QUICKSTART.md +1 -1
- package/framework/agents.json +14 -3
- package/framework/commands/create-umbraco-lp.md +1 -1
- package/framework/mcp/registry.json +59 -8
- package/framework/skills/core/create-umbraco-lp/SKILL.md +13 -2
- package/framework/skills/core/create-umbraco-lp/references/umbraco-lp-patterns.md +598 -0
- package/framework/skills/core/migrate-lp-to-umbraco/SKILL.md +92 -7
- package/framework/skills/core/morph-apply/SKILL.md +1 -1
- package/framework/skills/core/morph-brainstorming/SKILL.md +1 -1
- package/framework/skills/core/morph-eval/SKILL.md +1 -1
- package/framework/skills/core/morph-hotfix/SKILL.md +1 -1
- package/framework/skills/core/morph-implement/SKILL.md +1 -1
- package/framework/skills/core/morph-plan/SKILL.md +1 -1
- package/framework/skills/core/morph-proposal/SKILL.md +1 -1
- package/framework/skills/core/morph-review/SKILL.md +1 -1
- package/framework/skills/core/morph-stack-scan/SKILL.md +1 -1
- package/framework/skills/core/morph-standards/SKILL.md +1 -1
- package/framework/skills/core/morph-uiux/SKILL.md +1 -1
- package/framework/standards/PROVENANCE.json +41 -0
- package/framework/standards/STANDARDS.json +218 -7
- package/framework/standards/frontend/design-system/ai-image-generation.md +43 -0
- package/framework/standards/frontend/design-system/ai-video-generation.md +113 -0
- package/framework/standards/frontend/design-system/premium-finish.md +160 -0
- package/framework/standards/frontend/gsap/gsap-core.md +1 -1
- package/framework/standards/frontend/gsap/gsap-plugins.md +1 -1
- package/framework/standards/frontend/gsap/gsap-scrolltrigger.md +3 -1
- package/framework/standards/frontend/nextjs/motion-patterns.md +3 -1
- package/framework/standards/frontend/scroll-driven/frame-scrub.md +287 -0
- package/framework/standards/frontend/scroll-driven/scroll-components.md +256 -0
- package/framework/standards/frontend/scroll-driven/smooth-scroll.md +148 -0
- package/framework/standards/frontend/seo/meta-schema-audit.md +134 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
> Spec-driven development framework for multi-stack projects. Turns feature requests into implementation-ready code through structured, AI-orchestrated phases.
|
|
4
4
|
|
|
5
5
|
**Package:** `@polymorphism-tech/morph-spec`
|
|
6
|
-
**Version:** 8.
|
|
6
|
+
**Version:** 8.29.0
|
|
7
7
|
**Requires:** Node.js 22+, Claude Code
|
|
8
8
|
|
|
9
9
|
---
|
|
@@ -368,4 +368,4 @@ Code generated by morph-spec (contracts, templates, implementation output) belon
|
|
|
368
368
|
|
|
369
369
|
---
|
|
370
370
|
|
|
371
|
-
*morph-spec v8.
|
|
371
|
+
*morph-spec v8.29.0 by [Polymorphism Tech](https://polymorphism.tech)*
|
package/claude-plugin.json
CHANGED
package/docs/CHEATSHEET.md
CHANGED
package/docs/QUICKSTART.md
CHANGED
package/framework/agents.json
CHANGED
|
@@ -101,16 +101,27 @@
|
|
|
101
101
|
"domains": ["ui", "ux", "design-system", "accessibility"],
|
|
102
102
|
"keywords": [
|
|
103
103
|
"design", "ui", "ux", "design system", "tokens", "wcag",
|
|
104
|
-
"accessibility", "mockup", "flow", "shadcn", "tailwind"
|
|
104
|
+
"accessibility", "mockup", "flow", "shadcn", "tailwind",
|
|
105
|
+
"motion", "scroll", "scrub", "gsap", "lenis", "seo"
|
|
105
106
|
],
|
|
106
107
|
"stack": ["*"],
|
|
107
108
|
"standards": [
|
|
108
109
|
"frontend-design-system-naming",
|
|
109
110
|
"frontend-design-system-animations",
|
|
110
|
-
"frontend-nextjs-motion-patterns"
|
|
111
|
+
"frontend-nextjs-motion-patterns",
|
|
112
|
+
"frontend-design-system-premium-finish",
|
|
113
|
+
"frontend-design-system-ai-image-generation",
|
|
114
|
+
"frontend-design-system-ai-video-generation",
|
|
115
|
+
"frontend-scroll-driven-frame-scrub",
|
|
116
|
+
"frontend-scroll-driven-smooth-scroll",
|
|
117
|
+
"frontend-scroll-driven-scroll-components",
|
|
118
|
+
"frontend-seo-meta-schema-audit",
|
|
119
|
+
"frontend-gsap-core",
|
|
120
|
+
"frontend-gsap-scrolltrigger",
|
|
121
|
+
"frontend-gsap-plugins"
|
|
111
122
|
],
|
|
112
123
|
"tools": "Read, Write, Edit, Glob, Grep",
|
|
113
|
-
"mcp": ["context7", "stitch", "gemini-image", "playwright"],
|
|
124
|
+
"mcp": ["context7", "stitch", "gemini-image", "playwright", "seedance"],
|
|
114
125
|
"model": "sonnet",
|
|
115
126
|
"persona": "Você desenha sistemas, não telas isoladas. Pensa em tokens (cor, espaço, tipografia), componentes reutilizáveis, estados (default/hover/focus/disabled/loading/error), acessibilidade WCAG AA. Mockups em Tailwind direto, sem Figma intermediário."
|
|
116
127
|
},
|
|
@@ -30,6 +30,6 @@ Cria um projeto de landing page novo a partir do template canônico `MORPH_Umbra
|
|
|
30
30
|
## Referências
|
|
31
31
|
|
|
32
32
|
- `.claude/skills/create-umbraco-lp/SKILL.md`
|
|
33
|
-
- `
|
|
33
|
+
- `references/umbraco-lp-patterns.md` (dentro da skill `create-umbraco-lp`)
|
|
34
34
|
|
|
35
35
|
**Projeto:** $ARGUMENTS
|
|
@@ -176,15 +176,15 @@
|
|
|
176
176
|
"testCall": "Call get_configuration_status to verify API key and server health",
|
|
177
177
|
"testParams": {},
|
|
178
178
|
"successIndicator": "Returns status with valid API key configured",
|
|
179
|
-
"failureHint": "Gemini Image MCP not responding.
|
|
179
|
+
"failureHint": "Gemini Image MCP not responding. Check that GEMINI_API_KEY is set in the MCP env config and that MORPH_HUB points at a built morph-HUB checkout."
|
|
180
180
|
},
|
|
181
181
|
"install": {
|
|
182
182
|
"autoInstall": false,
|
|
183
183
|
"transport": "stdio",
|
|
184
184
|
"config": {
|
|
185
185
|
"type": "stdio",
|
|
186
|
-
"command": "
|
|
187
|
-
"args": ["/
|
|
186
|
+
"command": "node",
|
|
187
|
+
"args": ["${MORPH_HUB}/mcps/gemini-image/dist/index.js"]
|
|
188
188
|
},
|
|
189
189
|
"credentials": [
|
|
190
190
|
{
|
|
@@ -194,19 +194,70 @@
|
|
|
194
194
|
"helpUrl": "https://aistudio.google.com/apikey"
|
|
195
195
|
}
|
|
196
196
|
],
|
|
197
|
-
"prerequisites": [
|
|
197
|
+
"prerequisites": [
|
|
198
|
+
"Google AI Studio API key",
|
|
199
|
+
"Local morph-HUB checkout with mcps/gemini-image built, exposed via the MORPH_HUB env var"
|
|
200
|
+
],
|
|
198
201
|
"stackRelevance": ["nextjs", "next"],
|
|
199
|
-
"warnings": [
|
|
200
|
-
|
|
202
|
+
"warnings": [
|
|
203
|
+
"Internal Polymorphism MCP, not published to npm. The public gemini-image-mcp package was unpublished in 2025-04, so npx installs no longer work.",
|
|
204
|
+
"Requires GEMINI_API_KEY environment variable. Image generation costs apply per Google AI pricing."
|
|
205
|
+
],
|
|
206
|
+
"setupGuide": "1. Get an API key at https://aistudio.google.com/apikey\n2. Build the MCP: cd $MORPH_HUB/mcps/gemini-image && npm install && npm run build\n3. Run: claude mcp add gemini-image-mcp -e GEMINI_API_KEY=<key> -- node $MORPH_HUB/mcps/gemini-image/dist/index.js\n4. Verify with get_configuration_status"
|
|
207
|
+
}
|
|
208
|
+
},
|
|
209
|
+
"seedance": {
|
|
210
|
+
"phases": ["uiux", "implement"],
|
|
211
|
+
"tools": ["generate_video", "generate_loop_video", "get_video", "list_videos"],
|
|
212
|
+
"detection": "mcpServers includes seedance",
|
|
213
|
+
"fallback": "Use client-provided footage or a static poster image; canvas frame-scrub works from any frame sequence, AI-generated or not",
|
|
214
|
+
"usage": "AI video generation for scroll-driven heroes and ambient backgrounds. generate_video with endImage produces the directional footage that frame-scrub needs (start frame differs from end frame); generate_loop_video is only for seamless ambient loops",
|
|
215
|
+
"healthCheck": {
|
|
216
|
+
"toolPattern": "seedance",
|
|
217
|
+
"testCall": "Call list_videos with limit 1 to verify the server responds (reads local history, spends no credits)",
|
|
218
|
+
"testParams": {
|
|
219
|
+
"limit": 1
|
|
220
|
+
},
|
|
221
|
+
"successIndicator": "Returns the local job history, or 'No videos in history yet'",
|
|
222
|
+
"failureHint": "Seedance MCP not responding. Check that REPLICATE_API_TOKEN is set in the MCP env config and that MORPH_HUB points at a built morph-HUB checkout."
|
|
223
|
+
},
|
|
224
|
+
"install": {
|
|
225
|
+
"autoInstall": false,
|
|
226
|
+
"transport": "stdio",
|
|
227
|
+
"config": {
|
|
228
|
+
"type": "stdio",
|
|
229
|
+
"command": "node",
|
|
230
|
+
"args": ["${MORPH_HUB}/mcps/seedance/dist/index.js"]
|
|
231
|
+
},
|
|
232
|
+
"credentials": [
|
|
233
|
+
{
|
|
234
|
+
"name": "Replicate API Token",
|
|
235
|
+
"envVar": "REPLICATE_API_TOKEN",
|
|
236
|
+
"secret": true,
|
|
237
|
+
"helpUrl": "https://replicate.com/account/api-tokens"
|
|
238
|
+
}
|
|
239
|
+
],
|
|
240
|
+
"prerequisites": [
|
|
241
|
+
"Replicate account with billing enabled",
|
|
242
|
+
"Local morph-HUB checkout with mcps/seedance built, exposed via the MORPH_HUB env var",
|
|
243
|
+
"ffmpeg on PATH to extract frames for scroll-scrubbing"
|
|
244
|
+
],
|
|
245
|
+
"stackRelevance": ["next", "react", "vite", "astro"],
|
|
246
|
+
"warnings": [
|
|
247
|
+
"Internal Polymorphism MCP, not published to npm. Requires a local morph-HUB checkout.",
|
|
248
|
+
"Paid per generation. Draft at fast/480p/4s first, render 1080p only after the take is approved.",
|
|
249
|
+
"Generation is stochastic and needs a human approval gate. Do not wire it into an unattended phase."
|
|
250
|
+
],
|
|
251
|
+
"setupGuide": "1. Get a token at https://replicate.com/account/api-tokens\n2. Build the MCP: cd $MORPH_HUB/mcps/seedance && npm install && npm run build\n3. Run: claude mcp add seedance -e REPLICATE_API_TOKEN=<token> -- node $MORPH_HUB/mcps/seedance/dist/index.js\n4. Verify with list_videos (reads local history, spends no credits)"
|
|
201
252
|
}
|
|
202
253
|
}
|
|
203
254
|
},
|
|
204
255
|
"_phaseMatrixNote": "Keys must be the v5 phases from framework/phases.json. The v4 keys 'design' and 'tasks' both collapsed into 'plan'; 'review' was absent entirely, so a project in review resolved to undefined. Stack-scoped MCPs (asaas) stay out of this matrix on purpose — only universal ones are listed.",
|
|
205
256
|
"phaseMatrix": {
|
|
206
257
|
"proposal": ["context7"],
|
|
207
|
-
"uiux": ["playwright", "context7", "stitch", "gemini-image"],
|
|
258
|
+
"uiux": ["playwright", "context7", "stitch", "gemini-image", "seedance"],
|
|
208
259
|
"plan": ["context7"],
|
|
209
|
-
"implement": ["context7", "playwright", "vercel", "gemini-image"],
|
|
260
|
+
"implement": ["context7", "playwright", "vercel", "gemini-image", "seedance"],
|
|
210
261
|
"review": ["playwright", "context7"]
|
|
211
262
|
}
|
|
212
263
|
}
|
|
@@ -4,7 +4,7 @@ description: Guia a criação de uma landing page nova ponta-a-ponta a partir do
|
|
|
4
4
|
version: core
|
|
5
5
|
when-to-invoke: ao iniciar um novo projeto de LP com o template Umbraco genérico
|
|
6
6
|
user-invokable: true
|
|
7
|
-
cliVersion: "8.
|
|
7
|
+
cliVersion: "8.29.0"
|
|
8
8
|
stacks:
|
|
9
9
|
- umbraco
|
|
10
10
|
---
|
|
@@ -199,6 +199,17 @@ Edite `frontend/src/app/globals.css`. As variáveis CSS de base do tema são def
|
|
|
199
199
|
|
|
200
200
|
Para tipografias customizadas, importe via `next/font` em `frontend/src/app/layout.tsx` e exponha como variável CSS.
|
|
201
201
|
|
|
202
|
+
> **Se a LP nasce cinematográfica (scroll-driven):** o template não traz `gsap` nem `lenis`; adicione ao
|
|
203
|
+
> `frontend/package.json` e monte o runtime de motion como componente `'use client'` montado uma vez na
|
|
204
|
+
> page, com guard de SSR no registro do ScrollTrigger. O conhecimento está nos standards
|
|
205
|
+
> `frontend/scroll-driven/smooth-scroll.md` (wiring Lenis com o ticker do GSAP, `window.__lenis`,
|
|
206
|
+
> armadilha de HMR), `frame-scrub.md` (canvas quadro a quadro, extração ffmpeg, poster no mobile) e
|
|
207
|
+
> `scroll-components.md` (pin, modal, parallax, reveal). Regra de assets que vale desde o primeiro dia:
|
|
208
|
+
> **sequência de frames é asset estrutural em `frontend/public/` com cache-bust `?v=N` manual, e só o
|
|
209
|
+
> poster vira mídia editável no backoffice.** Frames na Media Library perdem o webp (o ImageSharp do
|
|
210
|
+
> Umbraco 17 exige URL assinada por HMAC, não relaxável por config) e viram 145 requests assinadas
|
|
211
|
+
> por visitante.
|
|
212
|
+
|
|
202
213
|
**4.2 — Módulos disponíveis (Content Types *Section):**
|
|
203
214
|
|
|
204
215
|
O template já inclui os seguintes módulos versionados em `backend/uSync/v17/ContentTypes/`:
|
|
@@ -268,7 +279,7 @@ Antes de fazer deploy ou entregar o projeto ao cliente:
|
|
|
268
279
|
## Referências
|
|
269
280
|
|
|
270
281
|
- `polymorphism-tech/MORPH_Umbraco_LP_Template` (privado, branch `master`) — template canônico: `scripts/new-lp.ps1`, `scripts/new-lp.sh`, `backend/Infrastructure/SeedContentHandler.cs`, `backend/Controllers/LeadController.cs`, `backend/uSync/v17/`.
|
|
271
|
-
- `
|
|
282
|
+
- `references/umbraco-lp-patterns.md` (carregue sob demanda) — padrões e gotchas detalhados: controller público (seção 1), DI multi-sink (seção 2), leitura server-side de config oculta (seção 3), segurança Delivery API (seção 4), uSync config-as-code (seção 5), dropdown gotcha (seção 6), seed idempotente (seção 7), endpoint Ping (seção 10), skip silencioso em dev (seção 11), build Next.js exige backend (seção 12).
|
|
272
283
|
- `backend/appsettings.json` — `Umbraco:CMS:DeliveryApi:DisallowedContentTypeAliases` e `uSync:Settings:ImportAtStartup`.
|
|
273
284
|
- `backend/Properties/launchSettings.json` — portas de dev: HTTP `:19223`, HTTPS `:44324`.
|
|
274
285
|
- `docker-compose.yml` — orquestração de produção (backend porta `5001`, frontend `3000`).
|