Content Skills Voice Audit — 2026-07-07
Follow-up to Voice Guide System Audit 2026-07-07, per the session prompt. Scope: 11 content-creation skills in .claude/skills/ and 5 companion guideline docs, checked against five dimensions: voice loading, reference-don’t-duplicate, Final Voice Pass, per-platform trajectory, and repetition scan.
Status: fixes applied 2026-07-07, same session. Patrick approved Groups 1–7 and Decision D (group-post neutral register → VOICE-GUIDE-UNIFIED v2.9 draft, pending Ksenia). Decision A resolved: hashtags go inside the post content on every platform; the Instagram first-comment convention is retired entirely (Patrick: “we’re never going to post the first comment”). Decision B resolved 2026-08-03: campaign/administrative/bulk emails carry no signature (they speak as Baseworks); personalized emails drafted in a personal voice are signed by whoever is sending — the distinction is now explicit in /create-email. Decision C defaulted to no change (the Teacher-Student section quotes the published teaching principles). All 11 skills, 4 companion docs, the skills index (table rows + detailed sections, plus a previously missing /create-newsletter section), and the unified guide were updated; Asia inbox item added for v2.9.
Documents audited: create-campaign, create-newsletter, create-email, write-blog-post, write-communications-post, write-page-copy, post-to-group, draft-response, create-event-post, update-science-content, session-summary; plus Campaign Creation Guidelines, Blog Post Guidelines, Archive Newsletter Guidelines, Social Media Tags Reference, Communications Guide.
Part 1 — Cross-cutting findings
Section titled “Part 1 — Cross-cutting findings”Finding 1: The Final Voice Pass exists in zero skills
Section titled “Finding 1: The Final Voice Pass exists in zero skills”WRITING-PROCESS v1.1 (added today) requires one logged voice-only pass after content settles, as the fix for cross-round regression. No skill currently ends with it. Every content-producing skill closes with a content-review or handoff phase; the closest any gets is write-blog-post Phase 4 (“Voice check”), which is a re-read folded into content review, exactly the pattern the audit showed regressing.
Fix (all 11 skills): add one short step at the review/finalization phase that points to “The Final Voice Pass” in WRITING-PROCESS.md, does not restate its content, and requires the pass to be logged in the piece’s Editorial Notes (or, for short-form output like responses and group posts, reported inline to the user).
Finding 2: Voice-loading gaps
Section titled “Finding 2: Voice-loading gaps”| Skill | WRITING-PROCESS | Unified guide | Personal guide by author | Verdict |
|---|---|---|---|---|
| create-campaign | yes | yes | yes (both options) | OK |
| write-blog-post | yes | yes | yes (both options) | OK |
| write-communications-post | yes | yes | yes (both options) | OK |
| write-page-copy | yes | yes | yes (both options) | OK |
| update-science-content | no (referenced late, in Step 7 only) | yes | Ksenia for articles; pages unified-only | Add WRITING-PROCESS to pre-flight |
| create-newsletter | no | yes | Patrick only, unconditional | Add WRITING-PROCESS; make personal guide author-conditional |
| create-email | no | yes | Patrick only, unconditional | Same |
| draft-response | no | yes | yes (both options) | Add WRITING-PROCESS |
| session-summary | no | no | no | Gap. Summaries are written in the posting instructor’s voice; the unified guide’s By Context section names session summaries explicitly. The skill relies entirely on _session-summary-guidelines.md. Add unified + posting-instructor guide to Pre-Flight step 3. |
| post-to-group | no | no | no | Gap. The skill edits and “fixes” body copy (its own §1d checklist) without ever loading the guide the checklist summarizes. |
| create-event-post | no | no | no | Gap. It drafts event description copy, SEO titles, meta descriptions, OG copy, and alt text with no voice guidance loaded at all. |
None of the skills state the read-before-ANY-draft rule (including quick inline chat drafts) now codified in VOICE-GUIDE-PATRICK §Process. The pre-flight ordering mostly covers it, but the loading step in each skill should say “before any drafting, including inline drafts presented in chat,” so a session that skips ahead still hits the rule.
Finding 3: Duplicated rules (the drift mechanism)
Section titled “Finding 3: Duplicated rules (the drift mechanism)”Per the audit’s second structural finding, local copies of voice rules go stale. Instances found, by severity:
create-campaign§2a “Load cross-referenced conventions from memory” — restates ~10 rules as bullet summaries AND points at Claude’s machine-local memory files as the source. Both halves are the drift mechanism: the summaries will go stale, and the memory files don’t exist on Asia’s machines or the VPS. It also referencesfeedback-facebook-no-linkaway.md, which no longer exists (that rule was retired 2026-04-23) — a live demonstration of the problem. Fix: codify the platform rules into the campaign guidelines (Finding 4), then reduce §2a to pointers at the guideline docs.post-to-group§1d voice compliance table — restates em-dash, exclamation, negative-opener, “land on,” and metaphor rules inline. Keep the check step; replace the table with “run the mechanical scan from the Final Voice Pass (WRITING-PROCESS) / unified guide Avoid list.”create-email“Em dash audit” — full replacement recipe duplicated from unified guide §6a. Keep the audit-and-report step (it’s good process); trim the recipe to a pointer.session-summaryPhase 5.2 — same full em-dash recipe duplicated.draft-responseConventions — restates em-dash, contractions, opener (“Thank you for your inquiry”), and fit-framing rules, all of which now live in the unified guide. Trim to pointers.write-blog-postPhase 3 — restates the AI Generation Warning failure mode and three filters at length. Trim to a pointer (the skill already mandates reading the section).create-newsletter“Voice discipline applies to every section including Brain Fodder” — restates the three filters and avoid-list examples. Keep the Brain-Fodder-is-not-a-looser-register point (skill-specific); trim the restated rules.- Light restatements of the three filters in
write-communications-postandwrite-page-copy— borderline; one-line summaries with a pointer are acceptable, but trim the multi-line versions.
Nothing was found still saying em dashes are allowed “sparingly” — the one hit is create-email correctly describing the old rule as replaced.
Finding 4: Per-platform trajectory — no canonical home, and the closest candidate is stale
Section titled “Finding 4: Per-platform trajectory — no canonical home, and the closest candidate is stale”The known platform rules live scattered across memory (machine-local), the campaign guidelines (partly superseded), and social-media-tags.md. Status of each rule the prompt listed:
| Rule | Where it lives now | Status |
|---|---|---|
| Instagram ~150w, “Link in bio” | Memory only (feedback-instagram-link-in-bio) | Not codified anywhere a fresh session loads. “Link in bio” convention, bio-link update requirement, no “on our site” closers: memory only. |
| Instagram hashtag placement | social-media-tags.md + campaign guidelines say first comment (2026-03-27); MEMORY.md index and the session prompt say in the post content | Direct conflict — needs Patrick’s ruling (Decision A). |
#baseworks_method, never #baseworks | social-media-tags.md (canonical) + campaign guidelines | OK, codified |
| Facebook collaborations: two separate posts (Patrick personal first-person first, Baseworks page third-person later), URL included for link-preview | Memory only (feedback-collaboration-posts, revised 2026-04-23) | Not codified — and the campaign guidelines’ Publishing Sequence #4 states the superseded pattern (“collaboration posts between Patrick’s personal account and the Baseworks account… closing line in first person”). Also superseded for Instagram: no collab posts at all (Baseworks account only, unified voice). |
| Facebook/LinkedIn links carry no UTMs | Memory only (feedback-social-links-no-utm) | Not codified. Campaign guidelines’ UTM section is newsletter-scoped (correct) but never states the social exclusion. |
| LinkedIn personal-account article | Campaign guidelines Publishing Sequence #2 | Partly codified but stale: says to set the “Originally published at” canonical field, which LinkedIn removed (memory, 2026-03-26; workaround is a provenance line at the bottom of the article). The ~120w feed post, SEO description ≤160 chars, and separate article deliverable file are memory-only. |
| Niche-building, not mass-appeal | Campaign guidelines “Content strategy” section | OK, codified |
| Newsletters: no Patrick/Asia sign-off | create-newsletter skill + campaign guidelines #10 | OK, codified |
| Brain Fodder: varied closing prompts, no sensational language | Voice discipline: create-newsletter skill. Varied closing-prompt lead-ins: memory only — the campaign guidelines’ Brain Fodder structure (“Closing question”) never says to vary the label | Codify the vary-the-label rule in the guidelines |
| Group/participant posts: neutral register, no praise | session-summary skill 7e (thorough) | Codified in the skill; not in the unified guide (it was on the Finding-4 candidate list in the system audit but v2.8 didn’t include it — Decision D) |
| Never link practice.baseworks.com publicly | Memory only — and _blog-post-guidelines.md actively instructs the opposite: “The Practice Platform — when referenced in text (practice.baseworks.com)” under Internal links | Not codified + one doc contradicts it. Correct targets: baseworks.com/practice/ or the filming article. |
Proposed canonical home: the “Platform-specific voice adjustments” + “Publishing sequence” sections of _campaign-creation-guidelines.md, rewritten with the current rules above and renamed so skills can point at one anchor (e.g., “Per-Platform Trajectories”). social-media-tags.md stays canonical for hashtags only. All skills and §2a pointers then reference those two.
Internal contradictions in the campaign guidelines to fix in the same pass:
- Body Sections table says Facebook ~200w; the platform table says ~400w. One number must win.
- The platform table’s LinkedIn row (~250w feed post) doesn’t match the current three-part article approach (~120w feed post + article + reshare).
- “Images are referenced via
— hosted externally (Google Drive, VPS FileBrowser)” — stale; the media pipeline is B2 →media.baseworks.comCDN with NAS originals.
Finding 5: Repetition scan — good within pieces, absent across sibling assets
Section titled “Finding 5: Repetition scan — good within pieces, absent across sibling assets”create-campaign Phase 3.5 and create-newsletter Step 0 are solid within-piece/within-newsletter scans. But the unified guide v2.8 rule the prompt cites is cross-asset: recurring facts (the development-timeframe line, venue descriptions, method credibility lines) must vary in framing across the campaign’s sibling assets (newsletter section + 3 social posts + blog). No skill requires that check. Fix: add a “cross-asset recurring-fact variation” item to create-campaign Phase 3.5, referencing the unified guide entry and feedback-development-timeframe-variation’s rotation principle (which itself should be codified into the guidelines, since it’s memory-only).
write-blog-post has no repetition scan at all; it arrives via the Final Voice Pass step (Finding 1).
Part 2 — Per-skill notes (beyond the cross-cutting items)
Section titled “Part 2 — Per-skill notes (beyond the cross-cutting items)”- create-campaign — Strongest overall. Fixes needed: §2a rework (Finding 3.1), cross-asset scan (Finding 5), Final Voice Pass.
- create-newsletter — Template/build content is legitimately skill-specific and should stay. Fixes: WRITING-PROCESS load, trim Brain Fodder rule restatement, Final Voice Pass before Step 1 (HTML build), author-conditional personal guide.
- create-email — Two issues beyond Findings 1–3: (a) its Reference section names the 2026-03 STRIPO mock as “authoritative HTML reference,” while
create-newslettercorrectly says to use the 2026-04-23 build with all fixes applied, not the older export — stale cross-reference; (b) its convention “No signature line. Emails are administrative, not personal correspondence” sits against the unified guide’s email-signature convention (sign with whoever is sending) — possibly an intended distinction between reusable templates and personal correspondence, but it reads as a contradiction (Decision B). - write-blog-post / write-communications-post / write-page-copy — Structurally compliant; need Final Voice Pass + duplication trims only.
- post-to-group — Add voice-guide loading; replace §1d table with a pointer. Also a non-voice bug found in passing: the Phase 2 confirmation-gate template says “Patrick (user_id=1) / Asia (user_id=8)” but the skill’s own Known Data table says Patrick=8, Asia=2 on practice.baseworks.com (user 1 is the baseworks.com site). The preview template should be corrected.
- draft-response — Trim duplicated conventions; add WRITING-PROCESS; a lightweight voice-pass report (inline, not Editorial-Notes-logged) fits its short-form output.
- create-event-post — Largest gap: no voice loading at all (Finding 2). Add pre-flight voice loading (WRITING-PROCESS + unified; personal guide rarely applies since event copy is unified-voice) and a Final Voice Pass over
post_content, SEO title, meta description, and OG copy before Step 8 (publish). - update-science-content — Well-designed (condescension scan is a model). Move the WRITING-PROCESS reference from Step 7 into pre-flight; add Final Voice Pass at Step 8.
- session-summary — Add voice loading (Finding 2); trim the em-dash recipe (Finding 3.4); add Final Voice Pass to Phase 5. Its group-post tone rules (7e) are thorough and can become the canonical statement if Decision D moves the register rule into the unified guide.
Part 3 — Companion doc findings
Section titled “Part 3 — Companion doc findings”_campaign-creation-guidelines.md
Section titled “_campaign-creation-guidelines.md”Covered in Finding 4. Summary of edits: rewrite platform table + publishing sequence with current rules; fix FB word-count contradiction; fix LinkedIn canonical-field instruction; fix stale image-hosting line; add UTM social exclusion; add “Link in bio” / bio-link update; add practice.baseworks.com rule; add Brain Fodder closing-label variation; add development-timeframe variation principle; version-history entry.
_blog-post-guidelines.md
Section titled “_blog-post-guidelines.md”- Stale spelling rule: line 70 says
"practise" not "train"— superseded by unified guide v2.1 (2026-03-25): American English “practice/practicing” throughout. (Lines 179/181 are historical session logs; leave those.) - Practice Platform linking instruction violates current rule (Finding 4, last row) — replace with
baseworks.com/practice// filming-article guidance. - The Open Tasks section carries a completed March session log for the Winter recap including pre-ban em-dash decisions (“remaining em dashes are all doing structural work”). Historical, but as an active checklist section it reads as current guidance. Propose moving the Winter-recap block to that article’s Editorial Notes or marking it superseded by the 2026-04-19 ban.
- Needs a version-history row for whatever changes are approved.
communications-guide.md
Section titled “communications-guide.md”- Em dashes in live sample copy: the tone-escalation examples in §Assignment & Engagement use em dashes (“Just checking in—I noticed…”). These are templates people copy; they seed violations. The parallel examples in VOICE-GUIDE-PATRICK were already cleaned; sync these.
- Banned metaphor in guidance: §Mid-Week Check-Ins instructs framing resources as “threads to pull on if you’re curious” — “threads to pull on” is a named example of a generated metaphor in the unified guide’s AI Generation Warning. Replace with a direct phrasing (“optional resources for anyone curious”).
- “Lead with transformation, not logistics” (Core Principles) — “transformation” is Avoid-list register and the line defines by contrast. Rewrite positively (e.g., “Lead with what the program develops”).
- Stale version reference: §Tone & Voice cites the unified guide as “(v2.5)” — drop the version number entirely so it can’t go stale again.
- “The Teacher-Student Dynamic” heading and body use “teacher/student” — it quotes the published teaching principles, so this may be intentional source language (Decision C).
- Version-history entry needed for approved changes.
social-media-tags.md
Section titled “social-media-tags.md”Hashtag content is fine and canonical. Two items: the Instagram placement line depends on Decision A; and if the campaign guidelines gain a per-platform trajectories section, add a cross-link both ways.
_archive-newsletter-guidelines.md
Section titled “_archive-newsletter-guidelines.md”Clean. It governs archival of historical content (no drafting), so no voice-loading requirement applies. Note the related standing flag: archived issues are verbatim historical record — do not voice-correct them (consistent with the 2026-07-07 archive-import editorial-status convention). No changes proposed.
Part 4 — Proposed fixes (for approval)
Section titled “Part 4 — Proposed fixes (for approval)”Grouped so they can be approved wholesale or individually. Items marked ⚠ depend on a decision.
Group 1 — Final Voice Pass (Finding 1): add the pointer step to all 11 skills.
Group 2 — Voice loading (Finding 2): add missing loads to create-event-post, post-to-group, session-summary; add WRITING-PROCESS to create-newsletter, create-email, draft-response, update-science-content (pre-flight); make personal-guide loading author-conditional in create-email/create-newsletter; add “including inline chat drafts” wording to every loading step.
Group 3 — Canonical platform trajectories (Finding 4): rewrite the campaign guidelines’ platform section and publishing sequence with current rules; codify the memory-only rules (two-FB-posts, no-UTM-on-social, Link-in-bio, IG unified voice, practice-platform linking, timeframe variation, Brain Fodder closing labels); fix the three internal staleness items; point social-media-tags.md and the skills at it. ⚠ Instagram hashtag placement per Decision A.
Group 4 — De-duplication (Finding 3): rework create-campaign §2a into guideline pointers (and drop the dead feedback-facebook-no-linkaway reference); trim restated rules in post-to-group, create-email, session-summary, draft-response, write-blog-post, create-newsletter, write-communications-post, write-page-copy to pointers, keeping each skill’s process steps.
Group 5 — Cross-asset repetition scan (Finding 5): extend create-campaign Phase 3.5.
Group 6 — Companion doc corrections (Part 3): blog guidelines (practise line, practice-platform link, Open Tasks housekeeping); communications guide (em-dash samples, “threads to pull on,” “transformation” line, v2.5 reference ⚠ Decision C for the teacher section); create-email stale template reference ⚠ Decision B for the signature line.
Group 7 — Small bug: post-to-group confirmation-gate user IDs (Patrick=8, Asia=2).
Group 8 ⚠ (Decision D): codify group/participant-post neutral register into VOICE-GUIDE-UNIFIED as a v2.9 draft (pending Ksenia; requires Asia inbox item).
Process on apply: every skill touched gets both its table row and detailed section updated in 03-resources/claude-code-skills/index.md; version-history entries added where docs carry them; commit, push, changelog entry.
Decisions needed from Patrick
Section titled “Decisions needed from Patrick”- A. Instagram hashtags: first comment (per
social-media-tags.md+ hashtag memory, 2026-03-27) or inside the post content (per MEMORY.md index + this audit’s session prompt)? Which is current? - B. Email signatures in
/create-email:is “no signature line” for reusable templates an intended exception to the sign-with-sender convention, or should the skill align with the unified guide?Resolved 2026-08-03 (Patrick): campaign/administrative/bulk emails are unsigned (Baseworks voice); personalized emails written in a personal voice are signed by the sender. Codified in the skill’s Conventions section. - C. Communications guide “Teacher-Student Dynamic”: keep “teacher” as quoted source language from the teaching principles, or reframe the section around instructor/facilitator?
- D. Group-post neutral register: promote into VOICE-GUIDE-UNIFIED (v2.9 draft, pending Ksenia) now, or leave in the session-summary skill and memory?