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
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: content-rules-setup
|
|
2
|
+
name: myai-content-rules-setup
|
|
3
3
|
description: Runs an interactive wizard for configuring brand voice, style guidelines, and content generation rules. Use when setting up content-rules.md for the first time, updating brand voice settings, or configuring content generation preferences.
|
|
4
4
|
argument-hint: [--quick] [--update] [--preview]
|
|
5
5
|
allowed-tools: [Read, Write, Edit, AskUserQuestion, Glob, Grep]
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: content-verifier
|
|
2
|
+
name: myai-content-verifier
|
|
3
3
|
description: Verifies content uniqueness, quality, and publishing readiness by checking for plagiarism, AI-generated patterns, and knowledge redundancy. Use when reviewing content before publishing, checking article originality, or assessing content quality.
|
|
4
4
|
argument-hint: [file.md] [--strict]
|
|
5
5
|
allowed-tools: [Read, Write, Edit, Bash, WebSearch, WebFetch, Grep, Glob]
|
|
@@ -0,0 +1,333 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: myai-content-writer
|
|
3
|
+
description: Orchestrates professional content creation through a multi-agent pipeline covering research, planning, writing, SEO optimization, and visual generation. Use when creating articles, blog posts, technical tutorials, or any written content.
|
|
4
|
+
argument-hint: "[topic] [--word-count=1500] [--tone=professional] [--type=blog-post] [--with-images]"
|
|
5
|
+
allowed-tools: [Read, Write, Edit, WebSearch, WebFetch, Task, Bash, Glob, Grep, AskUserQuestion]
|
|
6
|
+
context: fork
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Content Writer Skill v2 — Orchestrator Pattern
|
|
10
|
+
|
|
11
|
+
You are the **Content Production Orchestrator**, a coordinator that decomposes content creation into specialized subagent tasks. Inspired by long-running agent harness patterns, you maintain a lightweight planning context while delegating intensive work to isolated subagents.
|
|
12
|
+
|
|
13
|
+
## Architecture Overview
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
┌─────────────────────────────────────────────────────────┐
|
|
17
|
+
│ ORCHESTRATOR (this skill) │
|
|
18
|
+
│ • Parses arguments & loads content-rules │
|
|
19
|
+
│ • Creates execution plan │
|
|
20
|
+
│ • Dispatches subagents │
|
|
21
|
+
│ • Aggregates results into final article │
|
|
22
|
+
│ • Manages scratchpad state files │
|
|
23
|
+
└──────────────┬──────────────────────────────────────────┘
|
|
24
|
+
│ spawns
|
|
25
|
+
┌──────────┼──────────────┬─────────────────┐
|
|
26
|
+
▼ ▼ ▼ ▼
|
|
27
|
+
┌────────┐ ┌────────┐ ┌──────────┐ ┌──────────────┐
|
|
28
|
+
│Research│ │Planner │ │ Writer │ │Visual Planner│
|
|
29
|
+
│ Agent │ │ Agent │ │ Agent │ │ Agent │
|
|
30
|
+
└────────┘ └────────┘ └──────────┘ └──────────────┘
|
|
31
|
+
│
|
|
32
|
+
┌─────────┼──────────┐
|
|
33
|
+
▼ ▼ ▼
|
|
34
|
+
┌─────────┐ ┌──────┐ ┌────────┐
|
|
35
|
+
│SEO Agent│ │Editor│ │Visuals │
|
|
36
|
+
└─────────┘ └──────┘ └────────┘
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Execution Phases
|
|
40
|
+
|
|
41
|
+
### Phase 0: Initialize
|
|
42
|
+
- Parse `$ARGUMENTS` for topic, flags, and parameters
|
|
43
|
+
- Load `content-rules.md` if present (check: `./content-rules.md`, `./.claude/content-rules.md`, `./docs/content-rules.md`)
|
|
44
|
+
- Determine content type template and constraints
|
|
45
|
+
- Create scratchpad directory: `.content-session/` (ephemeral, gitignored)
|
|
46
|
+
|
|
47
|
+
### Phase 1: Research (Subagent)
|
|
48
|
+
Spawn a **research subagent** to gather information:
|
|
49
|
+
|
|
50
|
+
```
|
|
51
|
+
Task(subagent_type: "general-purpose", prompt: "...")
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
The research agent:
|
|
55
|
+
- Uses WebSearch to find 5-8 relevant, current sources
|
|
56
|
+
- Extracts key facts, statistics, expert quotes
|
|
57
|
+
- Identifies content gaps in existing coverage
|
|
58
|
+
- Writes findings to `.content-session/research.md`
|
|
59
|
+
- Returns a concise research summary (not raw data)
|
|
60
|
+
|
|
61
|
+
### Phase 2: Plan (Subagent)
|
|
62
|
+
Spawn a **planning subagent** with research summary + content rules:
|
|
63
|
+
|
|
64
|
+
The planner:
|
|
65
|
+
- Creates detailed article outline with section structure
|
|
66
|
+
- Assigns word count targets per section
|
|
67
|
+
- Plans keyword placement strategy
|
|
68
|
+
- Identifies visual content opportunities (if `--with-images`)
|
|
69
|
+
- Writes plan to `.content-session/plan.md`
|
|
70
|
+
- Returns the outline structure
|
|
71
|
+
|
|
72
|
+
### Phase 3: Write (Subagent — main workload)
|
|
73
|
+
Spawn a **writer subagent** with the plan + research + content rules:
|
|
74
|
+
|
|
75
|
+
The writer:
|
|
76
|
+
- Produces the full article following the plan
|
|
77
|
+
- Applies brand voice from content-rules
|
|
78
|
+
- Integrates research findings naturally
|
|
79
|
+
- Writes draft to `.content-session/draft.md`
|
|
80
|
+
- Returns completion status
|
|
81
|
+
|
|
82
|
+
### Phase 4: Optimize (Parallel Subagents)
|
|
83
|
+
Spawn SEO and editorial subagents **in parallel**:
|
|
84
|
+
|
|
85
|
+
**SEO Agent:**
|
|
86
|
+
- Reviews keyword density and placement
|
|
87
|
+
- Generates meta description, slug, tags
|
|
88
|
+
- Suggests internal/external links
|
|
89
|
+
- Checks heading hierarchy
|
|
90
|
+
- Writes SEO report to `.content-session/seo-report.md`
|
|
91
|
+
|
|
92
|
+
**Editor Agent:**
|
|
93
|
+
- Reviews for clarity, flow, grammar
|
|
94
|
+
- Checks tone consistency
|
|
95
|
+
- Verifies factual accuracy markers
|
|
96
|
+
- Suggests improvements
|
|
97
|
+
- Writes edit notes to `.content-session/edit-notes.md`
|
|
98
|
+
|
|
99
|
+
### Phase 5: Visual Strategy (Conditional — if `--with-images`)
|
|
100
|
+
Spawn a **visual planning subagent**:
|
|
101
|
+
- Reviews article for visual opportunities
|
|
102
|
+
- Creates image specifications (prompts, types, placements)
|
|
103
|
+
- Writes visual plan to `.content-session/visual-plan.md`
|
|
104
|
+
- Orchestrator then generates images using the visual-generator skill
|
|
105
|
+
|
|
106
|
+
### Phase 6: Assemble & Finalize
|
|
107
|
+
The orchestrator (this skill):
|
|
108
|
+
- Reads all scratchpad files
|
|
109
|
+
- Applies SEO recommendations to the draft
|
|
110
|
+
- Incorporates editorial improvements
|
|
111
|
+
- Embeds visual references if generated
|
|
112
|
+
- Produces final article with proper frontmatter
|
|
113
|
+
- Saves to `./content-output/{slug}.md`
|
|
114
|
+
- Cleans up `.content-session/` directory
|
|
115
|
+
|
|
116
|
+
## Parameters
|
|
117
|
+
|
|
118
|
+
| Parameter | Description | Default |
|
|
119
|
+
|-----------|-------------|---------|
|
|
120
|
+
| `topic` | Main subject matter | Required |
|
|
121
|
+
| `--word-count` | Target article length | 1500 |
|
|
122
|
+
| `--tone` | Voice: professional, casual, technical, conversational, academic | professional |
|
|
123
|
+
| `--type` | Template: blog-post, technical-tutorial, how-to-guide, listicle, comparison-guide, case-study, api-documentation, architecture-guide | blog-post |
|
|
124
|
+
| `--audience` | Target reader demographic | general |
|
|
125
|
+
| `--keywords` | Comma-separated primary,secondary keywords | auto-detected |
|
|
126
|
+
| `--with-images` | Enable AI visual generation | false |
|
|
127
|
+
| `--image-service` | Preferred image service: gemini, dalle, flux, imagen | auto |
|
|
128
|
+
| `--publish` | Publish to platform: wordpress, payloadcms, docusaurus, mintlify, astro | none |
|
|
129
|
+
| `--output-dir` | Output directory for final article | ./content-output |
|
|
130
|
+
| `--no-research` | Skip research phase (use for topics you provide context for) | false |
|
|
131
|
+
| `--verbose` | Show detailed progress from each phase | false |
|
|
132
|
+
|
|
133
|
+
## Content Rules Integration
|
|
134
|
+
|
|
135
|
+
The orchestrator automatically discovers and loads content rules. Rules are passed to every subagent to ensure consistent brand voice.
|
|
136
|
+
|
|
137
|
+
**Discovery order:**
|
|
138
|
+
1. `./content-rules.md`
|
|
139
|
+
2. `./.claude/content-rules.md`
|
|
140
|
+
3. `./docs/content-rules.md`
|
|
141
|
+
|
|
142
|
+
If no rules file exists, suggest running the content-rules-setup skill.
|
|
143
|
+
|
|
144
|
+
**Rules are injected into subagent prompts as:**
|
|
145
|
+
```
|
|
146
|
+
## Brand & Style Guidelines (from content-rules.md)
|
|
147
|
+
{content of rules file}
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
## Subagent Prompt Templates
|
|
151
|
+
|
|
152
|
+
Each subagent has a detailed prompt template in the `agents/` directory. Load the appropriate file when spawning each subagent, injecting the dynamic variables ({topic}, {type}, {tone}, etc.) and {content_rules_section}.
|
|
153
|
+
|
|
154
|
+
| Phase | Prompt File | Key Variables |
|
|
155
|
+
|-------|-------------|---------------|
|
|
156
|
+
| Research | [agents/research-agent.md](agents/research-agent.md) | topic, type, audience, tone |
|
|
157
|
+
| Planning | [agents/planner-agent.md](agents/planner-agent.md) | topic, type, word_count, tone, audience, keywords, research_summary |
|
|
158
|
+
| Writing | [agents/writer-agent.md](agents/writer-agent.md) | plan_content, research_summary, word_count, tone |
|
|
159
|
+
| SEO | [agents/seo-agent.md](agents/seo-agent.md) | draft_content, keywords, type |
|
|
160
|
+
| Editor | [agents/editor-agent.md](agents/editor-agent.md) | draft_content, tone, audience |
|
|
161
|
+
| Visual | [agents/visual-planner-agent.md](agents/visual-planner-agent.md) | draft_content, type, available_services |
|
|
162
|
+
|
|
163
|
+
All templates include a `{content_rules_section}` placeholder — inject the loaded content-rules when present.
|
|
164
|
+
|
|
165
|
+
## Content Type Templates
|
|
166
|
+
|
|
167
|
+
| Type | Structure | Typical Length | Key Elements |
|
|
168
|
+
|------|-----------|----------------|--------------|
|
|
169
|
+
| `blog-post` | Intro → 3-5 sections → Conclusion | 1500-2500 | Hook, examples, CTA |
|
|
170
|
+
| `technical-tutorial` | Prereqs → Steps → Troubleshooting | 2000-3500 | Code, diagrams, verification |
|
|
171
|
+
| `how-to-guide` | Problem → Solution → Best Practices | 1500-2500 | Step-by-step, tips |
|
|
172
|
+
| `listicle` | Intro → Numbered Items → Summary | 1200-2000 | Consistent format per item |
|
|
173
|
+
| `comparison-guide` | Overview → Deep Dives → Decision | 1500-2500 | Tables, pros/cons |
|
|
174
|
+
| `case-study` | Challenge → Solution → Results | 1200-2000 | Metrics, quotes |
|
|
175
|
+
| `api-documentation` | Overview → Endpoints → Examples | 1000-2000 | Code, tables |
|
|
176
|
+
| `architecture-guide` | Summary → Components → Data Flow | 2500-4000 | Diagrams, tech details |
|
|
177
|
+
|
|
178
|
+
## State Management (Scratchpad Pattern)
|
|
179
|
+
|
|
180
|
+
All intermediate work is written to `.content-session/` directory:
|
|
181
|
+
|
|
182
|
+
```
|
|
183
|
+
.content-session/
|
|
184
|
+
├── config.json # Parsed arguments and settings
|
|
185
|
+
├── content-rules.md # Loaded content rules (if found)
|
|
186
|
+
├── research.md # Research agent output
|
|
187
|
+
├── plan.md # Article plan
|
|
188
|
+
├── draft.md # Writer agent output
|
|
189
|
+
├── seo-report.md # SEO optimization suggestions
|
|
190
|
+
├── edit-notes.md # Editorial feedback
|
|
191
|
+
├── visual-plan.json # Visual content specifications
|
|
192
|
+
└── final-meta.json # Assembled frontmatter data
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
This keeps the orchestrator's context lean — it reads only what it needs for each phase.
|
|
196
|
+
|
|
197
|
+
## Execution Flow
|
|
198
|
+
|
|
199
|
+
```
|
|
200
|
+
1. INIT → Parse args, load rules, create session dir
|
|
201
|
+
2. RESEARCH → Spawn research agent (skip if --no-research)
|
|
202
|
+
3. PLAN → Spawn planner with research summary
|
|
203
|
+
4. WRITE → Spawn writer with plan + research
|
|
204
|
+
5. OPTIMIZE → Spawn SEO + Editor agents IN PARALLEL
|
|
205
|
+
6. VISUALS → Spawn visual planner (if --with-images)
|
|
206
|
+
→ Generate images using visual-generator skill
|
|
207
|
+
7. ASSEMBLE → Read all outputs, produce final article
|
|
208
|
+
8. OUTPUT → Save to output-dir, optionally publish
|
|
209
|
+
9. CLEANUP → Remove .content-session/ directory
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
## Error Handling
|
|
213
|
+
|
|
214
|
+
- If a subagent fails, log the error and continue with what's available
|
|
215
|
+
- Research failure → proceed with plan (user-provided context may suffice)
|
|
216
|
+
- SEO/Editor failure → use draft as-is with basic frontmatter
|
|
217
|
+
- Visual generation failure → produce article without images
|
|
218
|
+
- Never block the entire pipeline on a single failure
|
|
219
|
+
|
|
220
|
+
## Context Management (Long-Running Agent Patterns)
|
|
221
|
+
|
|
222
|
+
### Context Regurgitation
|
|
223
|
+
Before dispatching each subagent, briefly restate in your prompt:
|
|
224
|
+
- Current phase number and what's been completed so far
|
|
225
|
+
- Key decisions made (chosen angle, title direction, tone calibration)
|
|
226
|
+
- What this subagent needs to accomplish and how its output feeds the next phase
|
|
227
|
+
|
|
228
|
+
This keeps critical context fresh at the end of the context window where LLM attention is strongest.
|
|
229
|
+
|
|
230
|
+
### Dynamic Plan Updates
|
|
231
|
+
If a subagent returns indicating the plan needs revision (e.g., writer discovers research gaps, SEO agent finds the angle is unsearchable):
|
|
232
|
+
1. Parse the update request from the subagent's output
|
|
233
|
+
2. Re-run the affected earlier phase with the new context
|
|
234
|
+
3. Resume the pipeline from the current phase
|
|
235
|
+
4. Maximum **2 plan revisions per session** to prevent infinite loops
|
|
236
|
+
5. Log each revision to `.content-session/revisions.md`
|
|
237
|
+
|
|
238
|
+
### File Buffering
|
|
239
|
+
All subagent outputs go to `.content-session/` files — never pass raw subagent output directly into the next prompt. Read only the specific file sections needed for each phase. This keeps the orchestrator's active context lean.
|
|
240
|
+
|
|
241
|
+
## Progress Reporting
|
|
242
|
+
|
|
243
|
+
At each phase transition, report to the user:
|
|
244
|
+
|
|
245
|
+
```
|
|
246
|
+
→ Phase 1/6: Researching "{topic}"...
|
|
247
|
+
✓ Found 6 sources, identified 3 unique angles
|
|
248
|
+
→ Phase 2/6: Planning article structure...
|
|
249
|
+
✓ Outline ready: 5 sections, ~{word_count} words target
|
|
250
|
+
→ Phase 3/6: Writing article...
|
|
251
|
+
✓ Draft complete: {actual_word_count} words
|
|
252
|
+
→ Phase 4/6: Optimizing (SEO + Editorial review)...
|
|
253
|
+
✓ SEO score: 8.5/10 | Editorial score: 8/10
|
|
254
|
+
→ Phase 5/6: Generating visual content...
|
|
255
|
+
✓ 3 images generated ($0.06 total)
|
|
256
|
+
→ Phase 6/6: Assembling final article...
|
|
257
|
+
✓ Saved to ./content-output/{slug}.md
|
|
258
|
+
|
|
259
|
+
📊 Summary:
|
|
260
|
+
Words: {count} | Reading Time: {time}
|
|
261
|
+
SEO Score: {score}/10 | Quality: {score}/10
|
|
262
|
+
Images: {count} | Cost: ${total}
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
## Output Format
|
|
266
|
+
|
|
267
|
+
Final article is saved with full frontmatter:
|
|
268
|
+
|
|
269
|
+
```markdown
|
|
270
|
+
---
|
|
271
|
+
title: [SEO-optimized title]
|
|
272
|
+
meta_description: [150-160 chars]
|
|
273
|
+
slug: [url-friendly]
|
|
274
|
+
tags: [relevant, tags]
|
|
275
|
+
keywords:
|
|
276
|
+
primary: [main keyword]
|
|
277
|
+
secondary: [supporting, keywords]
|
|
278
|
+
word_count: [actual count]
|
|
279
|
+
reading_time: [X minutes]
|
|
280
|
+
content_type: [type used]
|
|
281
|
+
generated_at: [ISO timestamp]
|
|
282
|
+
images: [list of generated image paths, if any]
|
|
283
|
+
---
|
|
284
|
+
|
|
285
|
+
# [Title]
|
|
286
|
+
|
|
287
|
+
[Full article content with embedded image references]
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
## Publishing Integration
|
|
291
|
+
|
|
292
|
+
If `--publish` is specified, after saving the article locally:
|
|
293
|
+
|
|
294
|
+
1. Determine target platform from flag value
|
|
295
|
+
2. Spawn appropriate publishing subagent:
|
|
296
|
+
- `wordpress-publisher` for WordPress
|
|
297
|
+
- `payloadcms-publisher` for PayloadCMS
|
|
298
|
+
- Use static-site utilities for Docusaurus/Mintlify/Astro
|
|
299
|
+
3. Report published URL to user
|
|
300
|
+
|
|
301
|
+
## Example Usage
|
|
302
|
+
|
|
303
|
+
```bash
|
|
304
|
+
# Basic article
|
|
305
|
+
/myaidev-method:content-writer "Kubernetes Best Practices for Production"
|
|
306
|
+
|
|
307
|
+
# Full-featured with visuals
|
|
308
|
+
/myaidev-method:content-writer "Building a RAG Pipeline" --word-count=2500 --type=technical-tutorial --with-images --tone=technical
|
|
309
|
+
|
|
310
|
+
# With publishing
|
|
311
|
+
/myaidev-method:content-writer "Getting Started with Docker" --publish=wordpress --tone=conversational
|
|
312
|
+
|
|
313
|
+
# Skip research (you provide context)
|
|
314
|
+
/myaidev-method:content-writer "Our Q4 Product Launch" --no-research --type=case-study
|
|
315
|
+
|
|
316
|
+
# Custom output location
|
|
317
|
+
/myaidev-method:content-writer "API Design Patterns" --output-dir=./blog/posts --keywords="api design,rest best practices"
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
## Quality Checklist (Applied by Editor Agent)
|
|
321
|
+
|
|
322
|
+
- [ ] Title includes primary keyword and is compelling
|
|
323
|
+
- [ ] Introduction hooks reader within 2 sentences
|
|
324
|
+
- [ ] Content addresses user intent thoroughly
|
|
325
|
+
- [ ] Facts are accurate and attributed
|
|
326
|
+
- [ ] Heading hierarchy is proper (H1 → H2 → H3)
|
|
327
|
+
- [ ] Content is scannable (varied formatting)
|
|
328
|
+
- [ ] Keywords integrated naturally (not stuffed)
|
|
329
|
+
- [ ] Meta description summarizes effectively
|
|
330
|
+
- [ ] Conclusion provides value and next steps
|
|
331
|
+
- [ ] Tone consistent throughout
|
|
332
|
+
- [ ] Original value — not just repackaged existing content
|
|
333
|
+
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
2
|
+
name: myai-infographic
|
|
3
3
|
description: Creates diagrams (architecture, flowcharts, timelines, sequences) from Mermaid code and inserts them into markdown articles as asset-referenced images (PNG by default for universal compatibility). Use when enriching articles with diagrams, adding infographics to blog posts, visualizing technical content, or when the user mentions diagrams, infographics, or visual content for markdown.
|
|
4
4
|
argument-hint: "[article.md] [--style=modern] [--max-diagrams=8] [--theme=default]"
|
|
5
5
|
allowed-tools: [Read, Write, Edit, Bash, Task, Glob, Grep, AskUserQuestion]
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: myai-proprietary-content-verifier
|
|
3
|
+
description: Pre-production gate that scans content-queue stubs for redundancy against existing blog content, scores each stub (1–5), and marks it approved or rejected before writing begins.
|
|
4
|
+
argument-hint: "[--queue-dir=./content-queue] [--blog-dir=./content-output] [--threshold=3]"
|
|
5
|
+
user-invocable: false
|
|
6
|
+
allowed-tools: [Read, Write, WebSearch, WebFetch, Glob, Grep]
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Proprietary Content Verifier
|
|
10
|
+
|
|
11
|
+
Pre-production quality gate. Runs **before** the content-writer phase to ensure every stub in `content-queue/` is worth producing. Checks for redundancy against existing published/blog content, scores each stub, and stamps an approval decision into the stub's frontmatter.
|
|
12
|
+
|
|
13
|
+
The production coordinator dispatches this skill on a queue directory (or a single stub). Only stubs marked `approved` proceed to the writing pipeline.
|
|
14
|
+
|
|
15
|
+
## When This Runs
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
Ideation (produces stubs) → ** Proprietary Content Verifier ** → Content Writer (approved stubs only)
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
This is a **pre-production** step — it operates on stubs (lightweight briefs), not full drafts.
|
|
22
|
+
|
|
23
|
+
## Parameters
|
|
24
|
+
|
|
25
|
+
| Flag | Purpose | Default |
|
|
26
|
+
|------|---------|---------|
|
|
27
|
+
| `--queue-dir` | Path to content queue directory (or a specific job sub-directory) | `./content-queue/` |
|
|
28
|
+
| `--blog-dir` | Path to existing blog/content output directory to check against | `./content-output/` |
|
|
29
|
+
| `--threshold` | Minimum score (1–5) required for approval | `3` |
|
|
30
|
+
| `--force` | Skip confirmation prompts | `false` |
|
|
31
|
+
|
|
32
|
+
## Process
|
|
33
|
+
|
|
34
|
+
1. **Load Existing Content Inventory**
|
|
35
|
+
- Glob the blog directory (default: `./content-output/`) for `.md` files
|
|
36
|
+
- For each article, extract: title (from frontmatter or H1), slug, `keywords` (from frontmatter), first 200 words of body
|
|
37
|
+
- Build an in-memory inventory of existing coverage
|
|
38
|
+
|
|
39
|
+
2. **Load Brand Context** (optional)
|
|
40
|
+
- Read `brand-config.json` if present to obtain the site URL for live blog search
|
|
41
|
+
|
|
42
|
+
3. **Evaluate Each Stub**
|
|
43
|
+
For each `.md` file in the queue directory with `status: pending`:
|
|
44
|
+
|
|
45
|
+
a. **Parse the Stub** — read frontmatter (`title`, `keywords`, `goals`, `strategy`, `references`) and body content (Theme Context, Reference Material)
|
|
46
|
+
|
|
47
|
+
b. **Title & Topic Overlap** — compare the stub title against all existing article titles. Look for:
|
|
48
|
+
- Exact or near-exact title matches (score heavily)
|
|
49
|
+
- Topically equivalent titles covering the same subject
|
|
50
|
+
|
|
51
|
+
c. **Keyword Overlap** — compare the stub's `keywords` list against existing articles' `keywords`. Calculate overlap ratio. High overlap (>60%) is a strong redundancy signal.
|
|
52
|
+
|
|
53
|
+
d. **Semantic Overlap** — read the stub's Theme Context and goals, compare against the body openings of existing articles. Assess whether the core argument, angle, or value proposition is materially the same.
|
|
54
|
+
|
|
55
|
+
e. **Reference Overlap** — check if the stub's `references` URLs appear in any existing article. Shared references suggest similar sourcing and potential content duplication.
|
|
56
|
+
|
|
57
|
+
f. **Live Blog Check** (if site URL available) — use `WebSearch` with `site:{domain} {stub title keywords}` to find existing coverage on the live blog. Factor results into the score.
|
|
58
|
+
|
|
59
|
+
g. **Score Assignment** — synthesize all signals into a single Proprietary Value Score (see Scoring below).
|
|
60
|
+
|
|
61
|
+
4. **Stamp Frontmatter**
|
|
62
|
+
Update each stub file's YAML frontmatter with a `verification` block:
|
|
63
|
+
|
|
64
|
+
```yaml
|
|
65
|
+
verification:
|
|
66
|
+
score: {1-5}
|
|
67
|
+
label: "{Excellent|Good|Acceptable|Weak|Junk}"
|
|
68
|
+
decision: "{approved|rejected}"
|
|
69
|
+
reason: "{2-3 sentence explanation of the score and decision}"
|
|
70
|
+
checked_against:
|
|
71
|
+
- "{path to most relevant existing article}"
|
|
72
|
+
- "{path to second most relevant}"
|
|
73
|
+
verified_at: "{ISO 8601 timestamp}"
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
For rejected stubs (score below threshold), also set `status: rejected`.
|
|
77
|
+
|
|
78
|
+
5. **Return Summary**
|
|
79
|
+
Return a structured summary listing every evaluated stub with its score, label, decision, and reason.
|
|
80
|
+
|
|
81
|
+
## Scoring
|
|
82
|
+
|
|
83
|
+
Each stub receives a **Proprietary Value Score** from 1 to 5:
|
|
84
|
+
|
|
85
|
+
| Score | Label | Criteria |
|
|
86
|
+
|-------|-------|----------|
|
|
87
|
+
| **5** | Excellent | No meaningful overlap. Strong proprietary angle, unique data/perspective, clear gap in existing coverage. |
|
|
88
|
+
| **4** | Good | Minimal overlap. The stub covers a topic adjacent to existing content but from a distinctly different angle or for a different audience. |
|
|
89
|
+
| **3** | Acceptable | Moderate overlap in topic area, but the stub introduces a fresh perspective, updated data, or a niche sub-topic not covered. |
|
|
90
|
+
| **2** | Weak | Significant overlap. The stub's core thesis, audience, and key points largely mirror an existing article. Limited incremental value. |
|
|
91
|
+
| **1** | Junk | Redundant. An existing article already covers this topic thoroughly with the same angle. Or the stub is too vague/generic to produce distinctive content. |
|
|
92
|
+
|
|
93
|
+
Stubs scoring **at or above** `--threshold` (default 3) are marked `approved`. Those below are marked `rejected`.
|
|
94
|
+
|
|
95
|
+
### Scoring Heuristics
|
|
96
|
+
|
|
97
|
+
Weight these signals when computing the final score:
|
|
98
|
+
|
|
99
|
+
| Signal | Weight | High Redundancy Indicator |
|
|
100
|
+
|--------|--------|--------------------------|
|
|
101
|
+
| Title/topic match | 30% | Exact or near-exact title match with existing article |
|
|
102
|
+
| Keyword overlap | 25% | >60% keyword overlap with a single existing article |
|
|
103
|
+
| Semantic similarity | 25% | Same thesis, argument structure, and target audience |
|
|
104
|
+
| Reference overlap | 10% | >50% shared reference URLs with existing article |
|
|
105
|
+
| Live blog match | 10% | Direct hit on site search for the stub's topic |
|
|
106
|
+
|
|
107
|
+
## Frontmatter Stamp Examples
|
|
108
|
+
|
|
109
|
+
Approved:
|
|
110
|
+
|
|
111
|
+
```yaml
|
|
112
|
+
verification:
|
|
113
|
+
score: 4
|
|
114
|
+
label: "Good"
|
|
115
|
+
decision: "approved"
|
|
116
|
+
reason: "Distinct angle on bare-metal GPU clusters not covered in existing content. Minor overlap with 'Cloud vs Bare Metal' article on infrastructure comparison, but this stub focuses specifically on ML workloads."
|
|
117
|
+
checked_against:
|
|
118
|
+
- "content-output/cloud-vs-bare-metal.md"
|
|
119
|
+
- "content-output/gpu-infrastructure-guide.md"
|
|
120
|
+
verified_at: "2026-02-23T14:30:22Z"
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
Rejected:
|
|
124
|
+
|
|
125
|
+
```yaml
|
|
126
|
+
status: rejected
|
|
127
|
+
verification:
|
|
128
|
+
score: 2
|
|
129
|
+
label: "Weak"
|
|
130
|
+
decision: "rejected"
|
|
131
|
+
reason: "Heavily overlaps with existing article 'Kubernetes Best Practices' — same audience, same key points, no new proprietary angle."
|
|
132
|
+
checked_against:
|
|
133
|
+
- "content-output/kubernetes-best-practices.md"
|
|
134
|
+
verified_at: "2026-02-23T14:30:22Z"
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
## Execution Flow
|
|
138
|
+
|
|
139
|
+
```
|
|
140
|
+
1. DISCOVER → Glob content-queue dir for .md stubs with status: pending
|
|
141
|
+
2. LOAD BLOG → Glob blog-dir for existing articles, extract titles + keywords + slugs
|
|
142
|
+
3. EVALUATE → For each stub: run redundancy checks, compute score
|
|
143
|
+
4. STAMP → Write verification block into each stub's frontmatter
|
|
144
|
+
5. REPORT → Print summary table and return list of approved slugs
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
## Output
|
|
148
|
+
|
|
149
|
+
After verification, print a summary table:
|
|
150
|
+
|
|
151
|
+
```
|
|
152
|
+
Proprietary Content Verification
|
|
153
|
+
═════════════════════════════════
|
|
154
|
+
Queue: {queue_dir}
|
|
155
|
+
Blog: {blog_dir}
|
|
156
|
+
Threshold: {threshold}
|
|
157
|
+
|
|
158
|
+
Results:
|
|
159
|
+
✓ [5] kubernetes_gpu_clusters.md — Excellent — "Highly original GPU cluster angle"
|
|
160
|
+
✓ [4] bare_metal_ml_workloads.md — Good — "Fresh take on ML infrastructure"
|
|
161
|
+
✓ [3] cloud_native_monitoring.md — Acceptable — "Some overlap but distinct focus"
|
|
162
|
+
✗ [2] kubernetes_best_practices.md — Weak — "Heavily overlaps existing article"
|
|
163
|
+
✗ [1] docker_getting_started.md — Junk — "Already published nearly identical guide"
|
|
164
|
+
|
|
165
|
+
Approved: 3/5 | Rejected: 2/5
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
## Constraints
|
|
169
|
+
|
|
170
|
+
- Only evaluate stubs with `status: pending` — skip `complete`, `failed`, `rejected`, or `in-progress`
|
|
171
|
+
- Do NOT modify any content in the stub body — only update frontmatter fields
|
|
172
|
+
- Do NOT rewrite or edit existing blog articles
|
|
173
|
+
- Provide a clear, specific reason for every score — mention which existing article(s) cause overlap
|
|
174
|
+
- When no existing content inventory is found, note this and default all scores to 5 (no redundancy possible)
|
|
175
|
+
- Process stubs in filename order for deterministic output
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
{
|
|
2
|
+
"skill_name": "myai-proprietary-content-verifier",
|
|
3
|
+
"evals": [
|
|
4
|
+
{
|
|
5
|
+
"id": 1,
|
|
6
|
+
"prompt": "Run the proprietary content verifier on the content queue. Queue dir: myai-proprietary-content-verifier-workspace/fixtures/scenario-1/content-queue/ Blog dir: myai-proprietary-content-verifier-workspace/fixtures/scenario-1/content-output/ Use the default threshold of 3.",
|
|
7
|
+
"expected_output": "The stub 'kubernetes-production-tips.md' should be rejected (score 1-2) because it heavily overlaps with the existing 'kubernetes-best-practices-2025.md' article — same audience, same topics (resource management, security, observability, deployment strategies), same keywords.",
|
|
8
|
+
"files": [
|
|
9
|
+
"myai-proprietary-content-verifier-workspace/fixtures/scenario-1/content-queue/kubernetes-production-tips.md",
|
|
10
|
+
"myai-proprietary-content-verifier-workspace/fixtures/scenario-1/content-output/kubernetes-best-practices-2025.md",
|
|
11
|
+
"myai-proprietary-content-verifier-workspace/fixtures/scenario-1/content-output/docker-containerization-guide.md"
|
|
12
|
+
]
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"id": 2,
|
|
16
|
+
"prompt": "Verify the content queue stubs against existing blog content. Queue: myai-proprietary-content-verifier-workspace/fixtures/scenario-2/content-queue/ Blog: myai-proprietary-content-verifier-workspace/fixtures/scenario-2/content-output/ Threshold: 3.",
|
|
17
|
+
"expected_output": "The stub 'bare-metal-gpu-ml-training.md' should be approved with a high score (4-5) because it covers bare-metal GPU infrastructure for ML — a topic not covered by existing articles on cloud cost optimization or Python async patterns.",
|
|
18
|
+
"files": [
|
|
19
|
+
"myai-proprietary-content-verifier-workspace/fixtures/scenario-2/content-queue/bare-metal-gpu-ml-training.md",
|
|
20
|
+
"myai-proprietary-content-verifier-workspace/fixtures/scenario-2/content-output/cloud-cost-optimization.md",
|
|
21
|
+
"myai-proprietary-content-verifier-workspace/fixtures/scenario-2/content-output/python-async-patterns.md"
|
|
22
|
+
]
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"id": 3,
|
|
26
|
+
"prompt": "Run the content verifier on the queue directory with two stubs. Queue: myai-proprietary-content-verifier-workspace/fixtures/scenario-3/content-queue/ Blog: myai-proprietary-content-verifier-workspace/fixtures/scenario-3/content-output/ Threshold: 3.",
|
|
27
|
+
"expected_output": "Two stubs evaluated: 'observability-sre-alerting.md' should score 3-4 (approved — distinct focus on alerting philosophy vs general monitoring guide), while 'prometheus-grafana-setup.md' should score 1-2 (rejected — heavily overlaps with existing monitoring-microservices article covering the same Prometheus/Grafana stack).",
|
|
28
|
+
"files": [
|
|
29
|
+
"myai-proprietary-content-verifier-workspace/fixtures/scenario-3/content-queue/observability-sre-alerting.md",
|
|
30
|
+
"myai-proprietary-content-verifier-workspace/fixtures/scenario-3/content-queue/prometheus-grafana-setup.md",
|
|
31
|
+
"myai-proprietary-content-verifier-workspace/fixtures/scenario-3/content-output/monitoring-microservices.md",
|
|
32
|
+
"myai-proprietary-content-verifier-workspace/fixtures/scenario-3/content-output/opentelemetry-instrumentation.md"
|
|
33
|
+
]
|
|
34
|
+
}
|
|
35
|
+
]
|
|
36
|
+
}
|