ima-claude 2.20.0 → 2.26.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.
Files changed (80) hide show
  1. package/README.md +74 -9
  2. package/dist/cli.js +2 -1
  3. package/package.json +1 -1
  4. package/plugins/ima-claude/.claude-plugin/plugin.json +2 -2
  5. package/plugins/ima-claude/agents/explorer.md +29 -15
  6. package/plugins/ima-claude/agents/implementer.md +58 -13
  7. package/plugins/ima-claude/agents/memory.md +19 -19
  8. package/plugins/ima-claude/agents/reviewer.md +84 -34
  9. package/plugins/ima-claude/agents/tester.md +59 -16
  10. package/plugins/ima-claude/agents/wp-developer.md +66 -21
  11. package/plugins/ima-claude/hooks/bootstrap.sh +42 -44
  12. package/plugins/ima-claude/hooks/prompt_coach_digest.md +14 -17
  13. package/plugins/ima-claude/hooks/prompt_coach_system.md +10 -12
  14. package/plugins/ima-claude/personalities/README.md +17 -6
  15. package/plugins/ima-claude/personalities/enable-efficient.md +61 -0
  16. package/plugins/ima-claude/personalities/enable-terse.md +71 -0
  17. package/plugins/ima-claude/skills/agentic-workflows/SKILL.md +35 -71
  18. package/plugins/ima-claude/skills/architect/SKILL.md +54 -168
  19. package/plugins/ima-claude/skills/compound-bridge/SKILL.md +41 -94
  20. package/plugins/ima-claude/skills/design-to-code/SKILL.md +43 -78
  21. package/plugins/ima-claude/skills/discourse/SKILL.md +79 -194
  22. package/plugins/ima-claude/skills/discourse-admin/SKILL.md +41 -103
  23. package/plugins/ima-claude/skills/docs-organize/SKILL.md +63 -203
  24. package/plugins/ima-claude/skills/ember-discourse/SKILL.md +90 -200
  25. package/plugins/ima-claude/skills/espocrm/SKILL.md +14 -23
  26. package/plugins/ima-claude/skills/espocrm-api/SKILL.md +79 -192
  27. package/plugins/ima-claude/skills/functional-programmer/SKILL.md +33 -237
  28. package/plugins/ima-claude/skills/gh-cli/SKILL.md +26 -65
  29. package/plugins/ima-claude/skills/ima-bootstrap/SKILL.md +71 -104
  30. package/plugins/ima-claude/skills/ima-bootstrap/references/ima-brand.md +32 -22
  31. package/plugins/ima-claude/skills/ima-brand/SKILL.md +18 -23
  32. package/plugins/ima-claude/skills/ima-copywriting/SKILL.md +68 -179
  33. package/plugins/ima-claude/skills/ima-doc2pdf/SKILL.md +32 -102
  34. package/plugins/ima-claude/skills/ima-editorial-scorecard/SKILL.md +38 -63
  35. package/plugins/ima-claude/skills/ima-editorial-workflow/SKILL.md +69 -114
  36. package/plugins/ima-claude/skills/ima-email-creator/SKILL.md +16 -22
  37. package/plugins/ima-claude/skills/ima-forms-expert/SKILL.md +21 -37
  38. package/plugins/ima-claude/skills/ima-git/SKILL.md +81 -0
  39. package/plugins/ima-claude/skills/jira-checkpoint/SKILL.md +39 -120
  40. package/plugins/ima-claude/skills/jquery/SKILL.md +107 -233
  41. package/plugins/ima-claude/skills/js-fp/SKILL.md +75 -296
  42. package/plugins/ima-claude/skills/js-fp-api/SKILL.md +52 -162
  43. package/plugins/ima-claude/skills/js-fp-react/SKILL.md +47 -270
  44. package/plugins/ima-claude/skills/js-fp-vue/SKILL.md +55 -209
  45. package/plugins/ima-claude/skills/js-fp-wordpress/SKILL.md +59 -204
  46. package/plugins/ima-claude/skills/livecanvas/SKILL.md +19 -32
  47. package/plugins/ima-claude/skills/mcp-atlassian/SKILL.md +92 -162
  48. package/plugins/ima-claude/skills/mcp-context7/SKILL.md +32 -64
  49. package/plugins/ima-claude/skills/mcp-gitea/SKILL.md +98 -188
  50. package/plugins/ima-claude/skills/mcp-github/SKILL.md +60 -124
  51. package/plugins/ima-claude/skills/mcp-memory/SKILL.md +1 -177
  52. package/plugins/ima-claude/skills/mcp-qdrant/SKILL.md +58 -115
  53. package/plugins/ima-claude/skills/mcp-sequential/SKILL.md +32 -87
  54. package/plugins/ima-claude/skills/mcp-serena/SKILL.md +54 -80
  55. package/plugins/ima-claude/skills/mcp-tavily/SKILL.md +40 -63
  56. package/plugins/ima-claude/skills/mcp-vestige/SKILL.md +75 -116
  57. package/plugins/ima-claude/skills/php-authnet/SKILL.md +32 -65
  58. package/plugins/ima-claude/skills/php-fp/SKILL.md +50 -129
  59. package/plugins/ima-claude/skills/php-fp-wordpress/SKILL.md +25 -73
  60. package/plugins/ima-claude/skills/phpunit-wp/SKILL.md +103 -463
  61. package/plugins/ima-claude/skills/playwright/SKILL.md +69 -220
  62. package/plugins/ima-claude/skills/prompt-starter/SKILL.md +33 -83
  63. package/plugins/ima-claude/skills/prompt-starter/references/code-review.md +38 -0
  64. package/plugins/ima-claude/skills/py-fp/SKILL.md +78 -384
  65. package/plugins/ima-claude/skills/quasar-fp/SKILL.md +54 -255
  66. package/plugins/ima-claude/skills/quickstart/SKILL.md +7 -11
  67. package/plugins/ima-claude/skills/rails/SKILL.md +63 -184
  68. package/plugins/ima-claude/skills/resume-session/SKILL.md +14 -35
  69. package/plugins/ima-claude/skills/rg/SKILL.md +61 -146
  70. package/plugins/ima-claude/skills/ruby-fp/SKILL.md +66 -163
  71. package/plugins/ima-claude/skills/save-session/SKILL.md +10 -39
  72. package/plugins/ima-claude/skills/scorecard/SKILL.md +42 -40
  73. package/plugins/ima-claude/skills/skill-analyzer/SKILL.md +42 -71
  74. package/plugins/ima-claude/skills/skill-creator/SKILL.md +79 -250
  75. package/plugins/ima-claude/skills/task-master/SKILL.md +11 -31
  76. package/plugins/ima-claude/skills/task-planner/SKILL.md +44 -153
  77. package/plugins/ima-claude/skills/task-runner/SKILL.md +61 -143
  78. package/plugins/ima-claude/skills/unit-testing/SKILL.md +59 -134
  79. package/plugins/ima-claude/skills/wp-ddev/SKILL.md +38 -120
  80. package/plugins/ima-claude/skills/wp-local/SKILL.md +26 -108
@@ -7,7 +7,7 @@ metadata:
7
7
 
8
8
  # IMA Editorial Scorecard
9
9
 
10
- Score any piece of IMA content against editorial best practices and brand standards. Honest grades that help writers improve.
10
+ Score IMA content against editorial best practices and brand standards. Honest grades that help writers improve.
11
11
 
12
12
  ## Invocation
13
13
 
@@ -16,16 +16,12 @@ Score any piece of IMA content against editorial best practices and brand standa
16
16
  /scorecard [content type: newsletter | webinar | blog | press-release | fundraising | op-ed | social]
17
17
  ```
18
18
 
19
- If content type isn't specified, auto-detect from structure and formatting cues.
20
-
21
- ---
19
+ Auto-detect content type if not specified.
22
20
 
23
21
  ## Process
24
22
 
25
23
  ### Step 1: Identify Content Type
26
24
 
27
- Detect or confirm the format:
28
-
29
25
  | Content Type | Key Signals |
30
26
  |-------------|-------------|
31
27
  | Newsletter | "Dear {Person.firstName}", Quick Links block, multiple sections |
@@ -38,29 +34,26 @@ Detect or confirm the format:
38
34
 
39
35
  ### Step 2: Load Scoring References
40
36
 
41
- Read the appropriate reference files:
42
- - **[references/scoring-rubrics.md](references/scoring-rubrics.md)** — Grade-level criteria for all 5 categories
43
- - **[references/format-expectations.md](references/format-expectations.md)** — Voice check and structural expectations by content type
37
+ - **[references/scoring-rubrics.md](references/scoring-rubrics.md)** grade criteria for all 5 categories
38
+ - **[references/format-expectations.md](references/format-expectations.md)** — voice and structural expectations by content type
44
39
 
45
40
  ### Step 3: Score Across Five Categories
46
41
 
47
- Evaluate the content against each category. Be honest — inflated scores help nobody.
48
-
49
42
  | Category | What to Evaluate |
50
43
  |----------|-----------------|
51
- | **Brand Voice** | Does this sound like IMA? Tone match for channel? Terminology compliance? |
52
- | **Evidence Quality** | Are claims supported? Sources cited? Precision of language? |
53
- | **Audience Clarity** | Will the target reader understand AND respect this? Plain language with precision? |
54
- | **Structural Craft** | Does the format follow IMA patterns? Logical flow? Scannable? |
55
- | **CTA Effectiveness** | Does the reader know what to do? Are CTAs specific and well-placed? |
44
+ | **Brand Voice** | Sounds like IMA? Tone match for channel? Terminology compliance? |
45
+ | **Evidence Quality** | Claims supported? Sources cited? Precise language? |
46
+ | **Audience Clarity** | Target reader understands AND respects this? Plain language with precision? |
47
+ | **Structural Craft** | Follows IMA format patterns? Logical flow? Scannable? |
48
+ | **CTA Effectiveness** | Reader knows what to do? CTAs specific and well-placed? |
56
49
 
57
50
  ### Step 4: Assign Grades
58
51
 
59
- **Formatting rules (non-negotiable):**
60
- - Use **exact emoji characters**: `🟢` `🟡` `🔴` — never text substitutes
61
- - Use **whole letter grades only**: A, B, C, D, F — no `+` or `-` modifiers
62
- - Format as `🟢 A` (emoji + space + letter)
63
- - Notes column: 5-15 words max. The scorecard is a glance, not a report.
52
+ **Non-negotiable formatting rules:**
53
+ - Exact emoji: `🟢` `🟡` `🔴` — never text substitutes
54
+ - Whole letter grades only: A, B, C, D, F — no `+` or `-`
55
+ - Format: `🟢 A` (emoji + space + letter)
56
+ - Notes: 5-15 words max
64
57
 
65
58
  | Grade | Indicator | Meaning |
66
59
  |-------|-----------|---------|
@@ -72,8 +65,6 @@ Evaluate the content against each category. Be honest — inflated scores help n
72
65
 
73
66
  ### Step 5: Compile & Present
74
67
 
75
- Present the scorecard in this exact format:
76
-
77
68
  ```markdown
78
69
  ## Editorial Scorecard
79
70
 
@@ -90,70 +81,54 @@ Present the scorecard in this exact format:
90
81
  > Reviewed: YYYY-MM-DD · Content Type: [type]
91
82
  ```
92
83
 
93
- Then provide the editorial memo:
94
-
95
- **What's Working** (2-3 bullets)
96
- - Specific things the content does well
97
- - Quote or reference the actual text
84
+ Then provide editorial memo:
98
85
 
99
- **Priority Fixes** (2-3 bullets, ordered by impact)
100
- - Most impactful improvements first
101
- - Be specific: "Change X to Y" not "Improve the tone"
86
+ **What's Working** (2-3 bullets) — specific strengths, quote actual text
102
87
 
103
- **Line-Level Notes** (if applicable)
104
- - Flag specific sentences, phrases, or sections
105
- - Suggest rewrites for the most critical issues
106
- - Call out AI tells, terminology violations, or unsupported claims
88
+ **Priority Fixes** (2-3 bullets, ordered by impact) — "Change X to Y" not "Improve the tone"
107
89
 
108
- ---
90
+ **Line-Level Notes** (if applicable) — flag specific sentences, suggest rewrites, call out AI tells or unsupported claims
109
91
 
110
92
  ## Special Checks
111
93
 
112
94
  ### AI Detection Flags
113
95
 
114
- Scan for these patterns and flag them in notes:
115
-
116
- - **AI openers**: "In today's rapidly evolving...", "In the realm of..."
117
- - **AI transitions**: Repeated "Moreover," "Furthermore," "It's worth noting"
118
- - **AI hedges**: "That being said," "It is important to note that"
119
- - **AI closers**: "In conclusion," at paragraph start
120
- - **Generic filler**: "Navigate the complexities," "At its core," "Delve into"
121
- - **Unnatural formality**: Passive constructions where active voice is standard for IMA
96
+ Flag these patterns; if 3+ detected, deduct one letter grade from Brand Voice:
122
97
 
123
- If 3+ AI tells are detected, automatically deduct one letter grade from Brand Voice and note it explicitly.
98
+ - Openers: "In today's rapidly evolving...", "In the realm of..."
99
+ - Transitions: Repeated "Moreover," "Furthermore," "It's worth noting"
100
+ - Hedges: "That being said," "It is important to note that"
101
+ - Closers: "In conclusion," at paragraph start
102
+ - Filler: "Navigate the complexities," "At its core," "Delve into"
103
+ - Unnatural formality: passive constructions where IMA uses active voice
124
104
 
125
105
  ### Disclaimer Check
126
106
 
127
- For any content containing health information, verify:
128
- - Medical disclaimer present (or appropriate for format)
107
+ For health content, verify:
108
+ - Medical disclaimer present
129
109
  - "Not medical advice" language where needed
130
- - "Consult your physician" or equivalent for patient-facing content
110
+ - "Consult your physician" for patient-facing content
131
111
 
132
112
  ### Independence Signal
133
113
 
134
- Verify that at least one of these independence markers appears:
114
+ Verify at least one marker:
135
115
  - "Independent" in organizational description
136
116
  - "No pharma funding" or equivalent
137
117
  - "501(c)(3) nonprofit" identification
138
118
  - "funded by people/donors" language
139
119
 
140
- **Note:** Social posts are exempt from the independence signal check on individual posts the profile bio and linked website carry this. Flag only if a statement or long-form social post lacks it.
141
-
142
- ---
120
+ Social posts exempt from individual independence check — profile bio carries it.
143
121
 
144
122
  ## Guidelines
145
123
 
146
- - **Honest scores only.** A scorecard that says everything is an A is useless.
147
- - **Notes are terse.** 5-15 words per note. The scorecard is a glance.
148
- - **Format-aware grading.** A newsletter shouldn't be scored like a press release. A social post shouldn't be scored like a blog.
149
- - **Prioritize fixes by impact.** What single change would improve this most?
150
- - **Show, don't just tell.** When suggesting a rewrite, write the actual improved version.
151
- - **Date stamp every scorecard** so teams know how fresh the review is.
152
- - **Non-editorial team members** should be able to read and act on this feedback.
153
-
154
- ---
124
+ - Honest scores only an all-A scorecard is useless
125
+ - Notes are terse: 5-15 words per note
126
+ - Grade format-aware: newsletter press release social post
127
+ - Prioritize fixes by impact what single change improves this most?
128
+ - Show rewrites, don't just describe them
129
+ - Date stamp every scorecard
155
130
 
156
131
  ## Related Skills
157
132
 
158
- - **ima-copywriting**: Write new content or rewrite existing drafts
159
- - **ima-brand**: Source of truth for voice, tone, terminology
133
+ - `ima-copywriting` write or rewrite drafts
134
+ - `ima-brand` source of truth for voice, tone, terminology
@@ -7,165 +7,120 @@ metadata:
7
7
 
8
8
  # IMA Editorial Workflow
9
9
 
10
- Orchestrates every editorial request through a structured sequence. This skill is the traffic controller — it manages the process and delegates writing to `ima-copywriting` and scoring to `ima-editorial-scorecard`.
10
+ Traffic controller for all editorial requests. Delegates writing to `ima-copywriting`, scoring to `ima-editorial-scorecard`.
11
11
 
12
- ## Invocation
12
+ ## Commands
13
13
 
14
14
  ```
15
15
  /write [type] → Plan and draft new content
16
- /rewrite → Review existing content, then improve it
17
- /social [category] → Plan and draft a social media post
18
- /brainstorm [topic] → Explore ideas and angles before committing
16
+ /rewrite → Review existing content, then improve
17
+ /social [category] → Plan and draft social post
18
+ /brainstorm [topic] → Explore ideas before committing
19
19
  ```
20
20
 
21
- Also triggers on natural language: "draft a newsletter," "improve this," "write a press release," "help me with this blog post," etc.
21
+ Also triggers on: "draft a newsletter," "improve this," "write a press release," etc.
22
22
 
23
- **Content types for `/write`:**
24
- `newsletter` · `webinar` · `blog` · `press-release` · `fundraising` · `op-ed` · `social`
23
+ **Content types (`/write`):** `newsletter` · `webinar` · `blog` · `press-release` · `fundraising` · `op-ed` · `social`
25
24
 
26
- **Categories for `/social`:**
27
- `video` · `statement` · `action` · `media-hit` · `announcement` · `journal` · `webinar-promo`
25
+ **Categories (`/social`):** `video` · `statement` · `action` · `media-hit` · `announcement` · `journal` · `webinar-promo`
28
26
 
29
- ---
30
-
31
- ## The Workflow
32
-
33
- Every editorial request follows this sequence. No diving straight into a draft. No three rounds of follow-up questions. Gather context once, execute cleanly, review honestly.
27
+ ## Workflow Sequence
34
28
 
35
29
  ```
36
- PLAN Identify intent, content type, gather missing context
37
- WRITE → Draft using ima-copywriting + format reference + ima-brand
38
- REVIEW → Score against standards using ima-editorial-scorecard
39
- APPROVE → Present for human decision with clear next actions
40
- LEARN → Capture what worked for future drafts
30
+ PLAN WRITE REVIEW APPROVE LEARN
41
31
  ```
42
32
 
43
- ---
44
-
45
- ## PLAN (Always Runs First)
46
-
47
- Every editorial request starts with planning. Even quick ones. Especially quick ones.
33
+ No diving straight into drafts. Gather context once, execute, review honestly.
48
34
 
49
- ### Step 1: Detect Intent
35
+ ## PLAN
50
36
 
51
- | Command or Signal | Intent | Workflow Path |
52
- |-------------------|--------|---------------|
53
- | `/write`, "draft," "create," "new" | **Create** new content | Plan → Write → Review → Approve |
54
- | `/rewrite`, "improve," "fix," "edit," "make better" | **Rewrite** existing content | Plan → Review → Write → Review → Approve |
55
- | `/social` | **Create** social post | Plan → Write → Review → Approve |
56
- | `/brainstorm` | **Explore** before committing | Brainstorm → Plan (when ready) |
57
- | Pastes content, no instructions | **Ambiguous** | Ask: "Score this or rewrite it?" |
58
- | "Continue," "next version," "apply fixes" | **Iterate** | Skip Plan → Write |
37
+ ### Intent Detection
59
38
 
60
- **Note:** `/scorecard` is handled directly by the `ima-editorial-scorecard` skill, not this workflow.
39
+ | Signal | Intent | Path |
40
+ |--------|--------|------|
41
+ | `/write`, "draft," "create," "new" | Create | Plan → Write → Review → Approve |
42
+ | `/rewrite`, "improve," "fix," "edit," "make better" | Rewrite | Plan → Review → Write → Review → Approve |
43
+ | `/social` | Create social | Plan → Write → Review → Approve |
44
+ | `/brainstorm` | Explore | Brainstorm → Plan (when ready) |
45
+ | Content pasted, no instructions | Ambiguous | Ask: "Score this or rewrite it?" |
46
+ | "Continue," "next version," "apply fixes" | Iterate | Skip Plan → Write |
61
47
 
62
- ### Step 2: Identify Content Type
48
+ `/scorecard` handled directly by `ima-editorial-scorecard`, not this workflow.
63
49
 
64
- From the command argument, or detect from context, or ask.
50
+ ### Context Gathering (One Prompt, Not a Chain)
65
51
 
66
- ### Step 3: Gather Context (One Prompt, Not a Chain)
52
+ Use `ask_user_input` widget. Collect 2–3 answers in single structured prompt. Skip already-answered questions. Default aggressively — ask only what's genuinely missing. For iteration requests, skip Plan entirely. If user says "just do it," write with available context, note assumptions, flag gaps with `[brackets]`.
67
53
 
68
- **Use the `ask_user_input` widget** to collect 2–3 answers in a single structured prompt. Do not ask questions one at a time across multiple messages.
54
+ **`/write [type]`:**
55
+ - Core message — ONE takeaway
56
+ - Reader action (widget: Read / Watch / Donate / Share / Sign / Attend / Download)
57
+ - Source material (widget multi-select: Study · Webinar · Quote · Press release · External article · None)
58
+ - Subject matter expert (optional)
59
+ - Responding to external events? (optional)
60
+ - Audience segment (widget: General supporters · Healthcare pros · Donors · Media · New subscribers)
69
61
 
70
- **Rules:**
71
- - If the user already provided enough context, skip answered questions. Don't ask "what's the content type?" when they said `/write press-release`.
72
- - Default aggressively. If someone says `/write fundraising` about the year-end campaign, you already know the audience, tone, and CTA structure. Ask only for what's genuinely missing.
73
- - For iteration ("apply the fixes," "next version"), skip Plan entirely.
74
- - If the user says "just do it," respect that. Write with available context, note assumptions, flag gaps with `[brackets]`.
75
-
76
- ### Context Gathering by Command
77
-
78
- **`/write [type]` — Creating new content:**
79
- - Core message — what's the ONE takeaway? (open text)
80
- - Reader action — what should they do? (widget: Read / Watch / Donate / Share / Sign / Attend / Download)
81
- - Source material available? (widget multi-select: Study · Webinar · Quote from leader · Press release · External article · None yet)
82
- - Subject matter expert? (open text)
83
- - Responding to external events? (open text, optional)
84
- - Audience segment? (widget: General supporters · Healthcare pros · Donors · Media · New subscribers)
85
-
86
- **`/rewrite` — Improving content:**
87
- - What's wrong with it? (open text)
62
+ **`/rewrite`:**
63
+ - What's wrong with it?
88
64
  - Keep structure or rebuild? (widget: Keep structure · Rebuild)
89
- - Preserve specific elements? (open text, optional)
65
+ - Preserve specific elements? (optional)
90
66
 
91
- **`/social [category]` — Social media post:**
92
- - Category, if not specified (widget: Video/Research · Statement · Action/Campaign · Media Hit · Announcement · Journal · Webinar Promo)
93
- - What are you promoting/announcing? (open text)
94
- - Link or media to attach? (open text)
95
- - Quote to feature? (open text, optional)
67
+ **`/social [category]`:**
68
+ - Category if not specified
69
+ - What are you promoting/announcing?
70
+ - Link or media to attach?
71
+ - Quote to feature? (optional)
96
72
 
97
- **`/brainstorm [topic]` — Exploring angles:**
98
- - What's the topic or event? (open text)
99
- - Any format preference, or open to suggestions? (widget: Newsletter angle · Blog angle · Social angle · Op-ed angle · No preference)
100
- - What's the goal? (widget: Drive awareness · Drive action · Respond to news · Celebrate a win · Educate)
101
-
102
- ---
73
+ **`/brainstorm [topic]`:**
74
+ - Topic or event
75
+ - Format preference (widget: Newsletter · Blog · Social · Op-ed · No preference)
76
+ - Goal (widget: Drive awareness · Drive action · Respond to news · Celebrate win · Educate)
103
77
 
104
78
  ## WRITE
105
79
 
106
- After planning, load tools and draft:
80
+ 1. Load `ima-brand` (always)
81
+ 2. Load `ima-copywriting` (format template for content type)
82
+ 3. Check project Files for published examples as style benchmarks
83
+ 4. Write draft
84
+ 5. Self-check against Quality Checklist in `ima-copywriting`
107
85
 
108
- 1. Load `ima-brand` skill (always voice/tone authority)
109
- 2. Load `ima-copywriting` skill (writing principles + format template for this content type)
110
- 3. Check project Files for published examples of this format as style benchmarks
111
- 4. Write the draft
112
- 5. Self-check against the Quality Checklist in ima-copywriting
113
-
114
- **Deliver the draft with a brief note** on key editorial choices: why you opened this way, which template you followed, what still needs user input.
115
-
116
- **Use placeholder brackets** for anything you don't have: `[study name]`, `[specific finding]`, `[dollar amount]`, `[date]`. Never invent evidence.
117
-
118
- ---
86
+ Deliver draft with brief note on key editorial choices. Use `[brackets]` for missing data. Never invent evidence.
119
87
 
120
88
  ## REVIEW
121
89
 
122
- Run the editorial scorecard — on your own draft (self-review) or user-submitted content.
123
-
124
- 1. Load `ima-editorial-scorecard` skill
125
- 2. Auto-detect content type or use what was specified
126
- 3. Score across five categories: Brand Voice · Evidence Quality · Audience Clarity · Structural Craft · CTA Effectiveness
127
- 4. Present scorecard table first, then What's Working, Priority Fixes, Line-Level Notes
90
+ 1. Load `ima-editorial-scorecard`
91
+ 2. Auto-detect content type or use specified
92
+ 3. Score: Brand Voice · Evidence Quality · Audience Clarity · Structural Craft · CTA Effectiveness
93
+ 4. Present: scorecard table What's Working Priority Fixes → Line-Level Notes
128
94
 
129
- **For self-review after writing:**
130
- - Be honest. If the draft you wrote has a weak opening or missing independence signal, say so.
131
- - Separate what *you* can fix on the next pass from what the *user* needs to provide (missing data, quotes, approvals).
95
+ For self-review: be honest. Separate what you can fix from what the user must provide (missing data, quotes, approvals).
132
96
 
133
- **For user-submitted content:**
134
- - Score first, then ask if they want a rewrite.
135
-
136
- ---
97
+ For user-submitted content: score first, then ask if they want a rewrite.
137
98
 
138
99
  ## APPROVE
139
100
 
140
- Present the work for human decision. Use the `ask_user_input` widget to offer clear next actions:
141
-
142
- | Option | What Happens Next |
143
- |--------|-------------------|
144
- | ✅ Approve | Content is ready. Move to Learn. |
145
- | 🔄 Revise | Apply specific changes. Return to Write. |
146
- | 🔁 Rebuild | Different approach. Return to Plan. |
147
- | 💬 Discuss | Talk through a section before deciding. |
101
+ Present via `ask_user_input` widget:
148
102
 
149
- ---
103
+ | Option | Next |
104
+ |--------|------|
105
+ | Approve | Ready. Move to Learn. |
106
+ | Revise | Apply changes. Return to Write. |
107
+ | Rebuild | Different approach. Return to Plan. |
108
+ | Discuss | Talk through section before deciding. |
150
109
 
151
110
  ## LEARN
152
111
 
153
- After approval, briefly capture what worked or what the user corrected:
112
+ After approval, capture what worked:
154
113
 
155
- > "Noted for future [content type] drafts:
156
- > - [Pattern worth reusing or correction to remember]"
114
+ > "Noted for future [content type] drafts: [pattern or correction]"
157
115
 
158
116
  Examples:
159
- - "Noted: Dr. Varon prefers 'the IMA' in formal quotes, not just 'IMA.'"
117
+ - "Noted: Dr. Varon prefers 'the IMA' in formal quotes."
160
118
  - "Noted: Year-end fundraising leads with match mechanic, not mission statement."
161
- - "Noted: Thread format (1/4) works well for journal promotions on social."
162
119
 
163
- If the learning should persist across sessions, ask: "Want me to remember this for future drafts?" and use memory.
164
-
165
- ---
120
+ If learning should persist, ask: "Want me to remember this?" and use memory.
166
121
 
167
122
  ## Related Skills
168
123
 
169
- - **ima-brand**: Voice, tone, terminology, visual identity (ALWAYS load alongside)
170
- - **ima-copywriting**: Format templates, writing principles, CTA patterns, quality checklist
171
- - **ima-editorial-scorecard**: Scoring rubric for content review (handles `/scorecard` independently)
124
+ - **ima-brand**: Voice, tone, terminology (ALWAYS load alongside)
125
+ - **ima-copywriting**: Format templates, writing principles, quality checklist
126
+ - **ima-editorial-scorecard**: Scoring rubric (handles `/scorecard` independently)
@@ -12,13 +12,9 @@ description: >-
12
12
 
13
13
  # IMA Email Creator
14
14
 
15
- Renders IMA-branded email HTML from editorial copy. Platform-agnostic — runs in any Claude environment.
15
+ Renders IMA-branded email HTML from editorial copy. Platform-agnostic.
16
16
 
17
- ## Core Principle
18
-
19
- **Email HTML is not web HTML.** Tables for layout, inline CSS only, 600px max width, test across clients.
20
- Gmail strips `<style>` blocks. Outlook uses Word's rendering engine, which breaks CSS floats and flexbox.
21
- Every layout decision must survive both.
17
+ **Email HTML is not web HTML.** Tables for layout, inline CSS only, 600px max width. Gmail strips `<style>` blocks. Outlook uses Word's rendering engine — breaks CSS floats and flexbox.
22
18
 
23
19
  ## Decision Tree
24
20
 
@@ -30,7 +26,7 @@ What type of email?
30
26
  │ → references/drip-sequence.md
31
27
  ├── WordPress transactional (PHP)
32
28
  │ → references/wp-transactional.md
33
- ├── Need EspoCRM compatibility info?
29
+ ├── EspoCRM compatibility info?
34
30
  │ → references/espocrm-compat.md
35
31
  └── General email CSS questions?
36
32
  → references/email-css-safe.md
@@ -38,9 +34,9 @@ What type of email?
38
34
 
39
35
  ## Quick Start
40
36
 
41
- 1. Get copy from `ima-copywriting` (or user provides it)
42
- 2. Choose email type above → load appropriate reference
43
- 3. Render HTML using base template from `assets/base-template.html`
37
+ 1. Get copy from `ima-copywriting` (or user provides)
38
+ 2. Choose email type → load appropriate reference
39
+ 3. Render HTML using `assets/base-template.html`
44
40
  4. Write to `~/.claude/output/{name}.html` for browser preview
45
41
  5. Run EspoCRM prep if needed: `python3 scripts/espocrm-prep.py output.html`
46
42
  6. User pastes result into EspoCRM source view
@@ -52,7 +48,7 @@ What type of email?
52
48
  | `espocrm-prep.py` | Extract body, migrate styles to div wrapper | `python3 scripts/espocrm-prep.py input.html [--out output.html]` |
53
49
  | `css-inliner.py` | Inline style blocks into element attributes | `python3 scripts/css-inliner.py input.html [--out output.html]` |
54
50
 
55
- Install deps once: `pip install -r scripts/requirements.txt`
51
+ Install once: `pip install -r scripts/requirements.txt`
56
52
 
57
53
  ## IMA Brand Colors
58
54
 
@@ -71,30 +67,28 @@ Install deps once: `pip install -r scripts/requirements.txt`
71
67
 
72
68
  - Tables for ALL layout — Outlook's Word engine breaks floats and flexbox
73
69
  - Inline CSS only — Gmail strips `<style>` blocks
74
- - 600px max width — universal client safe zone
75
- - Typography: Lato for headings (bold 700). Fallback: Arial, Helvetica, sans-serif. Open Sans for body text (regular 400). Fallback: Helvetica Neue, Helvetica, Arial, sans-serif
76
- - 16px minimum body text (accessibility for 50+ audience), 28px main headings, 20px section headings
77
- - Images: absolute URLs, explicit `width`/`height`, `display:block`, meaningful `alt`, 5px border-radius, max-width 580px in content area
70
+ - 600px max width
71
+ - Typography: Lato bold 700 for headings (fallback: Arial, Helvetica, sans-serif); Open Sans regular 400 for body (fallback: Helvetica Neue, Helvetica, Arial, sans-serif)
72
+ - 16px minimum body text, 28px main headings, 20px section headings
73
+ - Images: absolute URLs, explicit `width`/`height`, `display:block`, meaningful `alt`, 5px border-radius, max-width 580px
78
74
  - `role="presentation"` on all layout tables
79
- - Medical disclaimer in footer for any health content
75
+ - Medical disclaimer in footer for health content
80
76
  - UTM parameters on all links (utm_term, utm_medium, utm_source, utm_content, utm_campaign)
81
77
 
82
78
  ## EspoCRM Variables
83
79
 
84
- Single-brace syntax (NOT Handlebars double-brace):
80
+ Single-brace syntax (NOT Handlebars):
85
81
  - `{Person.firstName}` — first name (newsletters)
86
82
  - `{Person.name}` — full name (campaigns)
87
83
  - `{optOutLink}` — unsubscribe link (all emails, in footer)
88
84
 
89
85
  ## Builder Context
90
86
 
91
- Production emails are built in BeeFree and exported. Generate HTML that matches BeeFree's output patterns: `nl-container` → `row` → `row-content` stack → `column` structure. This ensures visual parity when HTML is imported back into BeeFree or compared against production exports.
87
+ Production emails are built in BeeFree and exported. Match BeeFree output patterns: `nl-container` → `row` → `row-content` stack → `column`. Ensures visual parity on import.
92
88
 
93
- > **Brand evolution note:** Production emails prior to Brand Book v4.0 used Montserrat/#0296a1/#374751/14px.
94
- > New emails should follow the brand book values above. The structural patterns (BeeFree DOM, VML buttons,
95
- > CSS resets, EspoCRM variables) remain the same regardless of color/font choices.
89
+ > Brand evolution: emails prior to Brand Book v4.0 used Montserrat/#0296a1/#374751/14px. New emails follow the values above. Structural patterns (BeeFree DOM, VML buttons, CSS resets, EspoCRM variables) remain the same.
96
90
 
97
- ## Integration Points
91
+ ## Related Skills
98
92
 
99
93
  | Skill | Role |
100
94
  |-------|------|
@@ -13,24 +13,13 @@ description: |
13
13
 
14
14
  # IMA Forms Expert
15
15
 
16
- WordPress form component library with Bootstrap 5 + functional programming patterns.
17
-
18
- ## When to Use This Skill
19
-
20
- - Building custom forms using IMA Forms component library
21
- - Implementing template-driven validation (v1.3.0+)
22
- - Understanding validators-at-registration architecture (v1.4.0+)
23
- - Adding field types or container components
24
- - Creating repeater/dynamic field patterns
25
- - Integrating forms with WordPress (ACF, custom post types, AJAX)
26
- - Debugging form submission issues
16
+ WordPress form component library Bootstrap 5 + functional programming patterns.
27
17
 
28
18
  ## Core Principles
29
19
 
30
- - **Template IS the definition**: Field rendering auto-registers validation specs + validators
20
+ - **Template IS definition**: Field rendering auto-registers validation specs + validators
31
21
  - **Validators at registration**: Field functions build closures at registration time (v1.4.0)
32
22
  - **Security by default**: Nonce verification, sanitization, escaping
33
- - **Component-based**: Reusable field and container components
34
23
  - **Bootstrap 5 native**: Uses Bootstrap utilities and components
35
24
 
36
25
  ## Architecture (v1.4.0 - Unified Validator Registry)
@@ -57,7 +46,7 @@ ima-forms/
57
46
 
58
47
  ### Validators-at-Registration Pattern (v1.4.0)
59
48
 
60
- **Key change from v1.3.0**: Validators are now built as closures at field registration time, not rebuilt by the engine via type-switching.
49
+ Validators built as closures at field registration, not rebuilt by engine via type-switching.
61
50
 
62
51
  ```php
63
52
  // Inside ima_forms_email_field_register():
@@ -80,17 +69,12 @@ ima_forms_register_field_spec($name, [
80
69
  ]);
81
70
  ```
82
71
 
83
- **Benefits**:
84
- - Single source of truth: field function defines validation once
85
- - No type switching: validators are closures, just iterate and run
86
- - Testable: validators are pure functions captured at registration time
72
+ Single source of truth — field function defines validation once, no engine type-switching.
87
73
 
88
74
  ## Key Patterns
89
75
 
90
76
  ### Template-Driven Validation
91
77
 
92
- Field functions auto-register specs + validators. Validate entire form in one call:
93
-
94
78
  ```php
95
79
  $result = ima_forms_validate_form('templates/forms/my-form', $_POST, 'my-form');
96
80
 
@@ -101,7 +85,7 @@ if (!$result['valid']) {
101
85
  $sanitized = $result['sanitized']; // Ready to use
102
86
  ```
103
87
 
104
- **Details**: See [references/validation-engine.md](references/validation-engine.md)
88
+ → Details: [references/validation-engine.md](references/validation-engine.md)
105
89
 
106
90
  ### Enhanced Email Validation
107
91
 
@@ -148,28 +132,28 @@ add_action('wp_ajax_nopriv_contact_submit', 'contact_submit_handler');
148
132
 
149
133
  | File | Read When |
150
134
  |------|-----------|
151
- | [validation-engine.md](references/validation-engine.md) | Using `ima_forms_validate_form()`, understanding validator registry, custom validators |
152
- | [field-components.md](references/field-components.md) | Adding specific field types, customizing field behavior, repeaters |
153
- | [container-components.md](references/container-components.md) | Using cards, sections, column layouts, fieldsets |
154
- | [examples.md](references/examples.md) | Implementing complete new forms, testing patterns, anti-patterns |
135
+ | [validation-engine.md](references/validation-engine.md) | Using `ima_forms_validate_form()`, validator registry, custom validators |
136
+ | [field-components.md](references/field-components.md) | Adding field types, customizing behavior, repeaters |
137
+ | [container-components.md](references/container-components.md) | Cards, sections, column layouts, fieldsets |
138
+ | [examples.md](references/examples.md) | Complete form implementations, testing patterns, anti-patterns |
155
139
  | [quick-reference.md](references/quick-reference.md) | Function signatures, version features, filters |
156
140
 
157
141
  ## Common Tasks
158
142
 
159
143
  | Task | Approach |
160
144
  |------|----------|
161
- | Add a simple form | Use `ima_forms_form()` + field components + `ima_forms_validate_form()` |
162
- | Add custom validation | Filter: `add_filter('ima_forms_validate_{form-id}', ...)` |
163
- | Block spam emails | Set `enhanced_validation => true` on email fields |
164
- | Add repeater rows | Use `ima_forms_repeater()` with row callback |
165
- | Create multi-column layout | Use `ima_forms_column_layout(['columns' => 3, ...])` |
166
- | Debug validation | Use `ima_forms_debug_field_specs()` or `ima_forms_debug_validation_summary($specs)` |
145
+ | Add simple form | `ima_forms_form()` + field components + `ima_forms_validate_form()` |
146
+ | Add custom validation | `add_filter('ima_forms_validate_{form-id}', ...)` |
147
+ | Block spam emails | `enhanced_validation => true` on email fields |
148
+ | Add repeater rows | `ima_forms_repeater()` with row callback |
149
+ | Multi-column layout | `ima_forms_column_layout(['columns' => 3, ...])` |
150
+ | Debug validation | `ima_forms_debug_field_specs()` or `ima_forms_debug_validation_summary($specs)` |
167
151
 
168
152
  ## Success Indicators
169
153
 
170
- - Template-driven validation (no manual field maps)
171
- - Enhanced email validation on user-facing forms
172
- - Standardized form wrappers (`ima_forms_form()`)
173
- - Nonce verification in all AJAX handlers
174
- - Sanitized data used for processing (never raw `$_POST`)
175
- - Validators built at registration, not in engine
154
+ - Template-driven validation (no manual field maps)
155
+ - Enhanced email validation on user-facing forms
156
+ - Standardized form wrappers (`ima_forms_form()`)
157
+ - Nonce verification in all AJAX handlers
158
+ - Sanitized data used for processing (never raw `$_POST`)
159
+ - Validators built at registration, not in engine