claude-plugin-wordpress-manager 2.3.1 → 2.4.0
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 +8 -3
- package/CHANGELOG.md +20 -0
- package/agents/wp-distribution-manager.md +98 -0
- package/docs/plans/2026-03-01-tier3-wcop-design.md +373 -0
- package/docs/plans/2026-03-01-tier3-wcop-implementation.md +915 -0
- package/hooks/hooks.json +18 -0
- package/package.json +9 -3
- package/servers/wp-rest-bridge/build/tools/buffer.d.ts +3 -0
- package/servers/wp-rest-bridge/build/tools/buffer.js +205 -0
- package/servers/wp-rest-bridge/build/tools/index.js +9 -0
- package/servers/wp-rest-bridge/build/tools/mailchimp.d.ts +3 -0
- package/servers/wp-rest-bridge/build/tools/mailchimp.js +265 -0
- package/servers/wp-rest-bridge/build/tools/sendgrid.d.ts +3 -0
- package/servers/wp-rest-bridge/build/tools/sendgrid.js +255 -0
- package/servers/wp-rest-bridge/build/types.d.ts +122 -0
- package/servers/wp-rest-bridge/build/wordpress.d.ts +9 -0
- package/servers/wp-rest-bridge/build/wordpress.js +112 -0
- package/skills/wordpress-router/references/decision-tree.md +4 -2
- package/skills/wp-content/SKILL.md +1 -0
- package/skills/wp-content-repurposing/SKILL.md +1 -0
- package/skills/wp-social-email/SKILL.md +152 -0
- package/skills/wp-social-email/references/audience-segmentation.md +173 -0
- package/skills/wp-social-email/references/buffer-social-publishing.md +124 -0
- package/skills/wp-social-email/references/content-to-distribution.md +156 -0
- package/skills/wp-social-email/references/distribution-analytics.md +208 -0
- package/skills/wp-social-email/references/mailchimp-integration.md +145 -0
- package/skills/wp-social-email/references/sendgrid-transactional.md +165 -0
- package/skills/wp-social-email/scripts/distribution_inspect.mjs +165 -0
- package/skills/wp-webhooks/SKILL.md +1 -0
|
@@ -0,0 +1,915 @@
|
|
|
1
|
+
# Tier 3 WCOP Implementation Plan
|
|
2
|
+
|
|
3
|
+
> **For Claude:** REQUIRED SUB-SKILL: Use superpowers:executing-plans to implement this plan task-by-task.
|
|
4
|
+
|
|
5
|
+
**Goal:** Complete the WCOP (WordPress Content Orchestration Platform) transformation by adding Social/Email Connectors (v2.4.0), Google Search Console Integration (v2.5.0), and AI Content Optimization (v2.6.0).
|
|
6
|
+
|
|
7
|
+
**Architecture:** Connector-First approach — new TypeScript tool files in `servers/wp-rest-bridge/src/tools/` for external API integration (Mailchimp, Buffer, SendGrid, GSC), plus Claude-native skill procedures for AI content optimization. Each service has independent auth via SiteConfig extension.
|
|
8
|
+
|
|
9
|
+
**Tech Stack:** TypeScript (WP REST Bridge), Node.js MCP SDK, axios, googleapis (v2.5.0), zod validation
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Release 1: v2.4.0 — Social/Email Connectors
|
|
14
|
+
|
|
15
|
+
### Task 1: Extend TypeScript Types
|
|
16
|
+
|
|
17
|
+
**Files:**
|
|
18
|
+
- Modify: `servers/wp-rest-bridge/src/types.ts` (append after line 271, after `WPNetworkSite`)
|
|
19
|
+
|
|
20
|
+
**Step 1: Add connector types to types.ts**
|
|
21
|
+
|
|
22
|
+
Append these interfaces after the existing `WPNetworkSite` interface:
|
|
23
|
+
|
|
24
|
+
```typescript
|
|
25
|
+
// ── Social/Email Connector Types ─────────────────────────────────────
|
|
26
|
+
|
|
27
|
+
export interface MCMailchimpAudience {
|
|
28
|
+
id: string;
|
|
29
|
+
name: string;
|
|
30
|
+
member_count: number;
|
|
31
|
+
campaign_defaults: { from_name: string; from_email: string; subject: string };
|
|
32
|
+
stats: { member_count: number; unsubscribe_count: number; open_rate: number; click_rate: number };
|
|
33
|
+
date_created: string;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export interface MCCampaign {
|
|
37
|
+
id: string;
|
|
38
|
+
type: string;
|
|
39
|
+
status: string;
|
|
40
|
+
emails_sent: number;
|
|
41
|
+
send_time: string;
|
|
42
|
+
settings: { subject_line: string; from_name: string; reply_to: string };
|
|
43
|
+
report_summary?: { opens: number; unique_opens: number; clicks: number; subscriber_clicks: number };
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export interface MCCampaignReport {
|
|
47
|
+
id: string;
|
|
48
|
+
campaign_title: string;
|
|
49
|
+
emails_sent: number;
|
|
50
|
+
opens: { opens_total: number; unique_opens: number; open_rate: number };
|
|
51
|
+
clicks: { clicks_total: number; unique_clicks: number; click_rate: number };
|
|
52
|
+
unsubscribed: number;
|
|
53
|
+
bounces: { hard_bounces: number; soft_bounces: number };
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export interface BufProfile {
|
|
57
|
+
id: string;
|
|
58
|
+
service: string;
|
|
59
|
+
formatted_username: string;
|
|
60
|
+
avatar: string;
|
|
61
|
+
counts: { sent: number; pending: number };
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
export interface BufUpdate {
|
|
65
|
+
id: string;
|
|
66
|
+
text: string;
|
|
67
|
+
profile_id: string;
|
|
68
|
+
status: string;
|
|
69
|
+
sent_at?: number;
|
|
70
|
+
due_at?: number;
|
|
71
|
+
statistics?: { clicks: number; reach: number; impressions: number };
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
export interface SGEmailRequest {
|
|
75
|
+
personalizations: { to: { email: string; name?: string }[]; subject?: string }[];
|
|
76
|
+
from: { email: string; name?: string };
|
|
77
|
+
subject: string;
|
|
78
|
+
content: { type: string; value: string }[];
|
|
79
|
+
template_id?: string;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
export interface SGTemplate {
|
|
83
|
+
id: string;
|
|
84
|
+
name: string;
|
|
85
|
+
generation: string;
|
|
86
|
+
updated_at: string;
|
|
87
|
+
versions: { id: string; name: string; active: number; subject: string }[];
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
export interface SGStats {
|
|
91
|
+
date: string;
|
|
92
|
+
stats: { metrics: { requests: number; delivered: number; opens: number; clicks: number; bounces: number; spam_reports: number } }[];
|
|
93
|
+
}
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
**Step 2: Verify file compiles**
|
|
97
|
+
|
|
98
|
+
Run: `cd servers/wp-rest-bridge && npx tsc --noEmit`
|
|
99
|
+
Expected: No errors
|
|
100
|
+
|
|
101
|
+
**Step 3: Commit**
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
git add servers/wp-rest-bridge/src/types.ts
|
|
105
|
+
git commit -m "feat(types): add Mailchimp, Buffer, SendGrid type interfaces"
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
### Task 2: Extend SiteConfig and wordpress.ts
|
|
111
|
+
|
|
112
|
+
**Files:**
|
|
113
|
+
- Modify: `servers/wp-rest-bridge/src/wordpress.ts`
|
|
114
|
+
|
|
115
|
+
**Step 1: Extend SiteConfig interface (line 4-18)**
|
|
116
|
+
|
|
117
|
+
Add fields after `is_multisite`:
|
|
118
|
+
|
|
119
|
+
```typescript
|
|
120
|
+
// Social/Email connector API keys (optional)
|
|
121
|
+
mailchimp_api_key?: string; // Format: "key-dc" (e.g., "abc123-us21")
|
|
122
|
+
buffer_access_token?: string; // Buffer OAuth access token
|
|
123
|
+
sendgrid_api_key?: string; // SendGrid API key (starts with "SG.")
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
**Step 2: Add connector client maps after line 52 (wcSiteClients)**
|
|
127
|
+
|
|
128
|
+
```typescript
|
|
129
|
+
const mcSiteClients = new Map<string, AxiosInstance>();
|
|
130
|
+
const bufSiteClients = new Map<string, AxiosInstance>();
|
|
131
|
+
const sgSiteClients = new Map<string, AxiosInstance>();
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
**Step 3: Add init functions for each connector**
|
|
135
|
+
|
|
136
|
+
After `initWcClient()` function (after line 191), add:
|
|
137
|
+
|
|
138
|
+
```typescript
|
|
139
|
+
/**
|
|
140
|
+
* Initialize a Mailchimp client for a site.
|
|
141
|
+
* API key format: "key-dc" where dc is the data center (e.g., "us21").
|
|
142
|
+
*/
|
|
143
|
+
async function initMailchimpClient(id: string, apiKey: string) {
|
|
144
|
+
const dc = apiKey.split('-').pop() || 'us21';
|
|
145
|
+
const client = axios.create({
|
|
146
|
+
baseURL: `https://${dc}.api.mailchimp.com/3.0/`,
|
|
147
|
+
headers: {
|
|
148
|
+
'Content-Type': 'application/json',
|
|
149
|
+
'Authorization': `Basic ${Buffer.from(`anystring:${apiKey}`).toString('base64')}`,
|
|
150
|
+
},
|
|
151
|
+
timeout: DEFAULT_TIMEOUT_MS,
|
|
152
|
+
});
|
|
153
|
+
mcSiteClients.set(id, client);
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* Initialize a Buffer client for a site.
|
|
158
|
+
*/
|
|
159
|
+
async function initBufferClient(id: string, accessToken: string) {
|
|
160
|
+
const client = axios.create({
|
|
161
|
+
baseURL: 'https://api.bufferapp.com/1/',
|
|
162
|
+
headers: {
|
|
163
|
+
'Content-Type': 'application/json',
|
|
164
|
+
},
|
|
165
|
+
params: { access_token: accessToken },
|
|
166
|
+
timeout: DEFAULT_TIMEOUT_MS,
|
|
167
|
+
});
|
|
168
|
+
bufSiteClients.set(id, client);
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* Initialize a SendGrid client for a site.
|
|
173
|
+
*/
|
|
174
|
+
async function initSendGridClient(id: string, apiKey: string) {
|
|
175
|
+
const client = axios.create({
|
|
176
|
+
baseURL: 'https://api.sendgrid.com/v3/',
|
|
177
|
+
headers: {
|
|
178
|
+
'Content-Type': 'application/json',
|
|
179
|
+
'Authorization': `Bearer ${apiKey}`,
|
|
180
|
+
},
|
|
181
|
+
timeout: DEFAULT_TIMEOUT_MS,
|
|
182
|
+
});
|
|
183
|
+
sgSiteClients.set(id, client);
|
|
184
|
+
}
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
**Step 4: Call init functions in initWordPress() loop**
|
|
188
|
+
|
|
189
|
+
After the WooCommerce init block (line 109-114), add:
|
|
190
|
+
|
|
191
|
+
```typescript
|
|
192
|
+
// Initialize Social/Email connector clients
|
|
193
|
+
for (const site of sites) {
|
|
194
|
+
if (site.mailchimp_api_key) {
|
|
195
|
+
await initMailchimpClient(site.id, site.mailchimp_api_key);
|
|
196
|
+
logToStderr(`Initialized Mailchimp for site: ${site.id}`);
|
|
197
|
+
}
|
|
198
|
+
if (site.buffer_access_token) {
|
|
199
|
+
await initBufferClient(site.id, site.buffer_access_token);
|
|
200
|
+
logToStderr(`Initialized Buffer for site: ${site.id}`);
|
|
201
|
+
}
|
|
202
|
+
if (site.sendgrid_api_key) {
|
|
203
|
+
await initSendGridClient(site.id, site.sendgrid_api_key);
|
|
204
|
+
logToStderr(`Initialized SendGrid for site: ${site.id}`);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
**Step 5: Add exported request functions and has-checks**
|
|
210
|
+
|
|
211
|
+
After `makeWooCommerceRequest()` (after line 468), add:
|
|
212
|
+
|
|
213
|
+
```typescript
|
|
214
|
+
// ── Mailchimp Request Interface ──────────────────────────────────
|
|
215
|
+
|
|
216
|
+
export function hasMailchimp(siteId?: string): boolean {
|
|
217
|
+
const id = siteId || activeSiteId;
|
|
218
|
+
return mcSiteClients.has(id);
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
export async function makeMailchimpRequest(
|
|
222
|
+
method: string,
|
|
223
|
+
endpoint: string,
|
|
224
|
+
data?: any,
|
|
225
|
+
siteId?: string
|
|
226
|
+
): Promise<any> {
|
|
227
|
+
const id = siteId || activeSiteId;
|
|
228
|
+
const client = mcSiteClients.get(id);
|
|
229
|
+
if (!client) {
|
|
230
|
+
throw new Error(
|
|
231
|
+
`Mailchimp not configured for site "${id}". Add mailchimp_api_key to WP_SITES_CONFIG.`
|
|
232
|
+
);
|
|
233
|
+
}
|
|
234
|
+
const limiter = getLimiter(id);
|
|
235
|
+
await limiter.acquire();
|
|
236
|
+
try {
|
|
237
|
+
const response = await client.request({ method, url: endpoint, data: method !== 'GET' ? data : undefined, params: method === 'GET' ? data : undefined });
|
|
238
|
+
return response.data;
|
|
239
|
+
} finally {
|
|
240
|
+
limiter.release();
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
// ── Buffer Request Interface ─────────────────────────────────────
|
|
245
|
+
|
|
246
|
+
export function hasBuffer(siteId?: string): boolean {
|
|
247
|
+
const id = siteId || activeSiteId;
|
|
248
|
+
return bufSiteClients.has(id);
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
export async function makeBufferRequest(
|
|
252
|
+
method: string,
|
|
253
|
+
endpoint: string,
|
|
254
|
+
data?: any,
|
|
255
|
+
siteId?: string
|
|
256
|
+
): Promise<any> {
|
|
257
|
+
const id = siteId || activeSiteId;
|
|
258
|
+
const client = bufSiteClients.get(id);
|
|
259
|
+
if (!client) {
|
|
260
|
+
throw new Error(
|
|
261
|
+
`Buffer not configured for site "${id}". Add buffer_access_token to WP_SITES_CONFIG.`
|
|
262
|
+
);
|
|
263
|
+
}
|
|
264
|
+
const limiter = getLimiter(id);
|
|
265
|
+
await limiter.acquire();
|
|
266
|
+
try {
|
|
267
|
+
const response = await client.request({ method, url: endpoint, data: method !== 'GET' ? data : undefined, params: method === 'GET' ? data : undefined });
|
|
268
|
+
return response.data;
|
|
269
|
+
} finally {
|
|
270
|
+
limiter.release();
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
// ── SendGrid Request Interface ───────────────────────────────────
|
|
275
|
+
|
|
276
|
+
export function hasSendGrid(siteId?: string): boolean {
|
|
277
|
+
const id = siteId || activeSiteId;
|
|
278
|
+
return sgSiteClients.has(id);
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
export async function makeSendGridRequest(
|
|
282
|
+
method: string,
|
|
283
|
+
endpoint: string,
|
|
284
|
+
data?: any,
|
|
285
|
+
siteId?: string
|
|
286
|
+
): Promise<any> {
|
|
287
|
+
const id = siteId || activeSiteId;
|
|
288
|
+
const client = sgSiteClients.get(id);
|
|
289
|
+
if (!client) {
|
|
290
|
+
throw new Error(
|
|
291
|
+
`SendGrid not configured for site "${id}". Add sendgrid_api_key to WP_SITES_CONFIG.`
|
|
292
|
+
);
|
|
293
|
+
}
|
|
294
|
+
const limiter = getLimiter(id);
|
|
295
|
+
await limiter.acquire();
|
|
296
|
+
try {
|
|
297
|
+
const response = await client.request({ method, url: endpoint, data: method !== 'GET' ? data : undefined, params: method === 'GET' ? data : undefined });
|
|
298
|
+
return response.data;
|
|
299
|
+
} finally {
|
|
300
|
+
limiter.release();
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
**Step 6: Verify compilation**
|
|
306
|
+
|
|
307
|
+
Run: `cd servers/wp-rest-bridge && npx tsc --noEmit`
|
|
308
|
+
Expected: No errors
|
|
309
|
+
|
|
310
|
+
**Step 7: Commit**
|
|
311
|
+
|
|
312
|
+
```bash
|
|
313
|
+
git add servers/wp-rest-bridge/src/wordpress.ts
|
|
314
|
+
git commit -m "feat(bridge): add Mailchimp, Buffer, SendGrid client init and request functions"
|
|
315
|
+
```
|
|
316
|
+
|
|
317
|
+
---
|
|
318
|
+
|
|
319
|
+
### Task 3: Mailchimp MCP Tools
|
|
320
|
+
|
|
321
|
+
**Files:**
|
|
322
|
+
- Create: `servers/wp-rest-bridge/src/tools/mailchimp.ts`
|
|
323
|
+
|
|
324
|
+
**Step 1: Create the tool file**
|
|
325
|
+
|
|
326
|
+
Follow exact pattern of `wc-webhooks.ts`. File exports `mailchimpTools: Tool[]` and `mailchimpHandlers: Record<string, Function>`. Implement 7 tools: `mc_list_audiences`, `mc_get_audience_members`, `mc_create_campaign`, `mc_update_campaign_content`, `mc_send_campaign`, `mc_get_campaign_report`, `mc_add_subscriber`.
|
|
327
|
+
|
|
328
|
+
Each tool:
|
|
329
|
+
- Imports `makeMailchimpRequest` from `../wordpress.js`
|
|
330
|
+
- Uses zod schema for input validation
|
|
331
|
+
- Returns JSON stringified response
|
|
332
|
+
- Checks `hasMailchimp()` before executing
|
|
333
|
+
|
|
334
|
+
**Step 2: Verify compilation**
|
|
335
|
+
|
|
336
|
+
Run: `cd servers/wp-rest-bridge && npx tsc --noEmit`
|
|
337
|
+
|
|
338
|
+
**Step 3: Commit**
|
|
339
|
+
|
|
340
|
+
```bash
|
|
341
|
+
git add servers/wp-rest-bridge/src/tools/mailchimp.ts
|
|
342
|
+
git commit -m "feat(mc): add 7 Mailchimp MCP tools"
|
|
343
|
+
```
|
|
344
|
+
|
|
345
|
+
---
|
|
346
|
+
|
|
347
|
+
### Task 4: Buffer MCP Tools
|
|
348
|
+
|
|
349
|
+
**Files:**
|
|
350
|
+
- Create: `servers/wp-rest-bridge/src/tools/buffer.ts`
|
|
351
|
+
|
|
352
|
+
**Step 1: Create the tool file**
|
|
353
|
+
|
|
354
|
+
Same pattern. Exports `bufferTools: Tool[]` and `bufferHandlers: Record<string, Function>`. Implement 5 tools: `buf_list_profiles`, `buf_create_update`, `buf_list_pending`, `buf_list_sent`, `buf_get_analytics`.
|
|
355
|
+
|
|
356
|
+
Each tool imports `makeBufferRequest` from `../wordpress.js`.
|
|
357
|
+
|
|
358
|
+
**Step 2: Verify compilation**
|
|
359
|
+
|
|
360
|
+
Run: `cd servers/wp-rest-bridge && npx tsc --noEmit`
|
|
361
|
+
|
|
362
|
+
**Step 3: Commit**
|
|
363
|
+
|
|
364
|
+
```bash
|
|
365
|
+
git add servers/wp-rest-bridge/src/tools/buffer.ts
|
|
366
|
+
git commit -m "feat(buf): add 5 Buffer MCP tools"
|
|
367
|
+
```
|
|
368
|
+
|
|
369
|
+
---
|
|
370
|
+
|
|
371
|
+
### Task 5: SendGrid MCP Tools
|
|
372
|
+
|
|
373
|
+
**Files:**
|
|
374
|
+
- Create: `servers/wp-rest-bridge/src/tools/sendgrid.ts`
|
|
375
|
+
|
|
376
|
+
**Step 1: Create the tool file**
|
|
377
|
+
|
|
378
|
+
Same pattern. Exports `sendgridTools: Tool[]` and `sendgridHandlers: Record<string, Function>`. Implement 6 tools: `sg_send_email`, `sg_list_templates`, `sg_get_template`, `sg_list_contacts`, `sg_add_contacts`, `sg_get_stats`.
|
|
379
|
+
|
|
380
|
+
Each tool imports `makeSendGridRequest` from `../wordpress.js`.
|
|
381
|
+
|
|
382
|
+
**Step 2: Verify compilation**
|
|
383
|
+
|
|
384
|
+
Run: `cd servers/wp-rest-bridge && npx tsc --noEmit`
|
|
385
|
+
|
|
386
|
+
**Step 3: Commit**
|
|
387
|
+
|
|
388
|
+
```bash
|
|
389
|
+
git add servers/wp-rest-bridge/src/tools/sendgrid.ts
|
|
390
|
+
git commit -m "feat(sg): add 6 SendGrid MCP tools"
|
|
391
|
+
```
|
|
392
|
+
|
|
393
|
+
---
|
|
394
|
+
|
|
395
|
+
### Task 6: Register Tools in index.ts and Build
|
|
396
|
+
|
|
397
|
+
**Files:**
|
|
398
|
+
- Modify: `servers/wp-rest-bridge/src/tools/index.ts`
|
|
399
|
+
|
|
400
|
+
**Step 1: Add imports**
|
|
401
|
+
|
|
402
|
+
After the `wc-webhooks` import (line 19), add:
|
|
403
|
+
|
|
404
|
+
```typescript
|
|
405
|
+
import { mailchimpTools, mailchimpHandlers } from './mailchimp.js';
|
|
406
|
+
import { bufferTools, bufferHandlers } from './buffer.js';
|
|
407
|
+
import { sendgridTools, sendgridHandlers } from './sendgrid.js';
|
|
408
|
+
```
|
|
409
|
+
|
|
410
|
+
**Step 2: Add to allTools array**
|
|
411
|
+
|
|
412
|
+
After `...wcWebhookTools` (line 39), add:
|
|
413
|
+
|
|
414
|
+
```typescript
|
|
415
|
+
...mailchimpTools, // 7 tools
|
|
416
|
+
...bufferTools, // 5 tools
|
|
417
|
+
...sendgridTools, // 6 tools
|
|
418
|
+
```
|
|
419
|
+
|
|
420
|
+
**Step 3: Add to toolHandlers object**
|
|
421
|
+
|
|
422
|
+
After `...wcWebhookHandlers` (line 60), add:
|
|
423
|
+
|
|
424
|
+
```typescript
|
|
425
|
+
...mailchimpHandlers,
|
|
426
|
+
...bufferHandlers,
|
|
427
|
+
...sendgridHandlers,
|
|
428
|
+
```
|
|
429
|
+
|
|
430
|
+
**Step 4: Build the project**
|
|
431
|
+
|
|
432
|
+
Run: `cd servers/wp-rest-bridge && npx tsc`
|
|
433
|
+
Expected: Build succeeds, new .js and .d.ts files in build/tools/
|
|
434
|
+
|
|
435
|
+
**Step 5: Commit**
|
|
436
|
+
|
|
437
|
+
```bash
|
|
438
|
+
git add servers/wp-rest-bridge/src/tools/index.ts servers/wp-rest-bridge/build/
|
|
439
|
+
git commit -m "feat(bridge): register Mailchimp, Buffer, SendGrid tools — 85 → 103 total"
|
|
440
|
+
```
|
|
441
|
+
|
|
442
|
+
---
|
|
443
|
+
|
|
444
|
+
### Task 7: Detection Script
|
|
445
|
+
|
|
446
|
+
**Files:**
|
|
447
|
+
- Create: `skills/wp-social-email/scripts/distribution_inspect.mjs`
|
|
448
|
+
|
|
449
|
+
**Step 1: Create detection script**
|
|
450
|
+
|
|
451
|
+
Node.js .mjs script that checks:
|
|
452
|
+
- `WP_SITES_CONFIG` env var for mailchimp_api_key, buffer_access_token, sendgrid_api_key
|
|
453
|
+
- WordPress plugins (Mailchimp for WP, Jetpack, JETWSE)
|
|
454
|
+
- Content volume (number of published posts — indicator of distribution readiness)
|
|
455
|
+
- Outputs JSON: `{ mailchimp: boolean, buffer: boolean, sendgrid: boolean, content_ready: boolean, recommendation: string }`
|
|
456
|
+
|
|
457
|
+
Follow pattern of existing scripts like `repurposing_inspect.mjs` and `webhook_inspect.mjs`.
|
|
458
|
+
|
|
459
|
+
**Step 2: Commit**
|
|
460
|
+
|
|
461
|
+
```bash
|
|
462
|
+
git add skills/wp-social-email/scripts/distribution_inspect.mjs
|
|
463
|
+
git commit -m "feat(detect): add distribution_inspect.mjs for Mailchimp/Buffer/SendGrid"
|
|
464
|
+
```
|
|
465
|
+
|
|
466
|
+
---
|
|
467
|
+
|
|
468
|
+
### Task 8: Skill wp-social-email (SKILL.md + 6 references)
|
|
469
|
+
|
|
470
|
+
**Files:**
|
|
471
|
+
- Create: `skills/wp-social-email/SKILL.md`
|
|
472
|
+
- Create: `skills/wp-social-email/references/mailchimp-integration.md`
|
|
473
|
+
- Create: `skills/wp-social-email/references/buffer-social-publishing.md`
|
|
474
|
+
- Create: `skills/wp-social-email/references/sendgrid-transactional.md`
|
|
475
|
+
- Create: `skills/wp-social-email/references/content-to-distribution.md`
|
|
476
|
+
- Create: `skills/wp-social-email/references/audience-segmentation.md`
|
|
477
|
+
- Create: `skills/wp-social-email/references/distribution-analytics.md`
|
|
478
|
+
|
|
479
|
+
**Step 1: Create SKILL.md**
|
|
480
|
+
|
|
481
|
+
Frontmatter: name `wp-social-email`, description with trigger keywords (social, email, Mailchimp, Buffer, SendGrid, distribution, newsletter, campaign), version 1.0.0.
|
|
482
|
+
|
|
483
|
+
Structure: Overview, When to Use, Decision Tree (Section 1: Mailchimp, Section 2: Buffer, Section 3: SendGrid, Section 4: Content-to-Distribution workflow, Section 5: Audience segmentation, Section 6: Analytics), Reference Files table, Recommended Agent (`wp-distribution-manager`), Related Skills.
|
|
484
|
+
|
|
485
|
+
**Step 2: Create 6 reference files**
|
|
486
|
+
|
|
487
|
+
Each 80-150 lines with actionable procedures, MCP tool references, and examples.
|
|
488
|
+
|
|
489
|
+
**Step 3: Commit**
|
|
490
|
+
|
|
491
|
+
```bash
|
|
492
|
+
git add skills/wp-social-email/
|
|
493
|
+
git commit -m "feat(skill): add wp-social-email skill with 6 reference files"
|
|
494
|
+
```
|
|
495
|
+
|
|
496
|
+
---
|
|
497
|
+
|
|
498
|
+
### Task 9: Agent wp-distribution-manager
|
|
499
|
+
|
|
500
|
+
**Files:**
|
|
501
|
+
- Create: `agents/wp-distribution-manager.md`
|
|
502
|
+
|
|
503
|
+
**Step 1: Create agent file**
|
|
504
|
+
|
|
505
|
+
Follow pattern of `wp-ecommerce-manager.md`. Frontmatter: name `wp-distribution-manager`, color `indigo`, description with examples, model `inherit`, tools `Read, Grep, Glob, Bash, WebFetch, WebSearch`.
|
|
506
|
+
|
|
507
|
+
Body: 5 procedures (detect services, fetch WP content, format for channel, publish/schedule, track analytics), report template, safety notes (confirm before send), related skills.
|
|
508
|
+
|
|
509
|
+
**Step 2: Commit**
|
|
510
|
+
|
|
511
|
+
```bash
|
|
512
|
+
git add agents/wp-distribution-manager.md
|
|
513
|
+
git commit -m "feat(agent): add wp-distribution-manager (indigo)"
|
|
514
|
+
```
|
|
515
|
+
|
|
516
|
+
---
|
|
517
|
+
|
|
518
|
+
### Task 10: Safety Hooks
|
|
519
|
+
|
|
520
|
+
**Files:**
|
|
521
|
+
- Modify: `hooks/hooks.json`
|
|
522
|
+
|
|
523
|
+
**Step 1: Add 2 new hooks**
|
|
524
|
+
|
|
525
|
+
In the PreToolUse array, after the `wc_delete_webhook` entry, add:
|
|
526
|
+
|
|
527
|
+
```json
|
|
528
|
+
,
|
|
529
|
+
{
|
|
530
|
+
"matcher": "mcp__wp-rest-bridge__mc_send_campaign",
|
|
531
|
+
"hooks": [
|
|
532
|
+
{
|
|
533
|
+
"type": "prompt",
|
|
534
|
+
"prompt": "The agent is about to SEND a Mailchimp email campaign. This will deliver emails to all subscribers in the target audience. Verify the user explicitly requested this send and has reviewed the campaign content. Respond 'approve' only if the send was clearly intentional."
|
|
535
|
+
}
|
|
536
|
+
]
|
|
537
|
+
},
|
|
538
|
+
{
|
|
539
|
+
"matcher": "mcp__wp-rest-bridge__sg_send_email",
|
|
540
|
+
"hooks": [
|
|
541
|
+
{
|
|
542
|
+
"type": "prompt",
|
|
543
|
+
"prompt": "The agent is about to SEND an email via SendGrid. Verify the user explicitly requested this email send and the recipient list is correct. Respond 'approve' only if intentional."
|
|
544
|
+
}
|
|
545
|
+
]
|
|
546
|
+
}
|
|
547
|
+
```
|
|
548
|
+
|
|
549
|
+
**Step 2: Commit**
|
|
550
|
+
|
|
551
|
+
```bash
|
|
552
|
+
git add hooks/hooks.json
|
|
553
|
+
git commit -m "feat(hooks): add safety gates for mc_send_campaign and sg_send_email"
|
|
554
|
+
```
|
|
555
|
+
|
|
556
|
+
---
|
|
557
|
+
|
|
558
|
+
### Task 11: Router v11 + Cross-references
|
|
559
|
+
|
|
560
|
+
**Files:**
|
|
561
|
+
- Modify: `skills/wordpress-router/SKILL.md` (version reference)
|
|
562
|
+
- Modify: `skills/wordpress-router/references/decision-tree.md` (add keywords + routing)
|
|
563
|
+
- Modify: `skills/wp-content-repurposing/SKILL.md` (add cross-ref)
|
|
564
|
+
- Modify: `skills/wp-webhooks/SKILL.md` (add cross-ref)
|
|
565
|
+
- Modify: `skills/wp-content/SKILL.md` (add cross-ref)
|
|
566
|
+
|
|
567
|
+
**Step 1: Update decision-tree.md**
|
|
568
|
+
|
|
569
|
+
- Header: change "v10" to "v11", add "+ social/email distribution" to the parenthetical
|
|
570
|
+
- Add keywords in Step 0 operations list: `social publish, schedule post, Buffer, email campaign, Mailchimp, SendGrid, transactional email, content distribution, newsletter send`
|
|
571
|
+
- Add routing entry in Step 2b after multi-language network entry:
|
|
572
|
+
```
|
|
573
|
+
- **Social/email distribution / publish to social / schedule post / email campaign / Mailchimp / Buffer / SendGrid / newsletter / transactional email / content distribution**
|
|
574
|
+
→ `wp-social-email` skill + `wp-distribution-manager` agent
|
|
575
|
+
```
|
|
576
|
+
|
|
577
|
+
**Step 2: Update cross-references**
|
|
578
|
+
|
|
579
|
+
- `wp-content-repurposing/SKILL.md`: add to Related Skills: `- **wp-social-email** — publish repurposed content to social and email channels`
|
|
580
|
+
- `wp-webhooks/SKILL.md`: add to Related Skills: `- **wp-social-email** — direct publishing to social/email (alternative to webhook-based distribution)`
|
|
581
|
+
- `wp-content/SKILL.md`: add to Related Skills: `- **wp-social-email** — distribute content to social media and email after creation`
|
|
582
|
+
|
|
583
|
+
**Step 3: Commit**
|
|
584
|
+
|
|
585
|
+
```bash
|
|
586
|
+
git add skills/wordpress-router/ skills/wp-content-repurposing/SKILL.md skills/wp-webhooks/SKILL.md skills/wp-content/SKILL.md
|
|
587
|
+
git commit -m "feat(router): upgrade to v11 with social/email distribution routing"
|
|
588
|
+
```
|
|
589
|
+
|
|
590
|
+
---
|
|
591
|
+
|
|
592
|
+
### Task 12: Version Bump + CHANGELOG + Build
|
|
593
|
+
|
|
594
|
+
**Files:**
|
|
595
|
+
- Modify: `.claude-plugin/plugin.json` (version → 2.4.0, description update)
|
|
596
|
+
- Modify: `package.json` (version → 2.4.0, description update)
|
|
597
|
+
- Modify: `CHANGELOG.md` (add v2.4.0 entry)
|
|
598
|
+
|
|
599
|
+
**Step 1: Update versions and CHANGELOG**
|
|
600
|
+
|
|
601
|
+
plugin.json: version "2.4.0", update description to mention 103 tools, 34 skills, 12 agents, social/email connectors.
|
|
602
|
+
package.json: version "2.4.0", update description.
|
|
603
|
+
CHANGELOG.md: add full v2.4.0 entry with Added (18 tools, 1 skill, 1 agent, 1 detection script, 2 safety hooks) and Changed (router v11, cross-references, tool count 85 → 103).
|
|
604
|
+
|
|
605
|
+
**Step 2: Final build**
|
|
606
|
+
|
|
607
|
+
Run: `cd servers/wp-rest-bridge && npx tsc`
|
|
608
|
+
|
|
609
|
+
**Step 3: Stage, commit, push**
|
|
610
|
+
|
|
611
|
+
```bash
|
|
612
|
+
git add .claude-plugin/plugin.json package.json CHANGELOG.md servers/wp-rest-bridge/build/
|
|
613
|
+
git commit -m "feat: add Social/Email Connectors (Mailchimp, Buffer, SendGrid) v2.4.0"
|
|
614
|
+
git push origin main
|
|
615
|
+
```
|
|
616
|
+
|
|
617
|
+
**Step 4: Publish npm + GitHub release**
|
|
618
|
+
|
|
619
|
+
```bash
|
|
620
|
+
npm config set //registry.npmjs.org/:_authToken=TOKEN
|
|
621
|
+
npm publish --access public
|
|
622
|
+
npm config delete //registry.npmjs.org/:_authToken
|
|
623
|
+
gh release create v2.4.0 --title "v2.4.0 — Social/Email Connectors" --notes "..."
|
|
624
|
+
```
|
|
625
|
+
|
|
626
|
+
---
|
|
627
|
+
|
|
628
|
+
## Release 2: v2.5.0 — Google Search Console Integration
|
|
629
|
+
|
|
630
|
+
### Task 13: Install googleapis dependency
|
|
631
|
+
|
|
632
|
+
**Files:**
|
|
633
|
+
- Modify: `servers/wp-rest-bridge/package.json`
|
|
634
|
+
|
|
635
|
+
**Step 1: Install**
|
|
636
|
+
|
|
637
|
+
Run: `cd servers/wp-rest-bridge && npm install googleapis`
|
|
638
|
+
|
|
639
|
+
**Step 2: Commit**
|
|
640
|
+
|
|
641
|
+
```bash
|
|
642
|
+
git add servers/wp-rest-bridge/package.json servers/wp-rest-bridge/package-lock.json
|
|
643
|
+
git commit -m "chore(deps): add googleapis for GSC integration"
|
|
644
|
+
```
|
|
645
|
+
|
|
646
|
+
---
|
|
647
|
+
|
|
648
|
+
### Task 14: Extend SiteConfig for GSC
|
|
649
|
+
|
|
650
|
+
**Files:**
|
|
651
|
+
- Modify: `servers/wp-rest-bridge/src/wordpress.ts`
|
|
652
|
+
|
|
653
|
+
**Step 1: Add GSC fields to SiteConfig**
|
|
654
|
+
|
|
655
|
+
After sendgrid_api_key:
|
|
656
|
+
|
|
657
|
+
```typescript
|
|
658
|
+
// Google Search Console (optional)
|
|
659
|
+
gsc_service_account_key?: string; // Path to service account JSON key file
|
|
660
|
+
gsc_site_url?: string; // GSC site URL (e.g., "sc-domain:mysite.com")
|
|
661
|
+
```
|
|
662
|
+
|
|
663
|
+
**Step 2: Add GSC auth module**
|
|
664
|
+
|
|
665
|
+
Create exported function `getGSCAuth(siteId)` that reads the service account JSON key, creates a `google.auth.GoogleAuth` client with `webmasters.readonly` scope, and returns an authenticated searchconsole client.
|
|
666
|
+
|
|
667
|
+
Add `hasGSC(siteId)` check function.
|
|
668
|
+
|
|
669
|
+
**Step 3: Commit**
|
|
670
|
+
|
|
671
|
+
```bash
|
|
672
|
+
git add servers/wp-rest-bridge/src/wordpress.ts
|
|
673
|
+
git commit -m "feat(bridge): add GSC Service Account auth to SiteConfig"
|
|
674
|
+
```
|
|
675
|
+
|
|
676
|
+
---
|
|
677
|
+
|
|
678
|
+
### Task 15: GSC MCP Tools
|
|
679
|
+
|
|
680
|
+
**Files:**
|
|
681
|
+
- Create: `servers/wp-rest-bridge/src/tools/gsc.ts`
|
|
682
|
+
|
|
683
|
+
**Step 1: Create the tool file**
|
|
684
|
+
|
|
685
|
+
Exports `gscTools: Tool[]` and `gscHandlers: Record<string, Function>`. Implement 8 tools: `gsc_list_sites`, `gsc_search_analytics`, `gsc_inspect_url`, `gsc_list_sitemaps`, `gsc_submit_sitemap`, `gsc_delete_sitemap`, `gsc_top_queries`, `gsc_page_performance`.
|
|
686
|
+
|
|
687
|
+
Uses `googleapis` `searchconsole` and `webmasters` APIs.
|
|
688
|
+
|
|
689
|
+
**Step 2: Register in index.ts**
|
|
690
|
+
|
|
691
|
+
Add import and spread into allTools/toolHandlers.
|
|
692
|
+
|
|
693
|
+
**Step 3: Build and verify**
|
|
694
|
+
|
|
695
|
+
Run: `cd servers/wp-rest-bridge && npx tsc`
|
|
696
|
+
|
|
697
|
+
**Step 4: Commit**
|
|
698
|
+
|
|
699
|
+
```bash
|
|
700
|
+
git add servers/wp-rest-bridge/src/tools/gsc.ts servers/wp-rest-bridge/src/tools/index.ts servers/wp-rest-bridge/build/
|
|
701
|
+
git commit -m "feat(gsc): add 8 Google Search Console MCP tools"
|
|
702
|
+
```
|
|
703
|
+
|
|
704
|
+
---
|
|
705
|
+
|
|
706
|
+
### Task 16: GSC Detection Script
|
|
707
|
+
|
|
708
|
+
**Files:**
|
|
709
|
+
- Create: `skills/wp-search-console/scripts/search_console_inspect.mjs`
|
|
710
|
+
|
|
711
|
+
**Step 1: Create detection script**
|
|
712
|
+
|
|
713
|
+
Checks: WP_SITES_CONFIG for gsc_service_account_key, sitemap.xml existence (via WebFetch), robots.txt, SEO plugins (Yoast, RankMath, AIOSEO), GSC config readiness.
|
|
714
|
+
|
|
715
|
+
**Step 2: Commit**
|
|
716
|
+
|
|
717
|
+
```bash
|
|
718
|
+
git add skills/wp-search-console/scripts/search_console_inspect.mjs
|
|
719
|
+
git commit -m "feat(detect): add search_console_inspect.mjs"
|
|
720
|
+
```
|
|
721
|
+
|
|
722
|
+
---
|
|
723
|
+
|
|
724
|
+
### Task 17: Skill wp-search-console (SKILL.md + 5 references)
|
|
725
|
+
|
|
726
|
+
**Files:**
|
|
727
|
+
- Create: `skills/wp-search-console/SKILL.md`
|
|
728
|
+
- Create: `skills/wp-search-console/references/gsc-setup.md`
|
|
729
|
+
- Create: `skills/wp-search-console/references/keyword-tracking.md`
|
|
730
|
+
- Create: `skills/wp-search-console/references/indexing-management.md`
|
|
731
|
+
- Create: `skills/wp-search-console/references/content-seo-feedback.md`
|
|
732
|
+
- Create: `skills/wp-search-console/references/competitor-gap-analysis.md`
|
|
733
|
+
|
|
734
|
+
**Step 1: Create SKILL.md and references**
|
|
735
|
+
|
|
736
|
+
SKILL.md: frontmatter with triggers (Search Console, GSC, keyword tracking, indexing, sitemap), decision tree for 5 sections, reference files table, recommended agent `wp-content-strategist`, related skills.
|
|
737
|
+
|
|
738
|
+
**Step 2: Commit**
|
|
739
|
+
|
|
740
|
+
```bash
|
|
741
|
+
git add skills/wp-search-console/
|
|
742
|
+
git commit -m "feat(skill): add wp-search-console skill with 5 reference files"
|
|
743
|
+
```
|
|
744
|
+
|
|
745
|
+
---
|
|
746
|
+
|
|
747
|
+
### Task 18: Update wp-content-strategist Agent for GSC
|
|
748
|
+
|
|
749
|
+
**Files:**
|
|
750
|
+
- Modify: `agents/wp-content-strategist.md`
|
|
751
|
+
|
|
752
|
+
**Step 1: Add SEO Feedback Loop section**
|
|
753
|
+
|
|
754
|
+
After the existing Programmatic SEO section, add "## SEO Feedback Loop (GSC)" with the 6-step procedure from the design doc. Add example in frontmatter for GSC-driven optimization.
|
|
755
|
+
|
|
756
|
+
**Step 2: Add cross-references**
|
|
757
|
+
|
|
758
|
+
Update `wp-programmatic-seo/SKILL.md`, `wp-content-attribution/SKILL.md`, `wp-monitoring/SKILL.md` with cross-refs to `wp-search-console`.
|
|
759
|
+
|
|
760
|
+
**Step 3: Commit**
|
|
761
|
+
|
|
762
|
+
```bash
|
|
763
|
+
git add agents/wp-content-strategist.md skills/wp-programmatic-seo/SKILL.md skills/wp-content-attribution/SKILL.md skills/wp-monitoring/SKILL.md
|
|
764
|
+
git commit -m "feat(agent): add SEO Feedback Loop to wp-content-strategist + cross-refs"
|
|
765
|
+
```
|
|
766
|
+
|
|
767
|
+
---
|
|
768
|
+
|
|
769
|
+
### Task 19: Router v12 + Version Bump + Publish v2.5.0
|
|
770
|
+
|
|
771
|
+
**Files:**
|
|
772
|
+
- Modify: `skills/wordpress-router/references/decision-tree.md` (v11 → v12, add GSC keywords)
|
|
773
|
+
- Modify: `.claude-plugin/plugin.json` (version → 2.5.0)
|
|
774
|
+
- Modify: `package.json` (version → 2.5.0)
|
|
775
|
+
- Modify: `CHANGELOG.md` (add v2.5.0 entry)
|
|
776
|
+
|
|
777
|
+
**Step 1: Update router**
|
|
778
|
+
|
|
779
|
+
Add GSC keywords to Step 0 and routing entry in Step 2b:
|
|
780
|
+
```
|
|
781
|
+
- **Google Search Console / keyword tracking / indexing status / sitemap submit / search performance / GSC / SERP data**
|
|
782
|
+
→ `wp-search-console` skill + `wp-content-strategist` agent
|
|
783
|
+
```
|
|
784
|
+
|
|
785
|
+
**Step 2: Version bump + CHANGELOG**
|
|
786
|
+
|
|
787
|
+
v2.5.0 entry: 8 GSC tools, 1 skill, detection script, agent update, router v12, googleapis dependency, 103 → 111 total tools.
|
|
788
|
+
|
|
789
|
+
**Step 3: Build, commit, push, publish**
|
|
790
|
+
|
|
791
|
+
```bash
|
|
792
|
+
cd servers/wp-rest-bridge && npx tsc
|
|
793
|
+
git add -A && git commit -m "feat: add Google Search Console integration v2.5.0"
|
|
794
|
+
git push origin main
|
|
795
|
+
npm publish --access public
|
|
796
|
+
gh release create v2.5.0 --title "v2.5.0 — Google Search Console Integration" --notes "..."
|
|
797
|
+
```
|
|
798
|
+
|
|
799
|
+
---
|
|
800
|
+
|
|
801
|
+
## Release 3: v2.6.0 — AI Content Optimization
|
|
802
|
+
|
|
803
|
+
### Task 20: Detection Script
|
|
804
|
+
|
|
805
|
+
**Files:**
|
|
806
|
+
- Create: `skills/wp-content-optimization/scripts/content_optimization_inspect.mjs`
|
|
807
|
+
|
|
808
|
+
**Step 1: Create detection script**
|
|
809
|
+
|
|
810
|
+
Checks: content volume (published posts count via REST), content age distribution, SEO plugins, readability plugins (Yoast readability, RankMath), GSC availability (from SiteConfig), WooCommerce availability (for attribution combo).
|
|
811
|
+
|
|
812
|
+
**Step 2: Commit**
|
|
813
|
+
|
|
814
|
+
```bash
|
|
815
|
+
git add skills/wp-content-optimization/scripts/content_optimization_inspect.mjs
|
|
816
|
+
git commit -m "feat(detect): add content_optimization_inspect.mjs"
|
|
817
|
+
```
|
|
818
|
+
|
|
819
|
+
---
|
|
820
|
+
|
|
821
|
+
### Task 21: Skill wp-content-optimization (SKILL.md + 5 references)
|
|
822
|
+
|
|
823
|
+
**Files:**
|
|
824
|
+
- Create: `skills/wp-content-optimization/SKILL.md`
|
|
825
|
+
- Create: `skills/wp-content-optimization/references/headline-optimization.md`
|
|
826
|
+
- Create: `skills/wp-content-optimization/references/readability-analysis.md`
|
|
827
|
+
- Create: `skills/wp-content-optimization/references/seo-content-scoring.md`
|
|
828
|
+
- Create: `skills/wp-content-optimization/references/meta-optimization.md`
|
|
829
|
+
- Create: `skills/wp-content-optimization/references/content-freshness.md`
|
|
830
|
+
|
|
831
|
+
**Step 1: Create SKILL.md and references**
|
|
832
|
+
|
|
833
|
+
SKILL.md: frontmatter with triggers (optimize content, headline, readability, SEO score, meta description, content freshness, content triage), 6 procedures detailed, decision tree, bulk triage classification table, reference files table, recommended agent `wp-content-strategist`, related skills.
|
|
834
|
+
|
|
835
|
+
**Step 2: Commit**
|
|
836
|
+
|
|
837
|
+
```bash
|
|
838
|
+
git add skills/wp-content-optimization/
|
|
839
|
+
git commit -m "feat(skill): add wp-content-optimization skill with 5 reference files"
|
|
840
|
+
```
|
|
841
|
+
|
|
842
|
+
---
|
|
843
|
+
|
|
844
|
+
### Task 22: Update wp-content-strategist Agent for AI Optimization
|
|
845
|
+
|
|
846
|
+
**Files:**
|
|
847
|
+
- Modify: `agents/wp-content-strategist.md`
|
|
848
|
+
|
|
849
|
+
**Step 1: Add AI Content Optimization Workflow section**
|
|
850
|
+
|
|
851
|
+
After the SEO Feedback Loop section, add "## AI Content Optimization Workflow" with the 5-step pipeline from the design doc and bulk triage classification table.
|
|
852
|
+
|
|
853
|
+
Add example in frontmatter for content optimization.
|
|
854
|
+
|
|
855
|
+
**Step 2: Add cross-references**
|
|
856
|
+
|
|
857
|
+
Update `wp-content/SKILL.md`, `wp-search-console/SKILL.md`, `wp-content-attribution/SKILL.md`, `wp-programmatic-seo/SKILL.md` with cross-refs to `wp-content-optimization`.
|
|
858
|
+
|
|
859
|
+
**Step 3: Commit**
|
|
860
|
+
|
|
861
|
+
```bash
|
|
862
|
+
git add agents/wp-content-strategist.md skills/wp-content/SKILL.md skills/wp-search-console/SKILL.md skills/wp-content-attribution/SKILL.md skills/wp-programmatic-seo/SKILL.md
|
|
863
|
+
git commit -m "feat(agent): add AI Content Optimization Workflow to wp-content-strategist"
|
|
864
|
+
```
|
|
865
|
+
|
|
866
|
+
---
|
|
867
|
+
|
|
868
|
+
### Task 23: Router v13 + Version Bump + GUIDE.md + Publish v2.6.0
|
|
869
|
+
|
|
870
|
+
**Files:**
|
|
871
|
+
- Modify: `skills/wordpress-router/references/decision-tree.md` (v12 → v13)
|
|
872
|
+
- Modify: `.claude-plugin/plugin.json` (version → 2.6.0)
|
|
873
|
+
- Modify: `package.json` (version → 2.6.0)
|
|
874
|
+
- Modify: `CHANGELOG.md` (add v2.6.0 entry)
|
|
875
|
+
- Modify: `docs/GUIDE.md` (full update from v2.3.0 to v2.6.0)
|
|
876
|
+
|
|
877
|
+
**Step 1: Update router**
|
|
878
|
+
|
|
879
|
+
Add content optimization keywords to Step 0 and routing entry in Step 2b:
|
|
880
|
+
```
|
|
881
|
+
- **Content optimization / headline scoring / readability / SEO score / meta optimization / content freshness / content triage / optimize posts**
|
|
882
|
+
→ `wp-content-optimization` skill + `wp-content-strategist` agent
|
|
883
|
+
```
|
|
884
|
+
|
|
885
|
+
**Step 2: Version bump + CHANGELOG**
|
|
886
|
+
|
|
887
|
+
v2.6.0 entry: 0 new tools, 1 skill, detection script, agent update, router v13. Final Tier 3 WCOP metrics: 36 skills, 12 agents, 111 MCP tools.
|
|
888
|
+
|
|
889
|
+
**Step 3: Update GUIDE.md**
|
|
890
|
+
|
|
891
|
+
Full update covering v2.4.0-v2.6.0: new capabilities list, structure tree, routing examples (3 new scenarios), skill tables (Social/Email + GSC + AI Optimization), detection scripts table (+3), glossary terms.
|
|
892
|
+
|
|
893
|
+
**Step 4: Build, commit, push, publish**
|
|
894
|
+
|
|
895
|
+
```bash
|
|
896
|
+
git add -A && git commit -m "feat: add AI Content Optimization + complete GUIDE.md update v2.6.0"
|
|
897
|
+
git push origin main
|
|
898
|
+
npm publish --access public
|
|
899
|
+
gh release create v2.6.0 --title "v2.6.0 — AI Content Optimization (Tier 3 WCOP Complete)" --notes "..."
|
|
900
|
+
```
|
|
901
|
+
|
|
902
|
+
---
|
|
903
|
+
|
|
904
|
+
### Task 24: Update Memory
|
|
905
|
+
|
|
906
|
+
**Files:**
|
|
907
|
+
- Modify: `/home/vinmor/.claude/projects/-home-vinmor/memory/wordpress-manager.md`
|
|
908
|
+
|
|
909
|
+
**Step 1: Update memory file**
|
|
910
|
+
|
|
911
|
+
Update version to 2.6.0, add Tier 3 skills/agent, update counts (36 skills, 12 agents, 111 tools, 24 detection scripts, 178 references), add version history entries for v2.4.0-v2.6.0, update router version to v13.
|
|
912
|
+
|
|
913
|
+
---
|
|
914
|
+
|
|
915
|
+
*Implementation plan for Tier 3 WCOP — 24 tasks across 3 releases*
|