@polymorphism-tech/morph-spec 8.28.0 → 8.31.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 (185) hide show
  1. package/CLAUDE.md +6 -1
  2. package/README.md +13 -2
  3. package/bin/morph-spec.js +48 -0
  4. package/bin/validate.js +379 -379
  5. package/claude-plugin.json +1 -1
  6. package/docs/CHEATSHEET.md +1 -1
  7. package/docs/QUICKSTART.md +1 -1
  8. package/framework/CLAUDE.md +2 -0
  9. package/framework/MORPH.md +2 -1
  10. package/framework/agents.json +20 -9
  11. package/framework/commands/create-umbraco-lp.md +1 -1
  12. package/framework/commands/morph-status.md +1 -1
  13. package/framework/docs/CLI.md +18 -0
  14. package/framework/evals/rubrics/code-quality.md +17 -0
  15. package/framework/evals/rubrics/condensed.md +3 -1
  16. package/framework/hooks/claude-code/statusline.sh +11 -11
  17. package/framework/hooks/git/commit-msg/conventional-commits.sh +33 -33
  18. package/framework/hooks/git/pre-commit/agents.sh +25 -25
  19. package/framework/hooks/git/pre-commit/orchestrator.sh +64 -64
  20. package/framework/hooks/git/pre-commit/specs.sh +50 -50
  21. package/framework/hooks/git/pre-push/run-tests.sh +44 -44
  22. package/framework/hooks/shared/phase-utils.js +2 -0
  23. package/framework/hooks/shared/stdin-reader.js +26 -26
  24. package/framework/mcp/registry.json +97 -11
  25. package/framework/rubrics/backend.json +2 -2
  26. package/framework/rubrics/default.json +2 -2
  27. package/framework/rubrics/frontend.json +2 -2
  28. package/framework/schemas/tasks.schema.json +25 -0
  29. package/framework/skills/core/create-umbraco-lp/SKILL.md +13 -2
  30. package/framework/skills/core/create-umbraco-lp/references/umbraco-lp-patterns.md +598 -0
  31. package/framework/skills/core/migrate-lp-to-umbraco/SKILL.md +92 -7
  32. package/framework/skills/core/morph-apply/SKILL.md +12 -3
  33. package/framework/skills/core/morph-brainstorming/SKILL.md +1 -1
  34. package/framework/skills/core/morph-eval/SKILL.md +1 -1
  35. package/framework/skills/core/morph-hotfix/SKILL.md +1 -1
  36. package/framework/skills/core/morph-implement/SKILL.md +12 -2
  37. package/framework/skills/core/morph-plan/SKILL.md +45 -3
  38. package/framework/skills/core/morph-proposal/SKILL.md +1 -1
  39. package/framework/skills/core/morph-review/SKILL.md +11 -3
  40. package/framework/skills/core/morph-stack-scan/SKILL.md +13 -1
  41. package/framework/skills/core/morph-standards/SKILL.md +1 -1
  42. package/framework/skills/core/morph-uiux/SKILL.md +1 -1
  43. package/framework/standards/PROVENANCE.json +41 -0
  44. package/framework/standards/STANDARDS.json +218 -7
  45. package/framework/standards/ai-agents/agent-session.md +160 -160
  46. package/framework/standards/ai-agents/batching.md +193 -193
  47. package/framework/standards/ai-agents/context-providers.md +188 -188
  48. package/framework/standards/ai-agents/mcp-server.md +250 -250
  49. package/framework/standards/ai-agents/mcp-tools.md +197 -197
  50. package/framework/standards/ai-agents/middleware-patterns.md +207 -207
  51. package/framework/standards/ai-agents/modalities-image-gen.md +173 -173
  52. package/framework/standards/ai-agents/modalities-speech-to-text.md +171 -171
  53. package/framework/standards/ai-agents/modalities-text-to-speech.md +181 -181
  54. package/framework/standards/ai-agents/modalities-vision.md +201 -201
  55. package/framework/standards/ai-agents/multi-agent-patterns.md +155 -155
  56. package/framework/standards/ai-agents/production.md +231 -231
  57. package/framework/standards/ai-agents/prompts-in-db.md +214 -214
  58. package/framework/standards/ai-agents/providers/model-registry.md +158 -158
  59. package/framework/standards/ai-agents/service-tier-flex.md +135 -135
  60. package/framework/standards/ai-agents/structured-output.md +249 -249
  61. package/framework/standards/ai-agents/sweet-spot.md +109 -109
  62. package/framework/standards/frontend/design-system/ai-image-generation.md +43 -0
  63. package/framework/standards/frontend/design-system/ai-video-generation.md +113 -0
  64. package/framework/standards/frontend/design-system/premium-finish.md +160 -0
  65. package/framework/standards/frontend/gsap/gsap-core.md +1 -1
  66. package/framework/standards/frontend/gsap/gsap-plugins.md +1 -1
  67. package/framework/standards/frontend/gsap/gsap-scrolltrigger.md +3 -1
  68. package/framework/standards/frontend/nextjs/motion-patterns.md +3 -1
  69. package/framework/standards/frontend/scroll-driven/frame-scrub.md +287 -0
  70. package/framework/standards/frontend/scroll-driven/scroll-components.md +256 -0
  71. package/framework/standards/frontend/scroll-driven/smooth-scroll.md +148 -0
  72. package/framework/standards/frontend/seo/meta-schema-audit.md +134 -0
  73. package/framework/templates/.idea/morph-templates.xml +92 -0
  74. package/framework/templates/.vscode/morph-templates.code-snippets +186 -0
  75. package/framework/templates/IDE-SNIPPETS.md +262 -262
  76. package/framework/templates/code/dotnet/abstractions/api-endpoint.cs +7 -7
  77. package/framework/templates/code/dotnet/ai-agents/AgentBootstrap.cs.template +39 -39
  78. package/framework/templates/code/dotnet/ai-agents/EmbeddingService.cs.template +68 -68
  79. package/framework/templates/code/dotnet/ai-agents/ModelRegistry.cs.template +117 -117
  80. package/framework/templates/code/dotnet/ai-agents/PromptRepository.cs.template +95 -95
  81. package/framework/templates/code/dotnet/ai-agents/ResilientToolMiddleware.cs.template +61 -61
  82. package/framework/templates/code/dotnet/ai-agents/VectorSearchTool.cs.template +107 -107
  83. package/framework/templates/code/dotnet/ai-agents/model-registry.json.template +58 -58
  84. package/framework/templates/code/dotnet/contracts/contracts-vsa.cs +281 -281
  85. package/framework/templates/code/dotnet/database/migration.cs +83 -83
  86. package/framework/templates/code/dotnet/feature/endpoint.cs.hbs +21 -21
  87. package/framework/templates/code/dotnet/feature/request.cs.hbs +4 -4
  88. package/framework/templates/code/dotnet/feature/response.cs.hbs +4 -4
  89. package/framework/templates/code/dotnet/feature/validator.cs.hbs +15 -15
  90. package/framework/templates/code/sql/ai-agents/agent-prompts-migration.sql.template +58 -58
  91. package/framework/templates/code/sql/ai-agents/pgvector-embeddings-migration.sql.template +91 -91
  92. package/framework/templates/code/typescript/contracts.ts +167 -167
  93. package/framework/templates/context/ARCHITECTURE.md +20 -0
  94. package/framework/templates/docs/clarifications.md +253 -253
  95. package/framework/templates/docs/schema-analysis.md +119 -119
  96. package/framework/templates/docs/ui-components.md +52 -52
  97. package/framework/templates/docs/ui-design-system.md +76 -76
  98. package/framework/templates/docs/ui-flows.md +167 -167
  99. package/framework/templates/docs/ui-mockups.md +98 -98
  100. package/framework/templates/feature/decisions.md +122 -122
  101. package/framework/templates/frontend/nextjs/Dockerfile.nextjs.hbs +43 -43
  102. package/framework/templates/frontend/nextjs/client-component.tsx.hbs +26 -26
  103. package/framework/templates/frontend/nextjs/env.mjs.hbs +32 -32
  104. package/framework/templates/frontend/nextjs/feature-form.tsx.hbs +56 -56
  105. package/framework/templates/frontend/nextjs/page.tsx.hbs +22 -22
  106. package/framework/templates/frontend/nextjs/tsconfig.json.hbs +26 -26
  107. package/framework/templates/frontend/nextjs/use-feature.ts.hbs +54 -54
  108. package/framework/templates/infrastructure/docker/Dockerfile.template +58 -58
  109. package/framework/templates/infrastructure/docker/dockerfile-api.dockerfile +38 -38
  110. package/framework/templates/infrastructure/docker/dockerfile-web.dockerfile +48 -48
  111. package/framework/templates/infrastructure/github/README.md +56 -56
  112. package/framework/templates/infrastructure/github/actions/docker-build-push/action.yml.hbs +45 -45
  113. package/framework/templates/infrastructure/github/actions/health-check/action.yml.hbs +27 -27
  114. package/framework/templates/infrastructure/github/workflows/docker-build-push.yml.hbs +59 -59
  115. package/framework/templates/infrastructure/github/workflows/dotnet-build.yml.hbs +39 -39
  116. package/framework/templates/integrations/asaas-client.cs +387 -387
  117. package/framework/templates/integrations/asaas-webhook.cs +351 -351
  118. package/framework/templates/meta-prompts/fusion/fusion-agent.md +76 -76
  119. package/framework/templates/meta-prompts/fusion/fusion-aggregator.md +100 -100
  120. package/framework/templates/meta-prompts/validators/pre-commit-validator.md +95 -95
  121. package/framework/templates/project/validate.js +120 -120
  122. package/framework/templates/state.template.json +17 -17
  123. package/framework/templates/ui/design-system.css +226 -226
  124. package/package.json +1 -1
  125. package/src/commands/dashboard/dashboard.js +53 -53
  126. package/src/commands/graph/affected.js +89 -0
  127. package/src/commands/graph/build.js +94 -0
  128. package/src/commands/graph/explain.js +96 -0
  129. package/src/commands/graph/status.js +93 -0
  130. package/src/commands/index.js +13 -13
  131. package/src/commands/project/checkpoint.js +209 -209
  132. package/src/commands/project/doctor.js +11 -0
  133. package/src/core/paths/output-schema.js +7 -0
  134. package/src/core/state/phase-state-machine.js +197 -197
  135. package/src/core/templates/template-renderer.js +477 -477
  136. package/src/dashboard/app/components/DetailPanel.jsx +11 -11
  137. package/src/dashboard/app/components/FlowGraph.jsx +17 -17
  138. package/src/dashboard/app/components/SearchFilter.jsx +22 -22
  139. package/src/dashboard/app/hooks/useDetailPanel.js +15 -15
  140. package/src/dashboard/app/main.jsx +13 -13
  141. package/src/dashboard/app/pages/AgentMap.jsx +370 -370
  142. package/src/dashboard/app/pages/HookInspector.jsx +418 -418
  143. package/src/dashboard/app/pages/PhasePipeline.jsx +408 -408
  144. package/src/dashboard/app/pages/RulesMap.jsx +273 -273
  145. package/src/dashboard/app/pages/SkillsLibrary.jsx +366 -366
  146. package/src/dashboard/app/pages/Standards.jsx +332 -332
  147. package/src/dashboard/app/styles/index.css +47 -47
  148. package/src/dashboard/index.html +12 -12
  149. package/src/dashboard/package.json +24 -24
  150. package/src/dashboard/scanner/phases-scanner.js +15 -15
  151. package/src/dashboard/scanner/rubrics-scanner.js +12 -12
  152. package/src/dashboard/scanner/rules-scanner.js +37 -37
  153. package/src/dashboard/scanner/skills-scanner.js +43 -43
  154. package/src/dashboard/scanner/squads-scanner.js +13 -13
  155. package/src/dashboard/vite-plugin-morph-data.js +17 -17
  156. package/src/dashboard/vite.config.js +24 -24
  157. package/src/lib/detectors/design-system-detector.js +188 -188
  158. package/src/lib/detectors/index.js +217 -217
  159. package/src/lib/generators/architecture-scanner.js +45 -4
  160. package/src/lib/generators/design-system-generator.js +508 -508
  161. package/src/lib/generators/settings-generator.js +209 -209
  162. package/src/lib/graph/god-nodes.js +75 -0
  163. package/src/lib/graph/graph-health.js +61 -0
  164. package/src/lib/graph/graph-loader.js +86 -0
  165. package/src/lib/graph/graphify-runtime.js +100 -0
  166. package/src/lib/graph/graphifyignore.js +86 -0
  167. package/src/lib/graph/sanitize.js +280 -0
  168. package/src/lib/hooks/hook-executor.js +167 -167
  169. package/src/lib/installers/mcp-installer.js +719 -719
  170. package/src/lib/tasks/task-classifier.js +30 -30
  171. package/src/lib/tasks/task-parser.js +209 -209
  172. package/src/lib/tasks/tasks-json-parser.js +26 -0
  173. package/src/lib/validators/checkpoint-persistence.js +39 -39
  174. package/src/lib/validators/css/css-validator.js +340 -340
  175. package/src/lib/validators/reuse/index.js +10 -0
  176. package/src/lib/validators/reuse/reuse-validator.js +324 -0
  177. package/src/lib/validators/reuse/symbol-scanner.js +144 -0
  178. package/src/lib/validators/shared/emit-validator-dispatch.js +14 -14
  179. package/src/lib/validators/shared/issue-counter.js +14 -14
  180. package/src/lib/validators/validation-runner.js +40 -1
  181. package/src/scripts/setup-infra.js +60 -1
  182. package/src/utils/agent-id-mapper.js +11 -11
  183. package/src/utils/claude-settings-manager.js +300 -300
  184. package/src/utils/file-copier.js +40 -0
  185. package/src/utils/skills-installer.js +187 -187
@@ -1,167 +1,167 @@
1
- // ============================================================
2
- // CONTRACTS: {{titleCase FEATURE_NAME}}
3
- // Stack: Next.js + Neon
4
- // Generated by MORPH Framework
5
- // Date: {{DATE}}
6
- // ============================================================
7
-
8
- // ----- Neon Config -----
9
-
10
- export interface NeonConfig {
11
- connectionString: string;
12
- }
13
-
14
- // ----- API Client Types -----
15
-
16
- export interface ApiClientConfig {
17
- baseUrl: string;
18
- getAccessToken: () => Promise<string | null>;
19
- }
20
-
21
- export interface ApiError {
22
- message: string;
23
- code: string;
24
- statusCode: number;
25
- details?: Record<string, string[]>;
26
- }
27
-
28
- export type ApiResult<T> =
29
- | { success: true; data: T }
30
- | { success: false; error: ApiError };
31
-
32
- // ----- Pagination -----
33
-
34
- export interface PaginationQuery {
35
- page?: number;
36
- pageSize?: number;
37
- }
38
-
39
- export interface PagedResult<T> {
40
- items: T[];
41
- totalCount: number;
42
- page: number;
43
- pageSize: number;
44
- totalPages: number;
45
- hasNext: boolean;
46
- hasPrevious: boolean;
47
- }
48
-
49
- // ----- Database Client Type Aliases -----
50
- // Generated by your ORM (Drizzle or Prisma) from your Neon PostgreSQL schema
51
-
52
- export type Tables<T extends keyof Database["public"]["Tables"]> =
53
- Database["public"]["Tables"][T]["Row"];
54
-
55
- export type Insertable<T extends keyof Database["public"]["Tables"]> =
56
- Database["public"]["Tables"][T]["Insert"];
57
-
58
- export type Updatable<T extends keyof Database["public"]["Tables"]> =
59
- Database["public"]["Tables"][T]["Update"];
60
-
61
- // ----- Database Schema (placeholder - replace with generated types) -----
62
-
63
- export interface Database {
64
- public: {
65
- Tables: {
66
- {{FEATURE_NAME}}: {
67
- Row: {
68
- id: string;
69
- name: string;
70
- user_id: string;
71
- status: {{pascalCase FEATURE_NAME}}Status;
72
- created_at: string;
73
- updated_at: string | null;
74
- };
75
- Insert: {
76
- id?: string;
77
- name: string;
78
- user_id?: string;
79
- status?: {{pascalCase FEATURE_NAME}}Status;
80
- created_at?: string;
81
- updated_at?: string | null;
82
- };
83
- Update: {
84
- id?: string;
85
- name?: string;
86
- user_id?: string;
87
- status?: {{pascalCase FEATURE_NAME}}Status;
88
- created_at?: string;
89
- updated_at?: string | null;
90
- };
91
- };
92
- };
93
- Views: Record<string, never>;
94
- Functions: Record<string, never>;
95
- Enums: {
96
- {{FEATURE_NAME}}_status: {{pascalCase FEATURE_NAME}}Status;
97
- };
98
- };
99
- }
100
-
101
- // ----- Feature Types -----
102
-
103
- export type {{pascalCase FEATURE_NAME}}Status =
104
- | "draft"
105
- | "active"
106
- | "completed"
107
- | "archived"
108
- | "failed"
109
- | "cancelled";
110
-
111
- export interface {{pascalCase FEATURE_NAME}} {
112
- id: string;
113
- name: string;
114
- userId: string;
115
- status: {{pascalCase FEATURE_NAME}}Status;
116
- createdAt: string;
117
- updatedAt: string | null;
118
- }
119
-
120
- export interface Create{{pascalCase FEATURE_NAME}}Input {
121
- name: string;
122
- // Add other required fields
123
- }
124
-
125
- export interface Update{{pascalCase FEATURE_NAME}}Input {
126
- name?: string;
127
- // Add other updatable fields
128
- }
129
-
130
- // ----- Storage Types -----
131
-
132
- export interface StorageUpload {
133
- bucket: string;
134
- path: string;
135
- file: File;
136
- contentType?: string;
137
- }
138
-
139
- export interface StorageFile {
140
- id: string;
141
- name: string;
142
- bucket: string;
143
- path: string;
144
- publicUrl: string;
145
- size: number;
146
- contentType: string;
147
- createdAt: string;
148
- }
149
-
150
- // ----- Auth Types -----
151
-
152
- export interface AuthUser {
153
- id: string;
154
- email: string;
155
- displayName: string | null;
156
- avatarUrl: string | null;
157
- }
158
-
159
- export interface AuthSession {
160
- user: AuthUser;
161
- accessToken: string;
162
- expiresAt: number;
163
- }
164
-
165
- // ----- Form Schemas (use with zod) -----
166
- // Define zod schemas in component files, not here.
167
- // This file is for type definitions only.
1
+ // ============================================================
2
+ // CONTRACTS: {{titleCase FEATURE_NAME}}
3
+ // Stack: Next.js + Neon
4
+ // Generated by MORPH Framework
5
+ // Date: {{DATE}}
6
+ // ============================================================
7
+
8
+ // ----- Neon Config -----
9
+
10
+ export interface NeonConfig {
11
+ connectionString: string;
12
+ }
13
+
14
+ // ----- API Client Types -----
15
+
16
+ export interface ApiClientConfig {
17
+ baseUrl: string;
18
+ getAccessToken: () => Promise<string | null>;
19
+ }
20
+
21
+ export interface ApiError {
22
+ message: string;
23
+ code: string;
24
+ statusCode: number;
25
+ details?: Record<string, string[]>;
26
+ }
27
+
28
+ export type ApiResult<T> =
29
+ | { success: true; data: T }
30
+ | { success: false; error: ApiError };
31
+
32
+ // ----- Pagination -----
33
+
34
+ export interface PaginationQuery {
35
+ page?: number;
36
+ pageSize?: number;
37
+ }
38
+
39
+ export interface PagedResult<T> {
40
+ items: T[];
41
+ totalCount: number;
42
+ page: number;
43
+ pageSize: number;
44
+ totalPages: number;
45
+ hasNext: boolean;
46
+ hasPrevious: boolean;
47
+ }
48
+
49
+ // ----- Database Client Type Aliases -----
50
+ // Generated by your ORM (Drizzle or Prisma) from your Neon PostgreSQL schema
51
+
52
+ export type Tables<T extends keyof Database["public"]["Tables"]> =
53
+ Database["public"]["Tables"][T]["Row"];
54
+
55
+ export type Insertable<T extends keyof Database["public"]["Tables"]> =
56
+ Database["public"]["Tables"][T]["Insert"];
57
+
58
+ export type Updatable<T extends keyof Database["public"]["Tables"]> =
59
+ Database["public"]["Tables"][T]["Update"];
60
+
61
+ // ----- Database Schema (placeholder - replace with generated types) -----
62
+
63
+ export interface Database {
64
+ public: {
65
+ Tables: {
66
+ {{FEATURE_NAME}}: {
67
+ Row: {
68
+ id: string;
69
+ name: string;
70
+ user_id: string;
71
+ status: {{pascalCase FEATURE_NAME}}Status;
72
+ created_at: string;
73
+ updated_at: string | null;
74
+ };
75
+ Insert: {
76
+ id?: string;
77
+ name: string;
78
+ user_id?: string;
79
+ status?: {{pascalCase FEATURE_NAME}}Status;
80
+ created_at?: string;
81
+ updated_at?: string | null;
82
+ };
83
+ Update: {
84
+ id?: string;
85
+ name?: string;
86
+ user_id?: string;
87
+ status?: {{pascalCase FEATURE_NAME}}Status;
88
+ created_at?: string;
89
+ updated_at?: string | null;
90
+ };
91
+ };
92
+ };
93
+ Views: Record<string, never>;
94
+ Functions: Record<string, never>;
95
+ Enums: {
96
+ {{FEATURE_NAME}}_status: {{pascalCase FEATURE_NAME}}Status;
97
+ };
98
+ };
99
+ }
100
+
101
+ // ----- Feature Types -----
102
+
103
+ export type {{pascalCase FEATURE_NAME}}Status =
104
+ | "draft"
105
+ | "active"
106
+ | "completed"
107
+ | "archived"
108
+ | "failed"
109
+ | "cancelled";
110
+
111
+ export interface {{pascalCase FEATURE_NAME}} {
112
+ id: string;
113
+ name: string;
114
+ userId: string;
115
+ status: {{pascalCase FEATURE_NAME}}Status;
116
+ createdAt: string;
117
+ updatedAt: string | null;
118
+ }
119
+
120
+ export interface Create{{pascalCase FEATURE_NAME}}Input {
121
+ name: string;
122
+ // Add other required fields
123
+ }
124
+
125
+ export interface Update{{pascalCase FEATURE_NAME}}Input {
126
+ name?: string;
127
+ // Add other updatable fields
128
+ }
129
+
130
+ // ----- Storage Types -----
131
+
132
+ export interface StorageUpload {
133
+ bucket: string;
134
+ path: string;
135
+ file: File;
136
+ contentType?: string;
137
+ }
138
+
139
+ export interface StorageFile {
140
+ id: string;
141
+ name: string;
142
+ bucket: string;
143
+ path: string;
144
+ publicUrl: string;
145
+ size: number;
146
+ contentType: string;
147
+ createdAt: string;
148
+ }
149
+
150
+ // ----- Auth Types -----
151
+
152
+ export interface AuthUser {
153
+ id: string;
154
+ email: string;
155
+ displayName: string | null;
156
+ avatarUrl: string | null;
157
+ }
158
+
159
+ export interface AuthSession {
160
+ user: AuthUser;
161
+ accessToken: string;
162
+ expiresAt: number;
163
+ }
164
+
165
+ // ----- Form Schemas (use with zod) -----
166
+ // Define zod schemas in component files, not here.
167
+ // This file is for type definitions only.
@@ -84,6 +84,26 @@
84
84
  - `{{name}}` {{version}}
85
85
  {{/each}}
86
86
  {{/if}}
87
+ {{#if hasGraph}}
88
+ ## Centralidade (grafo de codebase)
89
+
90
+ Símbolos com mais conexões depois do saneamento — o que quebra mais se mudar.
91
+ Detalhe de um símbolo: `morph-spec graph explain <nome>`.
92
+
93
+ | Símbolo | Arquivo | Grau |
94
+ |---------|---------|------|
95
+ {{#each godNodes}}
96
+ | `{{label}}` | `{{source_file}}` | {{degree}} |
97
+ {{/each}}
98
+ {{#if hasLabeledCommunities}}
99
+
100
+ ### Comunidades
101
+
102
+ {{#each communities}}
103
+ - **{{label}}** ({{size}} nós)
104
+ {{/each}}
105
+ {{/if}}
106
+ {{/if}}
87
107
 
88
108
  ---
89
109
  *Generated by morph-spec v{{morphVersion}}*