@polymorphism-tech/morph-spec 4.10.5 → 4.10.6
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 +3 -3
- package/claude-plugin.json +1 -1
- package/docs/CHEATSHEET.md +1 -1
- package/docs/QUICKSTART.md +1 -1
- package/framework/agents/backend/hangfire-orchestrator.md +1 -1
- package/framework/agents/backend/ms-agent-expert.md +2 -1
- package/framework/agents/integrations/asaas-financial.md +1 -1
- package/framework/agents/integrations/clerk-auth.md +1 -2
- package/framework/agents/integrations/hangfire-integration.md +1 -1
- package/framework/agents/integrations/resend-email.md +1 -1
- 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/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 +3 -3
- package/framework/skills/level-1-workflows/morph-phase-tasks/SKILL.md +1 -1
- package/framework/skills/level-1-workflows/morph-phase-uiux/SKILL.md +1 -1
- package/framework/skills/level-1-workflows/morph-scope-escalation/SKILL.md +1 -1
- package/package.json +1 -1
- package/src/commands/project/doctor.js +2 -2
- package/src/commands/project/init.js +10 -2
- package/src/commands/project/update.js +11 -8
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.10.
|
|
6
|
+
**Version:** 4.10.6
|
|
7
7
|
**Requires:** Node.js 18+, Claude Code
|
|
8
8
|
|
|
9
9
|
---
|
|
@@ -358,7 +358,7 @@ npm install -g @polymorphism-tech/morph-spec
|
|
|
358
358
|
|
|
359
359
|
### Hook not triggering on SessionStart
|
|
360
360
|
|
|
361
|
-
Ensure `.claude/settings.local.json` is not gitignored in your project. The file must be present for Claude Code to load hooks. If it is missing, re-run `morph-spec init --force`.
|
|
361
|
+
Ensure `.claude/settings.local.json` is not gitignored in your project. The file must be present for Claude Code to load hooks. If it is missing, re-run `morph-spec setup-infra` or `morph-spec init --force`.
|
|
362
362
|
|
|
363
363
|
---
|
|
364
364
|
|
|
@@ -376,4 +376,4 @@ Code generated by morph-spec (contracts, templates, implementation output) belon
|
|
|
376
376
|
|
|
377
377
|
---
|
|
378
378
|
|
|
379
|
-
*morph-spec v4.10.
|
|
379
|
+
*morph-spec v4.10.6 by [Polymorphism Tech](https://polymorphism.tech)*
|
package/claude-plugin.json
CHANGED
package/docs/CHEATSHEET.md
CHANGED
package/docs/QUICKSTART.md
CHANGED
|
@@ -3,7 +3,7 @@ name: hangfire-orchestrator
|
|
|
3
3
|
description: Hangfire Orchestrator specialist for background job design, recurring task scheduling, queue management, and idempotent job patterns in .NET. Use when implementing background jobs, scheduling recurring tasks, managing job queues, or integrating Hangfire with .NET services.
|
|
4
4
|
allowed-tools: Read, Write, Edit, Bash, Glob, Grep
|
|
5
5
|
stacks:
|
|
6
|
-
-
|
|
6
|
+
- hangfire
|
|
7
7
|
---
|
|
8
8
|
|
|
9
9
|
# Hangfire Orchestrator
|
|
@@ -3,7 +3,8 @@ name: ms-agent-expert
|
|
|
3
3
|
description: Microsoft Agent Framework Expert for Semantic Kernel, AI extensions, function calling, MCP/A2A protocols, and agentic pipeline implementation. Use when building AI agents with Semantic Kernel, implementing tool/plugin calling, designing multi-agent workflows, or integrating LLMs with .NET services.
|
|
4
4
|
allowed-tools: Read, Write, Edit, Bash, Glob, Grep
|
|
5
5
|
stacks:
|
|
6
|
-
-
|
|
6
|
+
- semantic-kernel
|
|
7
|
+
- ms-agents
|
|
7
8
|
---
|
|
8
9
|
|
|
9
10
|
# Agent Framework Expert
|
|
@@ -3,7 +3,7 @@ name: asaas-financial
|
|
|
3
3
|
description: Asaas Financial specialist for Asaas API integration, payment processing, Pix/boleto billing, and subscription management in Brazilian projects. Use when integrating Asaas payments, implementing billing flows, handling payment webhooks, or building subscription management features.
|
|
4
4
|
allowed-tools: Read, Write, Edit, Bash, Glob, Grep
|
|
5
5
|
stacks:
|
|
6
|
-
-
|
|
6
|
+
- asaas
|
|
7
7
|
---
|
|
8
8
|
|
|
9
9
|
# Asaas Financial
|
|
@@ -3,8 +3,7 @@ name: clerk-auth
|
|
|
3
3
|
description: Clerk Auth specialist for Clerk SDK integration, social login, JWT session management, and user management in Next.js and .NET projects. Use when integrating Clerk authentication, implementing social login flows, managing user sessions with Clerk JWT, or protecting routes with Clerk middleware.
|
|
4
4
|
allowed-tools: Read, Write, Edit, Bash, Glob, Grep
|
|
5
5
|
stacks:
|
|
6
|
-
-
|
|
7
|
-
- nextjs
|
|
6
|
+
- clerk
|
|
8
7
|
---
|
|
9
8
|
|
|
10
9
|
# Clerk Auth
|
|
@@ -3,7 +3,7 @@ name: hangfire-orchestrator-integration
|
|
|
3
3
|
description: Hangfire integration specialist for connecting background jobs with external services, implementing webhook handlers, and building event-driven workflows in .NET. Use when integrating Hangfire with third-party APIs, processing webhooks asynchronously, or designing event-driven job pipelines.
|
|
4
4
|
allowed-tools: Read, Write, Edit, Bash, Glob, Grep
|
|
5
5
|
stacks:
|
|
6
|
-
-
|
|
6
|
+
- hangfire
|
|
7
7
|
---
|
|
8
8
|
|
|
9
9
|
# Hangfire Orchestrator
|
|
@@ -3,7 +3,7 @@ name: resend-email
|
|
|
3
3
|
description: Resend Email specialist for transactional email, HTML/React email templates, Resend API integration, and notification systems in .NET and Next.js. Use when implementing email notifications, integrating Resend API, creating transactional email templates, or configuring email delivery in MORPH-SPEC projects.
|
|
4
4
|
allowed-tools: Read, Write, Edit, Bash, Glob, Grep
|
|
5
5
|
stacks:
|
|
6
|
-
-
|
|
6
|
+
- resend
|
|
7
7
|
---
|
|
8
8
|
|
|
9
9
|
# Resend Email
|
|
@@ -4,7 +4,7 @@ description: MORPH-SPEC Phase 3 (Clarify). Iterative clarification loop driven b
|
|
|
4
4
|
argument-hint: "[feature-name]"
|
|
5
5
|
user-invocable: false
|
|
6
6
|
allowed-tools: Read, Write, Edit, Bash, Glob, Grep, AskUserQuestion
|
|
7
|
-
cliVersion: "4.10.
|
|
7
|
+
cliVersion: "4.10.6"
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# MORPH Clarify — Phase 3
|
|
@@ -3,7 +3,7 @@ name: morph-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, AskUserQuestion
|
|
6
|
-
cliVersion: "4.10.
|
|
6
|
+
cliVersion: "4.10.6"
|
|
7
7
|
---
|
|
8
8
|
|
|
9
9
|
# MORPH Codebase Analysis - Design Sub-phase
|
|
@@ -4,7 +4,7 @@ description: MORPH-SPEC Phase 2 (Design). Schema-first interactive design: reads
|
|
|
4
4
|
argument-hint: "[feature-name]"
|
|
5
5
|
user-invocable: false
|
|
6
6
|
allowed-tools: Read, Write, Edit, Bash, Glob, Grep, AskUserQuestion, Agent
|
|
7
|
-
cliVersion: "4.10.
|
|
7
|
+
cliVersion: "4.10.6"
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# MORPH Design — Phase 2
|
|
@@ -4,7 +4,7 @@ description: MORPH-SPEC Phase 4 (Plan). Generates a detailed implementation plan
|
|
|
4
4
|
argument-hint: "[feature-name]"
|
|
5
5
|
user-invocable: false
|
|
6
6
|
allowed-tools: Read, Write, Edit, Bash, Glob, Grep, AskUserQuestion
|
|
7
|
-
cliVersion: "4.10.
|
|
7
|
+
cliVersion: "4.10.6"
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# MORPH Plan — Phase 4
|
|
@@ -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, AskUserQuestion
|
|
7
|
-
cliVersion: "4.10.
|
|
7
|
+
cliVersion: "4.10.6"
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# MORPH Setup — Phase 1
|
|
@@ -161,10 +161,10 @@ npx morph-spec doctor 2>&1 | grep -A 1 "agents completeness"
|
|
|
161
161
|
|
|
162
162
|
If the output shows **missing agents**, inform the user:
|
|
163
163
|
|
|
164
|
-
> ⚠ Some agents for your stack are not installed. Run `npx morph-spec
|
|
164
|
+
> ⚠ Some agents for your stack are not installed. Run `npx morph-spec setup-infra` to install them.
|
|
165
165
|
|
|
166
166
|
Use `AskUserQuestion` with header `"Agents"` and options:
|
|
167
|
-
- **Install now** — run `npx morph-spec
|
|
167
|
+
- **Install now** — run `npx morph-spec setup-infra` to reinstall with current stack tags
|
|
168
168
|
- **Continue without** — proceed with available agents (may lack specialized support)
|
|
169
169
|
|
|
170
170
|
If "Install now" is selected, run the command and continue.
|
|
@@ -4,7 +4,7 @@ description: MORPH-SPEC Phase 4 (Tasks). Breaks approved spec into bottom-up ord
|
|
|
4
4
|
argument-hint: "[feature-name]"
|
|
5
5
|
user-invocable: false
|
|
6
6
|
allowed-tools: Read, Write, Edit, Bash, Glob, Grep, AskUserQuestion
|
|
7
|
-
cliVersion: "4.10.
|
|
7
|
+
cliVersion: "4.10.6"
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# MORPH Tasks — Phase 4
|
|
@@ -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, AskUserQuestion
|
|
7
|
-
cliVersion: "4.10.
|
|
7
|
+
cliVersion: "4.10.6"
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# MORPH UI/UX Design - Phase 1.5
|
|
@@ -4,7 +4,7 @@ description: Guided workflow for mid-implementation scope escalation — analyze
|
|
|
4
4
|
user-invocable: true
|
|
5
5
|
argument-hint: "[feature-name]"
|
|
6
6
|
allowed-tools: Read, Write, Edit, Bash, Glob, Grep, AskUserQuestion
|
|
7
|
-
cliVersion: "4.10.
|
|
7
|
+
cliVersion: "4.10.6"
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# Scope Escalation Workflow
|
package/package.json
CHANGED
|
@@ -707,7 +707,7 @@ export async function doctorCommand(options = {}) {
|
|
|
707
707
|
checks.push({
|
|
708
708
|
name: 'agents completeness',
|
|
709
709
|
status: 'warn',
|
|
710
|
-
msg: `${missing.length} agent(s) missing for [${projectTags.join(', ')}]: ${names} — run morph-spec
|
|
710
|
+
msg: `${missing.length} agent(s) missing for [${projectTags.join(', ')}]: ${names} — run morph-spec setup-infra`
|
|
711
711
|
});
|
|
712
712
|
hasWarnings = true;
|
|
713
713
|
} else {
|
|
@@ -871,7 +871,7 @@ export async function doctorCommand(options = {}) {
|
|
|
871
871
|
logger.blank();
|
|
872
872
|
|
|
873
873
|
if (hasErrors) {
|
|
874
|
-
logger.error('Some checks failed. Run "morph-spec
|
|
874
|
+
logger.error('Some checks failed. Run "morph-spec setup-infra" to fix.');
|
|
875
875
|
process.exit(1);
|
|
876
876
|
} else if (hasWarnings) {
|
|
877
877
|
logger.warn('Some checks need attention.');
|
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
writeJson,
|
|
11
11
|
writeFile
|
|
12
12
|
} from '../../utils/file-copier.js';
|
|
13
|
-
import { getInstalledCLIVersion } from '../../utils/version-checker.js';
|
|
13
|
+
import { getInstalledCLIVersion, checkProjectOutdated } from '../../utils/version-checker.js';
|
|
14
14
|
import { installClaudeHooks } from '../../utils/claude-settings-manager.js';
|
|
15
15
|
import inquirer from 'inquirer';
|
|
16
16
|
import { detectProject } from '../../lib/detectors/index.js';
|
|
@@ -27,6 +27,7 @@ import { setupInfra, installRulesForStack } from '../../scripts/setup-infra.js';
|
|
|
27
27
|
import { installSkills } from '../../utils/skills-installer.js';
|
|
28
28
|
import { installAgents, installDomainAgents } from '../../utils/agents-installer.js';
|
|
29
29
|
import { getProjectTags } from '../../lib/stack-filter.js';
|
|
30
|
+
import { updateCommand } from './update.js';
|
|
30
31
|
|
|
31
32
|
export async function initCommand(options) {
|
|
32
33
|
const targetPath = options.path || process.cwd();
|
|
@@ -39,7 +40,14 @@ export async function initCommand(options) {
|
|
|
39
40
|
const morphPath = join(targetPath, '.morph');
|
|
40
41
|
if (await pathExists(morphPath)) {
|
|
41
42
|
if (!options.force) {
|
|
42
|
-
|
|
43
|
+
// Check if project version is outdated — auto-update instead of blocking
|
|
44
|
+
const projectCheck = await checkProjectOutdated(targetPath);
|
|
45
|
+
if (projectCheck.isOutdated) {
|
|
46
|
+
logger.info(`MORPH already initialized (v${projectCheck.current}). Framework update available (v${projectCheck.cliVersion}).`);
|
|
47
|
+
logger.blank();
|
|
48
|
+
return updateCommand(options);
|
|
49
|
+
}
|
|
50
|
+
logger.warn('MORPH already initialized in this directory (up to date).');
|
|
43
51
|
logger.dim('Use --force to overwrite existing installation.');
|
|
44
52
|
process.exit(1);
|
|
45
53
|
}
|
|
@@ -29,6 +29,7 @@ import { installClaudeHooks, installGlobalStatusline, installVSCodeTerminalSetti
|
|
|
29
29
|
import { installSkills } from '../../utils/skills-installer.js';
|
|
30
30
|
import { installAgents, installDomainAgents } from '../../utils/agents-installer.js';
|
|
31
31
|
import { injectMorphImport } from '../../utils/claude-md-injector.js';
|
|
32
|
+
import { getProjectTags } from '../../lib/stack-filter.js';
|
|
32
33
|
|
|
33
34
|
/**
|
|
34
35
|
* Backup user's config.json before cleaning
|
|
@@ -262,19 +263,21 @@ export async function updateCommand(options) {
|
|
|
262
263
|
logger.warn(' ⚠ framework/commands/ source missing — commands not updated');
|
|
263
264
|
}
|
|
264
265
|
|
|
266
|
+
// Compute project tags for stack-aware installation of skills, agents, and rules
|
|
267
|
+
let projectTags = [];
|
|
268
|
+
try {
|
|
269
|
+
const cfg = await readJson(join(morphPath, 'config', 'config.json'));
|
|
270
|
+
projectTags = getProjectTags(cfg);
|
|
271
|
+
} catch { /* ignore — config may not exist yet */ }
|
|
272
|
+
|
|
265
273
|
// Sync morph skills to .claude/skills/ for native Claude Code discovery
|
|
266
274
|
updateSpinner.text = 'Syncing morph skills to .claude/skills/...';
|
|
267
|
-
await installSkills(targetPath);
|
|
275
|
+
await installSkills(targetPath, { projectTags });
|
|
268
276
|
|
|
269
277
|
// Sync native subagents to .claude/agents/
|
|
270
278
|
updateSpinner.text = 'Syncing agents to .claude/agents/...';
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
const cfg = await readJson(join(morphPath, 'config', 'config.json'));
|
|
274
|
-
projectStack = cfg?.project?.stack ?? null;
|
|
275
|
-
} catch { /* ignore — config may not exist yet */ }
|
|
276
|
-
await installAgents(targetPath, frameworkDir, { projectStack });
|
|
277
|
-
await installDomainAgents(targetPath, frameworkDir);
|
|
279
|
+
await installAgents(targetPath, frameworkDir, { projectTags });
|
|
280
|
+
await installDomainAgents(targetPath, frameworkDir, { projectTags });
|
|
278
281
|
|
|
279
282
|
// Sync path-scoped rules to .claude/rules/
|
|
280
283
|
updateSpinner.text = 'Syncing rules to .claude/rules/...';
|