myaidev-method 0.3.4 → 0.3.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.
Files changed (94) hide show
  1. package/.claude-plugin/plugin.json +0 -1
  2. package/.env.example +5 -4
  3. package/CHANGELOG.md +2 -2
  4. package/CONTENT_CREATION_GUIDE.md +489 -3211
  5. package/DEVELOPER_USE_CASES.md +1 -1
  6. package/MODULAR_INSTALLATION.md +2 -2
  7. package/README.md +39 -33
  8. package/TECHNICAL_ARCHITECTURE.md +1 -1
  9. package/USER_GUIDE.md +242 -190
  10. package/agents/content-editor-agent.md +90 -0
  11. package/agents/content-planner-agent.md +97 -0
  12. package/agents/content-research-agent.md +62 -0
  13. package/agents/content-seo-agent.md +101 -0
  14. package/agents/content-writer-agent.md +69 -0
  15. package/agents/infographic-analyzer-agent.md +63 -0
  16. package/agents/infographic-designer-agent.md +72 -0
  17. package/bin/cli.js +846 -427
  18. package/{content-rules.example.md → content-rules-example.md} +2 -2
  19. package/dist/mcp/health-check.js +82 -68
  20. package/dist/mcp/mcp-config.json +8 -0
  21. package/dist/mcp/openstack-server.js +1746 -1262
  22. package/dist/server/.tsbuildinfo +1 -1
  23. package/extension.json +21 -4
  24. package/package.json +181 -184
  25. package/skills/company-config/SKILL.md +133 -0
  26. package/skills/configure/SKILL.md +1 -1
  27. package/skills/myai-configurator/SKILL.md +77 -0
  28. package/skills/myai-configurator/content-creation-configurator/SKILL.md +516 -0
  29. package/skills/myai-configurator/content-maintenance-configurator/SKILL.md +397 -0
  30. package/skills/myai-content-enrichment/SKILL.md +114 -0
  31. package/skills/myai-content-ideation/SKILL.md +288 -0
  32. package/skills/myai-content-ideation/evals/evals.json +182 -0
  33. package/skills/myai-content-production-coordinator/SKILL.md +946 -0
  34. package/skills/{content-rules-setup → myai-content-rules-setup}/SKILL.md +1 -1
  35. package/skills/{content-verifier → myai-content-verifier}/SKILL.md +1 -1
  36. package/skills/myai-content-writer/SKILL.md +333 -0
  37. package/skills/{infographic → myai-infographic}/SKILL.md +1 -1
  38. package/skills/myai-proprietary-content-verifier/SKILL.md +175 -0
  39. package/skills/myai-proprietary-content-verifier/evals/evals.json +36 -0
  40. package/skills/myai-skill-builder/SKILL.md +699 -0
  41. package/skills/myai-skill-builder/agents/analyzer-agent.md +137 -0
  42. package/skills/myai-skill-builder/agents/comparator-agent.md +77 -0
  43. package/skills/myai-skill-builder/agents/grader-agent.md +103 -0
  44. package/skills/myai-skill-builder/assets/eval_review.html +131 -0
  45. package/skills/myai-skill-builder/references/schemas.md +211 -0
  46. package/skills/myai-skill-builder/scripts/aggregate_benchmark.py +190 -0
  47. package/skills/myai-skill-builder/scripts/generate_review.py +381 -0
  48. package/skills/myai-skill-builder/scripts/package_skill.py +91 -0
  49. package/skills/myai-skill-builder/scripts/run_eval.py +105 -0
  50. package/skills/myai-skill-builder/scripts/run_loop.py +211 -0
  51. package/skills/myai-skill-builder/scripts/utils.py +123 -0
  52. package/skills/myai-visual-generator/SKILL.md +125 -0
  53. package/skills/myai-visual-generator/evals/evals.json +155 -0
  54. package/skills/myai-visual-generator/references/infographic-pipeline.md +73 -0
  55. package/skills/myai-visual-generator/references/research-visuals.md +57 -0
  56. package/skills/myai-visual-generator/references/services.md +89 -0
  57. package/skills/myai-visual-generator/scripts/visual-generation-utils.js +1272 -0
  58. package/skills/myaidev-figma/SKILL.md +212 -0
  59. package/skills/myaidev-figma/capture.js +133 -0
  60. package/skills/myaidev-figma/crawl.js +130 -0
  61. package/skills/myaidev-figma-configure/SKILL.md +130 -0
  62. package/skills/openstack-manager/SKILL.md +1 -1
  63. package/skills/payloadcms-publisher/SKILL.md +141 -77
  64. package/skills/payloadcms-publisher/references/field-mapping.md +142 -0
  65. package/skills/payloadcms-publisher/references/lexical-format.md +97 -0
  66. package/skills/security-auditor/SKILL.md +1 -1
  67. package/src/cli/commands/addon.js +105 -7
  68. package/src/config/workflows.js +172 -228
  69. package/src/lib/ascii-banner.js +197 -182
  70. package/src/lib/{content-coordinator.js → content-production-coordinator.js} +649 -459
  71. package/src/lib/installation-detector.js +93 -59
  72. package/src/lib/payloadcms-utils.js +285 -510
  73. package/src/lib/workflow-installer.js +55 -0
  74. package/src/mcp/health-check.js +82 -68
  75. package/src/mcp/openstack-server.js +1746 -1262
  76. package/src/scripts/configure-visual-apis.js +224 -173
  77. package/src/scripts/configure-wordpress-mcp.js +96 -66
  78. package/src/scripts/init/install.js +109 -85
  79. package/src/scripts/init-project.js +138 -67
  80. package/src/scripts/utils/write-content.js +67 -52
  81. package/src/scripts/wordpress/publish-to-wordpress.js +128 -128
  82. package/src/templates/claude/CLAUDE.md +19 -12
  83. package/hooks/hooks.json +0 -26
  84. package/skills/content-coordinator/SKILL.md +0 -130
  85. package/skills/content-enrichment/SKILL.md +0 -80
  86. package/skills/content-writer/SKILL.md +0 -285
  87. package/skills/skill-builder/SKILL.md +0 -417
  88. package/skills/visual-generator/SKILL.md +0 -140
  89. /package/skills/{content-writer → myai-content-writer}/agents/editor-agent.md +0 -0
  90. /package/skills/{content-writer → myai-content-writer}/agents/planner-agent.md +0 -0
  91. /package/skills/{content-writer → myai-content-writer}/agents/research-agent.md +0 -0
  92. /package/skills/{content-writer → myai-content-writer}/agents/seo-agent.md +0 -0
  93. /package/skills/{content-writer → myai-content-writer}/agents/visual-planner-agent.md +0 -0
  94. /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 'fs-extra';
14
- import path from 'path';
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: 'none',
21
- LEGACY: 'legacy',
22
- PLUGIN: 'plugin',
23
- BOTH: '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, '.claude')),
36
- hasClaudeCommands: await fs.pathExists(path.join(projectRoot, '.claude', 'commands')),
37
- hasClaudeAgents: await fs.pathExists(path.join(projectRoot, '.claude', 'agents')),
38
- hasManifest: await fs.pathExists(path.join(projectRoot, '.myaidev-manifest.json')),
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, '.claude-plugin')),
42
- hasPluginJson: await fs.pathExists(path.join(projectRoot, '.claude-plugin', 'plugin.json')),
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, 'skills')),
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, '.claude', 'commands');
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('myai-'));
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, '.claude', 'agents');
73
+ const agentsDir = path.join(projectRoot, ".claude", "agents");
66
74
  try {
67
75
  const files = await fs.readdir(agentsDir);
68
- checks.hasMyAIDevAgents = files.some(f =>
69
- f.includes('content-writer') ||
70
- f.includes('visual') ||
71
- f.includes('wordpress')
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 = checks.hasManifest || (checks.hasMyAIDevCommands || checks.hasMyAIDevAgents);
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(path.join(projectRoot, '.myaidev-manifest.json'));
100
- legacyVersion = manifest.version || '1.0.0';
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(path.join(projectRoot, '.claude-plugin', 'plugin.json'));
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(path.join(projectRoot, '.myaidev-manifest.json'));
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('Run "npx myaidev-method init --claude" to install via npx');
155
- recommendations.push('Or use "/plugin install myaidev-method" for plugin installation');
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('Legacy installation detected - all existing commands will continue to work');
160
- recommendations.push('Consider upgrading to plugin installation for automatic updates');
161
- recommendations.push('Use "/plugin install myaidev-method" to add plugin capabilities');
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('Plugin installation detected - skills are auto-discovered');
166
- recommendations.push('Use "/myaidev-method:*" commands or legacy "/myai-*" aliases');
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('Both legacy and plugin installations detected - all features available');
171
- recommendations.push('You can use both "/myai-*" and "/myaidev-method:*" command formats');
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 = '\n📦 MyAIDev Method Installation Status\n';
188
- status += '════════════════════════════════════════\n\n';
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 += '❌ Not Installed\n\n';
226
+ status += "❌ Not Installed\n\n";
193
227
  break;
194
228
  case InstallationType.LEGACY:
195
- status += '✅ Legacy Installation (npx)\n';
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(', ')}\n`;
234
+ status += ` Workflows: ${detection.installedWorkflows.join(", ")}\n`;
201
235
  }
202
- status += '\n';
236
+ status += "\n";
203
237
  break;
204
238
  case InstallationType.PLUGIN:
205
- status += '✅ Plugin Installation\n';
239
+ status += "✅ Plugin Installation\n";
206
240
  if (detection.versions.plugin) {
207
241
  status += ` Version: ${detection.versions.plugin}\n`;
208
242
  }
209
- status += '\n';
243
+ status += "\n";
210
244
  break;
211
245
  case InstallationType.BOTH:
212
- status += '✅ Dual Installation (Legacy + Plugin)\n';
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(', ')}\n`;
254
+ status += ` Workflows: ${detection.installedWorkflows.join(", ")}\n`;
221
255
  }
222
- status += '\n';
256
+ status += "\n";
223
257
  break;
224
258
  }
225
259
 
226
- status += '📋 Recommendations:\n';
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
- 'Automatic skill discovery',
248
- 'Namespaced commands (/myaidev-method:*)',
249
- 'Plugin marketplace updates',
250
- 'Cross-platform support preparation'
281
+ "Automatic skill discovery",
282
+ "Namespaced commands (/myaidev-method:*)",
283
+ "Plugin marketplace updates",
284
+ "Cross-platform support preparation",
251
285
  ],
252
286
  preservedFeatures: [
253
- 'All existing /myai-* commands',
254
- 'Installed workflows and agents',
255
- 'Configuration and environment variables',
256
- '.myaidev-manifest.json tracking'
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
  };