myaidev-method 0.3.4 → 0.3.5
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-plugin/plugin.json +0 -1
- package/.env.example +5 -4
- package/CHANGELOG.md +2 -2
- package/CONTENT_CREATION_GUIDE.md +489 -3211
- package/DEVELOPER_USE_CASES.md +1 -1
- package/MODULAR_INSTALLATION.md +2 -2
- package/README.md +39 -33
- package/TECHNICAL_ARCHITECTURE.md +1 -1
- package/USER_GUIDE.md +242 -190
- package/agents/content-editor-agent.md +90 -0
- package/agents/content-planner-agent.md +97 -0
- package/agents/content-research-agent.md +62 -0
- package/agents/content-seo-agent.md +101 -0
- package/agents/content-writer-agent.md +69 -0
- package/agents/infographic-analyzer-agent.md +63 -0
- package/agents/infographic-designer-agent.md +72 -0
- package/bin/cli.js +776 -422
- package/{content-rules.example.md → content-rules-example.md} +2 -2
- package/dist/mcp/health-check.js +82 -68
- package/dist/mcp/mcp-config.json +8 -0
- package/dist/mcp/openstack-server.js +1746 -1262
- package/dist/server/.tsbuildinfo +1 -1
- package/extension.json +21 -4
- package/package.json +181 -184
- package/skills/company-config/SKILL.md +133 -0
- package/skills/configure/SKILL.md +1 -1
- package/skills/myai-configurator/SKILL.md +77 -0
- package/skills/myai-configurator/content-creation-configurator/SKILL.md +516 -0
- package/skills/myai-configurator/content-maintenance-configurator/SKILL.md +397 -0
- package/skills/myai-content-enrichment/SKILL.md +114 -0
- package/skills/myai-content-ideation/SKILL.md +288 -0
- package/skills/myai-content-ideation/evals/evals.json +182 -0
- package/skills/myai-content-production-coordinator/SKILL.md +946 -0
- package/skills/{content-rules-setup → myai-content-rules-setup}/SKILL.md +1 -1
- package/skills/{content-verifier → myai-content-verifier}/SKILL.md +1 -1
- package/skills/myai-content-writer/SKILL.md +333 -0
- package/skills/{infographic → myai-infographic}/SKILL.md +1 -1
- package/skills/myai-proprietary-content-verifier/SKILL.md +175 -0
- package/skills/myai-proprietary-content-verifier/evals/evals.json +36 -0
- package/skills/myai-skill-builder/SKILL.md +699 -0
- package/skills/myai-skill-builder/agents/analyzer-agent.md +137 -0
- package/skills/myai-skill-builder/agents/comparator-agent.md +77 -0
- package/skills/myai-skill-builder/agents/grader-agent.md +103 -0
- package/skills/myai-skill-builder/assets/eval_review.html +131 -0
- package/skills/myai-skill-builder/references/schemas.md +211 -0
- package/skills/myai-skill-builder/scripts/aggregate_benchmark.py +190 -0
- package/skills/myai-skill-builder/scripts/generate_review.py +381 -0
- package/skills/myai-skill-builder/scripts/package_skill.py +91 -0
- package/skills/myai-skill-builder/scripts/run_eval.py +105 -0
- package/skills/myai-skill-builder/scripts/run_loop.py +211 -0
- package/skills/myai-skill-builder/scripts/utils.py +123 -0
- package/skills/myai-visual-generator/SKILL.md +125 -0
- package/skills/myai-visual-generator/evals/evals.json +155 -0
- package/skills/myai-visual-generator/references/infographic-pipeline.md +73 -0
- package/skills/myai-visual-generator/references/research-visuals.md +57 -0
- package/skills/myai-visual-generator/references/services.md +89 -0
- package/skills/myai-visual-generator/scripts/visual-generation-utils.js +1272 -0
- package/skills/myaidev-figma/SKILL.md +212 -0
- package/skills/myaidev-figma/capture.js +133 -0
- package/skills/myaidev-figma/crawl.js +130 -0
- package/skills/myaidev-figma-configure/SKILL.md +130 -0
- package/skills/openstack-manager/SKILL.md +1 -1
- package/skills/payloadcms-publisher/SKILL.md +141 -77
- package/skills/payloadcms-publisher/references/field-mapping.md +142 -0
- package/skills/payloadcms-publisher/references/lexical-format.md +97 -0
- package/skills/security-auditor/SKILL.md +1 -1
- package/src/cli/commands/addon.js +105 -7
- package/src/config/workflows.js +172 -228
- package/src/lib/ascii-banner.js +197 -182
- package/src/lib/{content-coordinator.js → content-production-coordinator.js} +649 -459
- package/src/lib/installation-detector.js +93 -59
- package/src/lib/payloadcms-utils.js +285 -510
- package/src/lib/workflow-installer.js +55 -0
- package/src/mcp/health-check.js +82 -68
- package/src/mcp/openstack-server.js +1746 -1262
- package/src/scripts/configure-visual-apis.js +224 -173
- package/src/scripts/configure-wordpress-mcp.js +96 -66
- package/src/scripts/init/install.js +109 -85
- package/src/scripts/init-project.js +138 -67
- package/src/scripts/utils/write-content.js +67 -52
- package/src/scripts/wordpress/publish-to-wordpress.js +128 -128
- package/src/templates/claude/CLAUDE.md +19 -12
- package/hooks/hooks.json +0 -26
- package/skills/content-coordinator/SKILL.md +0 -130
- package/skills/content-enrichment/SKILL.md +0 -80
- package/skills/content-writer/SKILL.md +0 -285
- package/skills/skill-builder/SKILL.md +0 -417
- package/skills/visual-generator/SKILL.md +0 -140
- /package/skills/{content-writer → myai-content-writer}/agents/editor-agent.md +0 -0
- /package/skills/{content-writer → myai-content-writer}/agents/planner-agent.md +0 -0
- /package/skills/{content-writer → myai-content-writer}/agents/research-agent.md +0 -0
- /package/skills/{content-writer → myai-content-writer}/agents/seo-agent.md +0 -0
- /package/skills/{content-writer → myai-content-writer}/agents/visual-planner-agent.md +0 -0
- /package/skills/{content-writer → myai-content-writer}/agents/writer-agent.md +0 -0
|
@@ -10,17 +10,17 @@
|
|
|
10
10
|
* This utility ensures backward compatibility during migration to plugin architecture.
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
|
-
import fs from
|
|
14
|
-
import path from
|
|
13
|
+
import fs from "fs-extra";
|
|
14
|
+
import path from "path";
|
|
15
15
|
|
|
16
16
|
/**
|
|
17
17
|
* Installation types enum
|
|
18
18
|
*/
|
|
19
19
|
export const InstallationType = {
|
|
20
|
-
NONE:
|
|
21
|
-
LEGACY:
|
|
22
|
-
PLUGIN:
|
|
23
|
-
BOTH:
|
|
20
|
+
NONE: "none",
|
|
21
|
+
LEGACY: "legacy",
|
|
22
|
+
PLUGIN: "plugin",
|
|
23
|
+
BOTH: "both",
|
|
24
24
|
};
|
|
25
25
|
|
|
26
26
|
/**
|
|
@@ -32,29 +32,37 @@ export const InstallationType = {
|
|
|
32
32
|
export async function detectInstallation(projectRoot = process.cwd()) {
|
|
33
33
|
const checks = {
|
|
34
34
|
// Legacy installation indicators
|
|
35
|
-
hasClaudeDir: await fs.pathExists(path.join(projectRoot,
|
|
36
|
-
hasClaudeCommands: await fs.pathExists(
|
|
37
|
-
|
|
38
|
-
|
|
35
|
+
hasClaudeDir: await fs.pathExists(path.join(projectRoot, ".claude")),
|
|
36
|
+
hasClaudeCommands: await fs.pathExists(
|
|
37
|
+
path.join(projectRoot, ".claude", "commands"),
|
|
38
|
+
),
|
|
39
|
+
hasClaudeAgents: await fs.pathExists(
|
|
40
|
+
path.join(projectRoot, ".claude", "agents"),
|
|
41
|
+
),
|
|
42
|
+
hasManifest: await fs.pathExists(
|
|
43
|
+
path.join(projectRoot, ".myaidev-manifest.json"),
|
|
44
|
+
),
|
|
39
45
|
|
|
40
46
|
// Plugin installation indicators
|
|
41
|
-
hasPluginDir: await fs.pathExists(path.join(projectRoot,
|
|
42
|
-
hasPluginJson: await fs.pathExists(
|
|
47
|
+
hasPluginDir: await fs.pathExists(path.join(projectRoot, ".claude-plugin")),
|
|
48
|
+
hasPluginJson: await fs.pathExists(
|
|
49
|
+
path.join(projectRoot, ".claude-plugin", "plugin.json"),
|
|
50
|
+
),
|
|
43
51
|
|
|
44
52
|
// Skills-based installation
|
|
45
|
-
hasSkills: await fs.pathExists(path.join(projectRoot,
|
|
53
|
+
hasSkills: await fs.pathExists(path.join(projectRoot, "skills")),
|
|
46
54
|
|
|
47
55
|
// Check for myaidev-specific files
|
|
48
56
|
hasMyAIDevCommands: false,
|
|
49
|
-
hasMyAIDevAgents: false
|
|
57
|
+
hasMyAIDevAgents: false,
|
|
50
58
|
};
|
|
51
59
|
|
|
52
60
|
// Check for myaidev-specific commands
|
|
53
61
|
if (checks.hasClaudeCommands) {
|
|
54
|
-
const commandsDir = path.join(projectRoot,
|
|
62
|
+
const commandsDir = path.join(projectRoot, ".claude", "commands");
|
|
55
63
|
try {
|
|
56
64
|
const files = await fs.readdir(commandsDir);
|
|
57
|
-
checks.hasMyAIDevCommands = files.some(f => f.startsWith(
|
|
65
|
+
checks.hasMyAIDevCommands = files.some((f) => f.startsWith("myai-"));
|
|
58
66
|
} catch (e) {
|
|
59
67
|
// Directory doesn't exist or not readable
|
|
60
68
|
}
|
|
@@ -62,13 +70,14 @@ export async function detectInstallation(projectRoot = process.cwd()) {
|
|
|
62
70
|
|
|
63
71
|
// Check for myaidev-specific agents
|
|
64
72
|
if (checks.hasClaudeAgents) {
|
|
65
|
-
const agentsDir = path.join(projectRoot,
|
|
73
|
+
const agentsDir = path.join(projectRoot, ".claude", "agents");
|
|
66
74
|
try {
|
|
67
75
|
const files = await fs.readdir(agentsDir);
|
|
68
|
-
checks.hasMyAIDevAgents = files.some(
|
|
69
|
-
f
|
|
70
|
-
|
|
71
|
-
|
|
76
|
+
checks.hasMyAIDevAgents = files.some(
|
|
77
|
+
(f) =>
|
|
78
|
+
f.includes("content-writer") ||
|
|
79
|
+
f.includes("myai-visual") ||
|
|
80
|
+
f.includes("wordpress"),
|
|
72
81
|
);
|
|
73
82
|
} catch (e) {
|
|
74
83
|
// Directory doesn't exist or not readable
|
|
@@ -76,7 +85,8 @@ export async function detectInstallation(projectRoot = process.cwd()) {
|
|
|
76
85
|
}
|
|
77
86
|
|
|
78
87
|
// Determine installation type
|
|
79
|
-
const hasLegacy =
|
|
88
|
+
const hasLegacy =
|
|
89
|
+
checks.hasManifest || checks.hasMyAIDevCommands || checks.hasMyAIDevAgents;
|
|
80
90
|
const hasPlugin = checks.hasPluginJson;
|
|
81
91
|
|
|
82
92
|
let installationType;
|
|
@@ -96,8 +106,10 @@ export async function detectInstallation(projectRoot = process.cwd()) {
|
|
|
96
106
|
|
|
97
107
|
if (checks.hasManifest) {
|
|
98
108
|
try {
|
|
99
|
-
const manifest = await fs.readJson(
|
|
100
|
-
|
|
109
|
+
const manifest = await fs.readJson(
|
|
110
|
+
path.join(projectRoot, ".myaidev-manifest.json"),
|
|
111
|
+
);
|
|
112
|
+
legacyVersion = manifest.version || "1.0.0";
|
|
101
113
|
} catch (e) {
|
|
102
114
|
// Manifest unreadable
|
|
103
115
|
}
|
|
@@ -105,7 +117,9 @@ export async function detectInstallation(projectRoot = process.cwd()) {
|
|
|
105
117
|
|
|
106
118
|
if (checks.hasPluginJson) {
|
|
107
119
|
try {
|
|
108
|
-
const pluginJson = await fs.readJson(
|
|
120
|
+
const pluginJson = await fs.readJson(
|
|
121
|
+
path.join(projectRoot, ".claude-plugin", "plugin.json"),
|
|
122
|
+
);
|
|
109
123
|
pluginVersion = pluginJson.version;
|
|
110
124
|
} catch (e) {
|
|
111
125
|
// Plugin json unreadable
|
|
@@ -116,7 +130,9 @@ export async function detectInstallation(projectRoot = process.cwd()) {
|
|
|
116
130
|
let installedWorkflows = [];
|
|
117
131
|
if (checks.hasManifest) {
|
|
118
132
|
try {
|
|
119
|
-
const manifest = await fs.readJson(
|
|
133
|
+
const manifest = await fs.readJson(
|
|
134
|
+
path.join(projectRoot, ".myaidev-manifest.json"),
|
|
135
|
+
);
|
|
120
136
|
installedWorkflows = manifest.installedWorkflows || [];
|
|
121
137
|
} catch (e) {
|
|
122
138
|
// Manifest unreadable
|
|
@@ -132,10 +148,10 @@ export async function detectInstallation(projectRoot = process.cwd()) {
|
|
|
132
148
|
checks,
|
|
133
149
|
versions: {
|
|
134
150
|
legacy: legacyVersion,
|
|
135
|
-
plugin: pluginVersion
|
|
151
|
+
plugin: pluginVersion,
|
|
136
152
|
},
|
|
137
153
|
installedWorkflows,
|
|
138
|
-
recommendations: getRecommendations(installationType, checks)
|
|
154
|
+
recommendations: getRecommendations(installationType, checks),
|
|
139
155
|
};
|
|
140
156
|
}
|
|
141
157
|
|
|
@@ -151,24 +167,42 @@ function getRecommendations(installationType, checks) {
|
|
|
151
167
|
|
|
152
168
|
switch (installationType) {
|
|
153
169
|
case InstallationType.NONE:
|
|
154
|
-
recommendations.push(
|
|
155
|
-
|
|
170
|
+
recommendations.push(
|
|
171
|
+
'Run "npx myaidev-method init --claude" to install via npx',
|
|
172
|
+
);
|
|
173
|
+
recommendations.push(
|
|
174
|
+
'Or use "/plugin install myaidev-method" for plugin installation',
|
|
175
|
+
);
|
|
156
176
|
break;
|
|
157
177
|
|
|
158
178
|
case InstallationType.LEGACY:
|
|
159
|
-
recommendations.push(
|
|
160
|
-
|
|
161
|
-
|
|
179
|
+
recommendations.push(
|
|
180
|
+
"Legacy installation detected - all existing commands will continue to work",
|
|
181
|
+
);
|
|
182
|
+
recommendations.push(
|
|
183
|
+
"Consider upgrading to plugin installation for automatic updates",
|
|
184
|
+
);
|
|
185
|
+
recommendations.push(
|
|
186
|
+
'Use "/plugin install myaidev-method" to add plugin capabilities',
|
|
187
|
+
);
|
|
162
188
|
break;
|
|
163
189
|
|
|
164
190
|
case InstallationType.PLUGIN:
|
|
165
|
-
recommendations.push(
|
|
166
|
-
|
|
191
|
+
recommendations.push(
|
|
192
|
+
"Plugin installation detected - skills are auto-discovered",
|
|
193
|
+
);
|
|
194
|
+
recommendations.push(
|
|
195
|
+
'Use "/myaidev-method:*" commands or legacy "/myai-*" aliases',
|
|
196
|
+
);
|
|
167
197
|
break;
|
|
168
198
|
|
|
169
199
|
case InstallationType.BOTH:
|
|
170
|
-
recommendations.push(
|
|
171
|
-
|
|
200
|
+
recommendations.push(
|
|
201
|
+
"Both legacy and plugin installations detected - all features available",
|
|
202
|
+
);
|
|
203
|
+
recommendations.push(
|
|
204
|
+
'You can use both "/myai-*" and "/myaidev-method:*" command formats',
|
|
205
|
+
);
|
|
172
206
|
break;
|
|
173
207
|
}
|
|
174
208
|
|
|
@@ -184,32 +218,32 @@ function getRecommendations(installationType, checks) {
|
|
|
184
218
|
export async function getInstallationStatus(projectRoot = process.cwd()) {
|
|
185
219
|
const detection = await detectInstallation(projectRoot);
|
|
186
220
|
|
|
187
|
-
let status =
|
|
188
|
-
status +=
|
|
221
|
+
let status = "\n📦 MyAIDev Method Installation Status\n";
|
|
222
|
+
status += "════════════════════════════════════════\n\n";
|
|
189
223
|
|
|
190
224
|
switch (detection.installationType) {
|
|
191
225
|
case InstallationType.NONE:
|
|
192
|
-
status +=
|
|
226
|
+
status += "❌ Not Installed\n\n";
|
|
193
227
|
break;
|
|
194
228
|
case InstallationType.LEGACY:
|
|
195
|
-
status +=
|
|
229
|
+
status += "✅ Legacy Installation (npx)\n";
|
|
196
230
|
if (detection.versions.legacy) {
|
|
197
231
|
status += ` Version: ${detection.versions.legacy}\n`;
|
|
198
232
|
}
|
|
199
233
|
if (detection.installedWorkflows.length > 0) {
|
|
200
|
-
status += ` Workflows: ${detection.installedWorkflows.join(
|
|
234
|
+
status += ` Workflows: ${detection.installedWorkflows.join(", ")}\n`;
|
|
201
235
|
}
|
|
202
|
-
status +=
|
|
236
|
+
status += "\n";
|
|
203
237
|
break;
|
|
204
238
|
case InstallationType.PLUGIN:
|
|
205
|
-
status +=
|
|
239
|
+
status += "✅ Plugin Installation\n";
|
|
206
240
|
if (detection.versions.plugin) {
|
|
207
241
|
status += ` Version: ${detection.versions.plugin}\n`;
|
|
208
242
|
}
|
|
209
|
-
status +=
|
|
243
|
+
status += "\n";
|
|
210
244
|
break;
|
|
211
245
|
case InstallationType.BOTH:
|
|
212
|
-
status +=
|
|
246
|
+
status += "✅ Dual Installation (Legacy + Plugin)\n";
|
|
213
247
|
if (detection.versions.legacy) {
|
|
214
248
|
status += ` Legacy Version: ${detection.versions.legacy}\n`;
|
|
215
249
|
}
|
|
@@ -217,13 +251,13 @@ export async function getInstallationStatus(projectRoot = process.cwd()) {
|
|
|
217
251
|
status += ` Plugin Version: ${detection.versions.plugin}\n`;
|
|
218
252
|
}
|
|
219
253
|
if (detection.installedWorkflows.length > 0) {
|
|
220
|
-
status += ` Workflows: ${detection.installedWorkflows.join(
|
|
254
|
+
status += ` Workflows: ${detection.installedWorkflows.join(", ")}\n`;
|
|
221
255
|
}
|
|
222
|
-
status +=
|
|
256
|
+
status += "\n";
|
|
223
257
|
break;
|
|
224
258
|
}
|
|
225
259
|
|
|
226
|
-
status +=
|
|
260
|
+
status += "📋 Recommendations:\n";
|
|
227
261
|
for (const rec of detection.recommendations) {
|
|
228
262
|
status += ` • ${rec}\n`;
|
|
229
263
|
}
|
|
@@ -244,17 +278,17 @@ export async function checkUpgradeAvailability(projectRoot = process.cwd()) {
|
|
|
244
278
|
canUpgrade: detection.canUpgrade,
|
|
245
279
|
currentType: detection.installationType,
|
|
246
280
|
upgradeBenefits: [
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
281
|
+
"Automatic skill discovery",
|
|
282
|
+
"Namespaced commands (/myaidev-method:*)",
|
|
283
|
+
"Plugin marketplace updates",
|
|
284
|
+
"Cross-platform support preparation",
|
|
251
285
|
],
|
|
252
286
|
preservedFeatures: [
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
]
|
|
287
|
+
"All existing /myai-* commands",
|
|
288
|
+
"Installed workflows and agents",
|
|
289
|
+
"Configuration and environment variables",
|
|
290
|
+
".myaidev-manifest.json tracking",
|
|
291
|
+
],
|
|
258
292
|
};
|
|
259
293
|
}
|
|
260
294
|
|
|
@@ -262,5 +296,5 @@ export default {
|
|
|
262
296
|
detectInstallation,
|
|
263
297
|
getInstallationStatus,
|
|
264
298
|
checkUpgradeAvailability,
|
|
265
|
-
InstallationType
|
|
299
|
+
InstallationType,
|
|
266
300
|
};
|