@polymorphism-tech/morph-spec 4.8.12 → 4.8.15
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 +379 -379
- package/bin/morph-spec.js +23 -2
- package/bin/{task-manager.cjs → task-manager.js} +249 -172
- package/claude-plugin.json +14 -14
- package/docs/CHEATSHEET.md +203 -203
- package/docs/QUICKSTART.md +1 -1
- package/framework/agents.json +224 -140
- package/framework/hooks/README.md +202 -202
- package/framework/hooks/claude-code/post-tool-use/dispatch.js +48 -2
- package/framework/hooks/claude-code/post-tool-use/validator-feedback.js +151 -0
- package/framework/hooks/claude-code/pre-tool-use/enforce-phase-writes.js +12 -0
- package/framework/hooks/claude-code/pre-tool-use/protect-spec-files.js +6 -0
- package/framework/hooks/claude-code/session-start/inject-morph-context.js +34 -0
- package/framework/hooks/claude-code/statusline.py +6 -0
- package/framework/hooks/claude-code/stop/validate-completion.js +38 -4
- package/framework/hooks/claude-code/teammate-idle/teammate-idle.js +87 -0
- package/framework/hooks/claude-code/user-prompt/set-terminal-title.js +58 -0
- package/framework/hooks/shared/phase-utils.js +4 -1
- package/framework/hooks/shared/state-reader.js +1 -0
- package/framework/skills/README.md +1 -0
- package/framework/skills/level-0-meta/brainstorming/SKILL.md +2 -0
- package/framework/skills/level-0-meta/code-review/SKILL.md +16 -0
- package/framework/skills/level-0-meta/code-review/references/review-guidelines.md +100 -0
- package/framework/skills/level-0-meta/code-review/scripts/scan-csharp.mjs +36 -6
- package/framework/skills/level-0-meta/code-review-nextjs/SKILL.md +16 -0
- package/framework/skills/level-0-meta/code-review-nextjs/scripts/scan-nextjs.mjs +189 -0
- package/framework/skills/level-0-meta/frontend-review/SKILL.md +359 -0
- package/framework/skills/level-0-meta/frontend-review/scripts/scan-accessibility.mjs +376 -0
- package/framework/skills/level-0-meta/morph-checklist/SKILL.md +1 -1
- package/framework/skills/level-0-meta/morph-replicate/SKILL.md +10 -8
- package/framework/skills/level-0-meta/morph-replicate/references/blazor-html-mapping.md +70 -0
- package/framework/skills/level-0-meta/post-implementation/SKILL.md +315 -0
- package/framework/skills/level-0-meta/post-implementation/scripts/detect-dev-server.mjs +153 -0
- package/framework/skills/level-0-meta/post-implementation/scripts/detect-stack.mjs +234 -0
- package/framework/skills/level-0-meta/terminal-title/SKILL.md +61 -0
- package/framework/skills/level-0-meta/terminal-title/scripts/set_title.sh +65 -0
- package/framework/skills/level-0-meta/tool-usage-guide/SKILL.md +50 -188
- package/framework/skills/level-0-meta/tool-usage-guide/references/tools-per-phase.md +213 -0
- package/framework/skills/level-0-meta/verification-before-completion/SKILL.md +2 -0
- package/framework/skills/level-1-workflows/phase-clarify/SKILL.md +4 -7
- package/framework/skills/level-1-workflows/phase-codebase-analysis/SKILL.md +1 -1
- package/framework/skills/level-1-workflows/phase-design/SKILL.md +71 -109
- package/framework/skills/level-1-workflows/phase-design/references/architecture-analysis-guide.md +89 -0
- package/framework/skills/level-1-workflows/phase-design/references/spec-authoring-guide.md +55 -0
- package/framework/skills/level-1-workflows/phase-implement/SKILL.md +171 -114
- package/framework/skills/level-1-workflows/phase-implement/references/vsa-implementation-guide.md +92 -0
- package/framework/skills/level-1-workflows/phase-setup/SKILL.md +1 -2
- package/framework/skills/level-1-workflows/phase-tasks/SKILL.md +35 -159
- package/framework/skills/level-1-workflows/phase-tasks/references/task-planning-patterns.md +172 -0
- package/framework/skills/level-1-workflows/phase-uiux/SKILL.md +42 -3
- package/framework/squad-templates/backend-only.json +14 -1
- package/framework/squad-templates/frontend-only.json +14 -1
- package/framework/squad-templates/full-stack.json +25 -8
- package/framework/standards/STANDARDS.json +631 -86
- package/framework/standards/frontend/design-system/aesthetic-direction.md +213 -0
- package/framework/templates/project/validate.js +122 -0
- package/framework/workflows/configs/zero-touch.json +7 -0
- package/package.json +87 -87
- package/src/commands/agents/dispatch-agents.js +53 -10
- package/src/commands/state/advance-phase.js +88 -13
- package/src/commands/state/index.js +2 -1
- package/src/commands/state/phase-runner.js +215 -0
- package/src/commands/tasks/task.js +25 -4
- package/src/core/paths/output-schema.js +2 -1
- package/src/lib/detectors/design-system-detector.js +5 -4
- package/src/lib/generators/recap-generator.js +16 -0
- package/src/lib/orchestration/team-orchestrator.js +171 -89
- package/src/lib/phase-chain/eligibility-checker.js +243 -0
- package/src/lib/standards/digest-builder.js +231 -0
- package/src/lib/tasks/task-parser.js +94 -0
- package/src/lib/validators/blazor/blazor-concurrency-analyzer.js +39 -0
- package/src/lib/validators/content/content-validator.js +34 -106
- package/src/lib/validators/nextjs/next-component-validator.js +2 -0
- package/src/lib/validators/validation-runner.js +2 -2
- package/src/utils/file-copier.js +1 -0
- package/src/utils/hooks-installer.js +31 -7
package/framework/agents.json
CHANGED
|
@@ -42,9 +42,9 @@
|
|
|
42
42
|
"team_role": "lead"
|
|
43
43
|
},
|
|
44
44
|
"standards": [
|
|
45
|
-
"core
|
|
46
|
-
"core
|
|
47
|
-
"backend
|
|
45
|
+
{ "id": "core-coding", "scope": "all", "priority": "required" },
|
|
46
|
+
{ "id": "core-architecture", "scope": "all", "priority": "required" },
|
|
47
|
+
{ "id": "backend-dotnet-program-cs-checklist", "scope": "implement", "priority": "required" }
|
|
48
48
|
],
|
|
49
49
|
"teammate": {
|
|
50
50
|
"role": "Team Lead (Delegate Mode)",
|
|
@@ -80,15 +80,19 @@
|
|
|
80
80
|
"collaborates_with": [
|
|
81
81
|
"dotnet-senior"
|
|
82
82
|
],
|
|
83
|
-
"team_role": "orchestrator"
|
|
83
|
+
"team_role": "orchestrator",
|
|
84
|
+
"active_phases": [
|
|
85
|
+
"design",
|
|
86
|
+
"tasks"
|
|
87
|
+
]
|
|
84
88
|
},
|
|
85
89
|
"standards": [
|
|
86
|
-
"core
|
|
87
|
-
"core
|
|
88
|
-
"ai-agents
|
|
89
|
-
"ai-agents
|
|
90
|
-
"ai-agents
|
|
91
|
-
"ai-agents
|
|
90
|
+
{ "id": "core-coding", "scope": "all", "priority": "required" },
|
|
91
|
+
{ "id": "core-architecture", "scope": "all", "priority": "required" },
|
|
92
|
+
{ "id": "ai-agents-setup", "scope": "all", "priority": "required" },
|
|
93
|
+
{ "id": "ai-agents-workflows", "scope": "design", "priority": "required" },
|
|
94
|
+
{ "id": "ai-agents-production", "scope": "implement", "priority": "required" },
|
|
95
|
+
{ "id": "ai-agents-blazor-ui", "scope": "implement", "priority": "reference" }
|
|
92
96
|
],
|
|
93
97
|
"teammate": {
|
|
94
98
|
"role": "AI Architect",
|
|
@@ -125,8 +129,8 @@
|
|
|
125
129
|
]
|
|
126
130
|
},
|
|
127
131
|
"standards": [
|
|
128
|
-
"core
|
|
129
|
-
"core
|
|
132
|
+
{ "id": "core-coding", "scope": "all", "priority": "required" },
|
|
133
|
+
{ "id": "core-architecture", "scope": "all", "priority": "required" }
|
|
130
134
|
],
|
|
131
135
|
"teammate": null
|
|
132
136
|
},
|
|
@@ -175,10 +179,10 @@
|
|
|
175
179
|
"team_role": "domain_leader"
|
|
176
180
|
},
|
|
177
181
|
"standards": [
|
|
178
|
-
"core
|
|
179
|
-
"core
|
|
180
|
-
"backend
|
|
181
|
-
"backend
|
|
182
|
+
{ "id": "core-coding", "scope": "all", "priority": "required" },
|
|
183
|
+
{ "id": "core-architecture", "scope": "all", "priority": "required" },
|
|
184
|
+
{ "id": "backend-dotnet-core", "scope": "implement", "priority": "required" },
|
|
185
|
+
{ "id": "backend-dotnet-program-cs-checklist", "scope": "implement", "priority": "required" }
|
|
182
186
|
],
|
|
183
187
|
"teammate": {
|
|
184
188
|
"role": "Backend Squad Leader",
|
|
@@ -224,8 +228,8 @@
|
|
|
224
228
|
"team_role": "domain_leader"
|
|
225
229
|
},
|
|
226
230
|
"standards": [
|
|
227
|
-
"core
|
|
228
|
-
"core
|
|
231
|
+
{ "id": "core-coding", "scope": "all", "priority": "required" },
|
|
232
|
+
{ "id": "core-architecture", "scope": "all", "priority": "required" }
|
|
229
233
|
],
|
|
230
234
|
"teammate": {
|
|
231
235
|
"role": "Infrastructure Squad Leader",
|
|
@@ -269,12 +273,16 @@
|
|
|
269
273
|
"devops-engineer",
|
|
270
274
|
"container-specialist"
|
|
271
275
|
],
|
|
272
|
-
"team_role": "specialist"
|
|
276
|
+
"team_role": "specialist",
|
|
277
|
+
"active_phases": [
|
|
278
|
+
"design",
|
|
279
|
+
"implement"
|
|
280
|
+
]
|
|
273
281
|
},
|
|
274
282
|
"standards": [
|
|
275
|
-
"core
|
|
276
|
-
"core
|
|
277
|
-
"azure
|
|
283
|
+
{ "id": "core-coding", "scope": "all", "priority": "required" },
|
|
284
|
+
{ "id": "core-architecture", "scope": "all", "priority": "required" },
|
|
285
|
+
{ "id": "infrastructure-azure-azure", "scope": "all", "priority": "required" }
|
|
278
286
|
],
|
|
279
287
|
"teammate": {
|
|
280
288
|
"role": "Infrastructure Squad Leader",
|
|
@@ -330,10 +338,9 @@
|
|
|
330
338
|
]
|
|
331
339
|
},
|
|
332
340
|
"standards": [
|
|
333
|
-
"frontend
|
|
334
|
-
"
|
|
335
|
-
"frontend
|
|
336
|
-
"frontend/design-system/animations.md"
|
|
341
|
+
{ "id": "frontend-blazor-fluent-ui", "scope": "uiux", "priority": "required" },
|
|
342
|
+
{ "id": "frontend-design-system-naming", "scope": "all", "priority": "required" },
|
|
343
|
+
{ "id": "frontend-design-system-animations", "scope": "all", "priority": "required" }
|
|
337
344
|
],
|
|
338
345
|
"teammate": {
|
|
339
346
|
"role": "UI/UX Squad Leader (FASE 1.5)",
|
|
@@ -373,12 +380,16 @@
|
|
|
373
380
|
"api-designer",
|
|
374
381
|
"nosql-cache-expert"
|
|
375
382
|
],
|
|
376
|
-
"team_role": "specialist"
|
|
383
|
+
"team_role": "specialist",
|
|
384
|
+
"active_phases": [
|
|
385
|
+
"design",
|
|
386
|
+
"implement"
|
|
387
|
+
]
|
|
377
388
|
},
|
|
378
389
|
"standards": [
|
|
379
|
-
"core
|
|
380
|
-
"backend
|
|
381
|
-
"backend
|
|
390
|
+
{ "id": "core-coding", "scope": "all", "priority": "required" },
|
|
391
|
+
{ "id": "backend-database-ef-core", "scope": "all", "priority": "required" },
|
|
392
|
+
{ "id": "backend-dotnet-core", "scope": "implement", "priority": "required" }
|
|
382
393
|
],
|
|
383
394
|
"teammate": {
|
|
384
395
|
"role": "Data Persistence Specialist",
|
|
@@ -422,11 +433,15 @@
|
|
|
422
433
|
"api-designer",
|
|
423
434
|
"infra-architect"
|
|
424
435
|
],
|
|
425
|
-
"team_role": "specialist"
|
|
436
|
+
"team_role": "specialist",
|
|
437
|
+
"active_phases": [
|
|
438
|
+
"design",
|
|
439
|
+
"implement"
|
|
440
|
+
]
|
|
426
441
|
},
|
|
427
442
|
"standards": [
|
|
428
|
-
"core
|
|
429
|
-
"core
|
|
443
|
+
{ "id": "core-coding", "scope": "all", "priority": "required" },
|
|
444
|
+
{ "id": "core-architecture", "scope": "all", "priority": "required" }
|
|
430
445
|
],
|
|
431
446
|
"teammate": {
|
|
432
447
|
"role": "Event-Driven Architecture Specialist",
|
|
@@ -455,8 +470,7 @@
|
|
|
455
470
|
],
|
|
456
471
|
"always_active": false,
|
|
457
472
|
"validators": [
|
|
458
|
-
"architecture"
|
|
459
|
-
"api-design"
|
|
473
|
+
"architecture"
|
|
460
474
|
],
|
|
461
475
|
"relationships": {
|
|
462
476
|
"reports_to": "dotnet-senior",
|
|
@@ -468,11 +482,15 @@
|
|
|
468
482
|
"blazor-builder",
|
|
469
483
|
"nextjs-expert"
|
|
470
484
|
],
|
|
471
|
-
"team_role": "specialist"
|
|
485
|
+
"team_role": "specialist",
|
|
486
|
+
"active_phases": [
|
|
487
|
+
"design",
|
|
488
|
+
"implement"
|
|
489
|
+
]
|
|
472
490
|
},
|
|
473
491
|
"standards": [
|
|
474
|
-
"core
|
|
475
|
-
"core
|
|
492
|
+
{ "id": "core-coding", "scope": "all", "priority": "required" },
|
|
493
|
+
{ "id": "core-architecture", "scope": "all", "priority": "required" }
|
|
476
494
|
],
|
|
477
495
|
"teammate": {
|
|
478
496
|
"role": "API Design Specialist",
|
|
@@ -510,11 +528,15 @@
|
|
|
510
528
|
"ef-modeler",
|
|
511
529
|
"infra-architect"
|
|
512
530
|
],
|
|
513
|
-
"team_role": "specialist"
|
|
531
|
+
"team_role": "specialist",
|
|
532
|
+
"active_phases": [
|
|
533
|
+
"design",
|
|
534
|
+
"implement"
|
|
535
|
+
]
|
|
514
536
|
},
|
|
515
537
|
"standards": [
|
|
516
|
-
"core
|
|
517
|
-
"core
|
|
538
|
+
{ "id": "core-coding", "scope": "all", "priority": "required" },
|
|
539
|
+
{ "id": "core-architecture", "scope": "all", "priority": "required" }
|
|
518
540
|
],
|
|
519
541
|
"teammate": {
|
|
520
542
|
"role": "NoSQL & Cache Specialist",
|
|
@@ -562,14 +584,14 @@
|
|
|
562
584
|
"team_role": "domain_leader"
|
|
563
585
|
},
|
|
564
586
|
"standards": [
|
|
565
|
-
"core
|
|
566
|
-
"core
|
|
567
|
-
"architecture
|
|
568
|
-
"architecture
|
|
569
|
-
"architecture
|
|
570
|
-
"architecture
|
|
571
|
-
"architecture
|
|
572
|
-
"architecture
|
|
587
|
+
{ "id": "core-coding", "scope": "all", "priority": "required" },
|
|
588
|
+
{ "id": "core-architecture", "scope": "all", "priority": "required" },
|
|
589
|
+
{ "id": "architecture-ddd-complexity-levels", "scope": "design", "priority": "required" },
|
|
590
|
+
{ "id": "architecture-ddd-aggregates", "scope": "design", "priority": "required" },
|
|
591
|
+
{ "id": "architecture-ddd-entities", "scope": "design", "priority": "required" },
|
|
592
|
+
{ "id": "architecture-ddd-value-objects", "scope": "design", "priority": "required" },
|
|
593
|
+
{ "id": "architecture-ddd-bounded-contexts", "scope": "design", "priority": "required" },
|
|
594
|
+
{ "id": "architecture-ddd-ubiquitous-language", "scope": "design", "priority": "required" }
|
|
573
595
|
],
|
|
574
596
|
"active_phases": [
|
|
575
597
|
"design",
|
|
@@ -611,11 +633,14 @@
|
|
|
611
633
|
"ef-modeler",
|
|
612
634
|
"infra-architect"
|
|
613
635
|
],
|
|
614
|
-
"team_role": "specialist"
|
|
636
|
+
"team_role": "specialist",
|
|
637
|
+
"active_phases": [
|
|
638
|
+
"implement"
|
|
639
|
+
]
|
|
615
640
|
},
|
|
616
641
|
"standards": [
|
|
617
|
-
"core
|
|
618
|
-
"core
|
|
642
|
+
{ "id": "core-coding", "scope": "all", "priority": "required" },
|
|
643
|
+
{ "id": "core-architecture", "scope": "all", "priority": "required" }
|
|
619
644
|
],
|
|
620
645
|
"teammate": {
|
|
621
646
|
"role": "Background Jobs Specialist",
|
|
@@ -655,14 +680,18 @@
|
|
|
655
680
|
"dotnet-senior",
|
|
656
681
|
"infra-architect"
|
|
657
682
|
],
|
|
658
|
-
"team_role": "specialist"
|
|
683
|
+
"team_role": "specialist",
|
|
684
|
+
"active_phases": [
|
|
685
|
+
"design",
|
|
686
|
+
"implement"
|
|
687
|
+
]
|
|
659
688
|
},
|
|
660
689
|
"standards": [
|
|
661
|
-
"core
|
|
662
|
-
"ai-agents
|
|
663
|
-
"ai-agents
|
|
664
|
-
"ai-agents
|
|
665
|
-
"ai-agents
|
|
690
|
+
{ "id": "core-coding", "scope": "all", "priority": "required" },
|
|
691
|
+
{ "id": "ai-agents-setup", "scope": "all", "priority": "required" },
|
|
692
|
+
{ "id": "ai-agents-workflows", "scope": "design", "priority": "required" },
|
|
693
|
+
{ "id": "ai-agents-production", "scope": "implement", "priority": "required" },
|
|
694
|
+
{ "id": "ai-agents-blazor-ui", "scope": "implement", "priority": "reference" }
|
|
666
695
|
],
|
|
667
696
|
"teammate": {
|
|
668
697
|
"role": "Microsoft Agent Framework Expert",
|
|
@@ -700,11 +729,15 @@
|
|
|
700
729
|
"vector-search-expert",
|
|
701
730
|
"ef-modeler"
|
|
702
731
|
],
|
|
703
|
-
"team_role": "specialist"
|
|
732
|
+
"team_role": "specialist",
|
|
733
|
+
"active_phases": [
|
|
734
|
+
"design",
|
|
735
|
+
"implement"
|
|
736
|
+
]
|
|
704
737
|
},
|
|
705
738
|
"standards": [
|
|
706
|
-
"core
|
|
707
|
-
"core
|
|
739
|
+
{ "id": "core-coding", "scope": "all", "priority": "required" },
|
|
740
|
+
{ "id": "core-architecture", "scope": "all", "priority": "required" }
|
|
708
741
|
],
|
|
709
742
|
"teammate": {
|
|
710
743
|
"role": "Supabase & PostgreSQL Specialist",
|
|
@@ -741,12 +774,16 @@
|
|
|
741
774
|
"supabase-expert",
|
|
742
775
|
"context-optimizer"
|
|
743
776
|
],
|
|
744
|
-
"team_role": "specialist"
|
|
777
|
+
"team_role": "specialist",
|
|
778
|
+
"active_phases": [
|
|
779
|
+
"design",
|
|
780
|
+
"implement"
|
|
781
|
+
]
|
|
745
782
|
},
|
|
746
783
|
"standards": [
|
|
747
|
-
"core
|
|
748
|
-
"ai-agents
|
|
749
|
-
"ai-agents
|
|
784
|
+
{ "id": "core-coding", "scope": "all", "priority": "required" },
|
|
785
|
+
{ "id": "ai-agents-setup", "scope": "all", "priority": "required" },
|
|
786
|
+
{ "id": "ai-agents-workflows", "scope": "design", "priority": "required" }
|
|
750
787
|
],
|
|
751
788
|
"teammate": {
|
|
752
789
|
"role": "Vector Search & RAG Specialist",
|
|
@@ -779,11 +816,14 @@
|
|
|
779
816
|
"ms-agent-expert",
|
|
780
817
|
"vector-search-expert"
|
|
781
818
|
],
|
|
782
|
-
"team_role": "specialist"
|
|
819
|
+
"team_role": "specialist",
|
|
820
|
+
"active_phases": [
|
|
821
|
+
"implement"
|
|
822
|
+
]
|
|
783
823
|
},
|
|
784
824
|
"standards": [
|
|
785
|
-
"core
|
|
786
|
-
"ai-agents
|
|
825
|
+
{ "id": "core-coding", "scope": "all", "priority": "required" },
|
|
826
|
+
{ "id": "ai-agents-workflows", "scope": "all", "priority": "required" }
|
|
787
827
|
],
|
|
788
828
|
"teammate": {
|
|
789
829
|
"role": "Context & Token Optimization Specialist",
|
|
@@ -820,11 +860,15 @@
|
|
|
820
860
|
"blazor-builder",
|
|
821
861
|
"nextjs-expert"
|
|
822
862
|
],
|
|
823
|
-
"team_role": "specialist"
|
|
863
|
+
"team_role": "specialist",
|
|
864
|
+
"active_phases": [
|
|
865
|
+
"design",
|
|
866
|
+
"implement"
|
|
867
|
+
]
|
|
824
868
|
},
|
|
825
869
|
"standards": [
|
|
826
|
-
"core
|
|
827
|
-
"core
|
|
870
|
+
{ "id": "core-coding", "scope": "all", "priority": "required" },
|
|
871
|
+
{ "id": "core-architecture", "scope": "all", "priority": "required" }
|
|
828
872
|
],
|
|
829
873
|
"teammate": {
|
|
830
874
|
"role": "Payment Integration Specialist",
|
|
@@ -867,11 +911,15 @@
|
|
|
867
911
|
"nextjs-expert",
|
|
868
912
|
"azure-identity"
|
|
869
913
|
],
|
|
870
|
-
"team_role": "specialist"
|
|
914
|
+
"team_role": "specialist",
|
|
915
|
+
"active_phases": [
|
|
916
|
+
"design",
|
|
917
|
+
"implement"
|
|
918
|
+
]
|
|
871
919
|
},
|
|
872
920
|
"standards": [
|
|
873
|
-
"core
|
|
874
|
-
"core
|
|
921
|
+
{ "id": "core-coding", "scope": "all", "priority": "required" },
|
|
922
|
+
{ "id": "core-architecture", "scope": "all", "priority": "required" }
|
|
875
923
|
],
|
|
876
924
|
"teammate": {
|
|
877
925
|
"role": "Auth SaaS Integration Specialist",
|
|
@@ -913,11 +961,14 @@
|
|
|
913
961
|
"collaborates_with": [
|
|
914
962
|
"hangfire-orchestrator"
|
|
915
963
|
],
|
|
916
|
-
"team_role": "specialist"
|
|
964
|
+
"team_role": "specialist",
|
|
965
|
+
"active_phases": [
|
|
966
|
+
"implement"
|
|
967
|
+
]
|
|
917
968
|
},
|
|
918
969
|
"standards": [
|
|
919
|
-
"core
|
|
920
|
-
"core
|
|
970
|
+
{ "id": "core-coding", "scope": "all", "priority": "required" },
|
|
971
|
+
{ "id": "core-architecture", "scope": "all", "priority": "required" }
|
|
921
972
|
],
|
|
922
973
|
"teammate": {
|
|
923
974
|
"role": "Email Integration Specialist",
|
|
@@ -966,17 +1017,17 @@
|
|
|
966
1017
|
"team_role": "specialist",
|
|
967
1018
|
"active_phases": [
|
|
968
1019
|
"uiux",
|
|
1020
|
+
"tasks",
|
|
969
1021
|
"implement"
|
|
970
1022
|
]
|
|
971
1023
|
},
|
|
972
1024
|
"standards": [
|
|
973
|
-
"core
|
|
974
|
-
"frontend
|
|
975
|
-
"frontend
|
|
976
|
-
"frontend
|
|
977
|
-
"backend
|
|
978
|
-
"frontend
|
|
979
|
-
"mudblazor-blazor.md"
|
|
1025
|
+
{ "id": "core-coding", "scope": "all", "priority": "required" },
|
|
1026
|
+
{ "id": "frontend-blazor-lifecycle", "scope": "all", "priority": "required" },
|
|
1027
|
+
{ "id": "frontend-blazor-state", "scope": "all", "priority": "required" },
|
|
1028
|
+
{ "id": "frontend-blazor-pitfalls", "scope": "all", "priority": "required" },
|
|
1029
|
+
{ "id": "backend-database-ef-core", "scope": "implement", "priority": "reference" },
|
|
1030
|
+
{ "id": "frontend-blazor-fluent-ui", "scope": "all", "priority": "required" }
|
|
980
1031
|
],
|
|
981
1032
|
"teammate": {
|
|
982
1033
|
"role": "Blazor Development Specialist",
|
|
@@ -1022,21 +1073,22 @@
|
|
|
1022
1073
|
"team_role": "specialist",
|
|
1023
1074
|
"active_phases": [
|
|
1024
1075
|
"uiux",
|
|
1076
|
+
"tasks",
|
|
1025
1077
|
"implement"
|
|
1026
1078
|
]
|
|
1027
1079
|
},
|
|
1028
1080
|
"standards": [
|
|
1029
|
-
"core
|
|
1030
|
-
"core
|
|
1031
|
-
"frontend
|
|
1032
|
-
"frontend
|
|
1033
|
-
"frontend
|
|
1034
|
-
"frontend
|
|
1035
|
-
"frontend
|
|
1036
|
-
"frontend
|
|
1037
|
-
"frontend
|
|
1038
|
-
"frontend
|
|
1039
|
-
"frontend
|
|
1081
|
+
{ "id": "core-coding", "scope": "all", "priority": "required" },
|
|
1082
|
+
{ "id": "core-architecture", "scope": "all", "priority": "required" },
|
|
1083
|
+
{ "id": "frontend-nextjs-naming-conventions", "scope": "all", "priority": "required" },
|
|
1084
|
+
{ "id": "frontend-nextjs-project-structure", "scope": "all", "priority": "required" },
|
|
1085
|
+
{ "id": "frontend-nextjs-app-router", "scope": "all", "priority": "required" },
|
|
1086
|
+
{ "id": "frontend-nextjs-components", "scope": "all", "priority": "required" },
|
|
1087
|
+
{ "id": "frontend-nextjs-data-fetching", "scope": "implement", "priority": "required" },
|
|
1088
|
+
{ "id": "frontend-nextjs-forms", "scope": "implement", "priority": "required" },
|
|
1089
|
+
{ "id": "frontend-nextjs-state-management", "scope": "implement", "priority": "required" },
|
|
1090
|
+
{ "id": "frontend-nextjs-testing", "scope": "implement", "priority": "reference" },
|
|
1091
|
+
{ "id": "frontend-nextjs-nextjs-patterns", "scope": "all", "priority": "required" }
|
|
1040
1092
|
],
|
|
1041
1093
|
"teammate": {
|
|
1042
1094
|
"role": "Next.js Development Specialist",
|
|
@@ -1079,8 +1131,8 @@
|
|
|
1079
1131
|
]
|
|
1080
1132
|
},
|
|
1081
1133
|
"standards": [
|
|
1082
|
-
"frontend
|
|
1083
|
-
"frontend
|
|
1134
|
+
{ "id": "frontend-design-system-naming", "scope": "all", "priority": "required" },
|
|
1135
|
+
{ "id": "frontend-design-system-animations", "scope": "all", "priority": "required" }
|
|
1084
1136
|
],
|
|
1085
1137
|
"teammate": {
|
|
1086
1138
|
"role": "CSS & Design System Specialist",
|
|
@@ -1116,12 +1168,16 @@
|
|
|
1116
1168
|
"devops-engineer",
|
|
1117
1169
|
"container-specialist"
|
|
1118
1170
|
],
|
|
1119
|
-
"team_role": "specialist"
|
|
1171
|
+
"team_role": "specialist",
|
|
1172
|
+
"active_phases": [
|
|
1173
|
+
"design",
|
|
1174
|
+
"implement"
|
|
1175
|
+
]
|
|
1120
1176
|
},
|
|
1121
1177
|
"standards": [
|
|
1122
|
-
"core
|
|
1123
|
-
"core
|
|
1124
|
-
"azure
|
|
1178
|
+
{ "id": "core-coding", "scope": "all", "priority": "required" },
|
|
1179
|
+
{ "id": "core-architecture", "scope": "all", "priority": "required" },
|
|
1180
|
+
{ "id": "infrastructure-azure-azure", "scope": "all", "priority": "required" }
|
|
1125
1181
|
],
|
|
1126
1182
|
"teammate": {
|
|
1127
1183
|
"role": "Infrastructure as Code Specialist",
|
|
@@ -1157,11 +1213,14 @@
|
|
|
1157
1213
|
"bicep-architect",
|
|
1158
1214
|
"container-specialist"
|
|
1159
1215
|
],
|
|
1160
|
-
"team_role": "specialist"
|
|
1216
|
+
"team_role": "specialist",
|
|
1217
|
+
"active_phases": [
|
|
1218
|
+
"implement"
|
|
1219
|
+
]
|
|
1161
1220
|
},
|
|
1162
1221
|
"standards": [
|
|
1163
|
-
"core
|
|
1164
|
-
"core
|
|
1222
|
+
{ "id": "core-coding", "scope": "all", "priority": "required" },
|
|
1223
|
+
{ "id": "core-architecture", "scope": "all", "priority": "required" }
|
|
1165
1224
|
],
|
|
1166
1225
|
"teammate": {
|
|
1167
1226
|
"role": "CI/CD Specialist",
|
|
@@ -1196,11 +1255,14 @@
|
|
|
1196
1255
|
"bicep-architect",
|
|
1197
1256
|
"devops-engineer"
|
|
1198
1257
|
],
|
|
1199
|
-
"team_role": "specialist"
|
|
1258
|
+
"team_role": "specialist",
|
|
1259
|
+
"active_phases": [
|
|
1260
|
+
"implement"
|
|
1261
|
+
]
|
|
1200
1262
|
},
|
|
1201
1263
|
"standards": [
|
|
1202
|
-
"core
|
|
1203
|
-
"core
|
|
1264
|
+
{ "id": "core-coding", "scope": "all", "priority": "required" },
|
|
1265
|
+
{ "id": "core-architecture", "scope": "all", "priority": "required" }
|
|
1204
1266
|
],
|
|
1205
1267
|
"teammate": {
|
|
1206
1268
|
"role": "Containerization Specialist",
|
|
@@ -1238,11 +1300,14 @@
|
|
|
1238
1300
|
"dotnet-senior",
|
|
1239
1301
|
"ms-agent-expert"
|
|
1240
1302
|
],
|
|
1241
|
-
"team_role": "specialist"
|
|
1303
|
+
"team_role": "specialist",
|
|
1304
|
+
"active_phases": [
|
|
1305
|
+
"implement"
|
|
1306
|
+
]
|
|
1242
1307
|
},
|
|
1243
1308
|
"standards": [
|
|
1244
|
-
"core
|
|
1245
|
-
"core
|
|
1309
|
+
{ "id": "core-coding", "scope": "all", "priority": "required" },
|
|
1310
|
+
{ "id": "core-architecture", "scope": "all", "priority": "required" }
|
|
1246
1311
|
],
|
|
1247
1312
|
"teammate": {
|
|
1248
1313
|
"role": "Observability Specialist",
|
|
@@ -1280,11 +1345,15 @@
|
|
|
1280
1345
|
"nextjs-expert",
|
|
1281
1346
|
"clerk-auth"
|
|
1282
1347
|
],
|
|
1283
|
-
"team_role": "specialist"
|
|
1348
|
+
"team_role": "specialist",
|
|
1349
|
+
"active_phases": [
|
|
1350
|
+
"design",
|
|
1351
|
+
"implement"
|
|
1352
|
+
]
|
|
1284
1353
|
},
|
|
1285
1354
|
"standards": [
|
|
1286
|
-
"core
|
|
1287
|
-
"core
|
|
1355
|
+
{ "id": "core-coding", "scope": "all", "priority": "required" },
|
|
1356
|
+
{ "id": "core-architecture", "scope": "all", "priority": "required" }
|
|
1288
1357
|
],
|
|
1289
1358
|
"teammate": {
|
|
1290
1359
|
"role": "Microsoft Identity Specialist",
|
|
@@ -1324,11 +1393,14 @@
|
|
|
1324
1393
|
"blazor-builder",
|
|
1325
1394
|
"nextjs-expert"
|
|
1326
1395
|
],
|
|
1327
|
-
"team_role": "specialist"
|
|
1396
|
+
"team_role": "specialist",
|
|
1397
|
+
"active_phases": [
|
|
1398
|
+
"implement"
|
|
1399
|
+
]
|
|
1328
1400
|
},
|
|
1329
1401
|
"standards": [
|
|
1330
|
-
"core
|
|
1331
|
-
"core
|
|
1402
|
+
{ "id": "core-coding", "scope": "all", "priority": "required" },
|
|
1403
|
+
{ "id": "core-architecture", "scope": "all", "priority": "required" }
|
|
1332
1404
|
],
|
|
1333
1405
|
"teammate": {
|
|
1334
1406
|
"role": "Testing Specialist",
|
|
@@ -1366,11 +1438,14 @@
|
|
|
1366
1438
|
"dotnet-senior",
|
|
1367
1439
|
"troubleshooting-expert"
|
|
1368
1440
|
],
|
|
1369
|
-
"team_role": "specialist"
|
|
1441
|
+
"team_role": "specialist",
|
|
1442
|
+
"active_phases": [
|
|
1443
|
+
"implement"
|
|
1444
|
+
]
|
|
1370
1445
|
},
|
|
1371
1446
|
"standards": [
|
|
1372
|
-
"core
|
|
1373
|
-
"core
|
|
1447
|
+
{ "id": "core-coding", "scope": "all", "priority": "required" },
|
|
1448
|
+
{ "id": "core-architecture", "scope": "all", "priority": "required" }
|
|
1374
1449
|
],
|
|
1375
1450
|
"teammate": {
|
|
1376
1451
|
"role": "Code Quality Analyst",
|
|
@@ -1404,11 +1479,14 @@
|
|
|
1404
1479
|
"testing-specialist"
|
|
1405
1480
|
],
|
|
1406
1481
|
"team_role": "escalation_specialist",
|
|
1407
|
-
"spawn_trigger": "escalation_after_3_failures"
|
|
1482
|
+
"spawn_trigger": "escalation_after_3_failures",
|
|
1483
|
+
"active_phases": [
|
|
1484
|
+
"implement"
|
|
1485
|
+
]
|
|
1408
1486
|
},
|
|
1409
1487
|
"standards": [
|
|
1410
|
-
"core
|
|
1411
|
-
"core
|
|
1488
|
+
{ "id": "core-coding", "scope": "all", "priority": "required" },
|
|
1489
|
+
{ "id": "core-architecture", "scope": "all", "priority": "required" }
|
|
1412
1490
|
],
|
|
1413
1491
|
"teammate": {
|
|
1414
1492
|
"role": "Troubleshooting Expert (Escalation)",
|
|
@@ -1446,11 +1524,14 @@
|
|
|
1446
1524
|
"infra-architect",
|
|
1447
1525
|
"observability-expert"
|
|
1448
1526
|
],
|
|
1449
|
-
"team_role": "specialist"
|
|
1527
|
+
"team_role": "specialist",
|
|
1528
|
+
"active_phases": [
|
|
1529
|
+
"implement"
|
|
1530
|
+
]
|
|
1450
1531
|
},
|
|
1451
1532
|
"standards": [
|
|
1452
|
-
"core
|
|
1453
|
-
"core
|
|
1533
|
+
{ "id": "core-coding", "scope": "all", "priority": "required" },
|
|
1534
|
+
{ "id": "core-architecture", "scope": "all", "priority": "required" }
|
|
1454
1535
|
],
|
|
1455
1536
|
"teammate": {
|
|
1456
1537
|
"role": "Load Testing Specialist",
|
|
@@ -1484,11 +1565,14 @@
|
|
|
1484
1565
|
"devops-engineer"
|
|
1485
1566
|
],
|
|
1486
1567
|
"team_role": "post_implementation",
|
|
1487
|
-
"spawn_trigger": "post_fase_5"
|
|
1568
|
+
"spawn_trigger": "post_fase_5",
|
|
1569
|
+
"active_phases": [
|
|
1570
|
+
"implement"
|
|
1571
|
+
]
|
|
1488
1572
|
},
|
|
1489
1573
|
"standards": [
|
|
1490
|
-
"core
|
|
1491
|
-
"core
|
|
1574
|
+
{ "id": "core-coding", "scope": "all", "priority": "required" },
|
|
1575
|
+
{ "id": "core-architecture", "scope": "all", "priority": "required" }
|
|
1492
1576
|
],
|
|
1493
1577
|
"teammate": {
|
|
1494
1578
|
"role": "Documentation Specialist (Post-FASE 5)",
|
|
@@ -1522,8 +1606,8 @@
|
|
|
1522
1606
|
"implement"
|
|
1523
1607
|
],
|
|
1524
1608
|
"standards": [
|
|
1525
|
-
"core
|
|
1526
|
-
"architecture
|
|
1609
|
+
{ "id": "core-coding", "scope": "all", "priority": "required" },
|
|
1610
|
+
{ "id": "architecture-vertical-slice-vertical-slice", "scope": "all", "priority": "required" }
|
|
1527
1611
|
],
|
|
1528
1612
|
"teammate": {
|
|
1529
1613
|
"role": "VSA Architecture Specialist",
|
|
@@ -1563,8 +1647,8 @@
|
|
|
1563
1647
|
"team_role": "validator"
|
|
1564
1648
|
},
|
|
1565
1649
|
"standards": [
|
|
1566
|
-
"core
|
|
1567
|
-
"core
|
|
1650
|
+
{ "id": "core-coding", "scope": "all", "priority": "required" },
|
|
1651
|
+
{ "id": "core-architecture", "scope": "all", "priority": "required" }
|
|
1568
1652
|
],
|
|
1569
1653
|
"teammate": null,
|
|
1570
1654
|
"hook_behavior": {
|
|
@@ -1607,8 +1691,8 @@
|
|
|
1607
1691
|
"team_role": "validator"
|
|
1608
1692
|
},
|
|
1609
1693
|
"standards": [
|
|
1610
|
-
"core
|
|
1611
|
-
"core
|
|
1694
|
+
{ "id": "core-coding", "scope": "all", "priority": "required" },
|
|
1695
|
+
{ "id": "core-architecture", "scope": "all", "priority": "required" }
|
|
1612
1696
|
],
|
|
1613
1697
|
"teammate": null,
|
|
1614
1698
|
"hook_behavior": {
|
|
@@ -1649,7 +1733,7 @@
|
|
|
1649
1733
|
"team_role": "validator"
|
|
1650
1734
|
},
|
|
1651
1735
|
"standards": [
|
|
1652
|
-
"core
|
|
1736
|
+
{ "id": "core-coding", "scope": "all", "priority": "required" }
|
|
1653
1737
|
],
|
|
1654
1738
|
"teammate": null,
|
|
1655
1739
|
"hook_behavior": {
|
|
@@ -1689,8 +1773,8 @@
|
|
|
1689
1773
|
"team_role": "validator"
|
|
1690
1774
|
},
|
|
1691
1775
|
"standards": [
|
|
1692
|
-
"frontend
|
|
1693
|
-
"frontend
|
|
1776
|
+
{ "id": "frontend-design-system-naming", "scope": "all", "priority": "required" },
|
|
1777
|
+
{ "id": "frontend-design-system-animations", "scope": "all", "priority": "required" }
|
|
1694
1778
|
],
|
|
1695
1779
|
"teammate": null,
|
|
1696
1780
|
"hook_behavior": {
|
|
@@ -1732,9 +1816,9 @@
|
|
|
1732
1816
|
"team_role": "validator"
|
|
1733
1817
|
},
|
|
1734
1818
|
"standards": [
|
|
1735
|
-
"frontend
|
|
1736
|
-
"frontend
|
|
1737
|
-
"frontend
|
|
1819
|
+
{ "id": "frontend-blazor-lifecycle", "scope": "all", "priority": "required" },
|
|
1820
|
+
{ "id": "frontend-blazor-pitfalls", "scope": "all", "priority": "required" },
|
|
1821
|
+
{ "id": "frontend-blazor-state", "scope": "all", "priority": "required" }
|
|
1738
1822
|
],
|
|
1739
1823
|
"teammate": null,
|
|
1740
1824
|
"hook_behavior": {
|