refactor: consolidate writing voice rules

This commit is contained in:
Affaan Mustafa
2026-04-02 15:45:19 -07:00
parent bf3fd69d2c
commit 635fcbd715
9 changed files with 39 additions and 140 deletions

View File

@@ -23,50 +23,23 @@ Write long-form content that sounds like an actual person with a point of view,
4. Use proof instead of adjectives. 4. Use proof instead of adjectives.
5. Never invent facts, credibility, or customer evidence. 5. Never invent facts, credibility, or customer evidence.
## Voice Capture Workflow ## Voice Handling
If the user wants a specific voice, collect one or more of: If the user wants a specific voice, run `brand-voice` first and reuse its `VOICE PROFILE`.
- published articles Do not duplicate a second style-analysis pass here unless the user explicitly asks for one.
- newsletters
- X posts or threads
- docs or memos
- launch notes
- a style guide
Then extract:
- sentence length and rhythm
- whether the writing is compressed, explanatory, sharp, or formal
- how parentheses are used
- how often the writer asks questions
- whether the writer uses fragments, lists, or hard pivots
- formatting habits such as headers, bullets, code blocks, pull quotes
- what the writer clearly avoids
If no voice references are given, default to a sharp operator voice: concrete, unsentimental, useful. If no voice references are given, default to a sharp operator voice: concrete, unsentimental, useful.
## Affaan / ECC Voice Reference
When matching Affaan / ECC voice, bias toward:
- direct claims over scene-setting
- high specificity
- parentheticals used for qualification or over-clarification, not comedy
- capitalization chosen situationally, not as a gimmick
- very low tolerance for fake thought-leadership cadence
- almost no bait questions
## Banned Patterns ## Banned Patterns
Delete and rewrite any of these: Delete and rewrite any of these:
- "In today's rapidly evolving landscape" - "In today's rapidly evolving landscape"
- "game-changer", "cutting-edge", "revolutionary" - "game-changer", "cutting-edge", "revolutionary"
- "no fluff"
- "not X, just Y"
- "here's why this matters" as a standalone bridge - "here's why this matters" as a standalone bridge
- fake vulnerability arcs - fake vulnerability arcs
- a closing question added only to juice engagement - a closing question added only to juice engagement
- forced lowercase
- corny parenthetical asides
- biography padding that does not move the argument - biography padding that does not move the argument
- generic AI throat-clearing that delays the point
## Writing Process ## Writing Process
@@ -101,6 +74,6 @@ Delete and rewrite any of these:
Before delivering: Before delivering:
- factual claims are backed by provided sources - factual claims are backed by provided sources
- generic AI transitions are gone - generic AI transitions are gone
- the voice matches the supplied examples - the voice matches the supplied examples or the agreed `VOICE PROFILE`
- every section adds something new - every section adds something new
- formatting matches the intended medium - formatting matches the intended medium

View File

@@ -38,50 +38,28 @@ Before drafting, identify the source set:
If the user wants a specific voice, build a voice profile from real examples before writing. If the user wants a specific voice, build a voice profile from real examples before writing.
Use `brand-voice` as the canonical workflow when voice consistency matters across more than one output. Use `brand-voice` as the canonical workflow when voice consistency matters across more than one output.
## Voice Capture Workflow ## Voice Handling
Run `brand-voice` first when: `brand-voice` is the canonical voice layer.
Run it first when:
- there are multiple downstream outputs - there are multiple downstream outputs
- the user explicitly cares about writing style - the user explicitly cares about writing style
- the content is launch, outreach, or reputation-sensitive - the content is launch, outreach, or reputation-sensitive
At minimum, produce a compact `VOICE PROFILE` covering: Reuse the resulting `VOICE PROFILE` here instead of rebuilding a second voice model.
- rhythm If the user wants Affaan / ECC voice specifically, still treat `brand-voice` as the source of truth and feed it the best live or source-derived material available.
- compression
- capitalization
- parenthetical use
- question use
- preferred moves
- banned moves
Do not start drafting until the voice profile is clear enough to enforce.
## Affaan / ECC Voice Reference
When the user wants Affaan / ECC voice specifically, default to this unless newer examples clearly override it:
- direct, compressed, concrete
- strong preference for specific claims, numbers, mechanisms, and receipts
- parentheticals used to qualify, narrow, or over-clarify, not to do corny bits
- lowercase is optional, not mandatory
- questions are rare and should not be added as bait
- transitions should feel earned, not polished
- tone can be sharp or blunt, but should not sound like a content marketer
## Hard Bans ## Hard Bans
Delete and rewrite any of these: Delete and rewrite any of these:
- "In today's rapidly evolving landscape" - "In today's rapidly evolving landscape"
- "game-changer", "revolutionary", "cutting-edge" - "game-changer", "revolutionary", "cutting-edge"
- "no fluff"
- "not X, just Y"
- "here's why this matters" unless it is followed immediately by something concrete - "here's why this matters" unless it is followed immediately by something concrete
- "Excited to share"
- fake curiosity gaps
- ending with a LinkedIn-style question just to farm replies - ending with a LinkedIn-style question just to farm replies
- forced lowercase when the source voice does not call for it
- forced casualness on LinkedIn - forced casualness on LinkedIn
- parenthetical jokes that were not present in the source voice - fake engagement padding that was not present in the source material
## Platform Adaptation Rules ## Platform Adaptation Rules

View File

@@ -39,13 +39,8 @@ Use `content-engine` first if the source still needs voice shaping.
Run `brand-voice` first if the source voice is not already captured in the current session. Run `brand-voice` first if the source voice is not already captured in the current session.
Before adapting, note: Reuse the resulting `VOICE PROFILE` directly.
- how blunt or explanatory the source is Do not build a second ad hoc voice checklist here unless the user explicitly wants a fresh override for this campaign.
- whether the source uses fragments, lists, or longer transitions
- whether the source uses parentheses
- whether the source avoids questions, hashtags, or CTA language
The adaptation should preserve that fingerprint.
### Step 3: Adapt by Platform Constraint ### Step 3: Adapt by Platform Constraint
@@ -91,7 +86,6 @@ Delete and rewrite any of these:
- "Here's what I learned" - "Here's what I learned"
- "What do you think?" - "What do you think?"
- "link in bio" unless that is literally true - "link in bio" unless that is literally true
- "not X, just Y"
- generic "professional takeaway" paragraphs that were not in the source - generic "professional takeaway" paragraphs that were not in the source
## Output Format ## Output Format

View File

@@ -24,6 +24,11 @@ Write investor communication that is short, concrete, and easy to act on.
4. Stay concise. 4. Stay concise.
5. Never send copy that could go to any investor. 5. Never send copy that could go to any investor.
## Voice Handling
If the user's voice matters, run `brand-voice` first and reuse its `VOICE PROFILE`.
This skill should keep the investor-specific structure and ask discipline, not recreate its own parallel voice system.
## Hard Bans ## Hard Bans
Delete and rewrite any of these: Delete and rewrite any of these:
@@ -31,7 +36,6 @@ Delete and rewrite any of these:
- "excited to share" - "excited to share"
- generic thesis praise without a real tie-in - generic thesis praise without a real tie-in
- vague founder adjectives - vague founder adjectives
- "no fluff"
- begging language - begging language
- soft closing questions when a direct ask is clearer - soft closing questions when a direct ask is clearer

View File

@@ -111,3 +111,4 @@ Keep this file detailed for only the current sprint, blockers, and next actions.
- 2026-04-01: Added `connections-optimizer` as the review-first social-graph reorganization workflow for X and LinkedIn, with explicit pruning modes, browser fallback expectations, and Apple Mail drafting guidance. - 2026-04-01: Added `connections-optimizer` as the review-first social-graph reorganization workflow for X and LinkedIn, with explicit pruning modes, browser fallback expectations, and Apple Mail drafting guidance.
- 2026-04-01: Added `manim-video` as the reusable technical explainer lane and seeded it with a starter network-graph scene so launch and systems animations do not depend on one-off scratch scripts. - 2026-04-01: Added `manim-video` as the reusable technical explainer lane and seeded it with a starter network-graph scene so launch and systems animations do not depend on one-off scratch scripts.
- 2026-04-02: Re-extracted `social-graph-ranker` as a standalone primitive because the weighted bridge-decay model is reusable outside the full lead workflow. `lead-intelligence` now points to it for canonical graph ranking instead of carrying the full algorithm explanation inline, while `connections-optimizer` stays the broader operator layer for pruning, adds, and outbound review packs. - 2026-04-02: Re-extracted `social-graph-ranker` as a standalone primitive because the weighted bridge-decay model is reusable outside the full lead workflow. `lead-intelligence` now points to it for canonical graph ranking instead of carrying the full algorithm explanation inline, while `connections-optimizer` stays the broader operator layer for pruning, adds, and outbound review packs.
- 2026-04-02: Applied the same consolidation rule to the writing lane. `brand-voice` remains the canonical voice system, while `content-engine`, `crosspost`, `article-writing`, and `investor-outreach` now keep only workflow-specific guidance instead of duplicating a second Affaan/ECC voice model or repeating the full ban list in multiple places.

View File

@@ -23,50 +23,23 @@ Write long-form content that sounds like an actual person with a point of view,
4. Use proof instead of adjectives. 4. Use proof instead of adjectives.
5. Never invent facts, credibility, or customer evidence. 5. Never invent facts, credibility, or customer evidence.
## Voice Capture Workflow ## Voice Handling
If the user wants a specific voice, collect one or more of: If the user wants a specific voice, run `brand-voice` first and reuse its `VOICE PROFILE`.
- published articles Do not duplicate a second style-analysis pass here unless the user explicitly asks for one.
- newsletters
- X posts or threads
- docs or memos
- launch notes
- a style guide
Then extract:
- sentence length and rhythm
- whether the writing is compressed, explanatory, sharp, or formal
- how parentheses are used
- how often the writer asks questions
- whether the writer uses fragments, lists, or hard pivots
- formatting habits such as headers, bullets, code blocks, pull quotes
- what the writer clearly avoids
If no voice references are given, default to a sharp operator voice: concrete, unsentimental, useful. If no voice references are given, default to a sharp operator voice: concrete, unsentimental, useful.
## Affaan / ECC Voice Reference
When matching Affaan / ECC voice, bias toward:
- direct claims over scene-setting
- high specificity
- parentheticals used for qualification or over-clarification, not comedy
- capitalization chosen situationally, not as a gimmick
- very low tolerance for fake thought-leadership cadence
- almost no bait questions
## Banned Patterns ## Banned Patterns
Delete and rewrite any of these: Delete and rewrite any of these:
- "In today's rapidly evolving landscape" - "In today's rapidly evolving landscape"
- "game-changer", "cutting-edge", "revolutionary" - "game-changer", "cutting-edge", "revolutionary"
- "no fluff"
- "not X, just Y"
- "here's why this matters" as a standalone bridge - "here's why this matters" as a standalone bridge
- fake vulnerability arcs - fake vulnerability arcs
- a closing question added only to juice engagement - a closing question added only to juice engagement
- forced lowercase
- corny parenthetical asides
- biography padding that does not move the argument - biography padding that does not move the argument
- generic AI throat-clearing that delays the point
## Writing Process ## Writing Process
@@ -101,6 +74,6 @@ Delete and rewrite any of these:
Before delivering: Before delivering:
- factual claims are backed by provided sources - factual claims are backed by provided sources
- generic AI transitions are gone - generic AI transitions are gone
- the voice matches the supplied examples - the voice matches the supplied examples or the agreed `VOICE PROFILE`
- every section adds something new - every section adds something new
- formatting matches the intended medium - formatting matches the intended medium

View File

@@ -38,50 +38,28 @@ Before drafting, identify the source set:
If the user wants a specific voice, build a voice profile from real examples before writing. If the user wants a specific voice, build a voice profile from real examples before writing.
Use `brand-voice` as the canonical workflow when voice consistency matters across more than one output. Use `brand-voice` as the canonical workflow when voice consistency matters across more than one output.
## Voice Capture Workflow ## Voice Handling
Run `brand-voice` first when: `brand-voice` is the canonical voice layer.
Run it first when:
- there are multiple downstream outputs - there are multiple downstream outputs
- the user explicitly cares about writing style - the user explicitly cares about writing style
- the content is launch, outreach, or reputation-sensitive - the content is launch, outreach, or reputation-sensitive
At minimum, produce a compact `VOICE PROFILE` covering: Reuse the resulting `VOICE PROFILE` here instead of rebuilding a second voice model.
- rhythm If the user wants Affaan / ECC voice specifically, still treat `brand-voice` as the source of truth and feed it the best live or source-derived material available.
- compression
- capitalization
- parenthetical use
- question use
- preferred moves
- banned moves
Do not start drafting until the voice profile is clear enough to enforce.
## Affaan / ECC Voice Reference
When the user wants Affaan / ECC voice specifically, default to this unless newer examples clearly override it:
- direct, compressed, concrete
- strong preference for specific claims, numbers, mechanisms, and receipts
- parentheticals used to qualify, narrow, or over-clarify, not to do corny bits
- lowercase is optional, not mandatory
- questions are rare and should not be added as bait
- transitions should feel earned, not polished
- tone can be sharp or blunt, but should not sound like a content marketer
## Hard Bans ## Hard Bans
Delete and rewrite any of these: Delete and rewrite any of these:
- "In today's rapidly evolving landscape" - "In today's rapidly evolving landscape"
- "game-changer", "revolutionary", "cutting-edge" - "game-changer", "revolutionary", "cutting-edge"
- "no fluff"
- "not X, just Y"
- "here's why this matters" unless it is followed immediately by something concrete - "here's why this matters" unless it is followed immediately by something concrete
- "Excited to share"
- fake curiosity gaps
- ending with a LinkedIn-style question just to farm replies - ending with a LinkedIn-style question just to farm replies
- forced lowercase when the source voice does not call for it
- forced casualness on LinkedIn - forced casualness on LinkedIn
- parenthetical jokes that were not present in the source voice - fake engagement padding that was not present in the source material
## Platform Adaptation Rules ## Platform Adaptation Rules

View File

@@ -39,13 +39,8 @@ Use `content-engine` first if the source still needs voice shaping.
Run `brand-voice` first if the source voice is not already captured in the current session. Run `brand-voice` first if the source voice is not already captured in the current session.
Before adapting, note: Reuse the resulting `VOICE PROFILE` directly.
- how blunt or explanatory the source is Do not build a second ad hoc voice checklist here unless the user explicitly wants a fresh override for this campaign.
- whether the source uses fragments, lists, or longer transitions
- whether the source uses parentheses
- whether the source avoids questions, hashtags, or CTA language
The adaptation should preserve that fingerprint.
### Step 3: Adapt by Platform Constraint ### Step 3: Adapt by Platform Constraint
@@ -91,7 +86,6 @@ Delete and rewrite any of these:
- "Here's what I learned" - "Here's what I learned"
- "What do you think?" - "What do you think?"
- "link in bio" unless that is literally true - "link in bio" unless that is literally true
- "not X, just Y"
- generic "professional takeaway" paragraphs that were not in the source - generic "professional takeaway" paragraphs that were not in the source
## Output Format ## Output Format

View File

@@ -24,6 +24,11 @@ Write investor communication that is short, concrete, and easy to act on.
4. Stay concise. 4. Stay concise.
5. Never send copy that could go to any investor. 5. Never send copy that could go to any investor.
## Voice Handling
If the user's voice matters, run `brand-voice` first and reuse its `VOICE PROFILE`.
This skill should keep the investor-specific structure and ask discipline, not recreate its own parallel voice system.
## Hard Bans ## Hard Bans
Delete and rewrite any of these: Delete and rewrite any of these:
@@ -31,7 +36,6 @@ Delete and rewrite any of these:
- "excited to share" - "excited to share"
- generic thesis praise without a real tie-in - generic thesis praise without a real tie-in
- vague founder adjectives - vague founder adjectives
- "no fluff"
- begging language - begging language
- soft closing questions when a direct ask is clearer - soft closing questions when a direct ask is clearer