@polymorphism-tech/morph-spec 4.10.8 → 4.10.10
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 +3 -3
- package/LICENSE +71 -71
- package/README.md +2 -2
- package/bin/morph-spec.js +22 -0
- package/claude-plugin.json +1 -1
- package/docs/CHEATSHEET.md +1 -1
- package/docs/QUICKSTART.md +1 -1
- package/framework/agents/README.md +14 -14
- package/framework/agents/architecture/standards-architect.md +159 -159
- package/framework/agents/infrastructure/azure-architect.md +149 -149
- package/framework/agents/infrastructure/infra-architect.md +48 -48
- package/framework/hooks/README.md +204 -204
- package/framework/hooks/shared/phase-utils.js +139 -139
- package/framework/rules/csharp-standards.md +13 -13
- package/framework/rules/frontend-standards.md +13 -13
- package/framework/rules/infrastructure-standards.md +16 -16
- package/framework/rules/testing-standards.md +14 -14
- package/framework/skills/level-0-meta/morph-code-review-nextjs/references/review-example-nextjs.md +254 -254
- package/framework/skills/level-0-meta/morph-init/SKILL.md +57 -9
- package/framework/skills/level-1-workflows/morph-phase-clarify/SKILL.md +1 -1
- package/framework/skills/level-1-workflows/morph-phase-codebase-analysis/SKILL.md +1 -1
- package/framework/skills/level-1-workflows/morph-phase-design/SKILL.md +1 -1
- package/framework/skills/level-1-workflows/morph-phase-implement/.morph/logs/activity.json +38 -0
- package/framework/skills/level-1-workflows/morph-phase-implement/SKILL.md +1 -1
- package/framework/skills/level-1-workflows/morph-phase-plan/SKILL.md +1 -1
- package/framework/skills/level-1-workflows/morph-phase-setup/SKILL.md +1 -1
- package/framework/skills/level-1-workflows/morph-phase-tasks/.morph/logs/activity.json +14 -0
- package/framework/skills/level-1-workflows/morph-phase-tasks/SKILL.md +1 -1
- package/framework/skills/level-1-workflows/morph-phase-uiux/SKILL.md +49 -16
- package/framework/skills/level-1-workflows/morph-scope-escalation/SKILL.md +1 -1
- package/framework/standards/STANDARDS.json +2338 -2041
- package/framework/standards/frontend/nextjs/nextjs-patterns.md +17 -17
- package/framework/standards/infrastructure/supabase/supabase-custom-jwt.md +206 -0
- package/framework/templates/.idea/morph-templates.xml +92 -0
- package/framework/templates/.vscode/morph-templates.code-snippets +186 -0
- package/framework/templates/README.md +814 -814
- package/framework/templates/code/dotnet/contracts/Commands.cs +74 -74
- package/framework/templates/code/dotnet/contracts/Entities.cs +25 -25
- package/framework/templates/code/dotnet/contracts/Queries.cs +74 -74
- package/framework/templates/code/dotnet/contracts/README.md +74 -74
- package/framework/templates/code/dotnet/contracts/api-contracts.cs +173 -173
- package/framework/templates/code/dotnet/frontend/component.razor +239 -239
- package/framework/templates/code/dotnet/jobs/agent.cs +163 -163
- package/framework/templates/code/dotnet/jobs/job.cs +171 -171
- package/framework/templates/code/dotnet/test.cs +239 -239
- package/framework/templates/code/sql/rls-policy.sql +57 -57
- package/framework/templates/code/sql/supabase-migration.sql +100 -100
- package/framework/templates/code/sql/supabase-migration.template.sql +113 -113
- package/framework/templates/code/typescript/contracts.ts +168 -168
- package/framework/templates/context/CONTEXT.md +181 -181
- package/framework/templates/docs/proposal.md +182 -182
- package/framework/templates/docs/user-stories.md +34 -34
- package/framework/templates/examples/design-system-examples.md +357 -357
- package/framework/templates/examples/spec-examples.md +90 -90
- package/framework/templates/feature/decisions.md +187 -187
- package/framework/templates/feature/recap.md +146 -146
- package/framework/templates/feature/tasks.md +199 -199
- package/framework/templates/infrastructure/azure/README.md +286 -286
- package/framework/templates/infrastructure/azure/deploy-checklist.md +426 -426
- package/framework/templates/infrastructure/azure/parameters.dev.json +29 -29
- package/framework/templates/infrastructure/azure/parameters.prod.json +29 -29
- package/framework/templates/infrastructure/azure/parameters.staging.json +29 -29
- package/framework/templates/infrastructure/docker/docker-compose.template.yml +67 -67
- package/framework/templates/infrastructure/docker/dockerfile-api.dockerfile +38 -38
- package/framework/templates/infrastructure/docker/dockerfile-web.dockerfile +48 -48
- package/framework/templates/infrastructure/docker/easypanel.template.json +54 -54
- package/package.json +1 -1
- package/src/commands/agents/dispatch-agents.js +17 -0
- package/src/commands/agents/index.js +13 -13
- package/src/commands/agents/project-metrics.js +74 -0
- package/src/commands/project/install-plugin-cmd.js +28 -28
- package/src/commands/project/setup-infra-cmd.js +12 -12
- package/src/commands/standards/context-budget.js +89 -0
- package/src/commands/tasks/index.js +4 -4
- package/src/commands/templates/index.js +5 -5
- package/src/commands/utils/index.js +3 -3
- package/src/commands/validation/index.js +4 -4
- package/src/core/state/phase-state-machine.js +217 -217
- package/src/lib/agents/metrics-aggregator.js +56 -0
- package/src/lib/detectors/design-system-detector.js +73 -31
- package/src/lib/generators/design-system-generator.js +298 -298
- package/src/lib/generators/index.js +10 -10
- package/src/lib/generators/metadata-extractor.js +387 -387
- package/src/lib/stack-filter.js +65 -65
- package/src/lib/standards/digest-builder.js +57 -3
- package/src/lib/standards/index.js +7 -7
- package/src/lib/standards/standards-context-injector.js +302 -302
- package/src/lib/validators/architecture/architecture-validator.js +387 -387
- package/src/lib/validators/architecture/index.js +7 -7
- package/src/lib/validators/blazor/blazor-concurrency-analyzer.js +316 -316
- package/src/lib/validators/blazor/blazor-state-validator.js +279 -279
- package/src/lib/validators/blazor/blazor-validator.js +369 -369
- package/src/lib/validators/blazor/index.js +9 -9
- package/src/lib/validators/content/content-validator.js +287 -287
- package/src/lib/validators/content/index.js +7 -7
- package/src/lib/validators/contracts/index.js +7 -7
- package/src/lib/validators/css/css-validator.js +352 -352
- package/src/lib/validators/css/index.js +7 -7
- package/src/lib/validators/design-system/design-system-validator.js +231 -231
- package/src/lib/validators/design-system/index.js +7 -7
- package/src/lib/validators/nextjs/index.js +6 -6
- package/src/lib/validators/nextjs/next-component-validator.js +183 -183
- package/src/lib/validators/packages/index.js +7 -7
- package/src/lib/validators/packages/package-validator.js +360 -360
- package/src/lib/validators/shared/index.js +12 -12
- package/src/lib/validators/shared/issue-counter.js +18 -18
- package/src/lib/validators/shared/result-formatter.js +124 -124
- package/src/lib/validators/ui/index.js +7 -7
- package/src/lib/validators/ui/ui-contrast-validator.js +422 -422
- package/src/scripts/global-install.js +58 -58
- package/src/scripts/install-plugin.js +126 -126
- package/src/utils/claude-md-injector.js +90 -90
- package/src/utils/file-copier.js +200 -200
- package/src/utils/logger.js +32 -32
- package/src/utils/skills-installer.js +178 -178
- package/src/utils/version-checker.js +175 -175
|
@@ -1,139 +1,139 @@
|
|
|
1
|
-
// GENERATED by scripts/generate-refs.js — DO NOT EDIT manually
|
|
2
|
-
// Source of truth: src/core/paths/output-schema.js
|
|
3
|
-
// Regenerate with: node scripts/generate-refs.js
|
|
4
|
-
/**
|
|
5
|
-
* Shared phase utilities for Claude Code hooks.
|
|
6
|
-
*
|
|
7
|
-
* Maps phases to directories and output types.
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
/** Phase order */
|
|
11
|
-
export const PHASE_ORDER = ["proposal","setup","uiux","design","clarify","plan","tasks","implement","sync"];
|
|
12
|
-
|
|
13
|
-
/** Map phase → allowed output subdirectory */
|
|
14
|
-
export const PHASE_DIRS = {
|
|
15
|
-
proposal: '0-proposal',
|
|
16
|
-
setup: '0-proposal',
|
|
17
|
-
uiux: '2-ui',
|
|
18
|
-
design: '1-design',
|
|
19
|
-
clarify: '1-design',
|
|
20
|
-
plan: '3-plan',
|
|
21
|
-
tasks: '4-tasks',
|
|
22
|
-
implement: '5-implement',
|
|
23
|
-
sync: '5-implement',
|
|
24
|
-
};
|
|
25
|
-
|
|
26
|
-
/** Map output type (camelCase) → phase that produces it */
|
|
27
|
-
export const OUTPUT_PHASE_MAP = {
|
|
28
|
-
proposal: 'proposal',
|
|
29
|
-
schemaAnalysis: 'design',
|
|
30
|
-
spec: 'design',
|
|
31
|
-
clarifications: 'clarify',
|
|
32
|
-
contracts: 'design',
|
|
33
|
-
contractsTs: 'design',
|
|
34
|
-
contractsVsa: 'design',
|
|
35
|
-
plan: 'plan',
|
|
36
|
-
tasks: 'tasks',
|
|
37
|
-
uiDesignSystem: 'uiux',
|
|
38
|
-
uiMockups: 'uiux',
|
|
39
|
-
uiComponents: 'uiux',
|
|
40
|
-
uiFlows: 'uiux',
|
|
41
|
-
decisions: 'design',
|
|
42
|
-
recap: 'implement',
|
|
43
|
-
};
|
|
44
|
-
|
|
45
|
-
/** Map filename → output type (camelCase) */
|
|
46
|
-
export const FILENAME_TO_OUTPUT = {
|
|
47
|
-
'proposal.md': 'proposal',
|
|
48
|
-
'schema-analysis.md': 'schemaAnalysis',
|
|
49
|
-
'spec.md': 'spec',
|
|
50
|
-
'clarifications.md': 'clarifications',
|
|
51
|
-
'contracts.cs': 'contracts',
|
|
52
|
-
'contracts.ts': 'contractsTs',
|
|
53
|
-
'contracts-vsa.cs': 'contractsVsa',
|
|
54
|
-
'plan.md': 'plan',
|
|
55
|
-
'tasks.md': 'tasks',
|
|
56
|
-
'design-system.md': 'uiDesignSystem',
|
|
57
|
-
'mockups.md': 'uiMockups',
|
|
58
|
-
'components.md': 'uiComponents',
|
|
59
|
-
'flows.md': 'uiFlows',
|
|
60
|
-
'decisions.md': 'decisions',
|
|
61
|
-
'recap.md': 'recap',
|
|
62
|
-
};
|
|
63
|
-
|
|
64
|
-
/** Protected spec files and the approval gate that locks them */
|
|
65
|
-
export const PROTECTED_SPEC_FILES = {
|
|
66
|
-
'schema-analysis.md': 'design',
|
|
67
|
-
'spec.md': 'design',
|
|
68
|
-
'contracts.cs': 'design',
|
|
69
|
-
'contracts.ts': 'design',
|
|
70
|
-
'contracts-vsa.cs': 'design',
|
|
71
|
-
'plan.md': 'plan',
|
|
72
|
-
'tasks.md': 'tasks',
|
|
73
|
-
'design-system.md': 'uiux',
|
|
74
|
-
'mockups.md': 'uiux',
|
|
75
|
-
'components.md': 'uiux',
|
|
76
|
-
'flows.md': 'uiux',
|
|
77
|
-
};
|
|
78
|
-
|
|
79
|
-
/**
|
|
80
|
-
* Extract feature name from a .morph/features/{feature}/... path
|
|
81
|
-
* @param {string} filePath - File path to analyze
|
|
82
|
-
* @returns {string|null} Feature name or null
|
|
83
|
-
*/
|
|
84
|
-
export function extractFeatureName(filePath) {
|
|
85
|
-
const normalized = filePath.replace(/\\/g, '/');
|
|
86
|
-
const match = normalized.match(/\.morph\/features\/([^/]+)\//);
|
|
87
|
-
return match ? match[1] : null;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
/**
|
|
91
|
-
* Extract phase subdirectory from a .morph/features/{feature}/{phaseDir}/... path
|
|
92
|
-
* @param {string} filePath - File path to analyze
|
|
93
|
-
* @returns {string|null} Phase directory (e.g., '0-proposal', '1-design') or null
|
|
94
|
-
*/
|
|
95
|
-
export function extractPhaseDir(filePath) {
|
|
96
|
-
const normalized = filePath.replace(/\\/g, '/');
|
|
97
|
-
const match = normalized.match(/\.morph\/features\/[^/]+\/(\d+-[^/]+)\//);
|
|
98
|
-
return match ? match[1] : null;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
/**
|
|
102
|
-
* Check if a file path is inside .morph/features/
|
|
103
|
-
* @param {string} filePath
|
|
104
|
-
* @returns {boolean}
|
|
105
|
-
*/
|
|
106
|
-
export function isFeaturePath(filePath) {
|
|
107
|
-
const normalized = filePath.replace(/\\/g, '/');
|
|
108
|
-
return normalized.includes('.morph/features/');
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
/**
|
|
112
|
-
* Check if a file path is inside .morph/framework/ (readonly)
|
|
113
|
-
* @param {string} filePath
|
|
114
|
-
* @returns {boolean}
|
|
115
|
-
*/
|
|
116
|
-
export function isFrameworkPath(filePath) {
|
|
117
|
-
const normalized = filePath.replace(/\\/g, '/');
|
|
118
|
-
return normalized.includes('.morph/framework/');
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
/**
|
|
122
|
-
* Check if a file path is state.json
|
|
123
|
-
* @param {string} filePath
|
|
124
|
-
* @returns {boolean}
|
|
125
|
-
*/
|
|
126
|
-
export function isStatePath(filePath) {
|
|
127
|
-
const normalized = filePath.replace(/\\/g, '/');
|
|
128
|
-
return normalized.endsWith('.morph/state.json');
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
/**
|
|
132
|
-
* Get the basename of a file path
|
|
133
|
-
* @param {string} filePath
|
|
134
|
-
* @returns {string}
|
|
135
|
-
*/
|
|
136
|
-
export function getBasename(filePath) {
|
|
137
|
-
const normalized = filePath.replace(/\\/g, '/');
|
|
138
|
-
return normalized.split('/').pop();
|
|
139
|
-
}
|
|
1
|
+
// GENERATED by scripts/generate-refs.js — DO NOT EDIT manually
|
|
2
|
+
// Source of truth: src/core/paths/output-schema.js
|
|
3
|
+
// Regenerate with: node scripts/generate-refs.js
|
|
4
|
+
/**
|
|
5
|
+
* Shared phase utilities for Claude Code hooks.
|
|
6
|
+
*
|
|
7
|
+
* Maps phases to directories and output types.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
/** Phase order */
|
|
11
|
+
export const PHASE_ORDER = ["proposal","setup","uiux","design","clarify","plan","tasks","implement","sync"];
|
|
12
|
+
|
|
13
|
+
/** Map phase → allowed output subdirectory */
|
|
14
|
+
export const PHASE_DIRS = {
|
|
15
|
+
proposal: '0-proposal',
|
|
16
|
+
setup: '0-proposal',
|
|
17
|
+
uiux: '2-ui',
|
|
18
|
+
design: '1-design',
|
|
19
|
+
clarify: '1-design',
|
|
20
|
+
plan: '3-plan',
|
|
21
|
+
tasks: '4-tasks',
|
|
22
|
+
implement: '5-implement',
|
|
23
|
+
sync: '5-implement',
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
/** Map output type (camelCase) → phase that produces it */
|
|
27
|
+
export const OUTPUT_PHASE_MAP = {
|
|
28
|
+
proposal: 'proposal',
|
|
29
|
+
schemaAnalysis: 'design',
|
|
30
|
+
spec: 'design',
|
|
31
|
+
clarifications: 'clarify',
|
|
32
|
+
contracts: 'design',
|
|
33
|
+
contractsTs: 'design',
|
|
34
|
+
contractsVsa: 'design',
|
|
35
|
+
plan: 'plan',
|
|
36
|
+
tasks: 'tasks',
|
|
37
|
+
uiDesignSystem: 'uiux',
|
|
38
|
+
uiMockups: 'uiux',
|
|
39
|
+
uiComponents: 'uiux',
|
|
40
|
+
uiFlows: 'uiux',
|
|
41
|
+
decisions: 'design',
|
|
42
|
+
recap: 'implement',
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
/** Map filename → output type (camelCase) */
|
|
46
|
+
export const FILENAME_TO_OUTPUT = {
|
|
47
|
+
'proposal.md': 'proposal',
|
|
48
|
+
'schema-analysis.md': 'schemaAnalysis',
|
|
49
|
+
'spec.md': 'spec',
|
|
50
|
+
'clarifications.md': 'clarifications',
|
|
51
|
+
'contracts.cs': 'contracts',
|
|
52
|
+
'contracts.ts': 'contractsTs',
|
|
53
|
+
'contracts-vsa.cs': 'contractsVsa',
|
|
54
|
+
'plan.md': 'plan',
|
|
55
|
+
'tasks.md': 'tasks',
|
|
56
|
+
'design-system.md': 'uiDesignSystem',
|
|
57
|
+
'mockups.md': 'uiMockups',
|
|
58
|
+
'components.md': 'uiComponents',
|
|
59
|
+
'flows.md': 'uiFlows',
|
|
60
|
+
'decisions.md': 'decisions',
|
|
61
|
+
'recap.md': 'recap',
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
/** Protected spec files and the approval gate that locks them */
|
|
65
|
+
export const PROTECTED_SPEC_FILES = {
|
|
66
|
+
'schema-analysis.md': 'design',
|
|
67
|
+
'spec.md': 'design',
|
|
68
|
+
'contracts.cs': 'design',
|
|
69
|
+
'contracts.ts': 'design',
|
|
70
|
+
'contracts-vsa.cs': 'design',
|
|
71
|
+
'plan.md': 'plan',
|
|
72
|
+
'tasks.md': 'tasks',
|
|
73
|
+
'design-system.md': 'uiux',
|
|
74
|
+
'mockups.md': 'uiux',
|
|
75
|
+
'components.md': 'uiux',
|
|
76
|
+
'flows.md': 'uiux',
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Extract feature name from a .morph/features/{feature}/... path
|
|
81
|
+
* @param {string} filePath - File path to analyze
|
|
82
|
+
* @returns {string|null} Feature name or null
|
|
83
|
+
*/
|
|
84
|
+
export function extractFeatureName(filePath) {
|
|
85
|
+
const normalized = filePath.replace(/\\/g, '/');
|
|
86
|
+
const match = normalized.match(/\.morph\/features\/([^/]+)\//);
|
|
87
|
+
return match ? match[1] : null;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Extract phase subdirectory from a .morph/features/{feature}/{phaseDir}/... path
|
|
92
|
+
* @param {string} filePath - File path to analyze
|
|
93
|
+
* @returns {string|null} Phase directory (e.g., '0-proposal', '1-design') or null
|
|
94
|
+
*/
|
|
95
|
+
export function extractPhaseDir(filePath) {
|
|
96
|
+
const normalized = filePath.replace(/\\/g, '/');
|
|
97
|
+
const match = normalized.match(/\.morph\/features\/[^/]+\/(\d+-[^/]+)\//);
|
|
98
|
+
return match ? match[1] : null;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* Check if a file path is inside .morph/features/
|
|
103
|
+
* @param {string} filePath
|
|
104
|
+
* @returns {boolean}
|
|
105
|
+
*/
|
|
106
|
+
export function isFeaturePath(filePath) {
|
|
107
|
+
const normalized = filePath.replace(/\\/g, '/');
|
|
108
|
+
return normalized.includes('.morph/features/');
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* Check if a file path is inside .morph/framework/ (readonly)
|
|
113
|
+
* @param {string} filePath
|
|
114
|
+
* @returns {boolean}
|
|
115
|
+
*/
|
|
116
|
+
export function isFrameworkPath(filePath) {
|
|
117
|
+
const normalized = filePath.replace(/\\/g, '/');
|
|
118
|
+
return normalized.includes('.morph/framework/');
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* Check if a file path is state.json
|
|
123
|
+
* @param {string} filePath
|
|
124
|
+
* @returns {boolean}
|
|
125
|
+
*/
|
|
126
|
+
export function isStatePath(filePath) {
|
|
127
|
+
const normalized = filePath.replace(/\\/g, '/');
|
|
128
|
+
return normalized.endsWith('.morph/state.json');
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* Get the basename of a file path
|
|
133
|
+
* @param {string} filePath
|
|
134
|
+
* @returns {string}
|
|
135
|
+
*/
|
|
136
|
+
export function getBasename(filePath) {
|
|
137
|
+
const normalized = filePath.replace(/\\/g, '/');
|
|
138
|
+
return normalized.split('/').pop();
|
|
139
|
+
}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
---
|
|
2
|
-
paths:
|
|
3
|
-
- "**/*.cs"
|
|
4
|
-
- "**/*.csproj"
|
|
5
|
-
stacks:
|
|
6
|
-
- dotnet
|
|
7
|
-
- blazor
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
# C# and .NET Standards
|
|
11
|
-
|
|
12
|
-
@.morph/framework/standards/core/coding.md
|
|
13
|
-
@.morph/framework/standards/backend/dotnet/core.md
|
|
1
|
+
---
|
|
2
|
+
paths:
|
|
3
|
+
- "**/*.cs"
|
|
4
|
+
- "**/*.csproj"
|
|
5
|
+
stacks:
|
|
6
|
+
- dotnet
|
|
7
|
+
- blazor
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# C# and .NET Standards
|
|
11
|
+
|
|
12
|
+
@.morph/framework/standards/core/coding.md
|
|
13
|
+
@.morph/framework/standards/backend/dotnet/core.md
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
---
|
|
2
|
-
paths:
|
|
3
|
-
- "**/*.razor"
|
|
4
|
-
- "**/*.css"
|
|
5
|
-
- "**/*.scss"
|
|
6
|
-
stacks:
|
|
7
|
-
- blazor
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
# Frontend Standards
|
|
11
|
-
|
|
12
|
-
@.morph/framework/standards/frontend/blazor/design-checklist.md
|
|
13
|
-
@.morph/framework/standards/frontend/design-system/naming.md
|
|
1
|
+
---
|
|
2
|
+
paths:
|
|
3
|
+
- "**/*.razor"
|
|
4
|
+
- "**/*.css"
|
|
5
|
+
- "**/*.scss"
|
|
6
|
+
stacks:
|
|
7
|
+
- blazor
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Frontend Standards
|
|
11
|
+
|
|
12
|
+
@.morph/framework/standards/frontend/blazor/design-checklist.md
|
|
13
|
+
@.morph/framework/standards/frontend/design-system/naming.md
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
---
|
|
2
|
-
paths:
|
|
3
|
-
- "**/*.bicep"
|
|
4
|
-
- "**/Dockerfile"
|
|
5
|
-
- "**/docker-compose*.yml"
|
|
6
|
-
- "**/pipelines/**"
|
|
7
|
-
- "**/.github/workflows/**"
|
|
8
|
-
stacks:
|
|
9
|
-
- azure
|
|
10
|
-
- docker
|
|
11
|
-
---
|
|
12
|
-
|
|
13
|
-
# Infrastructure Standards
|
|
14
|
-
|
|
15
|
-
@.morph/framework/standards/infrastructure/azure/azure.md
|
|
16
|
-
@.morph/framework/standards/infrastructure/docker/easypanel-deploy.md
|
|
1
|
+
---
|
|
2
|
+
paths:
|
|
3
|
+
- "**/*.bicep"
|
|
4
|
+
- "**/Dockerfile"
|
|
5
|
+
- "**/docker-compose*.yml"
|
|
6
|
+
- "**/pipelines/**"
|
|
7
|
+
- "**/.github/workflows/**"
|
|
8
|
+
stacks:
|
|
9
|
+
- azure
|
|
10
|
+
- docker
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Infrastructure Standards
|
|
14
|
+
|
|
15
|
+
@.morph/framework/standards/infrastructure/azure/azure.md
|
|
16
|
+
@.morph/framework/standards/infrastructure/docker/easypanel-deploy.md
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
---
|
|
2
|
-
paths:
|
|
3
|
-
- "tests/**"
|
|
4
|
-
- "**/*.test.*"
|
|
5
|
-
- "**/*.spec.*"
|
|
6
|
-
- "**/*Tests.cs"
|
|
7
|
-
stacks:
|
|
8
|
-
- dotnet
|
|
9
|
-
- blazor
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
# Testing Standards
|
|
13
|
-
|
|
14
|
-
@.morph/framework/standards/core/testing.md
|
|
1
|
+
---
|
|
2
|
+
paths:
|
|
3
|
+
- "tests/**"
|
|
4
|
+
- "**/*.test.*"
|
|
5
|
+
- "**/*.spec.*"
|
|
6
|
+
- "**/*Tests.cs"
|
|
7
|
+
stacks:
|
|
8
|
+
- dotnet
|
|
9
|
+
- blazor
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Testing Standards
|
|
13
|
+
|
|
14
|
+
@.morph/framework/standards/core/testing.md
|