claude-plugin-wordpress-manager 2.12.2 → 2.14.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 +94 -2
- package/agents/wp-accessibility-auditor.md +1 -1
- package/agents/wp-content-strategist.md +2 -2
- package/agents/wp-deployment-engineer.md +1 -1
- package/agents/wp-distribution-manager.md +1 -1
- package/agents/wp-monitoring-agent.md +1 -1
- package/agents/wp-performance-optimizer.md +1 -1
- package/agents/wp-security-auditor.md +1 -1
- package/agents/wp-site-manager.md +3 -3
- package/commands/wp-setup.md +2 -2
- package/docs/GUIDE.md +260 -21
- package/docs/VALIDATION.md +341 -0
- package/docs/guides/wp-ecommerce.md +4 -4
- package/docs/plans/2026-03-01-tier3-wcop-implementation.md +1 -1
- package/docs/plans/2026-03-01-tier4-5-implementation.md +1 -1
- package/docs/plans/2026-03-02-content-framework-architecture.md +612 -0
- package/docs/plans/2026-03-02-content-framework-strategic-reflections.md +228 -0
- package/docs/plans/2026-03-02-content-intelligence-phase2.md +560 -0
- package/docs/plans/2026-03-02-content-pipeline-phase1.md +456 -0
- package/docs/plans/2026-03-02-dashboard-kanban-design.md +761 -0
- package/docs/plans/2026-03-02-dashboard-kanban-implementation.md +598 -0
- package/docs/plans/2026-03-02-dashboard-strategy.md +363 -0
- package/docs/plans/2026-03-02-editorial-calendar-phase3.md +490 -0
- package/docs/validation/.gitkeep +0 -0
- package/docs/validation/dashboard.html +286 -0
- package/docs/validation/results.json +1705 -0
- package/package.json +16 -3
- package/scripts/context-scanner.mjs +446 -0
- package/scripts/dashboard-renderer.mjs +553 -0
- package/scripts/run-validation.mjs +1132 -0
- package/servers/wp-rest-bridge/build/server.js +17 -6
- package/servers/wp-rest-bridge/build/tools/index.js +0 -9
- package/servers/wp-rest-bridge/build/tools/plugin-repository.js +23 -31
- package/servers/wp-rest-bridge/build/tools/schema.js +10 -2
- package/servers/wp-rest-bridge/build/tools/unified-content.js +10 -2
- package/servers/wp-rest-bridge/build/wordpress.d.ts +0 -3
- package/servers/wp-rest-bridge/build/wordpress.js +16 -98
- package/servers/wp-rest-bridge/package.json +1 -0
- package/skills/wp-analytics/SKILL.md +153 -0
- package/skills/wp-analytics/references/signals-feed-schema.md +417 -0
- package/skills/wp-content/references/content-templates.md +1 -1
- package/skills/wp-content/references/seo-optimization.md +8 -8
- package/skills/wp-content-attribution/references/roi-calculation.md +1 -1
- package/skills/wp-content-attribution/references/utm-tracking-setup.md +5 -5
- package/skills/wp-content-generation/references/generation-workflow.md +2 -2
- package/skills/wp-content-pipeline/SKILL.md +461 -0
- package/skills/wp-content-pipeline/references/content-brief-schema.md +377 -0
- package/skills/wp-content-pipeline/references/site-config-schema.md +431 -0
- package/skills/wp-content-repurposing/references/auto-transform-pipeline.md +1 -1
- package/skills/wp-content-repurposing/references/email-newsletter.md +1 -1
- package/skills/wp-content-repurposing/references/platform-specs.md +2 -2
- package/skills/wp-content-repurposing/references/transform-templates.md +27 -27
- package/skills/wp-dashboard/SKILL.md +121 -0
- package/skills/wp-deploy/references/ssh-deploy.md +2 -2
- package/skills/wp-editorial-planner/SKILL.md +262 -0
- package/skills/wp-editorial-planner/references/editorial-schema.md +268 -0
- package/skills/wp-multilang-network/references/content-sync.md +3 -3
- package/skills/wp-multilang-network/references/network-architecture.md +1 -1
- package/skills/wp-multilang-network/references/seo-international.md +7 -7
- package/skills/wp-structured-data/references/schema-types.md +4 -4
- package/skills/wp-webhooks/references/payload-formats.md +3 -3
|
@@ -0,0 +1,456 @@
|
|
|
1
|
+
# Content Pipeline Engine (Phase 1) — Implementation Plan
|
|
2
|
+
|
|
3
|
+
> **For Claude:** REQUIRED SUB-SKILL: Use superpowers:executing-plans to implement this plan task-by-task.
|
|
4
|
+
|
|
5
|
+
**Goal:** Create the content pipeline that connects Gen* skill output to WordPress publishing via structured MD files and a new orchestration skill.
|
|
6
|
+
|
|
7
|
+
**Architecture:** File-based pipeline using `.content-state/` directory with YAML-frontmatter MD files as configuration and state. A new `wp-content-pipeline` skill reads brief files and orchestrates existing MCP tools (create_content, assign_terms_to_content, sd_inject, li_create_post, etc.) to publish and distribute. Zero new TypeScript — all orchestration lives in skill prompts and MD schemas.
|
|
8
|
+
|
|
9
|
+
**Tech Stack:** Markdown + YAML frontmatter, Claude Code skill system, existing MCP tools (148 registered)
|
|
10
|
+
|
|
11
|
+
**Reference Docs:**
|
|
12
|
+
- Architecture: `docs/plans/2026-03-02-content-framework-architecture.md` (Sections 1.1–1.5)
|
|
13
|
+
- Strategic context: `docs/plans/2026-03-02-content-framework-strategic-reflections.md`
|
|
14
|
+
- Existing skill patterns: `skills/wp-content/SKILL.md`, `skills/wp-social-email/SKILL.md`
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
### Task 1: Create `.content-state/` Directory Structure
|
|
19
|
+
|
|
20
|
+
**Files:**
|
|
21
|
+
- Create: `.content-state/.gitkeep`
|
|
22
|
+
- Create: `.content-state/pipeline-active/.gitkeep`
|
|
23
|
+
- Create: `.content-state/pipeline-archive/.gitkeep`
|
|
24
|
+
|
|
25
|
+
**Step 1: Create the directory tree**
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
mkdir -p .content-state/pipeline-active .content-state/pipeline-archive
|
|
29
|
+
touch .content-state/.gitkeep .content-state/pipeline-active/.gitkeep .content-state/pipeline-archive/.gitkeep
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
**Step 2: Add `.content-state/` to `.gitignore` except structure**
|
|
33
|
+
|
|
34
|
+
Append to `.gitignore` (create if absent):
|
|
35
|
+
|
|
36
|
+
```gitignore
|
|
37
|
+
# Content Framework state — instance files are local, schemas are tracked
|
|
38
|
+
.content-state/*.config.md
|
|
39
|
+
.content-state/pipeline-active/*.brief.md
|
|
40
|
+
.content-state/pipeline-archive/
|
|
41
|
+
.content-state/signals-feed.md
|
|
42
|
+
.content-state/*-editorial.state.md
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
This keeps the directory structure tracked (via `.gitkeep`) but ignores instance data (briefs, configs, signals) which are site-specific.
|
|
46
|
+
|
|
47
|
+
**Step 3: Verify structure**
|
|
48
|
+
|
|
49
|
+
Run: `find .content-state -type f`
|
|
50
|
+
|
|
51
|
+
Expected:
|
|
52
|
+
```
|
|
53
|
+
.content-state/.gitkeep
|
|
54
|
+
.content-state/pipeline-active/.gitkeep
|
|
55
|
+
.content-state/pipeline-archive/.gitkeep
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
**Step 4: Commit**
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
git add .content-state/ .gitignore
|
|
62
|
+
git commit -m "feat(content-framework): create .content-state/ directory structure
|
|
63
|
+
|
|
64
|
+
Foundation for file-based content pipeline. Instance data (briefs,
|
|
65
|
+
configs, signals) gitignored — only directory skeleton tracked."
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
### Task 2: Create Content Brief Schema Reference
|
|
71
|
+
|
|
72
|
+
**Files:**
|
|
73
|
+
- Create: `skills/wp-content-pipeline/references/content-brief-schema.md`
|
|
74
|
+
|
|
75
|
+
**Step 1: Create the skill directory**
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
mkdir -p skills/wp-content-pipeline/references
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
**Step 2: Write the content brief schema**
|
|
82
|
+
|
|
83
|
+
Create `skills/wp-content-pipeline/references/content-brief-schema.md` with the complete schema documentation. This file defines the YAML frontmatter structure that every `.brief.md` file must follow.
|
|
84
|
+
|
|
85
|
+
The schema must include these sections:
|
|
86
|
+
- **Frontmatter fields** with types and defaults:
|
|
87
|
+
- `brief_id` (string, required, format: `BRF-YYYY-NNN`)
|
|
88
|
+
- `created` (ISO 8601, auto-generated)
|
|
89
|
+
- `status` (enum: `draft | ready | published | archived`)
|
|
90
|
+
- `source` block: `skill`, `domain`, `session_id`
|
|
91
|
+
- `target` block: `site_id`, `content_type`, `status`, `scheduled_date`, `categories[]`, `tags[]`
|
|
92
|
+
- `content` block: `title`, `excerpt`, `featured_image`, `author`
|
|
93
|
+
- `distribution` block: `channels[]`, `adapt_format`, `schedule_offset_hours`
|
|
94
|
+
- `seo` block: `focus_keyword`, `meta_description`, `schema_type`, `internal_links`
|
|
95
|
+
- `gates` block: `seo_score_min`, `readability_min`, `require_review`
|
|
96
|
+
- **Status lifecycle**: `draft → ready → published → archived`
|
|
97
|
+
- **Example brief** with realistic values for mysite
|
|
98
|
+
- **Validation rules**: which fields are required vs optional, default values
|
|
99
|
+
|
|
100
|
+
Content body goes after the frontmatter `---` separator as standard Markdown.
|
|
101
|
+
|
|
102
|
+
**Step 3: Verify file exists and is valid markdown**
|
|
103
|
+
|
|
104
|
+
Run: `head -5 skills/wp-content-pipeline/references/content-brief-schema.md`
|
|
105
|
+
|
|
106
|
+
Expected: file exists with `# Content Brief Schema` header.
|
|
107
|
+
|
|
108
|
+
**Step 4: Commit**
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
git add skills/wp-content-pipeline/
|
|
112
|
+
git commit -m "feat(content-pipeline): add content brief schema reference
|
|
113
|
+
|
|
114
|
+
Defines the YAML frontmatter structure for .brief.md files — the
|
|
115
|
+
exchange format between Gen* skills and WordPress publishing."
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
### Task 3: Create Site Configuration Schema Reference
|
|
121
|
+
|
|
122
|
+
**Files:**
|
|
123
|
+
- Create: `skills/wp-content-pipeline/references/site-config-schema.md`
|
|
124
|
+
|
|
125
|
+
**Step 1: Write the site config schema**
|
|
126
|
+
|
|
127
|
+
Create `skills/wp-content-pipeline/references/site-config-schema.md` defining the structure for `{site_id}.config.md` files.
|
|
128
|
+
|
|
129
|
+
The schema must include:
|
|
130
|
+
- **Frontmatter fields**:
|
|
131
|
+
- `site_id` (string, required, matches WP_SITES_CONFIG id)
|
|
132
|
+
- `site_url` (URL string)
|
|
133
|
+
- `last_updated` (ISO date)
|
|
134
|
+
- `brand` block: `tone`, `language`, `style_notes` (multi-line)
|
|
135
|
+
- `defaults` block: `content_type`, `status`, `categories[]`, `author`
|
|
136
|
+
- `channels` block: per-channel config with `enabled`, `profile_id`/`audience_id`, `format`/`segment`
|
|
137
|
+
- `seo` block: `default_schema`, `min_score`, `auto_internal_links`
|
|
138
|
+
- `cadence` block: `posts_per_week`, `preferred_days[]`, `publish_time`
|
|
139
|
+
- **Body section**: free-form notes for Claude context
|
|
140
|
+
- **Example config** for mysite site
|
|
141
|
+
- **Integration notes**: how GenBrand output maps to `brand` block, how WP_SITES_CONFIG maps to `site_id`
|
|
142
|
+
|
|
143
|
+
**Step 2: Create an example instance file**
|
|
144
|
+
|
|
145
|
+
Create `.content-state/mysite.config.md` with realistic values for the mysite site. This serves as both documentation and working config.
|
|
146
|
+
|
|
147
|
+
Note: this file is gitignored (site-specific), but we create it as a template. Copy the example from the schema reference, filling in mysite-specific values.
|
|
148
|
+
|
|
149
|
+
**Step 3: Verify both files**
|
|
150
|
+
|
|
151
|
+
Run: `ls -la skills/wp-content-pipeline/references/site-config-schema.md .content-state/mysite.config.md`
|
|
152
|
+
|
|
153
|
+
Expected: both files exist.
|
|
154
|
+
|
|
155
|
+
**Step 4: Commit**
|
|
156
|
+
|
|
157
|
+
```bash
|
|
158
|
+
git add skills/wp-content-pipeline/references/site-config-schema.md
|
|
159
|
+
git commit -m "feat(content-pipeline): add site configuration schema
|
|
160
|
+
|
|
161
|
+
Defines {site_id}.config.md structure for brand voice, distribution
|
|
162
|
+
channels, SEO defaults, and content cadence per WordPress site."
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
Note: `.content-state/mysite.config.md` is gitignored, so only the schema is committed.
|
|
166
|
+
|
|
167
|
+
---
|
|
168
|
+
|
|
169
|
+
### Task 4: Create `wp-content-pipeline` SKILL.md
|
|
170
|
+
|
|
171
|
+
**Files:**
|
|
172
|
+
- Create: `skills/wp-content-pipeline/SKILL.md`
|
|
173
|
+
|
|
174
|
+
**Step 1: Write the skill definition**
|
|
175
|
+
|
|
176
|
+
Create `skills/wp-content-pipeline/SKILL.md` following the established pattern from other skills (see `skills/wp-content/SKILL.md` for format).
|
|
177
|
+
|
|
178
|
+
The skill must include:
|
|
179
|
+
|
|
180
|
+
**Header (frontmatter)**:
|
|
181
|
+
```yaml
|
|
182
|
+
---
|
|
183
|
+
name: wp-content-pipeline
|
|
184
|
+
description: This skill should be used when the user asks to "publish a brief",
|
|
185
|
+
"process content briefs", "publish from GenCorpComm", "run the content pipeline",
|
|
186
|
+
"create a brief", "list pending briefs", or mentions publishing Gen* output
|
|
187
|
+
to WordPress. Orchestrates the flow from structured brief files through
|
|
188
|
+
WordPress publishing and multi-channel distribution.
|
|
189
|
+
version: 1.0.0
|
|
190
|
+
---
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
**Sections to include**:
|
|
194
|
+
|
|
195
|
+
1. **Overview** — One paragraph explaining the pipeline concept (brief.md → WP publish → social distribute). Reference the `.content-state/` directory.
|
|
196
|
+
|
|
197
|
+
2. **When to Use** — Bullet list of trigger scenarios:
|
|
198
|
+
- User has a content brief to publish
|
|
199
|
+
- User ran GenCorpComm and wants to push output to WordPress
|
|
200
|
+
- User asks to check/list pending briefs
|
|
201
|
+
- User wants to create a new brief manually
|
|
202
|
+
- User asks to distribute a published post to social channels
|
|
203
|
+
|
|
204
|
+
3. **Pipeline Workflow** — The 7-step flow:
|
|
205
|
+
```
|
|
206
|
+
SCAN → CONFIG → VALIDATE → PUBLISH → DISTRIBUTE → UPDATE → ARCHIVE
|
|
207
|
+
```
|
|
208
|
+
Each step documented with:
|
|
209
|
+
- What it does
|
|
210
|
+
- Which files/tools it reads
|
|
211
|
+
- Decision points (e.g., if gates not met → stop and report)
|
|
212
|
+
|
|
213
|
+
4. **Step 1: SCAN** — Read `.content-state/pipeline-active/` for brief files with `status: ready`. List them to user with title, site_id, channels.
|
|
214
|
+
|
|
215
|
+
5. **Step 2: CONFIG** — Read `.content-state/{site_id}.config.md` for site defaults. Merge brief values with config defaults (brief values override config defaults).
|
|
216
|
+
|
|
217
|
+
6. **Step 3: VALIDATE** — Check quality gates:
|
|
218
|
+
- If `gates.require_review: true` → stop, present brief to user
|
|
219
|
+
- If SEO score/readability checks requested → note that these are evaluated by Claude based on content quality, not automated scoring tools
|
|
220
|
+
- If validation fails → report to user, keep brief as `ready` for editing
|
|
221
|
+
|
|
222
|
+
7. **Step 4: PUBLISH** — Create WordPress content using existing MCP tools:
|
|
223
|
+
```
|
|
224
|
+
create_content:
|
|
225
|
+
content_type: target.content_type
|
|
226
|
+
title: content.title
|
|
227
|
+
content: [body from brief markdown]
|
|
228
|
+
excerpt: content.excerpt
|
|
229
|
+
status: target.status
|
|
230
|
+
slug: [auto-generated from title]
|
|
231
|
+
|
|
232
|
+
assign_terms_to_content:
|
|
233
|
+
categories: target.categories
|
|
234
|
+
tags: target.tags
|
|
235
|
+
|
|
236
|
+
sd_inject (if seo.schema_type defined):
|
|
237
|
+
schema_type: seo.schema_type
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
8. **Step 5: DISTRIBUTE** — If `distribution.channels` is not empty:
|
|
241
|
+
- For each channel, check `site.config.md` channel config for enabled status
|
|
242
|
+
- Use `wp-content-repurposing` skill patterns if `adapt_format: true`
|
|
243
|
+
- Call appropriate MCP tools:
|
|
244
|
+
- LinkedIn: `li_create_post`
|
|
245
|
+
- Twitter: `tw_create_tweet` or `tw_create_thread`
|
|
246
|
+
- Buffer: `buf_create_update`
|
|
247
|
+
- Mailchimp: `mc_create_campaign` → `mc_set_campaign_content` → `mc_send_campaign`
|
|
248
|
+
- Respect `schedule_offset_hours` for timing
|
|
249
|
+
|
|
250
|
+
9. **Step 6: UPDATE** — Update brief frontmatter:
|
|
251
|
+
- `status: published`
|
|
252
|
+
- Add `published_at`, `post_id`, `post_url` fields
|
|
253
|
+
- Add `distribution_log` with channel results
|
|
254
|
+
|
|
255
|
+
10. **Step 7: ARCHIVE** — Move brief from `pipeline-active/` to `pipeline-archive/`
|
|
256
|
+
|
|
257
|
+
11. **Creating a Brief Manually** — Quick procedure:
|
|
258
|
+
- Read site config for defaults
|
|
259
|
+
- Generate `brief_id` as `BRF-YYYY-NNN` (NNN = sequential)
|
|
260
|
+
- Write brief.md to `pipeline-active/` with `status: draft`
|
|
261
|
+
- User fills in content, then sets `status: ready`
|
|
262
|
+
|
|
263
|
+
12. **Safety Rules**:
|
|
264
|
+
- ALWAYS create WP content as `draft` first, then update to `publish` only after user confirmation (unless brief explicitly says `target.status: publish`)
|
|
265
|
+
- NEVER publish without showing user the brief summary first
|
|
266
|
+
- ALWAYS confirm before sending email campaigns (Mailchimp)
|
|
267
|
+
- LOG all distribution actions in the brief
|
|
268
|
+
|
|
269
|
+
13. **Reference Files**:
|
|
270
|
+
- `references/content-brief-schema.md`
|
|
271
|
+
- `references/site-config-schema.md`
|
|
272
|
+
|
|
273
|
+
14. **Related Skills**:
|
|
274
|
+
- `wp-content` — content creation and management
|
|
275
|
+
- `wp-content-optimization` — SEO and readability enhancement
|
|
276
|
+
- `wp-content-repurposing` — multi-format adaptation for distribution
|
|
277
|
+
- `wp-social-email` — distribution channel tools (Mailchimp, Buffer, SendGrid)
|
|
278
|
+
- `wp-structured-data` — Schema.org markup injection
|
|
279
|
+
|
|
280
|
+
**Step 2: Verify SKILL.md follows plugin conventions**
|
|
281
|
+
|
|
282
|
+
Run: `head -10 skills/wp-content-pipeline/SKILL.md`
|
|
283
|
+
|
|
284
|
+
Expected: YAML frontmatter with `name: wp-content-pipeline`.
|
|
285
|
+
|
|
286
|
+
Compare structure against: `head -10 skills/wp-content/SKILL.md`
|
|
287
|
+
|
|
288
|
+
Expected: same pattern (frontmatter → Overview → When to Use → Workflow).
|
|
289
|
+
|
|
290
|
+
**Step 3: Commit**
|
|
291
|
+
|
|
292
|
+
```bash
|
|
293
|
+
git add skills/wp-content-pipeline/SKILL.md
|
|
294
|
+
git commit -m "feat(content-pipeline): add wp-content-pipeline skill
|
|
295
|
+
|
|
296
|
+
Orchestrates brief.md → WP publish → social distribution using
|
|
297
|
+
existing MCP tools. 7-step workflow: SCAN → CONFIG → VALIDATE →
|
|
298
|
+
PUBLISH → DISTRIBUTE → UPDATE → ARCHIVE."
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
---
|
|
302
|
+
|
|
303
|
+
### Task 5: Create Example Brief for Testing
|
|
304
|
+
|
|
305
|
+
**Files:**
|
|
306
|
+
- Create: `.content-state/pipeline-active/BRF-2026-001.brief.md`
|
|
307
|
+
|
|
308
|
+
**Step 1: Write a realistic test brief**
|
|
309
|
+
|
|
310
|
+
Create `.content-state/pipeline-active/BRF-2026-001.brief.md` with:
|
|
311
|
+
- Frontmatter targeting mysite, content_type: post, status: draft
|
|
312
|
+
- Source: `manual` (not from Gen* — for testing without Gen* dependency)
|
|
313
|
+
- A short (~200 word) article about sparkling water benefits
|
|
314
|
+
- Distribution: linkedin only (minimal for testing)
|
|
315
|
+
- SEO: focus keyword set, schema_type: Article
|
|
316
|
+
- Gates: require_review: true (so pipeline stops for confirmation)
|
|
317
|
+
|
|
318
|
+
This brief serves as the integration test artifact. The pipeline skill will read it, present it to user, and (on approval) publish to mysite.
|
|
319
|
+
|
|
320
|
+
**Step 2: Verify brief parses correctly**
|
|
321
|
+
|
|
322
|
+
Run: `head -30 .content-state/pipeline-active/BRF-2026-001.brief.md`
|
|
323
|
+
|
|
324
|
+
Expected: valid YAML frontmatter with `brief_id: BRF-2026-001` and `status: draft`.
|
|
325
|
+
|
|
326
|
+
**Step 3: No commit** — this file is gitignored (instance data). It lives locally for testing.
|
|
327
|
+
|
|
328
|
+
---
|
|
329
|
+
|
|
330
|
+
### Task 6: Update Architecture Doc Status
|
|
331
|
+
|
|
332
|
+
**Files:**
|
|
333
|
+
- Modify: `docs/plans/2026-03-02-content-framework-architecture.md`
|
|
334
|
+
|
|
335
|
+
**Step 1: Update status and checklist**
|
|
336
|
+
|
|
337
|
+
In the architecture doc:
|
|
338
|
+
- Change `**Stato**: Proposta` to `**Stato**: Fase 1 Implementata`
|
|
339
|
+
- Check off all Fase 1 acceptance criteria:
|
|
340
|
+
```
|
|
341
|
+
- [x] `content-brief.schema.md` definito e documentato
|
|
342
|
+
- [x] `site.config.md` schema definito e documentato
|
|
343
|
+
- [x] `wp-content-pipeline` skill creata con workflow completo
|
|
344
|
+
- [ ] Flusso end-to-end testato: brief.md → WP post → distribuzione social
|
|
345
|
+
- [x] Supporto multi-sito (mysite + almeno un altro)
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
Note: "Flusso end-to-end testato" left unchecked — that requires a live WP test which is a separate manual validation step.
|
|
349
|
+
|
|
350
|
+
**Step 2: Commit**
|
|
351
|
+
|
|
352
|
+
```bash
|
|
353
|
+
git add docs/plans/2026-03-02-content-framework-architecture.md
|
|
354
|
+
git commit -m "docs: update architecture status — Phase 1 implemented
|
|
355
|
+
|
|
356
|
+
Content Pipeline skill, schemas, and directory structure in place.
|
|
357
|
+
End-to-end live test pending."
|
|
358
|
+
```
|
|
359
|
+
|
|
360
|
+
---
|
|
361
|
+
|
|
362
|
+
### Task 7: Final Commit and Version Bump
|
|
363
|
+
|
|
364
|
+
**Files:**
|
|
365
|
+
- Modify: `docs/GUIDE.md` (add Content Framework section)
|
|
366
|
+
|
|
367
|
+
**Step 1: Add Content Framework section to GUIDE.md**
|
|
368
|
+
|
|
369
|
+
Read current `docs/GUIDE.md` to find the last section number. Add a new top-level section:
|
|
370
|
+
|
|
371
|
+
```markdown
|
|
372
|
+
## 15. Content Framework
|
|
373
|
+
|
|
374
|
+
The Content Framework connects Gen* ecosystem skills (GenCorpComm, GenMarketing, GenSignal) to WordPress publishing through structured Markdown files.
|
|
375
|
+
|
|
376
|
+
### 15.1 Architecture
|
|
377
|
+
|
|
378
|
+
The framework uses three types of MD files as configuration layer:
|
|
379
|
+
|
|
380
|
+
| Type | Suffix | Purpose | Location |
|
|
381
|
+
|------|--------|---------|----------|
|
|
382
|
+
| Schema | `.schema.md` | Template definition | `skills/wp-content-pipeline/references/` |
|
|
383
|
+
| Config | `.config.md` | Site-specific settings | `.content-state/{site_id}.config.md` |
|
|
384
|
+
| Brief | `.brief.md` | Content instance | `.content-state/pipeline-active/` |
|
|
385
|
+
|
|
386
|
+
### 15.2 Content Pipeline (Phase 1)
|
|
387
|
+
|
|
388
|
+
**Skill**: `wp-content-pipeline`
|
|
389
|
+
|
|
390
|
+
The pipeline orchestrates: `SCAN → CONFIG → VALIDATE → PUBLISH → DISTRIBUTE → UPDATE → ARCHIVE`
|
|
391
|
+
|
|
392
|
+
**Creating a brief**:
|
|
393
|
+
1. Generate content (via GenCorpComm or manually)
|
|
394
|
+
2. Save as `.content-state/pipeline-active/BRF-YYYY-NNN.brief.md`
|
|
395
|
+
3. Set frontmatter: site_id, title, categories, channels, SEO params
|
|
396
|
+
4. Set `status: ready` when content is finalized
|
|
397
|
+
|
|
398
|
+
**Publishing a brief**:
|
|
399
|
+
1. Invoke `wp-content-pipeline` skill
|
|
400
|
+
2. Pipeline reads all `status: ready` briefs
|
|
401
|
+
3. Validates quality gates
|
|
402
|
+
4. Creates WP post → distributes to channels → archives brief
|
|
403
|
+
|
|
404
|
+
**Site configuration**:
|
|
405
|
+
- One `.content-state/{site_id}.config.md` per managed site
|
|
406
|
+
- Defines brand voice, default categories, active channels, SEO settings
|
|
407
|
+
- Brief values override config defaults
|
|
408
|
+
|
|
409
|
+
### 15.3 Directory Structure
|
|
410
|
+
|
|
411
|
+
```
|
|
412
|
+
.content-state/
|
|
413
|
+
├── {site_id}.config.md # site configuration
|
|
414
|
+
├── pipeline-active/ # briefs in progress
|
|
415
|
+
│ └── BRF-YYYY-NNN.brief.md
|
|
416
|
+
└── pipeline-archive/ # completed briefs
|
|
417
|
+
└── BRF-YYYY-NNN.brief.md
|
|
418
|
+
```
|
|
419
|
+
|
|
420
|
+
### 15.4 Integration with Gen* Skills
|
|
421
|
+
|
|
422
|
+
| Gen* Skill | Produces | Pipeline Consumes |
|
|
423
|
+
|------------|----------|-------------------|
|
|
424
|
+
| GenCorpComm | Multi-format content | Body + metadata → brief.md |
|
|
425
|
+
| GenMarketing | Content calendar | Topics + dates → brief.md |
|
|
426
|
+
| GenBrand | Brand voice | Tone + style → config.md |
|
|
427
|
+
| GenSignal | Market signals | Topics → editorial planning (Phase 2) |
|
|
428
|
+
```
|
|
429
|
+
|
|
430
|
+
**Step 2: Commit all remaining changes**
|
|
431
|
+
|
|
432
|
+
```bash
|
|
433
|
+
git add docs/GUIDE.md
|
|
434
|
+
git commit -m "docs: add Content Framework section to GUIDE.md
|
|
435
|
+
|
|
436
|
+
Documents Phase 1 Content Pipeline: architecture, brief schema,
|
|
437
|
+
site config, publishing workflow, and Gen* integration points."
|
|
438
|
+
```
|
|
439
|
+
|
|
440
|
+
---
|
|
441
|
+
|
|
442
|
+
## Summary
|
|
443
|
+
|
|
444
|
+
| Task | Deliverable | Type |
|
|
445
|
+
|------|-------------|------|
|
|
446
|
+
| 1 | `.content-state/` directory + `.gitignore` | Infrastructure |
|
|
447
|
+
| 2 | `content-brief-schema.md` | Schema reference |
|
|
448
|
+
| 3 | `site-config-schema.md` + example config | Schema reference + instance |
|
|
449
|
+
| 4 | `wp-content-pipeline/SKILL.md` | Core skill |
|
|
450
|
+
| 5 | `BRF-2026-001.brief.md` | Test artifact |
|
|
451
|
+
| 6 | Architecture doc status update | Documentation |
|
|
452
|
+
| 7 | GUIDE.md Content Framework section | Documentation |
|
|
453
|
+
|
|
454
|
+
**Total new files**: 6 tracked + 2 gitignored instances
|
|
455
|
+
**Total modified files**: 3 (.gitignore, architecture doc, GUIDE.md)
|
|
456
|
+
**New TypeScript**: 0
|