@polymorphism-tech/morph-spec 4.12.0 → 4.14.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/CLAUDE.md +7 -7
- package/README.md +28 -34
- package/bin/morph-spec.js +41 -24
- package/bin/task-manager.js +962 -1341
- package/bin/validate.js +1 -1
- package/claude-plugin.json +1 -1
- package/docs/CHEATSHEET.md +14 -16
- package/docs/QUICKSTART.md +15 -15
- package/framework/CLAUDE.md +5 -2
- package/framework/agents/README.md +3 -4
- package/framework/agents/ai-agents/ai-system-architect.md +6 -10
- package/framework/agents/architecture/seo-growth-hacker.md +166 -326
- package/framework/agents/architecture/standards-architect.md +21 -31
- package/framework/agents/backend/dotnet-senior.md +160 -86
- package/framework/agents/backend/ef-modeler.md +2 -6
- package/framework/agents/backend/hangfire-orchestrator.md +8 -9
- package/framework/agents/backend/ms-agent-expert.md +1 -1
- package/framework/agents/frontend/nextjs-expert.md +198 -133
- package/framework/agents/frontend/ui-ux-designer.md +226 -267
- package/framework/agents/infrastructure/infra-architect.md +191 -27
- package/framework/agents/integrations/clerk-auth.md +19 -26
- package/framework/agents/integrations/hangfire-integration.md +1 -4
- package/framework/agents.json +1084 -2278
- package/framework/commands/morph-apply.md +4 -6
- package/framework/commands/morph-preflight.md +192 -269
- package/framework/commands/morph-proposal.md +210 -238
- package/framework/commands/morph-status.md +72 -92
- package/framework/commands/morph-troubleshoot.md +6 -13
- package/framework/hooks/README.md +1 -6
- package/framework/hooks/claude-code/post-tool-use/validator-feedback.js +4 -6
- package/framework/hooks/claude-code/pre-compact/save-morph-context.js +12 -7
- package/framework/hooks/claude-code/pre-tool-use/enforce-phase-writes.js +2 -2
- package/framework/hooks/claude-code/pre-tool-use/protect-spec-files.js +2 -2
- package/framework/hooks/claude-code/pre-tool-use/task-tracking-guard.js +5 -10
- package/framework/hooks/claude-code/session-start/inject-morph-context.js +63 -30
- package/framework/hooks/claude-code/session-start/resume-context.js +77 -0
- package/framework/hooks/claude-code/statusline.py +4 -5
- package/framework/hooks/claude-code/stop/validate-completion.js +4 -4
- package/framework/hooks/claude-code/user-prompt/enrich-prompt.js +8 -8
- package/framework/hooks/shared/compact-restore.js +28 -5
- package/framework/hooks/shared/phase-utils.js +4 -8
- package/framework/hooks/shared/state-reader.js +34 -3
- package/framework/phases.json +162 -200
- package/framework/rules/ai-agents-standards.md +15 -0
- package/framework/rules/asaas-standards.md +13 -0
- package/framework/rules/clerk-standards.md +13 -0
- package/framework/rules/csharp-standards.md +8 -4
- package/framework/rules/data-standards.md +18 -0
- package/framework/rules/dotnet-templates.md +87 -0
- package/framework/rules/frontend-standards.md +13 -13
- package/framework/rules/hangfire-standards.md +13 -0
- package/framework/rules/infrastructure-standards.md +27 -16
- package/framework/rules/morph-workflow.md +73 -13
- package/framework/rules/nextjs-standards.md +1 -0
- package/framework/rules/nextjs-templates.md +40 -0
- package/framework/rules/resend-standards.md +12 -0
- package/framework/rules/supabase-standards.md +29 -0
- package/framework/skills/README.md +6 -8
- package/framework/skills/level-0-meta/mcp-registry.json +21 -99
- package/framework/{standards/ai-agents/team-orchestration.md → skills/level-0-meta/morph-agent-teams/SKILL.md} +472 -479
- package/framework/skills/level-0-meta/morph-brainstorming/SKILL.md +28 -1
- package/framework/skills/level-0-meta/morph-checklist/SKILL.md +2 -2
- package/framework/skills/level-0-meta/morph-code-review/SKILL.md +1 -5
- package/framework/skills/level-0-meta/morph-code-review/scripts/scan-csharp.mjs +1 -1
- package/framework/skills/level-0-meta/morph-frontend-review/SKILL.md +23 -41
- package/framework/skills/level-0-meta/morph-init/SKILL.md +18 -14
- package/framework/skills/level-0-meta/morph-parallel-dispatch/SKILL.md +225 -0
- package/framework/skills/level-0-meta/morph-post-implementation/SKILL.md +20 -0
- package/framework/skills/level-0-meta/morph-tool-usage-guide/SKILL.md +4 -8
- package/framework/skills/level-0-meta/morph-tool-usage-guide/references/tools-per-phase.md +15 -59
- package/framework/skills/level-0-meta/morph-verification-before-completion/SKILL.md +7 -19
- package/framework/skills/level-0-meta/morph-verification-before-completion/scripts/check-phase-outputs.mjs +8 -8
- package/framework/skills/level-1-workflows/README.md +1 -1
- package/framework/skills/level-1-workflows/morph-phase-codebase-analysis/SKILL.md +49 -50
- package/framework/skills/level-1-workflows/morph-phase-design/SKILL.md +57 -123
- package/framework/skills/level-1-workflows/morph-phase-design/references/architecture-analysis-guide.md +5 -50
- package/framework/skills/level-1-workflows/morph-phase-design/references/spec-example.md +1 -1
- package/framework/skills/level-1-workflows/morph-phase-implement/SKILL.md +127 -159
- package/framework/skills/level-1-workflows/morph-phase-implement/prompts/code-quality-reviewer-prompt.md +1 -1
- package/framework/skills/level-1-workflows/morph-phase-implement/prompts/implementer-prompt.md +4 -3
- package/framework/skills/level-1-workflows/morph-phase-implement/prompts/spec-reviewer-prompt.md +2 -2
- package/framework/skills/level-1-workflows/morph-phase-implement/references/recap-example.md +1 -1
- package/framework/skills/level-1-workflows/morph-phase-plan/SKILL.md +17 -13
- package/framework/skills/level-1-workflows/morph-phase-tasks/SKILL.md +22 -40
- package/framework/skills/level-1-workflows/morph-phase-tasks/references/task-planning-patterns.md +143 -172
- package/framework/skills/level-1-workflows/morph-phase-tasks/references/tasks-example.md +5 -5
- package/framework/skills/level-1-workflows/morph-phase-uiux/SKILL.md +57 -77
- package/framework/skills/level-1-workflows/morph-scope-escalation/SKILL.md +1 -1
- package/framework/squad-templates/backend-only.json +6 -6
- package/framework/squad-templates/frontend-only.json +17 -8
- package/framework/squad-templates/full-stack.json +29 -24
- package/framework/standards/STANDARDS.json +1021 -2369
- package/framework/standards/backend/dotnet/fluent-validation-vsa.md +200 -0
- package/framework/standards/backend/dotnet/result-pattern.md +213 -0
- package/framework/standards/backend/dotnet/scalar-ui.md +172 -0
- package/framework/standards/backend/dotnet/scrutor.md +158 -0
- package/framework/standards/backend/dotnet/vsa-handler-patterns.md +274 -0
- package/framework/standards/frontend/nextjs/motion-patterns.md +1 -1
- package/framework/standards/infrastructure/supabase/mcp-setup.md +83 -193
- package/framework/standards/integration/mcp/mcp-tools.md +91 -77
- package/framework/templates/IDE-SNIPPETS.md +2 -6
- package/framework/templates/README.md +709 -814
- package/framework/templates/REGISTRY.json +223 -762
- package/framework/templates/code/dotnet/abstractions/api-endpoint.cs +7 -0
- package/framework/templates/code/dotnet/abstractions/error.cs +60 -0
- package/framework/templates/code/dotnet/abstractions/handler.cs +12 -0
- package/framework/templates/code/dotnet/abstractions/result.cs +74 -0
- package/framework/templates/code/dotnet/backend/repository.cs +148 -141
- package/framework/templates/code/dotnet/constants/api-tags.cs +6 -0
- package/framework/templates/code/dotnet/exceptions/exception-handler.cs +32 -0
- package/framework/templates/code/dotnet/extensions/database-extensions.cs +20 -0
- package/framework/templates/code/dotnet/extensions/handler-registration.cs +38 -0
- package/framework/templates/code/dotnet/extensions/health-checks.cs +24 -0
- package/framework/templates/code/dotnet/extensions/map-endpoints.cs +35 -0
- package/framework/templates/code/dotnet/extensions/result-extensions.cs +29 -0
- package/framework/templates/code/dotnet/feature/endpoint.cs.hbs +21 -0
- package/framework/templates/code/dotnet/feature/entity.cs.hbs +8 -0
- package/framework/templates/code/dotnet/feature/errors.cs.hbs +8 -0
- package/framework/templates/code/dotnet/feature/handler.cs.hbs +24 -0
- package/framework/templates/code/dotnet/feature/request.cs.hbs +4 -0
- package/framework/templates/code/dotnet/feature/response.cs.hbs +4 -0
- package/framework/templates/code/dotnet/feature/validator.cs.hbs +15 -0
- package/framework/templates/code/dotnet/jobs/job.cs +21 -17
- package/framework/templates/code/dotnet/pipelines/logging-decorator.cs +31 -0
- package/framework/templates/code/dotnet/pipelines/validation-decorator.cs +97 -0
- package/framework/templates/code/dotnet/test.cs +192 -106
- package/framework/templates/context/ARCHITECTURE.md +89 -0
- package/framework/templates/context/CONTEXT-FEATURE.md +2 -2
- package/framework/templates/context/CONTEXT.md +180 -181
- package/framework/templates/context/design-system.md +1 -5
- package/framework/templates/docs/onboarding.md +2 -3
- package/framework/templates/docs/proposal.md +171 -182
- package/framework/templates/docs/spec.md +1 -3
- package/framework/templates/docs/ui-components.md +0 -72
- package/framework/templates/examples/design-system-examples.md +4 -4
- package/framework/templates/feature/decisions.md +0 -66
- package/framework/templates/feature/recap.md +1 -2
- package/framework/templates/infrastructure/github/README.md +56 -593
- package/framework/templates/integrations/clerk-config.cs +0 -41
- package/framework/templates/meta-prompts/parallel-workers/parallel-worker.md +2 -2
- package/framework/templates/meta-prompts/squad-leaders/backend-squad.md +1 -2
- package/framework/templates/meta-prompts/squad-leaders/frontend-squad.md +83 -126
- package/framework/templates/meta-prompts/validators/pre-commit-validator.md +2 -2
- package/framework/templates/project/validate.js +2 -4
- package/framework/templates/ui/design-system.css +1 -1
- package/framework/workflows/README.md +8 -8
- package/framework/workflows/configs/fast-track.json +51 -0
- package/framework/workflows/configs/full.json +68 -0
- package/framework/workflows/configs/standard.json +7 -3
- package/framework/workflows/docs/STORY-DRIVEN-DEVELOPMENT.md +1 -1
- package/framework/workflows/docs/enforcement-pipeline.md +18 -19
- package/framework/workflows/docs/full-morph.md +69 -76
- package/framework/workflows/docs/standard.md +49 -44
- package/framework/workflows/docs/ui-refresh.md +1 -1
- package/package.json +3 -3
- package/src/commands/agents/dispatch-agents.js +55 -116
- package/src/commands/context/context-refresh.js +79 -0
- package/src/commands/phase/phase-reset.js +1 -1
- package/src/commands/project/doctor.js +10 -32
- package/src/commands/project/init.js +12 -0
- package/src/commands/project/status.js +6 -12
- package/src/commands/scaffold/scaffold.js +131 -0
- package/src/commands/scope/escalate.js +1 -1
- package/src/commands/state/advance-phase.js +15 -29
- package/src/commands/state/state.js +20 -5
- package/src/commands/tasks/task.js +0 -30
- package/src/commands/validation/validate-feature.js +3 -10
- package/src/core/paths/output-schema.js +12 -13
- package/src/core/state/phase-state-machine.js +211 -217
- package/src/core/state/state-manager.js +9 -9
- package/src/lib/agents/agents-manager.js +2 -2
- package/src/lib/agents/output-collector.js +1 -2
- package/src/lib/detectors/design-system-detector.js +4 -4
- package/src/lib/detectors/index.js +1 -11
- package/src/lib/generators/architecture-scanner.js +640 -0
- package/src/lib/generators/context-generator.js +3 -3
- package/src/lib/generators/design-system-generator.js +508 -587
- package/src/lib/generators/index.js +12 -10
- package/src/lib/generators/metadata-extractor.js +386 -387
- package/src/lib/generators/recap-generator.js +4 -4
- package/src/lib/generators/scaffold-generator.js +317 -0
- package/src/lib/generators/settings-generator.js +0 -1
- package/src/lib/phase-chain/phase-validator.js +64 -42
- package/src/lib/stack/stack-profile.js +2 -2
- package/src/lib/standards/digest-builder.js +72 -285
- package/src/lib/tasks/task-parser.js +11 -5
- package/src/lib/validators/architecture/architecture-validator.js +259 -387
- package/src/lib/validators/content/content-validator.js +287 -287
- package/src/lib/validators/css/css-validator.js +340 -352
- package/src/lib/validators/packages/package-validator.js +347 -360
- package/src/lib/validators/shared/issue-counter.js +14 -18
- package/src/lib/validators/validation-runner.js +3 -19
- package/src/scripts/setup-infra.js +1 -1
- package/src/utils/agents-installer.js +61 -10
- package/src/utils/file-copier.js +1 -0
- package/src/utils/hooks-installer.js +11 -19
- package/src/utils/skills-installer.js +178 -178
- package/framework/agents/architecture/prompt-engineer.md +0 -195
- package/framework/agents/backend/api-designer.md +0 -106
- package/framework/agents/frontend/blazor-builder.md +0 -229
- package/framework/agents/frontend/nextjs-ui-specialist.md +0 -218
- package/framework/agents/infrastructure/azure-architect.md +0 -150
- package/framework/agents/infrastructure/azure-deploy-specialist.md +0 -707
- package/framework/agents/infrastructure/bicep-architect.md +0 -132
- package/framework/agents/infrastructure/container-specialist.md +0 -137
- package/framework/agents/infrastructure/devops-engineer.md +0 -126
- package/framework/agents/integrations/azure-identity.md +0 -148
- package/framework/agents/quality/code-analyzer.md +0 -239
- package/framework/agents/quality/testing-specialist.md +0 -130
- package/framework/hooks/claude-code/notification/approval-reminder.js +0 -57
- package/framework/hooks/claude-code/post-tool-use/context-refresh.js +0 -109
- package/framework/hooks/claude-code/post-tool-use/skill-reminder.js +0 -78
- package/framework/index/troubleshooting-index.json +0 -184
- package/framework/rules/testing-standards.md +0 -14
- package/framework/skills/level-0-meta/morph-replicate/SKILL.md +0 -230
- package/framework/skills/level-0-meta/morph-replicate/references/blazor-html-mapping.md +0 -70
- package/framework/skills/level-1-workflows/morph-phase-clarify/SKILL.md +0 -256
- package/framework/skills/level-1-workflows/morph-phase-clarify/references/clarifications-example.md +0 -117
- package/framework/skills/level-1-workflows/morph-phase-setup/SKILL.md +0 -269
- package/framework/standards/ai-agents/blazor-ui.md +0 -364
- package/framework/standards/architecture/ddd/aggregates.md +0 -120
- package/framework/standards/architecture/ddd/bounded-contexts.md +0 -105
- package/framework/standards/architecture/ddd/complexity-levels.md +0 -108
- package/framework/standards/architecture/ddd/entities.md +0 -99
- package/framework/standards/architecture/ddd/ubiquitous-language.md +0 -58
- package/framework/standards/architecture/ddd/value-objects.md +0 -124
- package/framework/standards/backend/api/minimal-api.md +0 -494
- package/framework/standards/backend/api/rest.md +0 -492
- package/framework/standards/backend/authentication/passkeys.md +0 -428
- package/framework/standards/backend/database/ef-core.md +0 -199
- package/framework/standards/backend/database/migrations.md +0 -393
- package/framework/standards/backend/database/repository-patterns.md +0 -528
- package/framework/standards/backend/dotnet/async.md +0 -366
- package/framework/standards/backend/dotnet/core.md +0 -117
- package/framework/standards/backend/dotnet/di.md +0 -439
- package/framework/standards/backend/dotnet/program-cs-checklist.md +0 -92
- package/framework/standards/context/analytics.md +0 -96
- package/framework/standards/context/bundles.md +0 -110
- package/framework/standards/context/priming.md +0 -78
- package/framework/standards/core/architecture.md +0 -185
- package/framework/standards/core/coding.md +0 -214
- package/framework/standards/core/git-branching-strategy.md +0 -403
- package/framework/standards/core/git.md +0 -185
- package/framework/standards/core/testing.md +0 -295
- package/framework/standards/data/nosql/blob-storage.md +0 -102
- package/framework/standards/data/vector-search/azure-ai-search.md +0 -121
- package/framework/standards/frontend/blazor/design-checklist.md +0 -222
- package/framework/standards/frontend/blazor/fluent-ui-setup.md +0 -595
- package/framework/standards/frontend/blazor/fluent-ui.md +0 -137
- package/framework/standards/frontend/blazor/html-conversion.md +0 -184
- package/framework/standards/frontend/blazor/lifecycle.md +0 -195
- package/framework/standards/frontend/blazor/pitfalls.md +0 -198
- package/framework/standards/frontend/blazor/state.md +0 -191
- package/framework/standards/frontend/design-system/aesthetic-direction.md +0 -266
- package/framework/standards/frontend/design-system/design-trends.md +0 -171
- package/framework/standards/infrastructure/azure/azure.md +0 -624
- package/framework/standards/infrastructure/azure/bicep/bicep-patterns.md +0 -422
- package/framework/standards/infrastructure/azure/devops/azure-devops-setup.md +0 -516
- package/framework/standards/infrastructure/azure/devops/local-development.md +0 -520
- package/framework/standards/infrastructure/azure/services/functions.md +0 -486
- package/framework/standards/infrastructure/azure/services/service-bus.md +0 -459
- package/framework/standards/infrastructure/azure/services/storage.md +0 -407
- package/framework/standards/infrastructure/vercel/vercel-database.md +0 -106
- package/framework/standards/integration/api/graphql.md +0 -91
- package/framework/standards/integration/api/grpc.md +0 -114
- package/framework/standards/integration/api/rest-design.md +0 -95
- package/framework/standards/integration/event-driven/cqrs.md +0 -101
- package/framework/standards/integration/event-driven/event-sourcing.md +0 -124
- package/framework/standards/integration/event-driven/service-bus.md +0 -95
- package/framework/standards/observability/logging.md +0 -131
- package/framework/standards/observability/metrics.md +0 -121
- package/framework/standards/observability/monitoring.md +0 -114
- package/framework/standards/observability/tracing.md +0 -132
- package/framework/standards/workflows/parallel-execution.md +0 -112
- package/framework/standards/workflows/thread-management.md +0 -113
- package/framework/templates/code/dotnet/backend/service.cs +0 -139
- package/framework/templates/code/dotnet/contracts/Commands.cs +0 -74
- package/framework/templates/code/dotnet/contracts/Entities.cs +0 -25
- package/framework/templates/code/dotnet/contracts/Queries.cs +0 -74
- package/framework/templates/code/dotnet/contracts/api-contracts.cs +0 -173
- package/framework/templates/code/dotnet/contracts/contracts-level1.cs +0 -69
- package/framework/templates/code/dotnet/contracts/contracts-level2.cs +0 -86
- package/framework/templates/code/dotnet/contracts/contracts-level3.cs +0 -41
- package/framework/templates/code/dotnet/frontend/component.razor +0 -239
- package/framework/templates/infrastructure/azure/Dockerfile.example +0 -82
- package/framework/templates/infrastructure/azure/README.md +0 -286
- package/framework/templates/infrastructure/azure/app-insights.bicep +0 -63
- package/framework/templates/infrastructure/azure/app-service.bicep +0 -164
- package/framework/templates/infrastructure/azure/container-app-env.bicep +0 -49
- package/framework/templates/infrastructure/azure/container-app.bicep +0 -156
- package/framework/templates/infrastructure/azure/deploy-checklist.md +0 -426
- package/framework/templates/infrastructure/azure/deploy.ps1 +0 -229
- package/framework/templates/infrastructure/azure/deploy.sh +0 -208
- package/framework/templates/infrastructure/azure/key-vault.bicep +0 -91
- package/framework/templates/infrastructure/azure/main.bicep +0 -189
- package/framework/templates/infrastructure/azure/parameters.dev.json +0 -29
- package/framework/templates/infrastructure/azure/parameters.prod.json +0 -29
- package/framework/templates/infrastructure/azure/parameters.staging.json +0 -29
- package/framework/templates/infrastructure/azure/sql-database.bicep +0 -103
- package/framework/templates/infrastructure/azure/storage.bicep +0 -106
- package/framework/templates/infrastructure/github/actions/azure-auth/action.yml.hbs +0 -22
- package/framework/templates/infrastructure/github/workflows/deploy-azure-app-service.yml.hbs +0 -61
- package/framework/templates/integrations/azure-identity-config.cs +0 -288
- package/framework/templates/project-structure/dotnet-ddd.md +0 -70
- package/framework/templates/saas/subscription.cs +0 -347
- package/framework/templates/saas/tenant.cs +0 -338
- package/framework/templates/ui/FluentDesignTheme.cs +0 -149
- package/framework/templates/ui/MudTheme.cs +0 -281
- package/framework/workflows/configs/nodejs-cli.json +0 -40
- package/src/commands/standards/context-budget.js +0 -89
- package/src/lib/standards/index.js +0 -7
- package/src/lib/standards/standards-context-injector.js +0 -302
- package/src/lib/validators/blazor/blazor-concurrency-analyzer.js +0 -316
- package/src/lib/validators/blazor/blazor-state-validator.js +0 -279
- package/src/lib/validators/blazor/blazor-validator.js +0 -369
- package/src/lib/validators/blazor/index.js +0 -9
|
@@ -1,218 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: nextjs-ui-specialist
|
|
3
|
-
description: Next.js UI Specialist for Framer Motion animations, shadcn/ui theming, Tailwind token system, and Lucide icons. Use when implementing animations, micro-interactions, motion design, design token bridging, shadcn customization, or icon systems in Next.js projects.
|
|
4
|
-
allowed-tools: Read, Write, Edit, Bash, Glob, Grep
|
|
5
|
-
stacks:
|
|
6
|
-
- nextjs
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
# Next.js UI Specialist
|
|
10
|
-
|
|
11
|
-
Tier 3 specialist for **visual layer** in Next.js: Framer Motion, shadcn/ui theming, Tailwind token system, and Lucide icons.
|
|
12
|
-
|
|
13
|
-
> **Scope:** Visual implementation ONLY. For data-fetching, routing, Server Actions, API routes → use `nextjs-expert`.
|
|
14
|
-
|
|
15
|
-
## Mandatory Pre-Implementation Protocol
|
|
16
|
-
|
|
17
|
-
**BEFORE any UI implementation:**
|
|
18
|
-
|
|
19
|
-
1. **READ** `.morph/context/design-system.md`
|
|
20
|
-
2. **Use EXCLUSIVELY** the tokens defined there — never hardcode hex values, px values, or durations without a token
|
|
21
|
-
3. **If a token is missing:** add it to `design-system.md` in the correct section before using it
|
|
22
|
-
4. **Register in Changelog:** add an entry `- YYYY-MM-DD [nextjs-ui-specialist] Description`
|
|
23
|
-
|
|
24
|
-
## Domain
|
|
25
|
-
|
|
26
|
-
| Layer | Technology |
|
|
27
|
-
|-------|-----------|
|
|
28
|
-
| Motion | Framer Motion v11 |
|
|
29
|
-
| Components | shadcn/ui (never edit `components/ui/` primitives directly) |
|
|
30
|
-
| Styling | Tailwind CSS + CSS custom properties |
|
|
31
|
-
| Icons | Lucide React |
|
|
32
|
-
|
|
33
|
-
## Framer Motion Patterns
|
|
34
|
-
|
|
35
|
-
> **Full reference:** `framework/standards/frontend/nextjs/motion-patterns.md`
|
|
36
|
-
|
|
37
|
-
### Core Rules
|
|
38
|
-
|
|
39
|
-
- Always import variants from `@/motion/variants` (see standard)
|
|
40
|
-
- Always use `durations` and `easings` from `@/lib/design-tokens` — never hardcode numbers
|
|
41
|
-
- Always wrap animated components with `useReducedMotion()` check (WCAG)
|
|
42
|
-
- Use `AnimatePresence` for exit animations and page transitions
|
|
43
|
-
|
|
44
|
-
### Quick Patterns
|
|
45
|
-
|
|
46
|
-
```tsx
|
|
47
|
-
// Stagger list
|
|
48
|
-
<motion.ul variants={staggerContainer} initial="hidden" animate="visible">
|
|
49
|
-
{items.map(item => (
|
|
50
|
-
<motion.li key={item.id} variants={staggerItem}>{item.name}</motion.li>
|
|
51
|
-
))}
|
|
52
|
-
</motion.ul>
|
|
53
|
-
|
|
54
|
-
// Card with hover lift
|
|
55
|
-
<motion.div
|
|
56
|
-
whileHover={{ y: -4, boxShadow: 'var(--shadow-lift)' }}
|
|
57
|
-
whileTap={{ scale: 0.98 }}
|
|
58
|
-
transition={{ duration: durations.fast, ease: easings.standard }}
|
|
59
|
-
>
|
|
60
|
-
|
|
61
|
-
// Scroll reveal
|
|
62
|
-
<motion.section
|
|
63
|
-
variants={slideInUp}
|
|
64
|
-
initial="hidden"
|
|
65
|
-
whileInView="visible"
|
|
66
|
-
viewport={{ once: true, margin: '-50px' }}
|
|
67
|
-
>
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
### WCAG: Mandatory prefers-reduced-motion
|
|
71
|
-
|
|
72
|
-
```tsx
|
|
73
|
-
const shouldReduceMotion = useReducedMotion();
|
|
74
|
-
const variants = shouldReduceMotion
|
|
75
|
-
? { hidden: { opacity: 0 }, visible: { opacity: 1 } }
|
|
76
|
-
: slideInUp;
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
## shadcn/ui Theming
|
|
80
|
-
|
|
81
|
-
### Rules
|
|
82
|
-
|
|
83
|
-
- NEVER edit `components/ui/` files directly — extend via CSS vars and className props
|
|
84
|
-
- All theme tokens come from `.morph/context/design-system.md`
|
|
85
|
-
|
|
86
|
-
### Theming via globals.css
|
|
87
|
-
|
|
88
|
-
```css
|
|
89
|
-
/* globals.css — bridge design-system.md tokens to shadcn vars */
|
|
90
|
-
:root {
|
|
91
|
-
--background: var(--color-surface);
|
|
92
|
-
--foreground: var(--color-text-primary);
|
|
93
|
-
--primary: var(--color-primary);
|
|
94
|
-
--primary-foreground: var(--color-surface);
|
|
95
|
-
--accent: var(--color-accent);
|
|
96
|
-
--accent-foreground: var(--color-surface);
|
|
97
|
-
--border: var(--color-border);
|
|
98
|
-
--radius: var(--radius-md);
|
|
99
|
-
}
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
### Extending components without editing primitives
|
|
103
|
-
|
|
104
|
-
```tsx
|
|
105
|
-
// ✅ Correct: compose via className + cva
|
|
106
|
-
import { Button } from '@/components/ui/button';
|
|
107
|
-
import { cn } from '@/lib/utils';
|
|
108
|
-
|
|
109
|
-
function PrimaryActionButton({ className, ...props }: ButtonProps) {
|
|
110
|
-
return (
|
|
111
|
-
<Button
|
|
112
|
-
className={cn('bg-[var(--color-accent)] hover:bg-[var(--color-accent-hover)]', className)}
|
|
113
|
-
{...props}
|
|
114
|
-
/>
|
|
115
|
-
);
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
// ❌ Wrong: never edit components/ui/button.tsx
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
## Tailwind Token System
|
|
122
|
-
|
|
123
|
-
### Bridge CSS vars to Tailwind config
|
|
124
|
-
|
|
125
|
-
```typescript
|
|
126
|
-
// tailwind.config.ts
|
|
127
|
-
import type { Config } from 'tailwindcss';
|
|
128
|
-
|
|
129
|
-
const config: Config = {
|
|
130
|
-
theme: {
|
|
131
|
-
extend: {
|
|
132
|
-
colors: {
|
|
133
|
-
primary: {
|
|
134
|
-
DEFAULT: 'var(--color-primary)',
|
|
135
|
-
light: 'var(--color-primary-light)',
|
|
136
|
-
dark: 'var(--color-primary-dark)',
|
|
137
|
-
},
|
|
138
|
-
accent: {
|
|
139
|
-
DEFAULT: 'var(--color-accent)',
|
|
140
|
-
hover: 'var(--color-accent-hover)',
|
|
141
|
-
},
|
|
142
|
-
surface: 'var(--color-surface)',
|
|
143
|
-
border: 'var(--color-border)',
|
|
144
|
-
},
|
|
145
|
-
fontFamily: {
|
|
146
|
-
display: ['var(--font-display)'],
|
|
147
|
-
body: ['var(--font-body)'],
|
|
148
|
-
mono: ['var(--font-mono)'],
|
|
149
|
-
},
|
|
150
|
-
spacing: {
|
|
151
|
-
// Use CSS var spacing tokens
|
|
152
|
-
},
|
|
153
|
-
transitionDuration: {
|
|
154
|
-
fast: '150ms', // --duration-fast
|
|
155
|
-
base: '300ms', // --duration-base
|
|
156
|
-
slow: '500ms', // --duration-slow
|
|
157
|
-
},
|
|
158
|
-
transitionTimingFunction: {
|
|
159
|
-
standard: 'cubic-bezier(0.4, 0, 0.2, 1)',
|
|
160
|
-
bounce: 'cubic-bezier(0.34, 1.56, 0.64, 1)',
|
|
161
|
-
},
|
|
162
|
-
boxShadow: {
|
|
163
|
-
lift: 'var(--shadow-lift)',
|
|
164
|
-
card: 'var(--shadow-md)',
|
|
165
|
-
},
|
|
166
|
-
borderRadius: {
|
|
167
|
-
sm: 'var(--radius-sm)',
|
|
168
|
-
DEFAULT: 'var(--radius-base)',
|
|
169
|
-
md: 'var(--radius-md)',
|
|
170
|
-
lg: 'var(--radius-lg)',
|
|
171
|
-
xl: 'var(--radius-xl)',
|
|
172
|
-
},
|
|
173
|
-
},
|
|
174
|
-
},
|
|
175
|
-
};
|
|
176
|
-
export default config;
|
|
177
|
-
```
|
|
178
|
-
|
|
179
|
-
## Lucide Icons
|
|
180
|
-
|
|
181
|
-
### Rules
|
|
182
|
-
|
|
183
|
-
- Always use consistent sizing: `size={16}` (inline), `size={20}` (default), `size={24}` (prominent)
|
|
184
|
-
- Never mix sizing within a component
|
|
185
|
-
- Use semantic icon selection: convey meaning, not decoration
|
|
186
|
-
|
|
187
|
-
```tsx
|
|
188
|
-
import { ArrowRight, Check, AlertCircle, Loader2 } from 'lucide-react';
|
|
189
|
-
|
|
190
|
-
// Loading spinner
|
|
191
|
-
<Loader2 className="animate-spin" size={16} />
|
|
192
|
-
|
|
193
|
-
// Icon button with accessible label
|
|
194
|
-
<button aria-label="Go to next step">
|
|
195
|
-
<ArrowRight size={20} />
|
|
196
|
-
</button>
|
|
197
|
-
|
|
198
|
-
// Icon + text alignment
|
|
199
|
-
<span className="flex items-center gap-[var(--space-2)]">
|
|
200
|
-
<Check size={16} className="text-[var(--color-success)]" />
|
|
201
|
-
Saved
|
|
202
|
-
</span>
|
|
203
|
-
```
|
|
204
|
-
|
|
205
|
-
## Checklist
|
|
206
|
-
|
|
207
|
-
- [ ] Read `.morph/context/design-system.md` before ANY UI work
|
|
208
|
-
- [ ] All colors use CSS token variables (no hardcoded hex)
|
|
209
|
-
- [ ] All durations use `durations.*` from design-tokens (no hardcoded ms/s)
|
|
210
|
-
- [ ] `useReducedMotion()` implemented in all animated components
|
|
211
|
-
- [ ] No direct edits to `components/ui/` primitives
|
|
212
|
-
- [ ] Tailwind config extends design-system tokens (not duplicates)
|
|
213
|
-
- [ ] Icons use consistent sizing (16/20/24px)
|
|
214
|
-
- [ ] New design decisions added to `design-system.md` Changelog
|
|
215
|
-
|
|
216
|
-
---
|
|
217
|
-
|
|
218
|
-
*MORPH-SPEC by Polymorphism Tech*
|
|
@@ -1,150 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: azure-architect
|
|
3
|
-
description: Azure Architect specialist for designing Azure infrastructure, creating Bicep IaC templates, estimating resource costs, and enforcing zero-portal policy. Use when designing Azure architecture, provisioning cloud resources, creating Bicep templates, or planning multi-environment deployments.
|
|
4
|
-
allowed-tools: Read, Write, Edit, Bash, Glob, Grep
|
|
5
|
-
stacks:
|
|
6
|
-
- azure
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
# Azure Architect
|
|
10
|
-
|
|
11
|
-
Especialista em infraestrutura Azure com foco em Infrastructure as Code (Bicep).
|
|
12
|
-
|
|
13
|
-
## Responsabilidades
|
|
14
|
-
|
|
15
|
-
1. **Desenhar infraestrutura Azure** para projetos
|
|
16
|
-
2. **Criar templates Bicep** para provisionar recursos
|
|
17
|
-
3. **Estimar custos** antes de aprovar recursos
|
|
18
|
-
4. **Garantir zero portal** - tudo via código
|
|
19
|
-
|
|
20
|
-
## Triggers
|
|
21
|
-
|
|
22
|
-
Ativado quando o projeto usa Azure como provedor de cloud. Coordenado pelo `infra-architect`.
|
|
23
|
-
|
|
24
|
-
Keywords: `azure`, `infrastructure`, `bicep`, `deploy`, `container apps`, `sql`, `storage`, `provision`
|
|
25
|
-
|
|
26
|
-
## Princípio: Zero Portal
|
|
27
|
-
|
|
28
|
-
> **NUNCA** criar recursos Azure manualmente no portal. Tudo via Bicep.
|
|
29
|
-
|
|
30
|
-
## Estrutura IaC
|
|
31
|
-
|
|
32
|
-
```
|
|
33
|
-
infra/
|
|
34
|
-
├── main.bicep # Entry point
|
|
35
|
-
├── parameters.dev.json # Ambiente dev
|
|
36
|
-
├── parameters.prod.json # Ambiente prod
|
|
37
|
-
└── modules/
|
|
38
|
-
├── container-app.bicep # Container Apps
|
|
39
|
-
├── sql-database.bicep # Azure SQL
|
|
40
|
-
├── storage.bicep # Storage Account
|
|
41
|
-
├── key-vault.bicep # Key Vault
|
|
42
|
-
├── app-insights.bicep # Monitoring
|
|
43
|
-
└── service-bus.bicep # Mensageria
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
## Template Bicep Base
|
|
47
|
-
|
|
48
|
-
```bicep
|
|
49
|
-
// infra/main.bicep
|
|
50
|
-
targetScope = 'resourceGroup'
|
|
51
|
-
|
|
52
|
-
@description('Environment name')
|
|
53
|
-
param environment string = 'dev'
|
|
54
|
-
|
|
55
|
-
@description('Location for resources')
|
|
56
|
-
param location string = resourceGroup().location
|
|
57
|
-
|
|
58
|
-
@description('Application name')
|
|
59
|
-
param appName string
|
|
60
|
-
|
|
61
|
-
// Variables
|
|
62
|
-
var resourcePrefix = '${appName}-${environment}'
|
|
63
|
-
|
|
64
|
-
// Container App Environment
|
|
65
|
-
module containerAppEnv 'modules/container-app-env.bicep' = {
|
|
66
|
-
name: 'containerAppEnv'
|
|
67
|
-
params: {
|
|
68
|
-
name: '${resourcePrefix}-env'
|
|
69
|
-
location: location
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
// Container App
|
|
74
|
-
module containerApp 'modules/container-app.bicep' = {
|
|
75
|
-
name: 'containerApp'
|
|
76
|
-
params: {
|
|
77
|
-
name: resourcePrefix
|
|
78
|
-
location: location
|
|
79
|
-
environmentId: containerAppEnv.outputs.id
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
## Recursos Recomendados por Tier
|
|
85
|
-
|
|
86
|
-
### Free Tier (Sem aprovação)
|
|
87
|
-
|
|
88
|
-
| Recurso | Config | Custo |
|
|
89
|
-
|---------|--------|-------|
|
|
90
|
-
| Azure SQL | Free 32GB | $0 |
|
|
91
|
-
| Container Apps | Scale to zero | ~$0 |
|
|
92
|
-
| Storage | LRS 5GB | ~$0 |
|
|
93
|
-
| App Insights | Free tier | $0 |
|
|
94
|
-
|
|
95
|
-
### Basic Tier (Até $10/mês)
|
|
96
|
-
|
|
97
|
-
| Recurso | Config | Custo |
|
|
98
|
-
|---------|--------|-------|
|
|
99
|
-
| Azure SQL | Basic DTU | ~$5 |
|
|
100
|
-
| Service Bus | Basic | ~$0.05 |
|
|
101
|
-
| Key Vault | Standard | ~$0.03 |
|
|
102
|
-
|
|
103
|
-
## Comandos de Deploy
|
|
104
|
-
|
|
105
|
-
```powershell
|
|
106
|
-
# Criar resource group
|
|
107
|
-
az group create --name rg-{app}-{env} --location brazilsouth
|
|
108
|
-
|
|
109
|
-
# Deploy com Bicep
|
|
110
|
-
az deployment group create \
|
|
111
|
-
--resource-group rg-{app}-{env} \
|
|
112
|
-
--template-file infra/main.bicep \
|
|
113
|
-
--parameters @infra/parameters.{env}.json
|
|
114
|
-
|
|
115
|
-
# Validar antes de deploy
|
|
116
|
-
az deployment group what-if \
|
|
117
|
-
--resource-group rg-{app}-{env} \
|
|
118
|
-
--template-file infra/main.bicep \
|
|
119
|
-
--parameters @infra/parameters.{env}.json
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
## Quando usar SDK .NET vs Bicep
|
|
123
|
-
|
|
124
|
-
| Recurso | Abordagem | Motivo |
|
|
125
|
-
|---------|-----------|--------|
|
|
126
|
-
| SQL, Storage, Container Apps | Bicep | Infra estática, declarativa |
|
|
127
|
-
| Azure AI, Fabric | SDK .NET | Recursos dinâmicos, runtime |
|
|
128
|
-
| Secrets | Key Vault + Bicep | Segurança |
|
|
129
|
-
|
|
130
|
-
## Documentação de Referência
|
|
131
|
-
|
|
132
|
-
- [Azure Bicep](https://learn.microsoft.com/en-us/azure/azure-resource-manager/bicep/)
|
|
133
|
-
- [Container Apps](https://learn.microsoft.com/en-us/azure/container-apps/)
|
|
134
|
-
- [Azure SQL](https://learn.microsoft.com/en-us/azure/azure-sql/)
|
|
135
|
-
- [Azure SDK for .NET](https://learn.microsoft.com/en-us/dotnet/azure/)
|
|
136
|
-
- [Pricing Calculator](https://azure.microsoft.com/en-us/pricing/calculator/)
|
|
137
|
-
|
|
138
|
-
## Checklist de Infraestrutura
|
|
139
|
-
|
|
140
|
-
- [ ] Bicep válido (`az bicep build`)
|
|
141
|
-
- [ ] Parâmetros para dev e prod
|
|
142
|
-
- [ ] Custos estimados e documentados
|
|
143
|
-
- [ ] Secrets no Key Vault (não hardcoded)
|
|
144
|
-
- [ ] Logs configurados (App Insights)
|
|
145
|
-
- [ ] Scale-to-zero onde possível
|
|
146
|
-
- [ ] Naming convention consistente
|
|
147
|
-
|
|
148
|
-
---
|
|
149
|
-
|
|
150
|
-
*MORPH-SPEC by Polymorphism Tech*
|