@polymorphism-tech/morph-spec 4.8.17 → 4.8.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/bin/morph-spec.js +1 -1
- package/claude-plugin.json +1 -1
- package/docs/CHEATSHEET.md +1 -1
- package/docs/QUICKSTART.md +1 -1
- package/framework/skills/level-1-workflows/phase-clarify/SKILL.md +1 -1
- package/framework/skills/level-1-workflows/phase-codebase-analysis/SKILL.md +1 -1
- package/framework/skills/level-1-workflows/phase-design/SKILL.md +1 -1
- package/framework/skills/level-1-workflows/phase-implement/SKILL.md +1 -1
- package/framework/skills/level-1-workflows/phase-setup/SKILL.md +1 -1
- package/framework/skills/level-1-workflows/phase-tasks/SKILL.md +1 -1
- package/framework/skills/level-1-workflows/phase-uiux/SKILL.md +1 -1
- package/package.json +1 -1
- package/src/scripts/global-install.js +24 -12
- package/src/utils/banner.js +51 -0
package/README.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
> Spec-driven development framework for multi-stack projects. Turns feature requests into implementation-ready code through structured, AI-orchestrated phases.
|
|
4
4
|
|
|
5
5
|
**Package:** `@polymorphism-tech/morph-spec`
|
|
6
|
-
**Version:** 4.8.
|
|
6
|
+
**Version:** 4.8.18
|
|
7
7
|
**Requires:** Node.js 18+, Claude Code
|
|
8
8
|
|
|
9
9
|
---
|
|
@@ -376,4 +376,4 @@ Code generated by morph-spec (contracts, templates, implementation output) belon
|
|
|
376
376
|
|
|
377
377
|
---
|
|
378
378
|
|
|
379
|
-
*morph-spec v4.8.
|
|
379
|
+
*morph-spec v4.8.18 by [Polymorphism Tech](https://polymorphism.tech)*
|
package/bin/morph-spec.js
CHANGED
package/claude-plugin.json
CHANGED
package/docs/CHEATSHEET.md
CHANGED
package/docs/QUICKSTART.md
CHANGED
|
@@ -4,7 +4,7 @@ description: MORPH-SPEC Phase 3 (Clarify). Reviews spec.md for ambiguities, gene
|
|
|
4
4
|
argument-hint: "[feature-name]"
|
|
5
5
|
user-invocable: false
|
|
6
6
|
allowed-tools: Read, Write, Edit, Bash, Glob, Grep
|
|
7
|
-
cliVersion: "4.8.
|
|
7
|
+
cliVersion: "4.8.18"
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# MORPH Clarify - FASE 3
|
|
@@ -3,7 +3,7 @@ name: phase-codebase-analysis
|
|
|
3
3
|
description: MORPH-SPEC Design sub-phase that analyzes existing codebase and database schema, producing schema-analysis.md with real column names, types, relationships, and field mismatches. Use at the start of Design phase before generating contracts.cs to prevent incorrect field names or types.
|
|
4
4
|
user-invocable: false
|
|
5
5
|
allowed-tools: Read, Write, Edit, Bash, Glob, Grep
|
|
6
|
-
cliVersion: "4.8.
|
|
6
|
+
cliVersion: "4.8.18"
|
|
7
7
|
---
|
|
8
8
|
|
|
9
9
|
# MORPH Codebase Analysis - Sub-fase de DESIGN
|
|
@@ -4,7 +4,7 @@ description: MORPH-SPEC Phase 2 (Design). Analyzes codebase/schema, then produce
|
|
|
4
4
|
argument-hint: "[feature-name]"
|
|
5
5
|
user-invocable: false
|
|
6
6
|
allowed-tools: Read, Write, Edit, Bash, Glob, Grep
|
|
7
|
-
cliVersion: "4.8.
|
|
7
|
+
cliVersion: "4.8.18"
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# MORPH Design - FASE 2
|
|
@@ -4,7 +4,7 @@ description: MORPH-SPEC Phase 1 (Setup). Reads project context, detects tech sta
|
|
|
4
4
|
argument-hint: "[feature-name]"
|
|
5
5
|
user-invocable: false
|
|
6
6
|
allowed-tools: Read, Write, Edit, Bash, Glob, Grep
|
|
7
|
-
cliVersion: "4.8.
|
|
7
|
+
cliVersion: "4.8.18"
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# MORPH Setup - FASE 1
|
|
@@ -4,7 +4,7 @@ description: MORPH-SPEC Phase 1.5 (UI/UX). Creates design-system.md, mockups.md,
|
|
|
4
4
|
argument-hint: "[feature-name]"
|
|
5
5
|
user-invocable: false
|
|
6
6
|
allowed-tools: Read, Write, Edit, Bash, Glob, Grep
|
|
7
|
-
cliVersion: "4.8.
|
|
7
|
+
cliVersion: "4.8.18"
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# MORPH UI/UX Design - FASE 1.5
|
package/package.json
CHANGED
|
@@ -30,17 +30,29 @@ export async function installGlobalSkill(claudeDir = join(homedir(), '.claude'))
|
|
|
30
30
|
// Run as postinstall script
|
|
31
31
|
if (process.argv[1] === fileURLToPath(import.meta.url)) {
|
|
32
32
|
const HOOKS_SRC = join(FRAMEWORK_DIR, 'hooks', 'claude-code');
|
|
33
|
+
const { readFileSync } = await import('fs');
|
|
34
|
+
const pkg = JSON.parse(readFileSync(new URL('../../package.json', import.meta.url), 'utf8'));
|
|
33
35
|
|
|
34
|
-
await Promise.allSettled([
|
|
35
|
-
installGlobalSkill()
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
36
|
+
const [skillResult, statuslineResult] = await Promise.allSettled([
|
|
37
|
+
installGlobalSkill(),
|
|
38
|
+
installGlobalStatusline(HOOKS_SRC),
|
|
39
|
+
]);
|
|
40
|
+
|
|
41
|
+
const results = [
|
|
42
|
+
{
|
|
43
|
+
ok: skillResult.status === 'fulfilled',
|
|
44
|
+
label: 'morph-init skill',
|
|
45
|
+
path: '~/.claude/skills/',
|
|
46
|
+
error: skillResult.reason?.message,
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
ok: statuslineResult.status === 'fulfilled',
|
|
50
|
+
label: 'statusline',
|
|
51
|
+
path: '~/.claude/',
|
|
52
|
+
error: statuslineResult.reason?.message,
|
|
53
|
+
},
|
|
54
|
+
];
|
|
55
|
+
|
|
56
|
+
const { printInstallBanner } = await import('../utils/banner.js');
|
|
57
|
+
printInstallBanner({ version: pkg.version, nodeVersion: process.version, results });
|
|
46
58
|
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
// src/utils/banner.js
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import { type as osType, release as osRelease } from 'os';
|
|
4
|
+
|
|
5
|
+
const BRAND = chalk.hex('#7C3AED');
|
|
6
|
+
const DIM = chalk.dim;
|
|
7
|
+
|
|
8
|
+
function platformLabel() {
|
|
9
|
+
const t = osType();
|
|
10
|
+
const r = osRelease().split('.').slice(0, 2).join('.');
|
|
11
|
+
if (t === 'Windows_NT') return `Windows ${r}`;
|
|
12
|
+
if (t === 'Darwin') return `macOS ${r}`;
|
|
13
|
+
return `Linux ${r}`;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export function printInstallBanner({ version, nodeVersion, results = [] }) {
|
|
17
|
+
const TITLE = '◆ M O R P H - S P E C';
|
|
18
|
+
const pad = ` ${TITLE} `;
|
|
19
|
+
const line = '─'.repeat(pad.length);
|
|
20
|
+
|
|
21
|
+
const box = [
|
|
22
|
+
BRAND(`┌${line}┐`),
|
|
23
|
+
BRAND('│') + chalk.bold.white(pad) + BRAND('│'),
|
|
24
|
+
BRAND(`└${line}┘`),
|
|
25
|
+
].join('\n');
|
|
26
|
+
|
|
27
|
+
const sep = (label) => DIM(` ── ${label} ${'─'.repeat(Math.max(0, 30 - label.length))}`);
|
|
28
|
+
|
|
29
|
+
const itemLines = results.map(r =>
|
|
30
|
+
r.ok
|
|
31
|
+
? ` ${chalk.green('✔')} ${r.label.padEnd(20)} ${DIM(r.path)}`
|
|
32
|
+
: ` ${chalk.red('✖')} ${r.label.padEnd(20)} ${chalk.red(r.error ?? 'failed')}`
|
|
33
|
+
);
|
|
34
|
+
|
|
35
|
+
console.log([
|
|
36
|
+
'',
|
|
37
|
+
box,
|
|
38
|
+
'',
|
|
39
|
+
` Version ${chalk.white(version)}`,
|
|
40
|
+
` Platform ${chalk.white(platformLabel())}`,
|
|
41
|
+
` Node ${chalk.white(nodeVersion)}`,
|
|
42
|
+
'',
|
|
43
|
+
sep('Installed'),
|
|
44
|
+
...itemLines,
|
|
45
|
+
'',
|
|
46
|
+
sep('Next'),
|
|
47
|
+
` ${chalk.cyan('1.')} Open your project in Claude Code`,
|
|
48
|
+
` ${chalk.cyan('2.')} Run ${chalk.bold.white('/morph-init')}`,
|
|
49
|
+
'',
|
|
50
|
+
].join('\n'));
|
|
51
|
+
}
|