@respira/wordpress-mcp-server 7.3.0 → 7.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. package/dist/__tests__/site-list-self-heal.test.d.ts +18 -0
  2. package/dist/__tests__/site-list-self-heal.test.d.ts.map +1 -0
  3. package/dist/__tests__/site-list-self-heal.test.js +169 -0
  4. package/dist/__tests__/site-list-self-heal.test.js.map +1 -0
  5. package/dist/acf-tools.d.ts +0 -10
  6. package/dist/acf-tools.d.ts.map +1 -1
  7. package/dist/acf-tools.js +0 -15
  8. package/dist/acf-tools.js.map +1 -1
  9. package/dist/config.d.ts.map +1 -1
  10. package/dist/config.js +31 -36
  11. package/dist/config.js.map +1 -1
  12. package/dist/server.d.ts +34 -46
  13. package/dist/server.d.ts.map +1 -1
  14. package/dist/server.js +560 -463
  15. package/dist/server.js.map +1 -1
  16. package/dist/wordpress-client.d.ts +33 -29
  17. package/dist/wordpress-client.d.ts.map +1 -1
  18. package/dist/wordpress-client.js +124 -148
  19. package/dist/wordpress-client.js.map +1 -1
  20. package/package.json +2 -2
  21. package/skills/activity-report-composer/README.md +38 -0
  22. package/skills/activity-report-composer/SKILL.md +167 -0
  23. package/skills/activity-report-composer/metadata.json +42 -0
  24. package/skills/brand-voice-synthesizer/README.md +43 -0
  25. package/skills/brand-voice-synthesizer/SKILL.md +259 -0
  26. package/skills/brand-voice-synthesizer/metadata.json +46 -0
  27. package/skills/build-oxygen6-page/SKILL.md +59 -0
  28. package/skills/conversion-audit/README.md +37 -0
  29. package/skills/conversion-audit/SKILL.md +185 -0
  30. package/skills/conversion-audit/metadata.json +46 -0
  31. package/skills/custom-post-type-architect/README.md +34 -0
  32. package/skills/custom-post-type-architect/SKILL.md +158 -0
  33. package/skills/custom-post-type-architect/metadata.json +39 -0
  34. package/skills/design-system-synthesizer/README.md +46 -0
  35. package/skills/design-system-synthesizer/SKILL.md +395 -0
  36. package/skills/design-system-synthesizer/metadata.json +57 -0
  37. package/skills/figma-to-elementor/SKILL.md +204 -0
  38. package/skills/html-to-bricks/README.md +43 -0
  39. package/skills/html-to-bricks/SKILL.md +135 -0
  40. package/skills/html-to-bricks/metadata.json +41 -0
  41. package/skills/internal-link-builder/SKILL.md +258 -0
  42. package/skills/internal-link-builder/metadata.json +46 -0
  43. package/skills/migrate-beaver-builder-to-bricks/SKILL.md +251 -0
  44. package/skills/migrate-beaver-builder-to-gutenberg/SKILL.md +248 -0
  45. package/skills/migrate-brizy-to-gutenberg/SKILL.md +248 -0
  46. package/skills/migrate-divi-to-breakdance/SKILL.md +312 -0
  47. package/skills/migrate-divi-to-bricks/SKILL.md +321 -0
  48. package/skills/migrate-divi-to-gutenberg/SKILL.md +328 -0
  49. package/skills/migrate-elementor-to-breakdance/SKILL.md +287 -0
  50. package/skills/migrate-elementor-to-bricks/SKILL.md +289 -0
  51. package/skills/migrate-elementor-to-gutenberg/SKILL.md +327 -0
  52. package/skills/migrate-elementor-to-oxygen/SKILL.md +300 -0
  53. package/skills/migrate-oxygen-to-breakdance/SKILL.md +235 -0
  54. package/skills/migrate-oxygen-to-bricks/SKILL.md +237 -0
  55. package/skills/migrate-thrive-architect-to-gutenberg/SKILL.md +257 -0
  56. package/skills/migrate-visual-composer-to-gutenberg/SKILL.md +261 -0
  57. package/skills/migrate-wpbakery-to-bricks/SKILL.md +336 -0
  58. package/skills/migrate-wpbakery-to-gutenberg/SKILL.md +345 -0
  59. package/skills/mobile-experience-report/SKILL.md +719 -0
  60. package/skills/mobile-experience-report/telemetry.ts +137 -0
  61. package/skills/page-template-library/README.md +41 -0
  62. package/skills/page-template-library/SKILL.md +175 -0
  63. package/skills/page-template-library/metadata.json +44 -0
  64. package/skills/prime-the-agent/README.md +49 -0
  65. package/skills/prime-the-agent/SKILL.md +225 -0
  66. package/skills/prime-the-agent/metadata.json +46 -0
  67. package/skills/respira-setup-assistant/SKILL.md +386 -0
  68. package/skills/respira-setup-assistant/metadata.json +36 -0
  69. package/skills/seo-aeo-amplifier/README.md +61 -0
  70. package/skills/seo-aeo-amplifier/SKILL.md +277 -0
  71. package/skills/seo-aeo-amplifier/metadata.json +62 -0
  72. package/skills/stale-content-detector/README.md +41 -0
  73. package/skills/stale-content-detector/SKILL.md +156 -0
  74. package/skills/stale-content-detector/metadata.json +43 -0
  75. package/skills/technical-debt-audit/SKILL.md +691 -0
  76. package/skills/technical-debt-audit/telemetry.ts +142 -0
  77. package/skills/woocommerce-health-check/SKILL.md +719 -0
  78. package/skills/woocommerce-health-check/telemetry.ts +137 -0
  79. package/skills/wordpress-ai-image-optimizer/README.md +49 -0
  80. package/skills/wordpress-ai-image-optimizer/SKILL.md +232 -0
  81. package/skills/wordpress-ai-image-optimizer/metadata.json +63 -0
  82. package/skills/wordpress-site-dna/README.md +81 -0
  83. package/skills/wordpress-site-dna/SKILL.md +669 -0
  84. package/skills/wordpress-site-dna/telemetry.ts +137 -0
  85. package/dist/__tests__/acf-tool-routing.test.d.ts +0 -2
  86. package/dist/__tests__/acf-tool-routing.test.d.ts.map +0 -1
  87. package/dist/__tests__/acf-tool-routing.test.js +0 -37
  88. package/dist/__tests__/acf-tool-routing.test.js.map +0 -1
  89. package/dist/__tests__/cowork-bootstrap.test.d.ts +0 -2
  90. package/dist/__tests__/cowork-bootstrap.test.d.ts.map +0 -1
  91. package/dist/__tests__/cowork-bootstrap.test.js +0 -61
  92. package/dist/__tests__/cowork-bootstrap.test.js.map +0 -1
@@ -0,0 +1,37 @@
1
+ # Conversion Audit
2
+
3
+ > A CRO check, not a redesign. Get a prioritized list of fixes — each with what to change, why, and expected impact.
4
+
5
+ Audits your homepage, pricing page, contact page, and any landing pages across six dimensions known to drive conversion. Outputs a prioritized list of fixes you can apply (or have the agent apply via SafeEdit).
6
+
7
+ ## The six dimensions
8
+
9
+ 1. **Above-the-fold clarity** — does the hero answer "what is this and why does it matter to me" in 5 seconds?
10
+ 2. **CTA hierarchy** — one primary CTA per screen, or are 4 buttons competing?
11
+ 3. **Form length** — every required field beyond 3 drops completion ~7%
12
+ 4. **Social proof placement** — testimonial above the fold beats one in the footer
13
+ 5. **Page speed** — pulls from SpeedScan; slow pages don't convert
14
+ 6. **Trust signals** — named company, contact info, privacy link, real photos, named team
15
+
16
+ Each page gets a 0–18 score per dimension. The output prioritizes fixes by expected impact, not by score.
17
+
18
+ ## What you get back
19
+
20
+ - A summary table — page-by-page score
21
+ - A prioritized fixes list (top 5–8) — current state, suggested change, why
22
+ - A "what's working" section so you know what NOT to change
23
+ - Speed signals from SpeedScan
24
+ - An offer to apply one of the fixes via SafeEdit (duplicate-before-edit)
25
+
26
+ ## Triggers
27
+
28
+ - *"audit my conversion rate"*
29
+ - *"cro check"*
30
+ - *"find conversion leaks"*
31
+ - *"review my landing pages"*
32
+
33
+ ## Requires
34
+
35
+ - Respira for WordPress plugin
36
+ - MCP server connected
37
+ - Recommended: a recent SpeedScan run so speed signals are current
@@ -0,0 +1,185 @@
1
+ # Conversion Audit
2
+
3
+ **Version:** 1.0.0
4
+ **Updated:** 2026-05-24
5
+ **Category:** audit
6
+ **Status:** stable
7
+ **Requires:** Respira for WordPress plugin 7.1+ + MCP server
8
+
9
+ ---
10
+
11
+ ## Description
12
+
13
+ Audit a WordPress site for conversion-rate friction. Reads the landing pages, the homepage, the pricing page (if any), the contact page, and any pages that are linked from the main navigation. Identifies friction points across six dimensions: above-the-fold clarity, CTA hierarchy, form length, social proof placement, page speed (using existing Respira SpeedScan), and trust signals.
14
+
15
+ This is a CRO check, not a redesign. The output is a prioritized list of fixes the user can apply — each with a one-line "what to change" + "why" + "expected impact." No rewriting; recommendations only.
16
+
17
+ ---
18
+
19
+ ## What it audits (the six dimensions)
20
+
21
+ 1. **Above-the-fold clarity.** Does the hero answer "what is this and why does it matter to me"? Within ~5 seconds, can a first-time visitor articulate the offer back? Common failures: jargon-heavy headline, image-first instead of message-first, no concrete value proposition.
22
+
23
+ 2. **CTA hierarchy.** Is there one primary CTA per screen, or are there 4 competing buttons? Are CTAs visually distinguished from the secondary navigation? Is the CTA action clear ("Get a quote" vs "Submit")?
24
+
25
+ 3. **Form length.** For forms found on the page: how many required fields? Common failures: asking for phone number when email would do, asking for company size for an MVP landing page, address before there's any commitment, 8+ fields when 3 would convert.
26
+
27
+ 4. **Social proof placement.** Where are testimonials / customer logos / case-study links relative to the CTA? Common failure: social proof in the footer where nobody scrolls. Strong pattern: one testimonial above the fold, customer logos below the hero, full case study links by the pricing section.
28
+
29
+ 5. **Page speed.** Pulls existing SpeedScan or runs `respira_analyze_pagespeed` if available. Slow pages don't convert. LCP > 2.5s, CLS > 0.1, FID > 100ms are conversion drags.
30
+
31
+ 6. **Trust signals.** Does the page show: company name / logo, contact information, privacy policy link, secure checkout indicators (if commerce), real photos vs stock, named team / founder (vs faceless)?
32
+
33
+ ---
34
+
35
+ ## When to Use
36
+
37
+ - Quarterly CRO review
38
+ - Before launching a paid traffic campaign — don't drive paid clicks to a leaky page
39
+ - After a redesign — verify nothing important got dropped
40
+ - When conversion drops without an obvious cause
41
+ - For a new landing page review before publish
42
+
43
+ ---
44
+
45
+ ## Trigger Phrases
46
+
47
+ - "audit my conversion rate"
48
+ - "cro check"
49
+ - "find conversion leaks"
50
+ - "review my landing pages"
51
+ - "audit for conversion"
52
+ - "what's hurting my conversion"
53
+ - "conversion audit"
54
+
55
+ ---
56
+
57
+ ## Execution Workflow
58
+
59
+ ### Step 1 — Confirm site + scope
60
+
61
+ Call `respira_get_active_site`. Ask the user: *"Audit a single page, the main flow (home + pricing + contact), or all top-nav pages?"* Default to "the main flow" if unclear.
62
+
63
+ ### Step 2 — Identify pages to audit
64
+
65
+ - **Single page mode:** the user names the page.
66
+ - **Main flow mode:** homepage, `/pricing/` or `/plans/` if present, `/contact/` or `/get-in-touch/` if present, plus any page marked as a landing page (`page_template == 'landing'`).
67
+ - **Top-nav mode:** call `respira_list_menus` then `respira_list_menu_items` for the primary menu; audit each linked page.
68
+
69
+ For each page, call `respira_extract_builder_content(page_id)`.
70
+
71
+ ### Step 3 — Run each audit dimension
72
+
73
+ For each page, walk the builder content and score each dimension. The scoring rubric:
74
+
75
+ **Above-the-fold clarity (0–3):**
76
+ - 3: clear value prop in headline, supporting sub-headline, primary CTA, visual that supports the message
77
+ - 2: headline + CTA but value prop unclear or visual fights the message
78
+ - 1: jargon-heavy or image-first, no concrete benefit
79
+ - 0: empty hero or missing CTA entirely
80
+
81
+ **CTA hierarchy (0–3):**
82
+ - 3: one primary CTA, visually distinct, action verb, repeated below the fold
83
+ - 2: primary CTA present but competing with 2+ other equally-prominent buttons
84
+ - 1: 3+ competing CTAs or generic verbs ("Submit", "Click here")
85
+ - 0: no clear CTA
86
+
87
+ **Form length (0–3, skip if no forms):**
88
+ - 3: 1–3 required fields, no asks beyond the minimum
89
+ - 2: 4–5 required fields with one optional
90
+ - 1: 6+ required fields OR asks for phone before commitment
91
+ - 0: 8+ fields or asks for sensitive data (DOB, SSN, address) without commitment
92
+
93
+ **Social proof placement (0–3):**
94
+ - 3: one testimonial / logo bar above the fold, more below the hero, named with photo + company
95
+ - 2: testimonials present but only below the fold or unnamed
96
+ - 1: footer-only social proof
97
+ - 0: none visible
98
+
99
+ **Page speed (0–3, from SpeedScan):**
100
+ - 3: LCP < 2.5s, CLS < 0.1, page weight < 2MB
101
+ - 2: one metric mildly off
102
+ - 1: two metrics off
103
+ - 0: LCP > 4s or CLS > 0.25 (conversion killer)
104
+
105
+ **Trust signals (0–3):**
106
+ - 3: named company, contact info visible, privacy link, real photos, named team
107
+ - 2: most present, one or two missing
108
+ - 1: faceless brand, stock photos, only generic contact
109
+ - 0: anonymous, no company info, no contact, no privacy
110
+
111
+ Page total: 0–18.
112
+
113
+ ### Step 4 — Output the report
114
+
115
+ ```markdown
116
+ ## Conversion audit for {site_url}
117
+
118
+ Pages audited: {n_pages}
119
+
120
+ ### Summary
121
+
122
+ | Page | Score | Top issue |
123
+ |---|---|---|
124
+ | / | 14 / 18 | CTA hierarchy: 3 competing primary CTAs in hero |
125
+ | /pricing/ | 11 / 18 | Form length: pricing form asks for 7 fields |
126
+ | /contact/ | 10 / 18 | Above-the-fold: no value prop, only "Get in touch" |
127
+ | ... | | |
128
+
129
+ ### Prioritized fixes (highest impact first)
130
+
131
+ **1. {page_url} · CTA hierarchy**
132
+ - Current: 3 competing primary buttons in hero ("Get started", "See pricing", "Book a demo")
133
+ - Change to: one primary ("Get started"), demote others to secondary text links
134
+ - Why: competing CTAs split attention and drop CTR by ~30% in typical landing page tests
135
+
136
+ **2. {page_url} · Form length**
137
+ - Current: 7 required fields including phone + company size
138
+ - Change to: 3 required (name, email, what brings you here) + optional phone
139
+ - Why: every required field beyond 3 drops form completion by ~7%
140
+
141
+ **3. {page_url} · Above-the-fold clarity**
142
+ - Current: headline "Solutions for modern teams" — generic, no concrete offer
143
+ - Change to: headline that names what the user gets ("X for Y, in Z minutes" pattern)
144
+ - Why: visitors decide within ~5 seconds whether the page is for them; vague heroes lose them
145
+
146
+ (... continue for top 5–8 fixes ...)
147
+
148
+ ### What's working
149
+
150
+ (Quick callouts of strong patterns the audit found, so the user knows what NOT to change.)
151
+
152
+ - {page}: above-the-fold clarity is strong — headline + sub + supporting visual all reinforce the offer.
153
+ - {page}: social proof placement is exemplary — named testimonial above the fold with photo and company.
154
+
155
+ ### Speed signals (from SpeedScan)
156
+
157
+ | Page | LCP | CLS | Total weight |
158
+ |---|---|---|---|
159
+ | / | 2.1s ✓ | 0.08 ✓ | 1.8MB ✓ |
160
+ | /pricing/ | 3.4s ✗ | 0.15 ✗ | 3.2MB ✗ |
161
+ ```
162
+
163
+ ### Step 5 — Offer to act on a chosen fix
164
+
165
+ Ask: *"Want me to apply one of these now? I can duplicate the page (SafeEdit) and make the change for review."*
166
+
167
+ If yes, route to the appropriate edit flow (usually `respira_create_page_duplicate` + targeted `respira_update_element`).
168
+
169
+ ---
170
+
171
+ ## Hard rules
172
+
173
+ - **Recommendations, not redesigns.** This skill suggests changes; it does not apply them autonomously. Every applied change is a SafeEdit-protected duplicate, reviewed before promotion.
174
+ - **Score is directional, not gospel.** Use the score to prioritize, not as a verdict. A 14/18 page with a critical CTA bug is more urgent than a 10/18 page with diffuse issues.
175
+ - **Form audits use builder-native parsing.** If the form is a Gravity Forms shortcode, parse the GF form definition (not the rendered HTML). If WPForms, ditto. If Contact Form 7, ditto. Raw HTML parsing of form fields produces wrong field counts.
176
+ - **Speed signals come from SpeedScan if present, not from re-running a fresh audit.** Re-running is slow and costly. If the SpeedScan is more than 30 days old, note that and offer to refresh.
177
+ - **Trust signal checks include checking for the privacy / terms / contact pages existing.** Use `respira_list_pages` to verify, not just visually scan the page.
178
+
179
+ ---
180
+
181
+ ## Telemetry
182
+
183
+ Records: site URL hash, n_pages audited, score distribution, top issue categories detected, success/failure, total duration. No page content, no recommendations, no scores per page sent.
184
+
185
+ Endpoint: `POST https://www.respira.press/api/skills/track-usage`
@@ -0,0 +1,46 @@
1
+ {
2
+ "name": "Conversion Audit",
3
+ "slug": "conversion-audit",
4
+ "icon": "📈",
5
+ "category": "audit",
6
+ "description": "Audit a WordPress site for conversion-rate friction across six dimensions: above-the-fold clarity, CTA hierarchy, form length, social proof placement, page speed, and trust signals. Prioritized fixes with expected impact — recommendations, not redesigns.",
7
+ "author": "Respira Team",
8
+ "author_url": "https://respira.press",
9
+ "trigger": "audit my conversion rate",
10
+ "requires_respira": true,
11
+ "requires_woocommerce_addon": false,
12
+ "requires_accessibility_addon": false,
13
+ "is_read_only": true,
14
+ "is_duplicate_first": false,
15
+ "version": "1.0.0",
16
+ "last_updated": "2026-05-24",
17
+ "tools_used": [
18
+ "respira_get_active_site",
19
+ "respira_list_pages",
20
+ "respira_list_menus",
21
+ "respira_list_menu_items",
22
+ "respira_extract_builder_content",
23
+ "respira_get_core_web_vitals",
24
+ "respira_analyze_pagespeed",
25
+ "respira_find_element"
26
+ ],
27
+ "detects": [
28
+ "above_fold_clarity_score",
29
+ "cta_hierarchy_score",
30
+ "form_length_score",
31
+ "social_proof_placement_score",
32
+ "page_speed_score",
33
+ "trust_signals_score",
34
+ "competing_ctas",
35
+ "form_field_count",
36
+ "missing_value_prop",
37
+ "absent_trust_signals"
38
+ ],
39
+ "generates": [
40
+ "conversion_audit_report",
41
+ "prioritized_fixes_list",
42
+ "per_page_scoring_table",
43
+ "speed_signals_table",
44
+ "what_is_working_callouts"
45
+ ]
46
+ }
@@ -0,0 +1,34 @@
1
+ # Custom Post Type Architect
2
+
3
+ > Design and create WordPress custom post types end to end — from brief to working CPT in one conversation.
4
+
5
+ Give the agent a brief — "I need a portfolio with case studies" — and it designs the post type, picks the right taxonomies, defines the ACF field group, creates two sample entries, and suggests a single template for your active page builder.
6
+
7
+ ## What it does
8
+
9
+ 1. Designs the CPT shape (labels, supports, public/private, has_archive, REST exposure)
10
+ 2. Designs supporting taxonomies (e.g. industries + service-types for case studies)
11
+ 3. Designs the ACF field group with the right fields for your content type
12
+ 4. Reviews the shape with you before creating anything
13
+ 5. Creates the CPT + taxonomies + ACF group via the new v7.1 MCP tools
14
+ 6. Generates 1–2 sample entries so you can verify the rendering
15
+ 7. Suggests a single template for your active builder (Bricks / Elementor / Divi / Gutenberg / Oxygen / Breakdance)
16
+
17
+ ## Default templates by content type
18
+
19
+ The skill knows sensible defaults for: case studies, team members, events, podcast episodes, properties (real estate), recipes, FAQs, testimonials, courses, lessons.
20
+
21
+ You can override every field at the review step.
22
+
23
+ ## Triggers
24
+
25
+ - *"create a custom post type"*
26
+ - *"build a portfolio"*
27
+ - *"set up a case study type"*
28
+ - *"add a team members section"*
29
+ - *"scaffold a CPT"*
30
+
31
+ ## Requires
32
+
33
+ - Respira for WordPress plugin **7.1+** (the underlying MCP tools are new in 7.1)
34
+ - ACF Pro installed for the field group creation (the skill checks and warns if not)
@@ -0,0 +1,158 @@
1
+ # Custom Post Type Architect
2
+
3
+ **Version:** 1.0.0
4
+ **Updated:** 2026-05-24
5
+ **Category:** content-creation
6
+ **Status:** stable
7
+ **Requires:** Respira for WordPress plugin 7.1+ + MCP server
8
+
9
+ ---
10
+
11
+ ## Description
12
+
13
+ Given a brief — "I need a portfolio with case studies" or "we run a podcast and want each episode to be its own page" — design and create the WordPress custom post type, supporting taxonomies, and ACF field group end to end. Uses the new v7.1 MCP tools: `respira_create_post_type`, `respira_create_taxonomy`, `respira_create_acf_field_group`.
14
+
15
+ The output is a fully wired content architecture, ready to use:
16
+
17
+ 1. The CPT itself (labels, supports, public-vs-private, has_archive, REST exposure)
18
+ 2. Supporting taxonomies (e.g. industries for case studies, seasons for podcast episodes)
19
+ 3. ACF field group bound to the CPT (custom fields the editor sees)
20
+ 4. 1–2 sample entries so the agent can verify the rendering
21
+ 5. Builder-aware single-template suggestion for the active builder
22
+
23
+ ---
24
+
25
+ ## When to Use
26
+
27
+ - Setting up a portfolio, case studies, team members, events, podcast episodes, recipes, properties, locations, products-but-not-WooCommerce, FAQs, testimonials, courses, lessons, or any structured content type
28
+ - Migrating away from custom-fields-in-posts to a proper content type
29
+ - Auditing an existing site that's overloaded the default "post" type with non-blog content
30
+
31
+ ---
32
+
33
+ ## Trigger Phrases
34
+
35
+ - "create a custom post type"
36
+ - "build a portfolio"
37
+ - "set up a case study type"
38
+ - "add a team members section"
39
+ - "scaffold a CPT"
40
+ - "create a podcast post type"
41
+ - "build an events section"
42
+ - "we need a new content type"
43
+
44
+ ---
45
+
46
+ ## Execution Workflow
47
+
48
+ ### Step 1 — Confirm site + builder
49
+
50
+ Call `respira_get_active_site` and `respira_get_builder_info`. The builder choice affects Step 6 (template suggestion).
51
+
52
+ ### Step 2 — Understand the brief
53
+
54
+ Ask the user three short questions if not already clear from their request:
55
+
56
+ 1. **What is the content?** (case studies, podcast episodes, team, events, ...)
57
+ 2. **How is it organized?** (categories, tags, custom taxonomies — e.g. case studies organized by industry + service-type)
58
+ 3. **What fields does each entry need?** (e.g. case study: client name, hero image, deliverables, outcomes, before/after metrics, related case studies)
59
+
60
+ If the user can't articulate the fields, propose a default set based on the content type. Default sets:
61
+
62
+ - **Case studies:** client name, industry (taxonomy), service-type (taxonomy), hero image, brief, deliverables, outcomes, key metrics (3-5), client logo, related case studies (relationship)
63
+ - **Team members:** name, role, bio, headshot, social links (LinkedIn / X / personal site), department (taxonomy)
64
+ - **Events:** title, date/time, location, address, virtual/in-person, registration URL, capacity, hero image
65
+ - **Podcast episodes:** title, episode number, season (taxonomy), audio file URL, duration, show notes, guest name, guest links
66
+ - **Properties (real estate):** address, price, bedrooms, bathrooms, sqm, status (taxonomy: for-sale / sold / under-offer), gallery, neighborhood (taxonomy)
67
+ - **Recipes:** title, prep time, cook time, servings, ingredients (repeater), steps (repeater), category (taxonomy), cuisine (taxonomy), difficulty, dietary tags
68
+
69
+ ### Step 3 — Design the CPT shape
70
+
71
+ Output the proposed shape for user review:
72
+
73
+ ```markdown
74
+ ## Proposed CPT: `case_study`
75
+
76
+ - **Singular label:** Case Study
77
+ - **Plural label:** Case Studies
78
+ - **Menu icon:** dashicons-portfolio
79
+ - **Public:** yes
80
+ - **Has archive:** yes (URL: /case-studies/)
81
+ - **Supports:** title, editor, thumbnail, excerpt, revisions
82
+ - **REST API:** exposed (so the builder + Respira can read/write)
83
+ - **Hierarchical:** no
84
+ - **Show in admin menu:** yes, position 25 (under Pages)
85
+
86
+ ## Supporting taxonomies
87
+
88
+ 1. `case_study_industry` — Industries (e.g. SaaS, e-commerce, healthcare)
89
+ 2. `case_study_service` — Service types (e.g. branding, website, copywriting)
90
+
91
+ ## ACF field group: `Case Study Fields`
92
+
93
+ - Hero image (image, required)
94
+ - Client name (text, required)
95
+ - Brief (textarea)
96
+ - Deliverables (repeater — title + description)
97
+ - Outcomes (repeater — metric name + before + after)
98
+ - Client logo (image)
99
+ - Related case studies (relationship → case_study)
100
+ ```
101
+
102
+ Wait for confirmation. The user might want to add or remove fields.
103
+
104
+ ### Step 4 — Create the CPT + taxonomies
105
+
106
+ After confirmation, run the create calls:
107
+
108
+ 1. `respira_create_post_type` — creates the CPT with the proposed shape
109
+ 2. `respira_create_taxonomy` — once per supporting taxonomy, bound to the CPT
110
+ 3. `respira_create_acf_field_group` — the ACF field group, bound to the CPT via location rules
111
+
112
+ Each call should report back: "✓ Created CPT `case_study`" / "✓ Created taxonomy `case_study_industry`" / "✓ Created ACF field group with 8 fields bound to `case_study`."
113
+
114
+ ### Step 5 — Generate sample entries
115
+
116
+ Create 1–2 sample entries so the user can immediately see the CPT working in the admin and the editor renders correctly. Use `respira_create_custom_post` with realistic but generic content (no real customer names — generic personas like "BrandQ" or "agency-A").
117
+
118
+ The sample entries should populate every ACF field so the user can see the full shape.
119
+
120
+ ### Step 6 — Suggest a builder-specific single template
121
+
122
+ Based on the active builder, suggest where to create the single template:
123
+
124
+ - **Bricks:** "Create a single template at Templates → Add New → Type: Single → Conditions: Post Type = case_study. Suggested elements: ..."
125
+ - **Elementor:** "Create a single template at Templates → Theme Builder → Single → Add Conditions → Posts: case_study. Suggested widgets: ..."
126
+ - **Divi:** "Create a Theme Builder template at Divi → Theme Builder → Add Template → Posts: case_study. Suggested modules: ..."
127
+ - **Gutenberg / FSE theme:** "Create a single-case_study.html template in the theme or via Appearance → Editor → Templates → Add → Single Item: Case Study."
128
+ - **Oxygen / Breakdance:** "Create a Single template targeting case_study."
129
+
130
+ If the user wants to scaffold the template now, offer to build it: that's a separate skill flow (use `respira_build_page` against the single template surface for the chosen builder).
131
+
132
+ ### Step 7 — Verify
133
+
134
+ Output a summary with:
135
+
136
+ - The CPT slug + admin URL (`/wp-admin/edit.php?post_type=case_study`)
137
+ - The archive URL on the front-end (`/case-studies/`)
138
+ - The 2 sample entry URLs
139
+ - A note about whether the single template was scaffolded or left for the user
140
+
141
+ ---
142
+
143
+ ## Hard rules
144
+
145
+ - Always ask before creating. The CPT shape preview in Step 3 is mandatory. Customers will be writing into this CPT for years — get it right the first time.
146
+ - Use snake_case slugs (`case_study`, `case_study_industry`) — never spaces or hyphens. WordPress CPT slugs have a 20-character hard limit.
147
+ - Always expose `show_in_rest` so the builder + Respira can read/write the CPT. If `show_in_rest` is false, the post type is invisible to the REST API and most modern builders break on it.
148
+ - Never name a CPT `post`, `page`, `attachment`, `revision`, `nav_menu_item`, `custom_css`, `customize_changeset`, `oembed_cache`, `user_request`, `wp_block`, `wp_template`, `wp_template_part`, `wp_global_styles`, `wp_navigation` — these are reserved.
149
+ - ACF field group location rules must bind to the CPT (`post_type == case_study`), not to a category or template. Wrong location rule = fields invisible in the admin.
150
+ - Sample entries use generic personas. Never use real customer names from memory or any other source.
151
+
152
+ ---
153
+
154
+ ## Telemetry
155
+
156
+ Records: site URL hash, CPT slug created, taxonomy count, ACF field count, builder active, sample entries created, success/failure. No CPT names, no field values, no content sent.
157
+
158
+ Endpoint: `POST https://www.respira.press/api/skills/track-usage`
@@ -0,0 +1,39 @@
1
+ {
2
+ "name": "Custom Post Type Architect",
3
+ "slug": "custom-post-type-architect",
4
+ "icon": "🏗️",
5
+ "category": "content-creation",
6
+ "description": "Design and create WordPress custom post types end to end — CPT + supporting taxonomies + ACF field group + sample entries + builder-specific single template suggestion. Uses the new v7.1 MCP tools: respira_create_post_type, respira_create_taxonomy, respira_create_acf_field_group.",
7
+ "author": "Respira Team",
8
+ "author_url": "https://respira.press",
9
+ "trigger": "create a custom post type",
10
+ "requires_respira": true,
11
+ "requires_woocommerce_addon": false,
12
+ "requires_accessibility_addon": false,
13
+ "is_read_only": false,
14
+ "is_duplicate_first": false,
15
+ "version": "1.0.0",
16
+ "last_updated": "2026-05-24",
17
+ "tools_used": [
18
+ "respira_get_active_site",
19
+ "respira_get_builder_info",
20
+ "respira_create_post_type",
21
+ "respira_create_taxonomy",
22
+ "respira_create_acf_field_group",
23
+ "respira_create_custom_post",
24
+ "respira_list_custom_posts"
25
+ ],
26
+ "detects": [
27
+ "active_builder",
28
+ "content_type_intent",
29
+ "field_requirements",
30
+ "taxonomy_requirements"
31
+ ],
32
+ "generates": [
33
+ "cpt_shape_proposal",
34
+ "supporting_taxonomies",
35
+ "acf_field_group",
36
+ "sample_entries",
37
+ "single_template_recommendation"
38
+ ]
39
+ }
@@ -0,0 +1,46 @@
1
+ # Design System Synthesizer
2
+
3
+ > Every page you build, automatically on brand.
4
+
5
+ Tell Respira your site's design system, and every new page Claude generates matches your logo, colors, fonts, and component patterns.
6
+
7
+ ## What it does
8
+
9
+ Reads 5–10 representative pages of your site (homepage, about, a service page, a typical blog post, contact), inspects your theme stylesheet, scans your media library for the logo and brand imagery, then synthesizes a complete design system: brand identity, color palette, typography scale, spacing scale, component patterns.
10
+
11
+ The system is persisted to your site as machine data AND as a visible style-guide page you can open in your browser.
12
+
13
+ ## Two outputs, one workflow
14
+
15
+ 1. **Machine source of truth** — saved in `wp_options.respira_design_system`. Every Respira content-creation skill reads this at the top of its workflow so new pages snap to your brand.
16
+ 2. **Human-visible style-guide page** — a private (admin-only) page at `/design-system/` on your site that renders the synthesized tokens visually: color swatches with hex codes, typography samples in actual styles, spacing scale blocks, component previews, voice notes. Built with your active page builder so you can edit it like any other page.
17
+
18
+ You can promote the page to public any time if you want a /design-system/ landing on your live site.
19
+
20
+ ## What's in the system
21
+
22
+ - **Brand:** logo URL, favicon, social card, wordmark
23
+ - **Colors:** primary, secondary, accent, neutrals (9-step scale), semantic (link / success / warning / error)
24
+ - **Typography:** heading family + weights + sizes (H1–H6), body family + weight + line-height, mono family
25
+ - **Spacing:** base unit, scale steps, section padding, container max width
26
+ - **Components:** button styles, card styles, hero patterns, section patterns
27
+ - **Voice hints:** person used (we / I / you), formality, average sentence length
28
+
29
+ ## Triggers
30
+
31
+ - *"build a design system for my site"*
32
+ - *"extract my brand"*
33
+ - *"synthesize a design system"*
34
+ - *"create my design tokens"*
35
+ - *"what does my site look like"*
36
+
37
+ ## How other skills use it
38
+
39
+ Future content skills (page generators, section builders, blog post writers) call `respira_get_option('respira_design_system')` at the top of their workflow. The tokens give the agent explicit values for colors, fonts, spacing, and patterns — no more invented hex codes, no more random font sizes.
40
+
41
+ Pair with the **Brand Voice Synthesizer** for the full brand foundation (visual + verbal).
42
+
43
+ ## Requires
44
+
45
+ - Respira for WordPress plugin **7.1+**
46
+ - MCP server connected