myaidev-method 0.3.3 → 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.
Files changed (132) 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 +777 -535
  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/myai-content-writer/agents/editor-agent.md +138 -0
  38. package/skills/myai-content-writer/agents/planner-agent.md +121 -0
  39. package/skills/myai-content-writer/agents/research-agent.md +83 -0
  40. package/skills/myai-content-writer/agents/seo-agent.md +139 -0
  41. package/skills/myai-content-writer/agents/visual-planner-agent.md +110 -0
  42. package/skills/myai-content-writer/agents/writer-agent.md +85 -0
  43. package/skills/{infographic → myai-infographic}/SKILL.md +1 -1
  44. package/skills/myai-proprietary-content-verifier/SKILL.md +175 -0
  45. package/skills/myai-proprietary-content-verifier/evals/evals.json +36 -0
  46. package/skills/myai-skill-builder/SKILL.md +699 -0
  47. package/skills/myai-skill-builder/agents/analyzer-agent.md +137 -0
  48. package/skills/myai-skill-builder/agents/comparator-agent.md +77 -0
  49. package/skills/myai-skill-builder/agents/grader-agent.md +103 -0
  50. package/skills/myai-skill-builder/assets/eval_review.html +131 -0
  51. package/skills/myai-skill-builder/references/schemas.md +211 -0
  52. package/skills/myai-skill-builder/scripts/aggregate_benchmark.py +190 -0
  53. package/skills/myai-skill-builder/scripts/generate_review.py +381 -0
  54. package/skills/myai-skill-builder/scripts/package_skill.py +91 -0
  55. package/skills/myai-skill-builder/scripts/run_eval.py +105 -0
  56. package/skills/myai-skill-builder/scripts/run_loop.py +211 -0
  57. package/skills/myai-skill-builder/scripts/utils.py +123 -0
  58. package/skills/myai-visual-generator/SKILL.md +125 -0
  59. package/skills/myai-visual-generator/evals/evals.json +155 -0
  60. package/skills/myai-visual-generator/references/infographic-pipeline.md +73 -0
  61. package/skills/myai-visual-generator/references/research-visuals.md +57 -0
  62. package/skills/myai-visual-generator/references/services.md +89 -0
  63. package/skills/myai-visual-generator/scripts/visual-generation-utils.js +1272 -0
  64. package/skills/myaidev-analyze/agents/dependency-mapper-agent.md +236 -0
  65. package/skills/myaidev-analyze/agents/pattern-detector-agent.md +240 -0
  66. package/skills/myaidev-analyze/agents/structure-scanner-agent.md +171 -0
  67. package/skills/myaidev-analyze/agents/tech-profiler-agent.md +291 -0
  68. package/skills/myaidev-architect/agents/compliance-checker-agent.md +287 -0
  69. package/skills/myaidev-architect/agents/requirements-analyst-agent.md +194 -0
  70. package/skills/myaidev-architect/agents/system-designer-agent.md +315 -0
  71. package/skills/myaidev-coder/agents/implementer-agent.md +185 -0
  72. package/skills/myaidev-coder/agents/integration-agent.md +168 -0
  73. package/skills/myaidev-coder/agents/pattern-scanner-agent.md +161 -0
  74. package/skills/myaidev-coder/agents/self-reviewer-agent.md +168 -0
  75. package/skills/myaidev-debug/agents/fix-agent-debug.md +317 -0
  76. package/skills/myaidev-debug/agents/hypothesis-agent.md +226 -0
  77. package/skills/myaidev-debug/agents/investigator-agent.md +250 -0
  78. package/skills/myaidev-debug/agents/symptom-collector-agent.md +231 -0
  79. package/skills/myaidev-documenter/agents/code-reader-agent.md +172 -0
  80. package/skills/myaidev-documenter/agents/doc-validator-agent.md +174 -0
  81. package/skills/myaidev-documenter/agents/doc-writer-agent.md +379 -0
  82. package/skills/myaidev-figma/SKILL.md +212 -0
  83. package/skills/myaidev-figma/capture.js +133 -0
  84. package/skills/myaidev-figma/crawl.js +130 -0
  85. package/skills/myaidev-figma-configure/SKILL.md +130 -0
  86. package/skills/myaidev-migrate/agents/migration-planner-agent.md +237 -0
  87. package/skills/myaidev-migrate/agents/migration-writer-agent.md +248 -0
  88. package/skills/myaidev-migrate/agents/schema-analyzer-agent.md +190 -0
  89. package/skills/myaidev-performance/agents/benchmark-agent.md +281 -0
  90. package/skills/myaidev-performance/agents/optimizer-agent.md +277 -0
  91. package/skills/myaidev-performance/agents/profiler-agent.md +252 -0
  92. package/skills/myaidev-refactor/agents/refactor-executor-agent.md +221 -0
  93. package/skills/myaidev-refactor/agents/refactor-planner-agent.md +213 -0
  94. package/skills/myaidev-refactor/agents/regression-guard-agent.md +242 -0
  95. package/skills/myaidev-refactor/agents/smell-detector-agent.md +233 -0
  96. package/skills/myaidev-reviewer/agents/auto-fixer-agent.md +238 -0
  97. package/skills/myaidev-reviewer/agents/code-analyst-agent.md +220 -0
  98. package/skills/myaidev-reviewer/agents/security-scanner-agent.md +262 -0
  99. package/skills/myaidev-tester/agents/coverage-analyst-agent.md +163 -0
  100. package/skills/myaidev-tester/agents/tdd-driver-agent.md +242 -0
  101. package/skills/myaidev-tester/agents/test-runner-agent.md +176 -0
  102. package/skills/myaidev-tester/agents/test-strategist-agent.md +154 -0
  103. package/skills/myaidev-tester/agents/test-writer-agent.md +242 -0
  104. package/skills/myaidev-workflow/agents/analyzer-agent.md +317 -0
  105. package/skills/myaidev-workflow/agents/coordinator-agent.md +253 -0
  106. package/skills/openstack-manager/SKILL.md +1 -1
  107. package/skills/payloadcms-publisher/SKILL.md +141 -77
  108. package/skills/payloadcms-publisher/references/field-mapping.md +142 -0
  109. package/skills/payloadcms-publisher/references/lexical-format.md +97 -0
  110. package/skills/security-auditor/SKILL.md +1 -1
  111. package/src/cli/commands/addon.js +184 -123
  112. package/src/config/workflows.js +172 -228
  113. package/src/lib/ascii-banner.js +197 -182
  114. package/src/lib/{content-coordinator.js → content-production-coordinator.js} +649 -459
  115. package/src/lib/installation-detector.js +93 -59
  116. package/src/lib/payloadcms-utils.js +285 -510
  117. package/src/lib/update-manager.js +120 -61
  118. package/src/lib/workflow-installer.js +55 -0
  119. package/src/mcp/health-check.js +82 -68
  120. package/src/mcp/openstack-server.js +1746 -1262
  121. package/src/scripts/configure-visual-apis.js +224 -173
  122. package/src/scripts/configure-wordpress-mcp.js +96 -66
  123. package/src/scripts/init/install.js +109 -85
  124. package/src/scripts/init-project.js +138 -67
  125. package/src/scripts/utils/write-content.js +67 -52
  126. package/src/scripts/wordpress/publish-to-wordpress.js +128 -128
  127. package/src/templates/claude/CLAUDE.md +131 -0
  128. package/hooks/hooks.json +0 -26
  129. package/skills/content-coordinator/SKILL.md +0 -130
  130. package/skills/content-enrichment/SKILL.md +0 -80
  131. package/skills/content-writer/SKILL.md +0 -285
  132. package/skills/visual-generator/SKILL.md +0 -140
@@ -21,144 +21,144 @@ const args = process.argv.slice(2);
21
21
  const filePath = args[0];
22
22
  const statusIndex = args.indexOf("--status");
23
23
  const requestedStatus =
24
- statusIndex !== -1 && args[statusIndex + 1] ? args[statusIndex + 1] : "draft";
24
+ statusIndex !== -1 && args[statusIndex + 1] ? args[statusIndex + 1] : "draft";
25
25
 
26
26
  if (!filePath) {
27
- console.error("Error: File path is required");
28
- console.error(
29
- "Usage: node publish-to-wordpress.js <file-path> [--status draft|publish]",
30
- );
31
- process.exit(1);
27
+ console.error("Error: File path is required");
28
+ console.error(
29
+ "Usage: node publish-to-wordpress.js <file-path> [--status draft|publish]",
30
+ );
31
+ process.exit(1);
32
32
  }
33
33
 
34
34
  // Validate WordPress configuration
35
35
  if (
36
- !process.env.WORDPRESS_URL ||
37
- !process.env.WORDPRESS_USERNAME ||
38
- !process.env.WORDPRESS_APP_PASSWORD
36
+ !process.env.WORDPRESS_URL ||
37
+ !process.env.WORDPRESS_USERNAME ||
38
+ !process.env.WORDPRESS_APP_PASSWORD
39
39
  ) {
40
- console.error("Error: WordPress configuration is incomplete");
41
- console.error("Required environment variables:");
42
- console.error(" - WORDPRESS_URL");
43
- console.error(" - WORDPRESS_USERNAME");
44
- console.error(" - WORDPRESS_APP_PASSWORD");
45
- console.error(
46
- "\nRun /myai-configure wordpress to set up your WordPress connection",
47
- );
48
- process.exit(1);
40
+ console.error("Error: WordPress configuration is incomplete");
41
+ console.error("Required environment variables:");
42
+ console.error(" - WORDPRESS_URL");
43
+ console.error(" - WORDPRESS_USERNAME");
44
+ console.error(" - WORDPRESS_APP_PASSWORD");
45
+ console.error(
46
+ "\nRun /myai-configurator wordpress to set up your WordPress connection",
47
+ );
48
+ process.exit(1);
49
49
  }
50
50
 
51
51
  async function publishToWordPress() {
52
- try {
53
- // Read and parse markdown file
54
- const absolutePath = resolve(filePath);
55
- const fileContent = readFileSync(absolutePath, "utf-8");
56
- const { data: frontmatter, content } = matter(fileContent);
57
-
58
- console.log("📄 Processing file:", filePath);
59
- console.log("📋 Title:", frontmatter.title || "No title");
60
-
61
- // Extract interactive blocks before markdown conversion
62
- // const { markdown: cleanMarkdown, interactiveBlocks } =
63
- // GutenbergConverter.extractInteractiveBlocks(content);
64
-
65
- // if (interactiveBlocks.length > 0) {
66
- // console.log(
67
- // ` Interactive blocks: ${interactiveBlocks.length} found`,
68
- // );
69
- // }
70
-
71
- // Convert markdown to HTML using marked (preserves placeholders)
72
- const html = marked.parse(content);
73
-
74
- // Convert HTML to Gutenberg blocks
75
- let htmlContent = GutenbergConverter.htmlToGutenberg(html);
76
-
77
- // Restore interactive blocks as raw HTML blocks
78
- // if (interactiveBlocks.length > 0) {
79
- // htmlContent = GutenbergConverter.restoreInteractiveBlocks(
80
- // htmlContent,
81
- // interactiveBlocks,
82
- // );
83
- // }
84
-
85
- // Prepare WordPress configuration
86
- const config = {
87
- endpoint: {
88
- url: process.env.WORDPRESS_URL,
89
- api_version: "wp/v2",
90
- authentication: {
91
- username: process.env.WORDPRESS_USERNAME,
92
- password: process.env.WORDPRESS_APP_PASSWORD,
93
- },
94
- },
95
- defaults: {
96
- post_status: requestedStatus,
97
- format: "standard",
98
- comment_status: "open",
99
- ping_status: "open",
100
- },
101
- };
102
-
103
- // Initialize WordPress client
104
- const wp = new WordPressMCP(config);
105
-
106
- // Prepare post data
107
- const postParams = {
108
- title: frontmatter.title || "Untitled",
109
- content: htmlContent,
110
- status: requestedStatus,
111
- excerpt: frontmatter.meta_description || "",
112
- slug: frontmatter.slug || "",
113
- use_gutenberg: process.env.USE_GUTENBERG === "true",
114
- // Note: Tags and categories require ID mapping which will be added in future versions
115
- };
116
-
117
- console.log("🚀 Publishing to WordPress...");
118
- console.log(" URL:", process.env.WORDPRESS_URL);
119
- console.log(" Status:", requestedStatus);
120
- console.log(
121
- " Format:",
122
- postParams.use_gutenberg ? "Gutenberg" : "Classic",
123
- );
124
-
125
- // Create the post
126
- const result = await wp.createPost(postParams);
127
-
128
- // Success!
129
- console.log("\n✅ Successfully published to WordPress!");
130
- console.log("\n📄 Post Details:");
131
- console.log(" Post ID:", result.id);
132
- console.log(" Title:", result.title.rendered);
133
- console.log(" Status:", result.status);
134
- console.log(" Slug:", result.slug);
135
-
136
- console.log("\n🔗 URLs:");
137
- console.log(" View:", result.link);
138
- console.log(
139
- " Edit:",
140
- `${process.env.WORDPRESS_URL}/wp-admin/post.php?post=${result.id}&action=edit`,
141
- );
142
-
143
- return result;
144
- } catch (error) {
145
- console.error("\n❌ Error publishing to WordPress:");
146
- console.error(error.message);
147
-
148
- if (error.message.includes("401")) {
149
- console.error("\n🔑 Authentication failed. Please check:");
150
- console.error(" 1. Your WordPress username is correct");
151
- console.error(" 2. Your Application Password is valid");
152
- console.error(" 3. Application Passwords are enabled on your site");
153
- } else if (error.message.includes("404")) {
154
- console.error("\n🌐 WordPress site not found. Please check:");
155
- console.error(" 1. Your WORDPRESS_URL is correct");
156
- console.error(" 2. The site is accessible");
157
- console.error(" 3. The REST API is enabled");
158
- }
159
-
160
- process.exit(1);
161
- }
52
+ try {
53
+ // Read and parse markdown file
54
+ const absolutePath = resolve(filePath);
55
+ const fileContent = readFileSync(absolutePath, "utf-8");
56
+ const { data: frontmatter, content } = matter(fileContent);
57
+
58
+ console.log("📄 Processing file:", filePath);
59
+ console.log("📋 Title:", frontmatter.title || "No title");
60
+
61
+ // Extract interactive blocks before markdown conversion
62
+ // const { markdown: cleanMarkdown, interactiveBlocks } =
63
+ // GutenbergConverter.extractInteractiveBlocks(content);
64
+
65
+ // if (interactiveBlocks.length > 0) {
66
+ // console.log(
67
+ // ` Interactive blocks: ${interactiveBlocks.length} found`,
68
+ // );
69
+ // }
70
+
71
+ // Convert markdown to HTML using marked (preserves placeholders)
72
+ const html = marked.parse(content);
73
+
74
+ // Convert HTML to Gutenberg blocks
75
+ let htmlContent = GutenbergConverter.htmlToGutenberg(html);
76
+
77
+ // Restore interactive blocks as raw HTML blocks
78
+ // if (interactiveBlocks.length > 0) {
79
+ // htmlContent = GutenbergConverter.restoreInteractiveBlocks(
80
+ // htmlContent,
81
+ // interactiveBlocks,
82
+ // );
83
+ // }
84
+
85
+ // Prepare WordPress configuration
86
+ const config = {
87
+ endpoint: {
88
+ url: process.env.WORDPRESS_URL,
89
+ api_version: "wp/v2",
90
+ authentication: {
91
+ username: process.env.WORDPRESS_USERNAME,
92
+ password: process.env.WORDPRESS_APP_PASSWORD,
93
+ },
94
+ },
95
+ defaults: {
96
+ post_status: requestedStatus,
97
+ format: "standard",
98
+ comment_status: "open",
99
+ ping_status: "open",
100
+ },
101
+ };
102
+
103
+ // Initialize WordPress client
104
+ const wp = new WordPressMCP(config);
105
+
106
+ // Prepare post data
107
+ const postParams = {
108
+ title: frontmatter.title || "Untitled",
109
+ content: htmlContent,
110
+ status: requestedStatus,
111
+ excerpt: frontmatter.meta_description || "",
112
+ slug: frontmatter.slug || "",
113
+ use_gutenberg: process.env.USE_GUTENBERG === "true",
114
+ // Note: Tags and categories require ID mapping which will be added in future versions
115
+ };
116
+
117
+ console.log("🚀 Publishing to WordPress...");
118
+ console.log(" URL:", process.env.WORDPRESS_URL);
119
+ console.log(" Status:", requestedStatus);
120
+ console.log(
121
+ " Format:",
122
+ postParams.use_gutenberg ? "Gutenberg" : "Classic",
123
+ );
124
+
125
+ // Create the post
126
+ const result = await wp.createPost(postParams);
127
+
128
+ // Success!
129
+ console.log("\n✅ Successfully published to WordPress!");
130
+ console.log("\n📄 Post Details:");
131
+ console.log(" Post ID:", result.id);
132
+ console.log(" Title:", result.title.rendered);
133
+ console.log(" Status:", result.status);
134
+ console.log(" Slug:", result.slug);
135
+
136
+ console.log("\n🔗 URLs:");
137
+ console.log(" View:", result.link);
138
+ console.log(
139
+ " Edit:",
140
+ `${process.env.WORDPRESS_URL}/wp-admin/post.php?post=${result.id}&action=edit`,
141
+ );
142
+
143
+ return result;
144
+ } catch (error) {
145
+ console.error("\n❌ Error publishing to WordPress:");
146
+ console.error(error.message);
147
+
148
+ if (error.message.includes("401")) {
149
+ console.error("\n🔑 Authentication failed. Please check:");
150
+ console.error(" 1. Your WordPress username is correct");
151
+ console.error(" 2. Your Application Password is valid");
152
+ console.error(" 3. Application Passwords are enabled on your site");
153
+ } else if (error.message.includes("404")) {
154
+ console.error("\n🌐 WordPress site not found. Please check:");
155
+ console.error(" 1. Your WORDPRESS_URL is correct");
156
+ console.error(" 2. The site is accessible");
157
+ console.error(" 3. The REST API is enabled");
158
+ }
159
+
160
+ process.exit(1);
161
+ }
162
162
  }
163
163
 
164
164
  // Run the publisher
@@ -0,0 +1,131 @@
1
+ # Claude Code Configuration
2
+
3
+ This project uses the MyAIDev Method — a skills-based AI development framework.
4
+
5
+ ## Skills (`.claude/skills/`)
6
+
7
+ Skills are the primary delivery mechanism. Each skill is a self-contained orchestrator with its own subagents.
8
+
9
+ ### Development (MyAIDev SPARC Workflow)
10
+
11
+ **Recommended entry point**: `/myaidev-workflow` orchestrates the full pipeline.
12
+
13
+ #### Core SPARC Pipeline
14
+ - `myaidev-workflow` - Multi-agent SPARC orchestrator with feedback loops, project profiles, TDD mode
15
+ - `myaidev-architect` - System architecture design with requirements analysis and compliance checking
16
+ - `myaidev-coder` - Pattern-aware code implementation with convention detection and self-review
17
+ - `myaidev-tester` - Test generation with TDD support (London/Chicago styles) and coverage analysis
18
+ - `myaidev-reviewer` - Code review with auto-fix capability, security scanning, and quality gates
19
+ - `myaidev-documenter` - Documentation generation with code analysis, writing, and validation
20
+
21
+ #### Standalone Development Tools
22
+ - `myaidev-analyze` - Deep codebase analysis: patterns, conventions, tech stack, dependencies, risks
23
+ - `myaidev-debug` - Systematic debugging with hypothesis testing and root cause analysis
24
+ - `myaidev-refactor` - Code smell detection, safe refactoring planning, and regression guarding
25
+ - `myaidev-performance` - Performance profiling, optimization, and before/after benchmarking
26
+ - `myaidev-migrate` - Framework upgrades, schema migrations, dependency swaps, pattern transitions
27
+
28
+ ### Content Creation
29
+ - `content-writer` - Multi-agent pipeline (research, plan, write, SEO, edit, visuals)
30
+ - `content-rules-config` - Interactive brand voice configuration
31
+ - `proprietary-content-verifier` - Content uniqueness and quality verification
32
+ - `content-production-coordinator` - Batch content verification and publishing
33
+ - `myai-content-enrichment` - Enrich articles with real-time data and visuals
34
+
35
+ ### Publishing
36
+ - `content-publisher` - Platform-detecting publisher (WordPress, PayloadCMS, Astro, Docusaurus, Mintlify)
37
+
38
+ ### Visual & Media
39
+ - `myai-visual-generator` - AI image/video generation (Gemini, DALL-E, FLUX, Veo) with fal.ai MCP model discovery
40
+
41
+ ### Deployment & Infrastructure
42
+ - `deployer` - Multi-environment deployment (dev/staging/prod)
43
+ - `coolify-deployer` - Coolify PaaS deployment
44
+ - `openstack-manager` - OpenStack VM management
45
+
46
+ ### Git & CI/CD
47
+ - `git-workflow` - PRs, releases, hotfixes, branch sync
48
+
49
+ ### Security
50
+ - `security-tester` - Penetration testing (PTES methodology)
51
+ - `security-auditor` - Compliance auditing (PCI-DSS, GDPR, SOC 2)
52
+
53
+ ### Skill Development
54
+ - `myai-skill-builder` - Guided skill creation with concept discovery, iterative refinement, testing, and marketplace submission
55
+ - `skill-contributor` - Quick skill scaffolding and marketplace submission
56
+
57
+ ### Configuration
58
+ - `configure` - Interactive environment setup wizard
59
+
60
+ ## Content Customization
61
+
62
+ - **content-rules.md** - Brand voice and writing guidelines
63
+ - Run the `content-rules-config` skill to generate this interactively
64
+
65
+ ## Platform Configuration
66
+
67
+ Run the `configure` skill to set up credentials, or manually edit `.env`:
68
+
69
+ ```bash
70
+ # WordPress
71
+ WORDPRESS_URL=https://your-site.com
72
+ WORDPRESS_USERNAME=your-username
73
+ WORDPRESS_APP_PASSWORD=your-app-password
74
+
75
+ # PayloadCMS
76
+ PAYLOADCMS_URL=https://cms.your-site.com
77
+ PAYLOADCMS_EMAIL=your-email
78
+ PAYLOADCMS_PASSWORD=your-password
79
+
80
+ # Visual APIs
81
+ GOOGLE_API_KEY=your-key
82
+ OPENAI_API_KEY=your-key
83
+ FAL_KEY=your-key
84
+
85
+ # Coolify
86
+ COOLIFY_URL=https://coolify.your-server.com
87
+ COOLIFY_API_KEY=your-key
88
+ ```
89
+
90
+ ## Scripts and Utilities
91
+
92
+ The `.myaidev-method/` directory contains helper scripts that skills can invoke:
93
+
94
+ ```bash
95
+ node .myaidev-method/scripts/payloadcms-publish.js "article.md"
96
+ node .myaidev-method/scripts/wordpress-health-check.js
97
+ node .myaidev-method/scripts/coolify-deploy-app.js --name myapp
98
+ ```
99
+
100
+ ## MCP Servers
101
+
102
+ The following MCP servers are auto-configured during init:
103
+
104
+ | Server | Purpose | Env Var Required |
105
+ |--------|---------|------------------|
106
+ | `fal-ai` | Visual generation model discovery, pricing, and generation across 600+ models | `FAL_KEY` |
107
+
108
+ MCP servers activate automatically when their required environment variable is set.
109
+
110
+ ## Project Structure
111
+
112
+ ```
113
+ .claude/
114
+ ├── skills/ # All skill definitions (SKILL.md + agents/)
115
+ ├── mcp/ # MCP server configurations
116
+ └── CLAUDE.md # This file
117
+ .myaidev-method/
118
+ ├── scripts/ # Publishing and deployment scripts
119
+ ├── lib/ # Utility libraries
120
+ └── package.json # Script dependencies
121
+ ```
122
+
123
+ ## Updating
124
+
125
+ ```bash
126
+ npx myaidev-method@latest update --claude # Interactive update
127
+ npx myaidev-method@latest update --claude --force # Force overwrite
128
+ npx myaidev-method@latest update --claude --dry-run # Preview changes
129
+ ```
130
+
131
+ See `USER_GUIDE.md` for detailed instructions.
package/hooks/hooks.json DELETED
@@ -1,26 +0,0 @@
1
- {
2
- "hooks": {
3
- "PostToolUse": [
4
- {
5
- "matcher": "Write|Edit",
6
- "hooks": [
7
- {
8
- "type": "prompt",
9
- "prompt": "If the file written/edited is a content markdown file (in content-output/ or content-queue/), verify it has valid frontmatter with title, description, and date fields. Report any missing required fields."
10
- }
11
- ]
12
- }
13
- ],
14
- "Stop": [
15
- {
16
- "matcher": "",
17
- "hooks": [
18
- {
19
- "type": "prompt",
20
- "prompt": "Before finishing, check if there are any unsaved content drafts in content-output/ that haven't been published. If found, remind the user about pending drafts."
21
- }
22
- ]
23
- }
24
- ]
25
- }
26
- }
@@ -1,130 +0,0 @@
1
- ---
2
- name: content-coordinator
3
- description: Orchestrates content verification and multi-platform publishing workflows with batch processing. Use when publishing multiple content files or running content production pipelines.
4
- argument-hint: "[directory] [--dry-run] [--force] [--verbose] [--platform wordpress|payloadcms]"
5
- allowed-tools: [Read, Write, Edit, WebSearch, WebFetch, Task, Bash, Glob, Grep, AskUserQuestion]
6
- disable-model-invocation: true
7
- ---
8
-
9
- # Content Production Coordinator
10
-
11
- You are the **Content Production Coordinator** — orchestrating content verification and publishing workflows. You manage batch content processing, quality verification, and multi-platform publishing.
12
-
13
- ## Arguments
14
-
15
- Parse from: `$ARGUMENTS`
16
-
17
- - `[directory]` → Path to content queue directory (default: `./content-queue/`)
18
- - `--dry-run` → Verify only, don't publish
19
- - `--force` → Skip confirmation prompts
20
- - `--verbose` → Detailed progress output
21
- - `--platform` → Target platform (default: from frontmatter)
22
- - `--output-dir` → Report directory
23
-
24
- ## Content Queue Format
25
-
26
- Each markdown file in the queue should have:
27
-
28
- ```markdown
29
- ---
30
- title: "Article Title"
31
- content_type: article
32
- target_platform: wordpress
33
- status: pending
34
- priority: normal
35
- references:
36
- - "https://source1.com"
37
- goals:
38
- - "Primary goal"
39
- ---
40
-
41
- ## Proprietary Content
42
-
43
- [Unique content to be verified]
44
-
45
- ## Supporting Content
46
-
47
- [Additional context]
48
- ```
49
-
50
- ## Workflow
51
-
52
- ### Phase 1: Discovery
53
- 1. Scan content directory for `.md` files
54
- 2. Parse frontmatter from each file
55
- 3. Filter by `status: pending`
56
- 4. Sort by priority
57
-
58
- ### Phase 2: Verification
59
- For each content file, spawn a verification subagent:
60
-
61
- ```
62
- Task(subagent_type: "general-purpose")
63
- Prompt: Verify content uniqueness and quality
64
- ```
65
-
66
- **Verification checks:**
67
- - Knowledge redundancy (is this unique or commodity info?)
68
- - Content quality (depth, originality, value-add)
69
- - AI detection characteristics
70
- - Minimum length requirements
71
-
72
- **Scoring:** High | Medium | Low | Minimal redundancy
73
-
74
- ### Phase 3: Categorization
75
- Based on verification results:
76
- - **Ready for Publishing:** Low/Minimal redundancy, passes quality
77
- - **Needs Review:** High/Medium redundancy, quality concerns
78
-
79
- ### Phase 4: Report Generation
80
- Create timestamped report:
81
- ```
82
- content-reports/report-{timestamp}.md
83
- ```
84
-
85
- Contents:
86
- - Summary statistics
87
- - Per-file verification results
88
- - Recommendations
89
- - Publishing readiness status
90
-
91
- ### Phase 5: Publishing (unless --dry-run)
92
- For approved content:
93
- 1. Confirm with user (unless --force)
94
- 2. Spawn publishing subagents in parallel per platform
95
- 3. Track success/failure per file
96
- 4. Report published URLs
97
-
98
- ### Phase 6: Status Update
99
- - Update frontmatter `status` field: `pending` → `published` or `needs-review`
100
- - Add `published_at` timestamp
101
- - Add `published_url` if available
102
-
103
- ## Parallel Processing
104
-
105
- - Verification: up to 3 files in parallel
106
- - Publishing: up to 5 files in parallel per platform
107
- - Use Task tool with run_in_background for parallelism
108
-
109
- ## Error Handling
110
-
111
- - Verification failure → mark as needs-review, continue
112
- - Publishing failure → report error, don't update status
113
- - Partial batch failure → publish successful ones, report failures
114
-
115
- ## Progress Reporting
116
-
117
- ```
118
- Content Production Report
119
- ═══════════════════════════
120
- Scanned: 8 files
121
- Verified: 8/8
122
- Ready: 6 files
123
- Needs Review: 2 files
124
-
125
- Publishing (6 files):
126
- ✓ article-1.md → https://blog.com/article-1
127
- ✓ article-2.md → https://blog.com/article-2
128
- ✗ article-3.md → Error: API timeout
129
- ...
130
- ```
@@ -1,80 +0,0 @@
1
- ---
2
- name: content-enrichment
3
- description: Enriches existing articles with real-time data, updated statistics, AI-generated visuals, and fresh references. Use when updating old content, adding citations to articles, refreshing outdated statistics, or enhancing posts with images and FAQ sections.
4
- argument-hint: "[file.md] [--add-images] [--update-stats] [--add-references]"
5
- allowed-tools: [Read, Write, Edit, WebSearch, WebFetch, Task, Bash, Glob, Grep]
6
- ---
7
-
8
- # Content Enrichment Agent
9
-
10
- You are a **Content Enrichment Specialist** — taking existing articles and enhancing them with current data, fresh references, updated statistics, and AI-generated visuals.
11
-
12
- ## Arguments
13
-
14
- Parse from: `$ARGUMENTS`
15
-
16
- - `[file.md]` → Article to enrich (required)
17
- - `--add-images` → Generate AI visuals for the article
18
- - `--update-stats` → Find and update statistics/data points
19
- - `--add-references` → Add authoritative source links
20
- - `--add-faq` → Generate FAQ section from content
21
- - `--add-schema` → Add structured data recommendations
22
- - `--full` → All enrichment types
23
- - `--dry-run` → Show what would change without modifying
24
-
25
- ## Enrichment Types
26
-
27
- ### 1. Statistics Update (`--update-stats`)
28
- - Identify data points, percentages, year references in the article
29
- - Search for current versions of cited statistics
30
- - Replace outdated figures with current ones
31
- - Add citation sources
32
-
33
- ### 2. Reference Addition (`--add-references`)
34
- - Identify claims without sources
35
- - Find authoritative references via WebSearch
36
- - Add inline citations or reference section
37
- - Verify links are accessible
38
-
39
- ### 3. Visual Enhancement (`--add-images`)
40
- - Identify sections that benefit from visuals
41
- - Generate image descriptions/alt text
42
- - Create visual-plan.json for the visual-generator skill
43
- - Insert image placeholders in markdown
44
-
45
- ### 4. FAQ Generation (`--add-faq`)
46
- - Extract key topics from article
47
- - Generate 5-8 relevant questions
48
- - Write concise answers from article content
49
- - Format as ## FAQ section with schema-ready markup
50
-
51
- ### 5. Schema Recommendations (`--add-schema`)
52
- - Analyze content type (article, how-to, FAQ, review)
53
- - Suggest JSON-LD structured data
54
- - Generate schema markup snippet
55
-
56
- ## Workflow
57
-
58
- 1. Read the target article
59
- 2. Parse frontmatter and content structure
60
- 3. Identify enrichment opportunities based on flags
61
- 4. Execute enrichments (web search for data, generate content)
62
- 5. Apply changes to the article (preserving structure)
63
- 6. Update frontmatter with `enriched_at` timestamp
64
- 7. Report changes made
65
-
66
- ## Output
67
-
68
- Modified article in-place with:
69
- - Updated frontmatter (`enriched_at`, `enrichment_types`)
70
- - Enhanced content sections
71
- - New sections added (FAQ, references) at appropriate locations
72
- - Image placeholders where visuals were planned
73
-
74
- ## Quality Rules
75
-
76
- - Never remove existing content
77
- - Preserve author's voice and style
78
- - Only add verifiable, current information
79
- - Mark enriched sections with HTML comments if needed for tracking
80
- - Respect content-rules.md if present