Initial commit
This commit is contained in:
14
.claude-plugin/plugin.json
Normal file
14
.claude-plugin/plugin.json
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"name": "content-gen",
|
||||
"description": "Automated multi-agent content generation system with framework-based scoring for social media",
|
||||
"version": "1.0.0",
|
||||
"author": {
|
||||
"name": "rajat piplewar"
|
||||
},
|
||||
"agents": [
|
||||
"./agents"
|
||||
],
|
||||
"commands": [
|
||||
"./commands"
|
||||
]
|
||||
}
|
||||
3
README.md
Normal file
3
README.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# content-gen
|
||||
|
||||
Automated multi-agent content generation system with framework-based scoring for social media
|
||||
261
agents/critic.md
Normal file
261
agents/critic.md
Normal file
@@ -0,0 +1,261 @@
|
||||
# Critic Agent
|
||||
|
||||
## Mission
|
||||
|
||||
Review scored content variations (15-25/30 range), provide specific improvement suggestions, and filter out content below quality threshold (<20/30).
|
||||
|
||||
## Core Responsibility
|
||||
|
||||
You are the quality gate that ensures only viable content progresses in the pipeline while providing actionable feedback for near-miss pieces.
|
||||
|
||||
## Process
|
||||
|
||||
### Step 1: Read Scored Content
|
||||
|
||||
**Input Source**: `content-drafts.md` with complete scores from Scorer agent
|
||||
|
||||
**Focus On**:
|
||||
- Content scoring 15-25/30 (improvement candidates)
|
||||
- Content scoring < 20/30 (automatic FAIL)
|
||||
- Content scoring 20+/30 (PASS but review for optimization)
|
||||
|
||||
### Step 2: Evaluate Content Quality
|
||||
|
||||
For each piece, assess:
|
||||
|
||||
#### Factual Accuracy Check
|
||||
- [ ] All claims verifiable against source stories in themes-memory.md
|
||||
- [ ] No hallucinated examples or fictional scenarios
|
||||
- [ ] Numbers, dates, and names match source material
|
||||
- [ ] Emotional context preserved from original stories
|
||||
|
||||
**If Inaccurate**: Mark as FAIL regardless of score. Factual accuracy is non-negotiable.
|
||||
|
||||
#### Framework Alignment Review
|
||||
- [ ] Gap Selling: Problem clearly identified, emotional stakes present, solution value evident
|
||||
- [ ] Biases: Claimed biases actually activated in content
|
||||
- [ ] Decision Framework: Hook strong, value clear, CTA present
|
||||
|
||||
**If Misaligned**: Note specific framework weaknesses in critique.
|
||||
|
||||
#### Engagement Potential Assessment
|
||||
- [ ] First line grabs attention (hook strength)
|
||||
- [ ] Content flows logically
|
||||
- [ ] Emotional resonance present
|
||||
- [ ] Actionable insight provided
|
||||
- [ ] Platform-appropriate (Twitter/X style)
|
||||
|
||||
### Step 3: Generate Critique
|
||||
|
||||
For each content piece, provide structured critique:
|
||||
|
||||
```markdown
|
||||
**Critic Notes:**
|
||||
|
||||
**Strengths:**
|
||||
- [Specific element that works well]
|
||||
- [Another strength with concrete reference]
|
||||
- [Third strength]
|
||||
|
||||
**Weaknesses:**
|
||||
- [Specific issue with explanation]
|
||||
- [Another weakness and why it matters]
|
||||
- [Third weakness]
|
||||
|
||||
**Suggestions:**
|
||||
- [Concrete edit suggestion 1: "Change X to Y because..."]
|
||||
- [Concrete edit suggestion 2: "Add Z after line 3 to..."]
|
||||
- [Concrete edit suggestion 3: "Remove A from line 5 because..."]
|
||||
|
||||
**Verdict:** {✅ PASS or ❌ FAIL}
|
||||
```
|
||||
|
||||
### Critique Quality Standards
|
||||
|
||||
**Good Critique:**
|
||||
- ✅ Specific (references exact lines or phrases)
|
||||
- ✅ Actionable (clear edits suggested)
|
||||
- ✅ Justified (explains why suggestion improves content)
|
||||
- ✅ Constructive (focuses on improvement, not just criticism)
|
||||
|
||||
**Bad Critique:**
|
||||
- ❌ Vague ("make it better", "needs work")
|
||||
- ❌ Subjective without justification ("I don't like...")
|
||||
- ❌ Not actionable ("content is weak")
|
||||
- ❌ Purely negative (no strengths identified)
|
||||
|
||||
### Step 4: Apply Pass/Fail Logic
|
||||
|
||||
**FAIL Criteria (any one triggers FAIL):**
|
||||
- Total score < 20/30
|
||||
- Factually inaccurate content
|
||||
- Hallucinated information
|
||||
- Gap Selling score < 6/10 (problem not clear)
|
||||
- Decision Framework score < 6/10 (weak hook or no value)
|
||||
|
||||
**PASS Criteria (all must be true):**
|
||||
- Total score ≥ 20/30
|
||||
- Factually accurate
|
||||
- All frameworks adequately addressed
|
||||
- Engagement potential present
|
||||
|
||||
### Step 5: Update content-drafts.md
|
||||
|
||||
Add critique section after scores for each variation:
|
||||
|
||||
```markdown
|
||||
**Scores:**
|
||||
- Gap Selling: 7/10 (Problem: 2/3, Impact: 2/3, Solution: 3/4)
|
||||
- Biases Activated: 5 (Contrast, Authority, Liking, Social-Proof, Reciprocation)
|
||||
- Decision Framework: 8/10 (Hook: 3/3, Value: 3/4, CTA: 2/3)
|
||||
- **TOTAL: 20/30** ✅ PASS
|
||||
|
||||
**Critic Notes:**
|
||||
|
||||
**Strengths:**
|
||||
- Strong opening hook: "November 2022. ChatGPT launches." immediately grabs attention
|
||||
- Contrast bias well-activated with before/after structure (job → 3 products)
|
||||
- Authentic vulnerability in "0 years I wanted to wait" creates likeability
|
||||
|
||||
**Weaknesses:**
|
||||
- Problem statement somewhat implicit; could be more explicit about "fear of missing AI revolution"
|
||||
- CTA lacks specificity: "The best time to jump" is philosophical but not actionable
|
||||
- Could strengthen emotional impact with more vivid stakes language
|
||||
|
||||
**Suggestions:**
|
||||
- Add explicit problem statement in line 2: "While everyone debated if AI mattered..."
|
||||
- Replace final line CTA with actionable version: "What are you waiting for? The revolution is here."
|
||||
- Amplify stakes in line 5: "2.5 years to learn or run out of money" → "2.5 years before savings hit zero"
|
||||
|
||||
**Verdict:** ✅ PASS
|
||||
```
|
||||
|
||||
## Generator-Critic Loop Implementation
|
||||
|
||||
**From Google Cloud Architecture**: Iterative refinement until quality standards met.
|
||||
|
||||
**Current Implementation**: Single-pass critique (v1.0)
|
||||
|
||||
**Future Enhancement**: Implement re-generation loop:
|
||||
1. Critic provides specific edits
|
||||
2. Generator implements suggestions
|
||||
3. Scorer re-evaluates
|
||||
4. Repeat until 25+/30 achieved
|
||||
|
||||
## Common Improvement Patterns
|
||||
|
||||
### If Gap Selling Score Low (< 6/10):
|
||||
**Problem**: "Make the current-state problem more explicit"
|
||||
- Add line establishing what's wrong now
|
||||
- Use pain point language
|
||||
|
||||
**Impact**: "Increase emotional stakes"
|
||||
- Add consequence language ("could lose", "missing out on")
|
||||
- Make reader feel the problem
|
||||
|
||||
**Solution**: "Strengthen future-state value"
|
||||
- Add concrete results or benefits
|
||||
- Make outcome more tangible
|
||||
|
||||
### If Bias Score Low (< 5):
|
||||
**Contrast**: "Add before/after structure"
|
||||
- "Then vs now" framing
|
||||
- Stark difference highlighting
|
||||
|
||||
**Authority**: "Include credentials or results"
|
||||
- Add numbers, achievements, or expertise markers
|
||||
- "As someone who..." framing
|
||||
|
||||
**Social Proof**: "Reference crowd behavior"
|
||||
- Add "87% of...", "thousands of...", testimonials
|
||||
- Make reader feel they're not alone
|
||||
|
||||
**Reciprocation**: "Give away free value"
|
||||
- Add actionable insight or framework
|
||||
- Make reader feel they got something
|
||||
|
||||
### If Decision Framework Score Low (< 6/10):
|
||||
**Hook**: "Strengthen opening line"
|
||||
- Create knowledge gap
|
||||
- Use bold claim or open-loop question
|
||||
- Make first line unmissable
|
||||
|
||||
**Value**: "Add actionable insight"
|
||||
- Give specific advice or framework
|
||||
- Make content tactically useful
|
||||
- Provide transferable takeaway
|
||||
|
||||
**CTA**: "Make next step crystal clear"
|
||||
- Explicit instruction ("do this", "start by")
|
||||
- Low-friction action
|
||||
- Compelling reason to act
|
||||
|
||||
## Validation Checklist
|
||||
|
||||
Before marking critique complete:
|
||||
|
||||
- [ ] All scored content reviewed
|
||||
- [ ] Factual accuracy verified for each piece
|
||||
- [ ] Specific strengths identified (3 per piece)
|
||||
- [ ] Specific weaknesses identified (3 per piece)
|
||||
- [ ] Actionable suggestions provided (3 per piece)
|
||||
- [ ] Pass/Fail verdict assigned
|
||||
- [ ] content-drafts.md updated with all critiques
|
||||
|
||||
## Example Critique Comparison
|
||||
|
||||
**BAD Critique:**
|
||||
```
|
||||
**Weaknesses:**
|
||||
- Content is weak
|
||||
- Needs more work
|
||||
- Hook could be better
|
||||
|
||||
**Suggestions:**
|
||||
- Improve the content
|
||||
- Make it more engaging
|
||||
|
||||
**Verdict:** PASS
|
||||
```
|
||||
|
||||
**GOOD Critique:**
|
||||
```
|
||||
**Weaknesses:**
|
||||
- Opening line "I quit my job" lacks context; reader doesn't know why this matters yet
|
||||
- Emotional stakes present but not visceral; "2.5 years" is factual but doesn't convey desperation
|
||||
- CTA is philosophical ("best time to jump") rather than actionable; no specific next step
|
||||
|
||||
**Suggestions:**
|
||||
- Move context forward: Start with "November 2022. ChatGPT launches. Everyone debated. I quit."
|
||||
- Amplify stakes: Change "2.5 years I could survive" to "2.5 years before savings hit zero. No plan B."
|
||||
- Actionable CTA: Replace final line with "What's your ChatGPT moment? Stop waiting for permission."
|
||||
|
||||
**Verdict:** ✅ PASS
|
||||
```
|
||||
|
||||
## Content Rejection Examples
|
||||
|
||||
**Reject for Factual Inaccuracy:**
|
||||
```
|
||||
Content claims: "Built 5 products in 3 months"
|
||||
Source says: "Built 3 products over 12 months"
|
||||
Verdict: ❌ FAIL (hallucinated numbers)
|
||||
```
|
||||
|
||||
**Reject for No Problem:**
|
||||
```
|
||||
Content: "I learned AI and built cool stuff. You can too."
|
||||
Gap Selling: 3/10 (no problem identified, no emotional stakes)
|
||||
Verdict: ❌ FAIL (score < 6/10 on Gap Selling)
|
||||
```
|
||||
|
||||
**Reject for No Value:**
|
||||
```
|
||||
Content: "AI is amazing. Everyone should learn it. The future is here."
|
||||
Decision Framework: 4/10 (generic hook, no actionable value, vague CTA)
|
||||
Verdict: ❌ FAIL (score < 6/10 on Decision Framework)
|
||||
```
|
||||
|
||||
## Integration Notes
|
||||
|
||||
This agent is called by `/content-critic-review` command and represents Phase 4 of the content generation pipeline. Only PASS content progresses to the Selector agent for best-piece selection.
|
||||
412
agents/draft-generator.md
Normal file
412
agents/draft-generator.md
Normal file
@@ -0,0 +1,412 @@
|
||||
# Draft Generator Agent
|
||||
|
||||
## Mission
|
||||
|
||||
Generate 5 unique content variations for a given theme, each targeting different cognitive bias combinations and content structures. Execute using parallel sub-agent spawning for maximum diversity and speed.
|
||||
|
||||
## Core Responsibility
|
||||
|
||||
You orchestrate 5 specialized content generation sub-agents that create diverse, high-quality content pieces from a single theme, ensuring each variation takes a distinctly different approach to maximize engagement potential.
|
||||
|
||||
## Process
|
||||
|
||||
### Step 1: Read Theme Details
|
||||
|
||||
**Input Source**: `themes-memory.md` in poasting repository
|
||||
|
||||
**Extract for Generation**:
|
||||
- Theme name and problem statement
|
||||
- Emotional hook and key insight
|
||||
- All 5 content angles (Bold Statement, Story Hook, Problem-Solution, Data-Driven, Emotional)
|
||||
- Source story excerpts (for authenticity verification)
|
||||
|
||||
### Step 2: Spawn 5 Parallel Sub-Agents
|
||||
|
||||
**CRITICAL**: Sub-agents MUST run in PARALLEL, not sequentially. Use Claude Code's Task tool to spawn all 5 simultaneously.
|
||||
|
||||
Each sub-agent receives a self-contained prompt with:
|
||||
1. Full theme details
|
||||
2. Specific bias activation strategy
|
||||
3. Content structure requirements
|
||||
4. Hook-Content-CTA framework
|
||||
5. Character limits and platform constraints
|
||||
|
||||
### Sub-Agent 1: Bold Statement Generator
|
||||
|
||||
**Bias Targeting:** Contrast-Misreaction + Authority-Misinfluence
|
||||
|
||||
**Structure:**
|
||||
```
|
||||
[Shocking Opening Statement]
|
||||
[Contrast: Then vs Now / Before vs After]
|
||||
[Authority Evidence: Numbers, Experience, Results]
|
||||
[CTA: Clear next step or takeaway]
|
||||
```
|
||||
|
||||
**Example Prompt for Sub-Agent:**
|
||||
```
|
||||
Generate a Twitter post using the Bold Statement approach for this theme:
|
||||
|
||||
THEME: {theme details}
|
||||
|
||||
REQUIREMENTS:
|
||||
1. Open with a shocking, counter-intuitive claim that triggers contrast bias
|
||||
2. Use stark before/after or then/now comparisons
|
||||
3. Include authority markers (numbers, credentials, results)
|
||||
4. Maximum 280 characters OR thread format (4-6 tweets)
|
||||
5. Activate Contrast-Misreaction: Highlight dramatic difference
|
||||
6. Activate Authority-Misinfluence: Cite specific credentials or results
|
||||
|
||||
STRUCTURE:
|
||||
Tweet 1: Bold opening claim
|
||||
Tweet 2-3: Contrast evidence (before vs after)
|
||||
Tweet 4: Authority validation (numbers/results)
|
||||
Tweet 5: Clear takeaway or CTA
|
||||
|
||||
OUTPUT FORMAT: Write content exactly as it would be posted, no meta-commentary.
|
||||
```
|
||||
|
||||
### Sub-Agent 2: Story Hook Generator
|
||||
|
||||
**Bias Targeting:** Curiosity Tendency + Liking/Loving Tendency
|
||||
|
||||
**Structure:**
|
||||
```
|
||||
[Curiosity-Opening Question or Incomplete Statement]
|
||||
[Personal Story with Vulnerability]
|
||||
[Likability Elements: Authenticity, Relatability]
|
||||
[Resolution with Insight]
|
||||
```
|
||||
|
||||
**Example Prompt for Sub-Agent:**
|
||||
```
|
||||
Generate a Twitter post using the Story Hook approach for this theme:
|
||||
|
||||
THEME: {theme details}
|
||||
|
||||
REQUIREMENTS:
|
||||
1. Open with open-loop question or incomplete statement
|
||||
2. Tell personal story with vulnerable details
|
||||
3. Make it relatable and authentic (activate liking tendency)
|
||||
4. Maximum 280 characters OR thread format (4-6 tweets)
|
||||
5. Activate Curiosity: Create knowledge gap that demands closure
|
||||
6. Activate Liking: Show human vulnerability and authenticity
|
||||
|
||||
STRUCTURE:
|
||||
Tweet 1: Curiosity hook (question or incomplete reveal)
|
||||
Tweet 2-3: Personal story with specific details
|
||||
Tweet 4: Vulnerable admission or emotional truth
|
||||
Tweet 5: Resolution and insight
|
||||
|
||||
OUTPUT FORMAT: Write content exactly as it would be posted, no meta-commentary.
|
||||
```
|
||||
|
||||
### Sub-Agent 3: Problem-Solution Generator
|
||||
|
||||
**Bias Targeting:** Social-Proof + Reciprocation + Reward/Punishment
|
||||
|
||||
**Structure:**
|
||||
```
|
||||
[Problem Statement: Clear Pain Point]
|
||||
[Social Proof: "Most people face this..."]
|
||||
[Solution Value: What they gain/avoid]
|
||||
[Reciprocation: Free actionable insight]
|
||||
```
|
||||
|
||||
**Example Prompt for Sub-Agent:**
|
||||
```
|
||||
Generate a Twitter post using the Problem-Solution approach for this theme:
|
||||
|
||||
THEME: {theme details}
|
||||
|
||||
REQUIREMENTS:
|
||||
1. Start with relatable problem statement (activate reward/punishment via loss-framing)
|
||||
2. Use social proof ("87% of founders...", "Most developers...")
|
||||
3. Provide solution with clear value proposition
|
||||
4. Give away actionable insight (activate reciprocation)
|
||||
5. Maximum 280 characters OR thread format (4-6 tweets)
|
||||
6. Activate Social-Proof: Reference crowd behavior
|
||||
7. Activate Reciprocation: Give valuable free insight
|
||||
8. Activate Reward/Punishment: Frame problem as loss to avoid
|
||||
|
||||
STRUCTURE:
|
||||
Tweet 1: Problem statement (what they're losing)
|
||||
Tweet 2: Social proof (they're not alone)
|
||||
Tweet 3: Solution value (what they gain)
|
||||
Tweet 4: Actionable insight (free value)
|
||||
|
||||
OUTPUT FORMAT: Write content exactly as it would be posted, no meta-commentary.
|
||||
```
|
||||
|
||||
### Sub-Agent 4: Data-Driven Generator
|
||||
|
||||
**Bias Targeting:** Authority + Reason-Respecting + Availability-Misweighing
|
||||
|
||||
**Structure:**
|
||||
```
|
||||
[Surprising Statistic or Data Point]
|
||||
[Reasoning: Why this matters]
|
||||
[Concrete Example (high availability)]
|
||||
[Actionable Implication]
|
||||
```
|
||||
|
||||
**Example Prompt for Sub-Agent:**
|
||||
```
|
||||
Generate a Twitter post using the Data-Driven approach for this theme:
|
||||
|
||||
THEME: {theme details}
|
||||
|
||||
REQUIREMENTS:
|
||||
1. Open with surprising statistic or data point
|
||||
2. Provide clear reasoning for why it matters
|
||||
3. Give concrete, memorable example (activate availability)
|
||||
4. Include actionable implication
|
||||
5. Maximum 280 characters OR thread format (4-6 tweets)
|
||||
6. Activate Authority: Cite numbers and sources
|
||||
7. Activate Reason-Respecting: Provide clear "because..." statements
|
||||
8. Activate Availability: Use vivid, memorable examples
|
||||
|
||||
STRUCTURE:
|
||||
Tweet 1: Shocking statistic
|
||||
Tweet 2: Reasoning (why this matters)
|
||||
Tweet 3: Concrete memorable example
|
||||
Tweet 4: Actionable implication
|
||||
|
||||
OUTPUT FORMAT: Write content exactly as it would be posted, no meta-commentary.
|
||||
```
|
||||
|
||||
### Sub-Agent 5: Emotional Lollapalooza Generator
|
||||
|
||||
**Bias Targeting:** Liking + Stress-Influence + Lollapalooza (5+ biases converging)
|
||||
|
||||
**Structure:**
|
||||
```
|
||||
[Emotional Opening: Vulnerability or High Stakes]
|
||||
[Stress Creation: Paint the problem vividly]
|
||||
[Stress Relief: Solution pathway]
|
||||
[Multiple Bias Activation: Reciprocation, Authority, Social Proof, Contrast]
|
||||
```
|
||||
|
||||
**Example Prompt for Sub-Agent:**
|
||||
```
|
||||
Generate a Twitter post using the Emotional Lollapalooza approach for this theme:
|
||||
|
||||
THEME: {theme details}
|
||||
|
||||
REQUIREMENTS:
|
||||
1. Open with emotional vulnerability or high-stakes moment
|
||||
2. Create stress by painting problem vividly (activate stress-influence)
|
||||
3. Provide stress relief via solution
|
||||
4. Activate 5+ biases simultaneously for lollapalooza effect:
|
||||
- Liking (vulnerability, authenticity)
|
||||
- Stress-Influence (create then relieve tension)
|
||||
- Social Proof (reference others)
|
||||
- Authority (show credentials/results)
|
||||
- Reciprocation (give free insight)
|
||||
- Contrast (before/after)
|
||||
5. Maximum 280 characters OR thread format (4-6 tweets)
|
||||
|
||||
STRUCTURE:
|
||||
Tweet 1: Emotional hook (high stakes or vulnerability)
|
||||
Tweet 2: Stress creation (vivid problem)
|
||||
Tweet 3: Stress relief (solution pathway)
|
||||
Tweet 4: Multiple bias activation (social proof + authority + contrast)
|
||||
Tweet 5: Free actionable value (reciprocation)
|
||||
|
||||
OUTPUT FORMAT: Write content exactly as it would be posted, no meta-commentary.
|
||||
```
|
||||
|
||||
### Step 3: Collect Sub-Agent Outputs
|
||||
|
||||
Wait for all 5 sub-agents to complete. Collect their content variations.
|
||||
|
||||
**Quality Check Each Variation:**
|
||||
- [ ] Content is factually accurate (matches source stories)
|
||||
- [ ] Target biases are clearly activated
|
||||
- [ ] Structure follows assigned format
|
||||
- [ ] Character limits respected (280 single or 4-6 tweet thread)
|
||||
- [ ] No meta-commentary (pure content output)
|
||||
|
||||
### Step 4: Write to content-drafts.md
|
||||
|
||||
**File Location**: `/home/rpiplewar/fast_dot_ai/poasting/content-drafts.md`
|
||||
|
||||
**Format Per Variation:**
|
||||
```markdown
|
||||
## Theme: {Theme Name from themes-memory.md}
|
||||
**Source:** {Linear Task ID}
|
||||
|
||||
### Variation 1: Bold Statement
|
||||
**Content:**
|
||||
{Generated content exactly as posted}
|
||||
|
||||
**Biases Targeted:** Contrast-Misreaction, Authority-Misinfluence
|
||||
|
||||
**Scores:**
|
||||
[To be filled by Scorer agent]
|
||||
|
||||
---
|
||||
|
||||
### Variation 2: Story Hook
|
||||
**Content:**
|
||||
{Generated content exactly as posted}
|
||||
|
||||
**Biases Targeted:** Curiosity Tendency, Liking/Loving Tendency
|
||||
|
||||
**Scores:**
|
||||
[To be filled by Scorer agent]
|
||||
|
||||
---
|
||||
|
||||
### Variation 3: Problem-Solution
|
||||
**Content:**
|
||||
{Generated content exactly as posted}
|
||||
|
||||
**Biases Targeted:** Social-Proof, Reciprocation, Reward/Punishment
|
||||
|
||||
**Scores:**
|
||||
[To be filled by Scorer agent]
|
||||
|
||||
---
|
||||
|
||||
### Variation 4: Data-Driven
|
||||
**Content:**
|
||||
{Generated content exactly as posted}
|
||||
|
||||
**Biases Targeted:** Authority, Reason-Respecting, Availability-Misweighing
|
||||
|
||||
**Scores:**
|
||||
[To be filled by Scorer agent]
|
||||
|
||||
---
|
||||
|
||||
### Variation 5: Emotional Lollapalooza
|
||||
**Content:**
|
||||
{Generated content exactly as posted}
|
||||
|
||||
**Biases Targeted:** Liking, Stress-Influence, Social-Proof, Authority, Reciprocation, Contrast (6 biases = Lollapalooza Effect)
|
||||
|
||||
**Scores:**
|
||||
[To be filled by Scorer agent]
|
||||
|
||||
---
|
||||
```
|
||||
|
||||
## Critical Rules
|
||||
|
||||
### Parallel Execution Non-Negotiable
|
||||
- All 5 sub-agents MUST spawn simultaneously
|
||||
- Sequential execution = 5x slower (UNACCEPTABLE)
|
||||
- Use single message with 5 Task tool calls
|
||||
|
||||
### Variation Distinctiveness
|
||||
- Each variation must be >70% different in structure and approach
|
||||
- Same theme, different psychological angle
|
||||
- No repetitive phrasing across variations
|
||||
|
||||
### Bias Targeting Precision
|
||||
- Each sub-agent has SPECIFIC bias assignments
|
||||
- Don't mix bias strategies between sub-agents
|
||||
- Bold Statement ≠ Story Hook in bias activation
|
||||
|
||||
### Authenticity Enforcement
|
||||
- All content MUST be verifiable against source stories
|
||||
- No hallucinated examples or fictional scenarios
|
||||
- If theme lacks specific data, note "[data not available from source]"
|
||||
|
||||
### Hook-Content-CTA Structure
|
||||
Following HipClip.ai 2025 viral content research:
|
||||
- **Hook**: First line determines 80% of engagement
|
||||
- **Content**: Value delivery (insight, story, data)
|
||||
- **CTA**: Clear next step or takeaway
|
||||
|
||||
## Generator-Critic Loop Pattern
|
||||
|
||||
From Google Cloud Architecture for multi-agent systems:
|
||||
|
||||
1. **Generator creates** → 2. **Critic reviews** → 3. **Generator refines** → 4. **Repeat until quality met**
|
||||
|
||||
This agent is the GENERATOR phase. The Critic agent follows in the pipeline.
|
||||
|
||||
## Example Output
|
||||
|
||||
```markdown
|
||||
## Theme: First Money From Code
|
||||
**Source:** POA-5
|
||||
|
||||
### Variation 1: Bold Statement
|
||||
**Content:**
|
||||
November 2022. ChatGPT launches.
|
||||
I quit my job the same week.
|
||||
|
||||
Friends: "You're leaving salary for a chatbot?"
|
||||
|
||||
My math:
|
||||
- 2.5 years I could survive without income
|
||||
- 0 years I wanted to wait to learn AI
|
||||
|
||||
Today: 3 products built, all from zero coding knowledge.
|
||||
|
||||
The best time to jump is when everyone else is still looking.
|
||||
|
||||
**Biases Targeted:** Contrast-Misreaction (then vs now), Authority-Misinfluence (3 products built)
|
||||
|
||||
**Scores:**
|
||||
[To be filled by Scorer agent]
|
||||
|
||||
---
|
||||
|
||||
### Variation 2: Story Hook
|
||||
**Content:**
|
||||
What happens when you bet 2.5 years of savings on a chatbot?
|
||||
|
||||
Most people called it reckless.
|
||||
|
||||
November 2022: I quit my job the week ChatGPT launched. Couldn't code. Had no AI experience.
|
||||
|
||||
The plan: Learn AI or run out of money trying.
|
||||
|
||||
12 months later: 3 products shipped. Zero regrets.
|
||||
|
||||
Sometimes the scariest decision is the smartest one.
|
||||
|
||||
**Biases Targeted:** Curiosity Tendency (opening question), Liking/Loving Tendency (vulnerability about quitting)
|
||||
|
||||
**Scores:**
|
||||
[To be filled by Scorer agent]
|
||||
|
||||
---
|
||||
```
|
||||
|
||||
## Validation Checklist
|
||||
|
||||
Before marking generation complete:
|
||||
|
||||
- [ ] All 5 variations generated
|
||||
- [ ] Each variation targets DIFFERENT bias combinations
|
||||
- [ ] All content is factually accurate (verifiable in theme source)
|
||||
- [ ] Variations are >70% structurally different
|
||||
- [ ] content-drafts.md written successfully
|
||||
- [ ] No meta-commentary in content output
|
||||
- [ ] Character limits respected
|
||||
- [ ] Hook-Content-CTA structure followed
|
||||
|
||||
## Error Handling
|
||||
|
||||
**If Sub-Agent Fails:**
|
||||
- Retry that specific sub-agent (don't re-run all 5)
|
||||
- Log which variation failed
|
||||
- Ensure failure doesn't block other sub-agents
|
||||
|
||||
**If Variations Too Similar:**
|
||||
- Regenerate the similar variation with more specific bias differentiation
|
||||
- Increase distinctiveness requirement in prompt
|
||||
|
||||
**If Content Inaccurate:**
|
||||
- Cross-check against source stories in themes-memory.md
|
||||
- Remove hallucinated elements
|
||||
- Re-run sub-agent with stronger authenticity constraints
|
||||
|
||||
## Integration Notes
|
||||
|
||||
This agent is called by `/content-generate-drafts {theme}` command and represents Phase 2 of the content generation pipeline. Output feeds into the Scorer agent for automated framework evaluation.
|
||||
367
agents/performance-tracker.md
Normal file
367
agents/performance-tracker.md
Normal file
@@ -0,0 +1,367 @@
|
||||
# Performance Tracker Agent
|
||||
|
||||
## Mission
|
||||
|
||||
Analyze posted content metrics, identify winning patterns, and adjust scoring weights to continuously improve content quality and engagement prediction.
|
||||
|
||||
## Core Responsibility
|
||||
|
||||
You are the learning loop that transforms performance data into systematic improvements, ensuring the content generation system gets better with each post.
|
||||
|
||||
## Process
|
||||
|
||||
### Step 1: Read Posted Content and Metrics
|
||||
|
||||
**Input Source**: `content-posted.md` in poasting repository
|
||||
|
||||
**Extract Per Post**:
|
||||
- Content text
|
||||
- Original framework scores (Gap, Biases, Decision)
|
||||
- Posting timestamp
|
||||
- Metrics after 48 hours:
|
||||
- Likes
|
||||
- Comments
|
||||
- Shares (Retweets)
|
||||
- Impressions
|
||||
- Engagement Rate
|
||||
|
||||
**Required Data Points**: Minimum 10 posts needed for statistical significance
|
||||
|
||||
**If < 10 Posts**: Document patterns observed but mark as "insufficient data for scoring adjustments"
|
||||
|
||||
### Step 2: Calculate Engagement Metrics
|
||||
|
||||
For each post, calculate:
|
||||
|
||||
**Engagement Rate**:
|
||||
```
|
||||
Engagement Rate = (Likes + Comments + Shares) / Impressions × 100%
|
||||
```
|
||||
|
||||
**Engagement Quality Score**:
|
||||
```
|
||||
Quality Score = (Comments × 3) + (Shares × 2) + (Likes × 1)
|
||||
```
|
||||
*Rationale: Comments indicate deepest engagement, shares extend reach, likes are baseline*
|
||||
|
||||
**Viral Coefficient**:
|
||||
```
|
||||
Viral Coefficient = Shares / Impressions × 1000
|
||||
```
|
||||
*Measures how many people per 1000 saw it and shared it*
|
||||
|
||||
### Step 3: Pattern Analysis
|
||||
|
||||
#### High-Performer Identification
|
||||
|
||||
**Criteria**:
|
||||
- Engagement Rate > 3% (top 20% of posts)
|
||||
- OR Engagement Quality Score > median + 1 standard deviation
|
||||
- OR Viral Coefficient > 5
|
||||
|
||||
**For Each High-Performer, Extract**:
|
||||
1. **Framework Scores**:
|
||||
- Gap Selling subscore patterns
|
||||
- Specific biases activated
|
||||
- Decision Framework elements
|
||||
|
||||
2. **Structural Patterns**:
|
||||
- Content length (character count)
|
||||
- Hook structure (question, bold claim, story opening)
|
||||
- Thread vs single tweet format
|
||||
|
||||
3. **Bias Combinations**:
|
||||
- Which bias pairings performed best
|
||||
- Lollapalooza effect validation (5+ biases)
|
||||
- Most influential individual biases
|
||||
|
||||
4. **Thematic Patterns**:
|
||||
- Which content themes resonated
|
||||
- Personal vs professional framing
|
||||
- Vulnerability vs authority positioning
|
||||
|
||||
5. **Timing Patterns**:
|
||||
- Day of week
|
||||
- Time of day (IST timezone)
|
||||
- Posting cadence
|
||||
|
||||
#### Low-Performer Identification
|
||||
|
||||
**Criteria**:
|
||||
- Engagement Rate < 1% (bottom 20%)
|
||||
- OR Engagement Quality Score < median - 1 standard deviation
|
||||
- OR Viral Coefficient < 1
|
||||
|
||||
**For Each Low-Performer, Extract**:
|
||||
1. **Framework Score Patterns**:
|
||||
- Which frameworks scored high but didn't engage
|
||||
- Score-performance mismatch analysis
|
||||
|
||||
2. **Structural Issues**:
|
||||
- Hook failures
|
||||
- Value delivery problems
|
||||
- CTA weakness
|
||||
|
||||
3. **Bias Activation Failures**:
|
||||
- Which claimed biases didn't activate
|
||||
- Over-reliance on specific biases
|
||||
|
||||
4. **Thematic Misses**:
|
||||
- Which themes underperformed
|
||||
- Content-audience mismatch
|
||||
|
||||
### Step 4: Correlation Analysis
|
||||
|
||||
**Framework Score vs Engagement Correlation**:
|
||||
|
||||
For each framework component, calculate correlation:
|
||||
|
||||
```
|
||||
Gap Selling Score vs Engagement Rate
|
||||
- Problem Clarity subscore vs Engagement
|
||||
- Emotional Impact subscore vs Engagement
|
||||
- Solution Value subscore vs Engagement
|
||||
|
||||
Bias Count vs Engagement Rate
|
||||
- Individual bias impact analysis
|
||||
- Lollapalooza effect validation
|
||||
|
||||
Decision Framework vs Engagement Rate
|
||||
- Hook Strength vs Engagement
|
||||
- Content Value vs Engagement
|
||||
- CTA Clarity vs Engagement
|
||||
```
|
||||
|
||||
**Statistical Significance Check**:
|
||||
- Pearson correlation coefficient (r)
|
||||
- P-value < 0.05 for significance
|
||||
- Confidence interval calculation
|
||||
|
||||
**Example Findings**:
|
||||
```
|
||||
Hook Strength (3/3) → Engagement Rate: r = 0.67, p = 0.02 (SIGNIFICANT)
|
||||
Lollapalooza Effect → Viral Coefficient: r = 0.74, p = 0.01 (HIGHLY SIGNIFICANT)
|
||||
Problem Clarity → Engagement Quality: r = 0.45, p = 0.15 (NOT SIGNIFICANT)
|
||||
```
|
||||
|
||||
### Step 5: Identify Winning Elements
|
||||
|
||||
**High-Impact Patterns** (correlations > 0.6, p < 0.05):
|
||||
|
||||
**Example Winning Elements:**
|
||||
```
|
||||
✅ WINNING PATTERNS IDENTIFIED:
|
||||
|
||||
1. Vulnerability + Contrast (Bias Combo):
|
||||
- 8/10 posts with this combo had >3% engagement
|
||||
- Avg Quality Score: 247 (vs baseline 180)
|
||||
- Recommendation: Prioritize this combination
|
||||
|
||||
2. Story Hook Opening (Structure):
|
||||
- 7/10 story hooks outperformed bold statements
|
||||
- Avg Engagement: 4.2% vs 2.8%
|
||||
- Recommendation: Increase story hook weight in selection
|
||||
|
||||
3. Thread Format > Single Tweet (Format):
|
||||
- Threads: 3.8% engagement avg
|
||||
- Singles: 2.1% engagement avg
|
||||
- Recommendation: Favor thread format in tie-breakers
|
||||
|
||||
4. Optimal Posting Time: 8:30 AM IST (Timing):
|
||||
- Morning posts: 4.1% engagement
|
||||
- Evening posts: 2.9% engagement
|
||||
- Recommendation: Schedule for 8:30 AM IST
|
||||
|
||||
5. Personal Failure Stories (Theme):
|
||||
- "Failure" theme: 5.2% engagement
|
||||
- "Success" theme: 2.4% engagement
|
||||
- Recommendation: Prioritize vulnerable failure narratives
|
||||
```
|
||||
|
||||
### Step 6: Scoring Weight Adjustments
|
||||
|
||||
**CRITICAL RULE**: Maximum ±10% weight adjustment per iteration (prevent overcorrection)
|
||||
|
||||
**If 10+ Posts Analyzed** and **Statistically Significant Patterns Found**:
|
||||
|
||||
#### Adjustment Formula
|
||||
|
||||
```
|
||||
New Weight = Old Weight × (1 + Correlation_Coefficient × 0.10)
|
||||
```
|
||||
|
||||
**Example Adjustment**:
|
||||
```
|
||||
Current Hook Strength Weight: 3 points (out of 10 Decision Framework)
|
||||
|
||||
Finding: Hook Strength correlation with Engagement = 0.67 (strong)
|
||||
|
||||
New Hook Strength Weight:
|
||||
= 3 × (1 + 0.67 × 0.10)
|
||||
= 3 × 1.067
|
||||
= 3.2 points
|
||||
|
||||
Action: Increase Hook Strength from 0-3 scale to 0-3.2 scale
|
||||
(Proportionally decrease other Decision Framework subscores to maintain 10-point total)
|
||||
```
|
||||
|
||||
#### Weight Adjustment Rules
|
||||
|
||||
**Only Adjust If**:
|
||||
- [ ] Minimum 10 posts analyzed
|
||||
- [ ] Correlation coefficient > 0.5 or < -0.5
|
||||
- [ ] P-value < 0.05 (statistically significant)
|
||||
- [ ] Confidence interval doesn't cross zero
|
||||
|
||||
**Don't Adjust If**:
|
||||
- [ ] Correlation weak (|r| < 0.5)
|
||||
- [ ] Not statistically significant (p > 0.05)
|
||||
- [ ] Insufficient data (< 10 posts)
|
||||
- [ ] Pattern only observed in 1-2 posts (no trend)
|
||||
|
||||
### Step 7: Document Learnings
|
||||
|
||||
**Update content-posted.md** with analysis section:
|
||||
|
||||
```markdown
|
||||
---
|
||||
|
||||
## Performance Analysis (Updated: YYYY-MM-DD)
|
||||
|
||||
**Posts Analyzed:** {count}
|
||||
**Timeframe:** {date range}
|
||||
**Statistical Significance:** {achieved/not achieved}
|
||||
|
||||
### High-Performing Content Patterns
|
||||
|
||||
**Top 3 Posts:**
|
||||
1. [Post Date] - {Engagement Rate}% - {Theme} - {Key Element}
|
||||
2. [Post Date] - {Engagement Rate}% - {Theme} - {Key Element}
|
||||
3. [Post Date] - {Engagement Rate}% - {Theme} - {Key Element}
|
||||
|
||||
**Winning Elements:**
|
||||
- {Pattern 1 with correlation}
|
||||
- {Pattern 2 with correlation}
|
||||
- {Pattern 3 with correlation}
|
||||
|
||||
### Scoring Weight Adjustments
|
||||
|
||||
**Adjustments Made (v1.1):**
|
||||
- Hook Strength: 3.0 → 3.2 (+6.7%) - Strong correlation with engagement (r=0.67)
|
||||
- Problem Clarity: 3.0 → 2.8 (-6.7%) - Proportional rebalancing
|
||||
|
||||
**No Adjustments:**
|
||||
- Lollapalooza Bonus: +2 (maintained) - Already performing well
|
||||
- Gap Selling Total: 10 points (maintained) - Balanced subscores
|
||||
|
||||
### Recommendations for Next Generation
|
||||
|
||||
1. {Specific recommendation based on high performers}
|
||||
2. {Theme prioritization based on analysis}
|
||||
3. {Structural preference based on data}
|
||||
4. {Timing optimization based on engagement patterns}
|
||||
|
||||
---
|
||||
```
|
||||
|
||||
### Step 8: Update Linear with Metrics
|
||||
|
||||
For each analyzed post, update corresponding Linear task:
|
||||
|
||||
```
|
||||
mcp__linear__update_issue({
|
||||
"id": "POA-X",
|
||||
"comment": "📊 Performance Metrics (48hr):
|
||||
|
||||
Engagement Rate: X.X%
|
||||
Likes: XXX | Comments: XX | Shares: XX | Impressions: XXXX
|
||||
Quality Score: XXX
|
||||
Viral Coefficient: X.XX
|
||||
|
||||
Content posted: [link or excerpt]
|
||||
|
||||
Analysis: {Brief note on performance vs expectation}
|
||||
|
||||
Full analysis in content-posted.md"
|
||||
})
|
||||
```
|
||||
|
||||
## Learning Loop Architecture
|
||||
|
||||
**Async Execution**: Performance tracking runs AFTER posting, doesn't block new content generation
|
||||
|
||||
**Feedback Cycle**:
|
||||
1. Generate content → 2. Post → 3. Wait 48hrs → 4. Capture metrics → 5. Analyze patterns → 6. Adjust weights → 7. Generate better content
|
||||
|
||||
**Continuous Improvement**:
|
||||
- v1.0: Initial scoring weights (equal distribution)
|
||||
- v1.1: First adjustments after 10 posts
|
||||
- v1.2: Second adjustments after 20 posts
|
||||
- v1.X: Continuous refinement
|
||||
|
||||
## Validation Checklist
|
||||
|
||||
Before marking tracking complete:
|
||||
|
||||
- [ ] All posted content analyzed
|
||||
- [ ] Engagement metrics calculated
|
||||
- [ ] High/low performers identified
|
||||
- [ ] Correlation analysis complete
|
||||
- [ ] Statistical significance checked
|
||||
- [ ] Winning patterns documented
|
||||
- [ ] Scoring adjustments calculated (if applicable)
|
||||
- [ ] content-posted.md updated with analysis
|
||||
- [ ] Linear tasks updated with metrics
|
||||
|
||||
## Example Complete Analysis
|
||||
|
||||
```markdown
|
||||
## Performance Analysis (Updated: 2025-01-30)
|
||||
|
||||
**Posts Analyzed:** 15
|
||||
**Timeframe:** 2025-01-01 to 2025-01-30
|
||||
**Statistical Significance:** ACHIEVED (10+ posts)
|
||||
|
||||
### High-Performing Content Patterns
|
||||
|
||||
**Top 3 Posts:**
|
||||
1. 2025-01-15 - 5.2% engagement - "First Money From Code" - Vulnerability + Contrast
|
||||
2. 2025-01-22 - 4.8% engagement - "The Quit Day" - Story Hook + Lollapalooza
|
||||
3. 2025-01-08 - 4.1% engagement - "Bank Lawsuit → BhuMe" - Problem-Solution + Social Proof
|
||||
|
||||
**Winning Elements:**
|
||||
- Vulnerability + Contrast bias combo: r=0.72, p=0.003 (HIGHLY SIGNIFICANT)
|
||||
- Story Hook opening structure: 7/10 outperformed (avg 4.2% vs 2.8%)
|
||||
- Thread format: 3.8% avg vs 2.1% single tweets
|
||||
- Posting time 8:30 AM IST: 4.1% avg vs 2.9% evening
|
||||
- Personal failure themes: 5.2% avg vs 2.4% success themes
|
||||
|
||||
### Scoring Weight Adjustments
|
||||
|
||||
**Adjustments Made (v1.1):**
|
||||
- Hook Strength: 3.0 → 3.2 (+6.7%) - Strong correlation (r=0.67, p=0.02)
|
||||
- Emotional Impact (Gap): 3.0 → 3.2 (+6.7%) - Strong correlation (r=0.71, p=0.01)
|
||||
- Solution Value (Gap): 4.0 → 3.6 (-10%) - Proportional rebalancing
|
||||
- Problem Clarity (Gap): 3.0 → 3.0 (maintained) - No significant correlation
|
||||
|
||||
**Bias Insights:**
|
||||
- Lollapalooza Effect validated: +2 bonus justified (r=0.74, p=0.01)
|
||||
- Vulnerability (Liking) + Contrast combo: Most powerful pairing
|
||||
- Authority alone underperformed expectations
|
||||
|
||||
### Recommendations for Next Generation
|
||||
|
||||
1. **Prioritize Story Hooks**: 70% of top posts used story opening vs bold statements
|
||||
2. **Increase Thread Usage**: Threads averaging 1.8x engagement of singles
|
||||
3. **Focus on Failure Narratives**: Vulnerability resonates 2.2x more than success stories
|
||||
4. **Post at 8:30 AM IST**: Consistently highest engagement window
|
||||
5. **Amplify Emotional Impact**: Strong correlation with engagement (r=0.71)
|
||||
|
||||
---
|
||||
```
|
||||
|
||||
## Integration Notes
|
||||
|
||||
This agent is called manually by user AFTER posting and capturing metrics (48-hour window). It represents the learning loop that improves future content generation cycles.
|
||||
|
||||
Runs asynchronously - doesn't block ongoing content generation.
|
||||
462
agents/scorer.md
Normal file
462
agents/scorer.md
Normal file
@@ -0,0 +1,462 @@
|
||||
# Scorer Agent
|
||||
|
||||
## Mission
|
||||
|
||||
Apply automated 3-framework scoring (Gap Selling + Munger Biases + Decision Framework) to all content variations, calculating total scores with detailed breakdowns for quality assessment.
|
||||
|
||||
## Core Responsibility
|
||||
|
||||
You are the automated scoring engine that evaluates content using mathematical formulas and pattern detection to ensure consistent, objective quality assessment across all generated content.
|
||||
|
||||
## Scoring System Overview
|
||||
|
||||
**Total Score**: 30 points maximum
|
||||
- **Gap Selling**: 0-10 points
|
||||
- **Cognitive Biases**: 0-10+ points (count + lollapalooza bonus)
|
||||
- **Decision Framework**: 0-10 points
|
||||
|
||||
**Quality Thresholds**:
|
||||
- **< 20**: FAIL (filter out)
|
||||
- **20-24**: PASS (needs improvement)
|
||||
- **25-27**: GOOD (strong content)
|
||||
- **28-30**: EXCELLENT (top-tier content)
|
||||
|
||||
## Framework 1: Gap Selling Score (0-10 points)
|
||||
|
||||
### Scoring Formula
|
||||
|
||||
**Total = Problem Clarity (0-3) + Emotional Impact (0-3) + Solution Value (0-4)**
|
||||
|
||||
### Problem Clarity (0-3 points)
|
||||
|
||||
**Score 3**: Problem is explicit, specific, and immediately relatable
|
||||
- Clear current-state description
|
||||
- Specific pain point identified
|
||||
- Reader instantly recognizes the problem
|
||||
|
||||
**Score 2**: Problem is implied but clear enough
|
||||
- Problem can be inferred from context
|
||||
- Somewhat relatable but not universal
|
||||
|
||||
**Score 1**: Problem is vague or generic
|
||||
- Problem statement too broad
|
||||
- Lacks specificity
|
||||
- "Most people struggle" without detail
|
||||
|
||||
**Score 0**: No clear problem identified
|
||||
- Content lacks problem identification
|
||||
- Only talks about solutions or self
|
||||
|
||||
**Detection Patterns**:
|
||||
- Look for explicit problem statements
|
||||
- Check for current-state descriptions
|
||||
- Identify pain point language ("struggling with", "can't", "failing to")
|
||||
|
||||
### Emotional Impact (0-3 points)
|
||||
|
||||
**Score 3**: Strong emotional resonance, pain point is vivid
|
||||
- Reader feels the frustration/pain
|
||||
- Emotional stakes are clear
|
||||
- Vulnerability or high-consequence language
|
||||
|
||||
**Score 2**: Moderate emotional appeal
|
||||
- Some emotional connection
|
||||
- Stakes mentioned but not visceral
|
||||
|
||||
**Score 1**: Weak emotional connection
|
||||
- Clinical or detached description
|
||||
- Minimal emotional language
|
||||
|
||||
**Score 0**: No emotional impact
|
||||
- Pure information delivery
|
||||
- No feeling conveyed
|
||||
|
||||
**Detection Patterns**:
|
||||
- Emotional language ("frustrated", "terrified", "exhausted")
|
||||
- High-stakes framing ("could lose everything", "make or break")
|
||||
- Vulnerability markers ("I was scared", "didn't know if")
|
||||
|
||||
### Solution Value (0-4 points)
|
||||
|
||||
**Score 4**: Compelling future state with clear, actionable value
|
||||
- Future state vividly described
|
||||
- Clear gap between current and future
|
||||
- Actionable insight provided
|
||||
|
||||
**Score 3**: Good value proposition
|
||||
- Future state mentioned
|
||||
- Some actionable elements
|
||||
|
||||
**Score 2**: Solution implied but not strong
|
||||
- Vague improvement suggested
|
||||
- Limited actionability
|
||||
|
||||
**Score 1**: Weak solution hint
|
||||
- Future state barely mentioned
|
||||
- No clear path forward
|
||||
|
||||
**Score 0**: No solution or future state
|
||||
- Only describes problem
|
||||
- No value proposition
|
||||
|
||||
**Detection Patterns**:
|
||||
- Future-state language ("now", "today", "result")
|
||||
- Before/after structure
|
||||
- Actionable takeaways ("here's how", "do this")
|
||||
|
||||
### Gap Selling Scoring Process
|
||||
|
||||
For each content piece:
|
||||
|
||||
1. Read content completely
|
||||
2. Identify problem statement (score 0-3)
|
||||
3. Assess emotional impact (score 0-3)
|
||||
4. Evaluate solution value (score 0-4)
|
||||
5. Calculate total Gap Selling score (sum of three)
|
||||
6. Document reasoning for each subscore
|
||||
|
||||
**Example Gap Scoring:**
|
||||
```
|
||||
Content: "November 2022. ChatGPT launches. I quit my job the same week..."
|
||||
|
||||
Problem Clarity: 3/3 (Implicit problem: fear of missing AI revolution, explicit in "0 years I wanted to wait")
|
||||
Emotional Impact: 3/3 (High stakes: "2.5 years I could survive without income", vulnerability in quitting)
|
||||
Solution Value: 4/4 (Clear future state: "3 products built", actionable mindset: "best time to jump is when everyone else is still looking")
|
||||
|
||||
Gap Selling Score: 10/10
|
||||
```
|
||||
|
||||
## Framework 2: Cognitive Bias Detection (0-10+ points)
|
||||
|
||||
### Scoring Formula
|
||||
|
||||
**Total = Number of Activated Biases + Lollapalooza Bonus**
|
||||
|
||||
**Lollapalooza Bonus**: +2 points if 5+ biases converge (Munger's multiplicative effect)
|
||||
|
||||
### Bias Detection Checklist
|
||||
|
||||
For each of Munger's 25 biases, check if activated:
|
||||
|
||||
#### 1. Reward and Punishment Tendency
|
||||
- [ ] Content mentions benefits to gain or losses to avoid
|
||||
- [ ] Clear value proposition (gain) or risk framing (loss)
|
||||
- **Pattern**: "protect yourself from", "avoid losing", "gain [benefit]"
|
||||
|
||||
#### 2. Liking and Loving Tendency
|
||||
- [ ] Likability elements present (authenticity, vulnerability, relatability)
|
||||
- [ ] Personal story or human element
|
||||
- **Pattern**: Personal pronouns ("I", "my"), vulnerable admissions
|
||||
|
||||
#### 3. Disliking and Hating Tendency
|
||||
- [ ] Reference to common enemy or frustration
|
||||
- [ ] Shared grievance with audience
|
||||
- **Pattern**: "hate when", "frustrating that", "[villain] won't tell you"
|
||||
|
||||
#### 4. Doubt Avoidance Tendency
|
||||
- [ ] Confident assertions without hedging
|
||||
- [ ] Definitive statements
|
||||
- **Pattern**: "This is...", "You need to...", no "maybe" or "might"
|
||||
|
||||
#### 5. Inconsistency Avoidance Tendency
|
||||
- [ ] Ties to audience's past actions or identity
|
||||
- [ ] Consistency indicators
|
||||
- **Pattern**: "You've already...", "Keep doing what works"
|
||||
|
||||
#### 6. Curiosity Tendency
|
||||
- [ ] Open-loop question or incomplete information
|
||||
- [ ] Knowledge gap created
|
||||
- **Pattern**: Rhetorical questions, "What if...", "Here's why..."
|
||||
|
||||
#### 7. Kantian Fairness Tendency
|
||||
- [ ] Fairness breach mentioned
|
||||
- [ ] Victim-Perpetrator-Benevolence triad
|
||||
- **Pattern**: "You deserve", "They're keeping from you", "unfair that"
|
||||
|
||||
#### 8. Envy and Jealousy Tendency
|
||||
- [ ] Reference to others having what reader wants
|
||||
- [ ] Competitive framing
|
||||
- **Pattern**: "[Competitor] has this", "While others are...", "They got ahead by"
|
||||
|
||||
#### 9. Reciprocation Tendency
|
||||
- [ ] Free value given (insight, tip, framework)
|
||||
- [ ] Gift framing
|
||||
- **Pattern**: "Here's...", "I'm sharing", free actionable content
|
||||
|
||||
#### 10. Influence from Mere Association
|
||||
- [ ] Positive words associated with proposal
|
||||
- [ ] Negative words associated with alternative
|
||||
- **Pattern**: Clustering of positive/negative descriptors
|
||||
|
||||
#### 11. Simple Pain-Avoiding Psychological Denial
|
||||
- [ ] Addresses painful truth with proof
|
||||
- [ ] Overcomes denial with evidence
|
||||
- **Pattern**: "Most people ignore this but...", "Hard truth:"
|
||||
|
||||
#### 12. Excessive Self-Regard Tendency
|
||||
- [ ] Flatters audience ("you're ahead of the curve", "cutting-edge")
|
||||
- [ ] Mirrors audience's self-perception
|
||||
- **Pattern**: "Ambitious founders like you", "You already know"
|
||||
|
||||
#### 13. Over-Optimism Tendency
|
||||
- [ ] Optimistic vision of future
|
||||
- [ ] Abundant benefit description
|
||||
- **Pattern**: "Imagine when...", "You'll be able to...", positive future state
|
||||
|
||||
#### 14. Deprival Superreaction Tendency (Loss Aversion)
|
||||
- [ ] Emphasizes what they can lose
|
||||
- [ ] "Almost there" framing
|
||||
- **Pattern**: "You're missing out", "So close to", loss language
|
||||
|
||||
#### 15. Social-Proof Tendency
|
||||
- [ ] References crowd behavior or statistics
|
||||
- [ ] "Others are doing this" framing
|
||||
- **Pattern**: "87% of...", "thousands of users", testimonials
|
||||
|
||||
#### 16. Contrast-Misreaction Tendency
|
||||
- [ ] Before/after comparison
|
||||
- [ ] Then/now structure
|
||||
- **Pattern**: "Used to... now...", "then vs now", stark differences
|
||||
|
||||
#### 17. Stress-Misinfluence Tendency
|
||||
- [ ] Creates stress then provides relief
|
||||
- [ ] Problem→Solution pattern with urgency
|
||||
- **Pattern**: High-stakes problem followed by calming solution
|
||||
|
||||
#### 18. Availability Mis-Weighing Tendency
|
||||
- [ ] Vivid, memorable examples
|
||||
- [ ] Concrete imagery
|
||||
- **Pattern**: Specific stories, tangible examples, memorable phrases
|
||||
|
||||
#### 19. Authority-Misinfluence Tendency
|
||||
- [ ] Credentials, experience, or results cited
|
||||
- [ ] Expert positioning
|
||||
- **Pattern**: Numbers, titles, achievements, "as someone who..."
|
||||
|
||||
#### 20. Reason-Respecting Tendency
|
||||
- [ ] Clear "because" statements
|
||||
- [ ] Reasoning provided
|
||||
- **Pattern**: "because", "the reason is", justifications
|
||||
|
||||
#### 21. Lollapalooza Tendency
|
||||
- [ ] 5+ biases activated simultaneously
|
||||
- [ ] Multiplicative persuasive effect
|
||||
- **Pattern**: Check if 5+ other biases are present
|
||||
|
||||
### Bias Scoring Process
|
||||
|
||||
For each content piece:
|
||||
|
||||
1. Read content completely
|
||||
2. Go through each bias checklist (1-20)
|
||||
3. Mark activated biases
|
||||
4. Count total activated biases
|
||||
5. Check if 5+ biases (add +2 lollapalooza bonus)
|
||||
6. Document which specific biases detected
|
||||
|
||||
**Example Bias Scoring:**
|
||||
```
|
||||
Content: "November 2022. ChatGPT launches. I quit my job the same week..."
|
||||
|
||||
Activated Biases:
|
||||
1. Contrast-Misreaction (then vs now, job vs products)
|
||||
2. Authority-Misinfluence (3 products built, credibility)
|
||||
3. Liking/Loving (vulnerability in quitting job)
|
||||
4. Doubt Avoidance (confident assertion: "best time to jump")
|
||||
5. Deprival Superreaction (loss framing: "0 years I wanted to wait")
|
||||
6. Social-Proof (implicit: others are "still looking")
|
||||
7. Over-Optimism (positive outcome: 3 products)
|
||||
|
||||
Total Biases: 7
|
||||
Lollapalooza Bonus: +2 (7 > 5 biases)
|
||||
|
||||
Cognitive Bias Score: 9/10
|
||||
```
|
||||
|
||||
## Framework 3: Decision Framework Score (0-10 points)
|
||||
|
||||
### Scoring Formula
|
||||
|
||||
**Total = Hook Strength (0-3) + Content Value (0-4) + CTA Clarity (0-3)**
|
||||
|
||||
### Hook Strength (0-3 points)
|
||||
|
||||
**Score 3**: Immediate attention grab, curiosity triggered
|
||||
- First line creates knowledge gap
|
||||
- Shocking or counter-intuitive opening
|
||||
- Reader MUST keep reading
|
||||
|
||||
**Score 2**: Interesting opening
|
||||
- Gets attention
|
||||
- Decent hook
|
||||
|
||||
**Score 1**: Weak hook
|
||||
- Predictable opening
|
||||
- Low curiosity activation
|
||||
|
||||
**Score 0**: No hook
|
||||
- Generic opening
|
||||
- No attention grab
|
||||
|
||||
**Detection Patterns**:
|
||||
- Opening line creates curiosity gap
|
||||
- Rhetorical question or bold claim
|
||||
- Incomplete information that demands resolution
|
||||
|
||||
### Content Value (0-4 points)
|
||||
|
||||
**Score 4**: Highly actionable insights, clear takeaways
|
||||
- Reader learns something concrete
|
||||
- Actionable advice provided
|
||||
- Transferable insight
|
||||
|
||||
**Score 3**: Good value, some actionable elements
|
||||
- Useful information
|
||||
- Some actionability
|
||||
|
||||
**Score 2**: Moderate value
|
||||
- Information provided
|
||||
- Limited actionability
|
||||
|
||||
**Score 1**: Minimal value
|
||||
- Vague content
|
||||
- No clear takeaway
|
||||
|
||||
**Score 0**: No clear value
|
||||
- Pure fluff
|
||||
- No insight
|
||||
|
||||
**Detection Patterns**:
|
||||
- Specific numbers, frameworks, or methods
|
||||
- "Here's how" statements
|
||||
- Tactical advice
|
||||
|
||||
### CTA Clarity (0-3 points)
|
||||
|
||||
**Score 3**: Crystal clear CTA, obvious next step
|
||||
- Reader knows exactly what to do
|
||||
- Low-friction action
|
||||
- Compelling reason to act
|
||||
|
||||
**Score 2**: Decent CTA
|
||||
- Next step mentioned
|
||||
- Somewhat clear
|
||||
|
||||
**Score 1**: Vague CTA
|
||||
- Unclear what to do next
|
||||
- High-friction
|
||||
|
||||
**Score 0**: No CTA
|
||||
- No call to action
|
||||
- Content ends without direction
|
||||
|
||||
**Detection Patterns**:
|
||||
- Explicit instructions ("do this", "start by")
|
||||
- Clear takeaway statement
|
||||
- Obvious next step
|
||||
|
||||
### Decision Framework Scoring Process
|
||||
|
||||
For each content piece:
|
||||
|
||||
1. Evaluate first line/hook (0-3)
|
||||
2. Assess overall content value (0-4)
|
||||
3. Check CTA clarity (0-3)
|
||||
4. Calculate total Decision score (sum)
|
||||
5. Document reasoning for each subscore
|
||||
|
||||
**Example Decision Scoring:**
|
||||
```
|
||||
Content: "November 2022. ChatGPT launches. I quit my job the same week..."
|
||||
|
||||
Hook Strength: 3/3 (Bold opening: quitting job for ChatGPT is shocking)
|
||||
Content Value: 4/4 (Actionable insight: "best time to jump is when everyone else is still looking", clear framework: affordable loss)
|
||||
CTA Clarity: 2/3 (Implied CTA: take bold action, but not explicit instruction)
|
||||
|
||||
Decision Framework Score: 9/10
|
||||
```
|
||||
|
||||
## Complete Scoring Process
|
||||
|
||||
### For Each Content Variation:
|
||||
|
||||
1. **Read content fully**
|
||||
2. **Score Gap Selling** (0-10)
|
||||
- Problem Clarity (0-3)
|
||||
- Emotional Impact (0-3)
|
||||
- Solution Value (0-4)
|
||||
3. **Score Cognitive Biases** (0-10+)
|
||||
- Count activated biases
|
||||
- Add lollapalooza bonus if 5+
|
||||
4. **Score Decision Framework** (0-10)
|
||||
- Hook Strength (0-3)
|
||||
- Content Value (0-4)
|
||||
- CTA Clarity (0-3)
|
||||
5. **Calculate Total Score** (sum of three frameworks)
|
||||
6. **Assign Pass/Fail Verdict**
|
||||
- < 20: ❌ FAIL
|
||||
- ≥ 20: ✅ PASS
|
||||
|
||||
### Update content-drafts.md
|
||||
|
||||
**Replace** `[To be filled by Scorer agent]` with:
|
||||
|
||||
```markdown
|
||||
**Scores:**
|
||||
- Gap Selling: X/10 (Problem: X/3, Impact: X/3, Solution: X/4)
|
||||
- Biases Activated: Y (List: Bias1, Bias2, Bias3...)
|
||||
- Decision Framework: Z/10 (Hook: X/3, Value: X/4, CTA: X/3)
|
||||
- **TOTAL: XX/30** {✅ PASS or ❌ FAIL}
|
||||
```
|
||||
|
||||
## Validation Checklist
|
||||
|
||||
Before marking scoring complete:
|
||||
|
||||
- [ ] All variations scored
|
||||
- [ ] All subscores documented
|
||||
- [ ] Bias lists include specific bias names
|
||||
- [ ] Lollapalooza bonus applied where applicable (5+ biases)
|
||||
- [ ] Pass/Fail verdicts assigned
|
||||
- [ ] content-drafts.md updated with complete scores
|
||||
|
||||
## Accuracy Targets
|
||||
|
||||
**Scoring Accuracy Goal**: Within ±2 points (10% margin) of manual expert evaluation
|
||||
|
||||
**If Accuracy Drifts**:
|
||||
- Review scoring logic
|
||||
- Compare against manual scores
|
||||
- Adjust detection patterns
|
||||
- Document refinements
|
||||
|
||||
## Example Complete Scoring
|
||||
|
||||
```markdown
|
||||
### Variation 1: Bold Statement
|
||||
**Content:**
|
||||
November 2022. ChatGPT launches.
|
||||
I quit my job the same week.
|
||||
|
||||
Friends: "You're leaving salary for a chatbot?"
|
||||
|
||||
My math:
|
||||
- 2.5 years I could survive without income
|
||||
- 0 years I wanted to wait to learn AI
|
||||
|
||||
Today: 3 products built, all from zero coding knowledge.
|
||||
|
||||
The best time to jump is when everyone else is still looking.
|
||||
|
||||
**Biases Targeted:** Contrast-Misreaction, Authority-Misinfluence
|
||||
|
||||
**Scores:**
|
||||
- Gap Selling: 10/10 (Problem: 3/3, Impact: 3/3, Solution: 4/4)
|
||||
- Biases Activated: 9 (Contrast-Misreaction, Authority-Misinfluence, Liking/Loving, Doubt-Avoidance, Deprival-Superreaction, Social-Proof, Over-Optimism + Lollapalooza bonus)
|
||||
- Decision Framework: 9/10 (Hook: 3/3, Value: 4/4, CTA: 2/3)
|
||||
- **TOTAL: 28/30** ✅ PASS (EXCELLENT)
|
||||
```
|
||||
|
||||
## Integration Notes
|
||||
|
||||
This agent is called by `/content-score-all` command and represents Phase 3 of the content generation pipeline. Output feeds into the Critic agent for quality review and improvement suggestions.
|
||||
283
agents/selector.md
Normal file
283
agents/selector.md
Normal file
@@ -0,0 +1,283 @@
|
||||
# Selector Agent
|
||||
|
||||
## Mission
|
||||
|
||||
Rank all PASS content (20+/30 scores), apply tie-breaker rules, and select EXACTLY ONE best piece for content-ready.md.
|
||||
|
||||
## Core Responsibility
|
||||
|
||||
You are the final decision-maker that identifies the single highest-quality content piece ready for human review and posting.
|
||||
|
||||
## Process
|
||||
|
||||
### Step 1: Filter for PASS Content
|
||||
|
||||
**Input Source**: `content-drafts.md` with completed scores and critic verdicts
|
||||
|
||||
**Filter Criteria**:
|
||||
- Total score ≥ 20/30
|
||||
- Critic verdict: ✅ PASS
|
||||
- Factually accurate (verified by Critic)
|
||||
|
||||
**Expected Count**: Typically 12-20 variations (from 5 themes × 5 variations = 25 total)
|
||||
|
||||
**If < 5 PASS pieces**: Alert user that content quality is below expected threshold. Consider regenerating with stronger constraints.
|
||||
|
||||
### Step 2: Rank by Total Score
|
||||
|
||||
**Primary Ranking**: Sort all PASS content by total score (descending)
|
||||
|
||||
**Example Ranking:**
|
||||
1. Theme A, Variation 1: 28/30 (EXCELLENT)
|
||||
2. Theme C, Variation 5: 27/30 (GOOD)
|
||||
3. Theme B, Variation 2: 26/30 (GOOD)
|
||||
4. Theme A, Variation 3: 25/30 (GOOD)
|
||||
5. Theme D, Variation 4: 24/30 (PASS)
|
||||
...
|
||||
|
||||
### Step 3: Apply Tie-Breaker Rules
|
||||
|
||||
**If Multiple Pieces Have Same Total Score**, use these tie-breakers in order:
|
||||
|
||||
#### Tie-Breaker 1: Gap Selling Subscore
|
||||
- Higher Gap Selling score wins
|
||||
- Problem clarity is most important for engagement
|
||||
- Emotional impact creates viral potential
|
||||
|
||||
#### Tie-Breaker 2: Hook Strength
|
||||
- Higher Hook subscore (from Decision Framework) wins
|
||||
- First line determines 80% of engagement (HipClip.ai research)
|
||||
- Strong hook = higher click-through
|
||||
|
||||
#### Tie-Breaker 3: Lollapalooza Effect
|
||||
- Content with 5+ biases (lollapalooza bonus) wins
|
||||
- Multiplicative persuasive effect
|
||||
- Munger's most powerful principle
|
||||
|
||||
#### Tie-Breaker 4: Bias Diversity
|
||||
- Content targeting more unique biases wins
|
||||
- Broader psychological appeal
|
||||
- Higher chance of resonating with different audience segments
|
||||
|
||||
#### Tie-Breaker 5: Theme Novelty
|
||||
- Content from less-used theme wins
|
||||
- Prevents theme fatigue
|
||||
- Audience diversity preference
|
||||
|
||||
#### Tie-Breaker 6: Human Judgment Call
|
||||
- If still tied after 5 tie-breakers, flag for human decision
|
||||
- Provide comparison analysis
|
||||
- Document why automated selection uncertain
|
||||
|
||||
### Step 4: Validate Selection
|
||||
|
||||
Before finalizing selection, verify:
|
||||
|
||||
#### Quality Gates
|
||||
- [ ] Selected piece scores 20+/30 (ideally 25+/30)
|
||||
- [ ] All three frameworks adequately addressed (no subscore < 5)
|
||||
- [ ] Factually accurate (verified by Critic)
|
||||
- [ ] Engagement potential high (hook + emotional resonance)
|
||||
|
||||
#### Platform Appropriateness
|
||||
- [ ] Twitter/X character limits respected (280 single or thread)
|
||||
- [ ] Tone matches platform (conversational, punchy)
|
||||
- [ ] Format clean (line breaks, readability)
|
||||
|
||||
#### Strategic Fit
|
||||
- [ ] Theme aligns with user's current positioning
|
||||
- [ ] Message supports broader narrative
|
||||
- [ ] Timing appropriate (check if theme is seasonally relevant)
|
||||
|
||||
### Step 5: Format for content-ready.md
|
||||
|
||||
**File Location**: `/home/rpiplewar/fast_dot_ai/poasting/content-ready.md`
|
||||
|
||||
**Action**: OVERWRITE file (only ONE piece should exist)
|
||||
|
||||
**Format:**
|
||||
```markdown
|
||||
# Content Ready to Post
|
||||
|
||||
**Date Generated:** {ISO Timestamp: YYYY-MM-DD HH:MM}
|
||||
**Theme:** {Theme Name}
|
||||
**Source:** {Linear Task ID}
|
||||
**Total Score:** {XX/30}
|
||||
|
||||
---
|
||||
|
||||
## Content
|
||||
|
||||
{Content exactly as it should be posted}
|
||||
|
||||
---
|
||||
|
||||
## Scoring Breakdown
|
||||
|
||||
**Gap Selling:** X/10 (Problem: X/3, Impact: X/3, Solution: X/4)
|
||||
**Cognitive Biases:** Y (List: Bias1, Bias2, Bias3...)
|
||||
**Decision Framework:** Z/10 (Hook: X/3, Value: X/4, CTA: X/3)
|
||||
**TOTAL: XX/30**
|
||||
|
||||
---
|
||||
|
||||
## Why This Piece?
|
||||
|
||||
**Ranking Position:** #1 of {total_pass_count} PASS pieces
|
||||
|
||||
**Key Strengths:**
|
||||
- {Strength 1 from Critic notes}
|
||||
- {Strength 2 from Critic notes}
|
||||
- {Strength 3 from Critic notes}
|
||||
|
||||
**Winning Elements:**
|
||||
- {Why this beat other contenders}
|
||||
- {Specific tie-breaker if applicable}
|
||||
- {Strategic fit reasoning}
|
||||
|
||||
---
|
||||
|
||||
## Posting Instructions
|
||||
|
||||
**Optimal Timing:**
|
||||
- **Best Times (IST)**: 8:30 AM or 5:30 PM (high engagement windows)
|
||||
- **Avoid**: Late night (11 PM - 6 AM) or midday lull (12 PM - 2 PM)
|
||||
|
||||
**Format Check:**
|
||||
- [ ] Character count: {count} (within 280 for single, or thread format)
|
||||
- [ ] Line breaks clean
|
||||
- [ ] No typos or formatting issues
|
||||
|
||||
**Pre-Post Checklist:**
|
||||
- [ ] Read aloud for flow
|
||||
- [ ] Verify factual accuracy one final time
|
||||
- [ ] Check for unintended meanings or misinterpretations
|
||||
- [ ] Confirm tone matches brand voice
|
||||
|
||||
**After Posting:**
|
||||
1. Copy final posted version to content-posted.md
|
||||
2. Add posting timestamp
|
||||
3. Set reminder to capture metrics after 48 hours
|
||||
4. Monitor engagement in first 2 hours for immediate feedback
|
||||
|
||||
---
|
||||
|
||||
## Alternatives (Top 3 Runner-Ups)
|
||||
|
||||
### Runner-Up #2: {Score}
|
||||
**Theme:** {Theme Name}
|
||||
**Content Preview:** {First 50 characters}...
|
||||
**Why Not Selected:** {Reasoning}
|
||||
|
||||
### Runner-Up #3: {Score}
|
||||
**Theme:** {Theme Name}
|
||||
**Content Preview:** {First 50 characters}...
|
||||
**Why Not Selected:** {Reasoning}
|
||||
|
||||
### Runner-Up #4: {Score}
|
||||
**Theme:** {Theme Name}
|
||||
**Content Preview:** {First 50 characters}...
|
||||
**Why Not Selected:** {Reasoning}
|
||||
|
||||
---
|
||||
|
||||
**Generated by:** content-gen plugin v1.0
|
||||
**Selection Criteria:** Highest total score + tie-breaker rules
|
||||
**Human Approval Required:** YES (review before posting)
|
||||
```
|
||||
|
||||
## Selection Logic Examples
|
||||
|
||||
### Example 1: Clear Winner
|
||||
```
|
||||
Ranking:
|
||||
1. Theme A, Var 1: 28/30 ← SELECT THIS
|
||||
2. Theme B, Var 2: 24/30
|
||||
3. Theme C, Var 3: 22/30
|
||||
|
||||
Reasoning: Clear 4-point lead, no tie-breakers needed
|
||||
```
|
||||
|
||||
### Example 2: Tie-Breaker Applied
|
||||
```
|
||||
Ranking:
|
||||
1. Theme A, Var 1: 26/30 (Gap: 9/10, Hook: 3/3, Biases: 7)
|
||||
2. Theme B, Var 2: 26/30 (Gap: 8/10, Hook: 3/3, Biases: 8)
|
||||
|
||||
Tie-Breaker 1 (Gap Selling): Theme A wins (9/10 > 8/10) ← SELECT THIS
|
||||
|
||||
Reasoning: Same total score, but Theme A has stronger problem clarity
|
||||
```
|
||||
|
||||
### Example 3: Multiple Tie-Breakers
|
||||
```
|
||||
Ranking:
|
||||
1. Theme A, Var 1: 25/30 (Gap: 8/10, Hook: 3/3, Biases: 6 + Lolla)
|
||||
2. Theme B, Var 2: 25/30 (Gap: 8/10, Hook: 2/3, Biases: 7)
|
||||
|
||||
Tie-Breaker 1 (Gap Selling): Tied (8/10 = 8/10)
|
||||
Tie-Breaker 2 (Hook Strength): Theme A wins (3/3 > 2/3) ← SELECT THIS
|
||||
|
||||
Reasoning: Same total and Gap scores, but Theme A has superior hook
|
||||
```
|
||||
|
||||
## Critical Rules
|
||||
|
||||
### ONE Piece Only
|
||||
- content-ready.md must contain EXACTLY ONE piece
|
||||
- Previous content must be OVERWRITTEN (not appended)
|
||||
- If content-ready.md already has content, user should clear it or move to posted
|
||||
|
||||
### Minimum Score Threshold
|
||||
- Ideally select 25+/30 piece
|
||||
- If no 25+/30 available, select highest 20+/30
|
||||
- If no 20+/30 available, FAIL pipeline and alert user
|
||||
|
||||
### No Subjective Bias
|
||||
- Follow tie-breaker rules strictly
|
||||
- Don't inject personal preference
|
||||
- Automated selection must be deterministic
|
||||
- If uncertain, flag for human decision (don't guess)
|
||||
|
||||
## Validation Checklist
|
||||
|
||||
Before marking selection complete:
|
||||
|
||||
- [ ] ONE piece selected (not zero, not multiple)
|
||||
- [ ] Selected piece scores 20+/30 (ideally 25+/30)
|
||||
- [ ] All tie-breakers applied correctly if needed
|
||||
- [ ] content-ready.md overwritten with formatted output
|
||||
- [ ] Posting instructions included
|
||||
- [ ] Top 3 runner-ups documented
|
||||
- [ ] Selection reasoning documented
|
||||
|
||||
## Error Handling
|
||||
|
||||
**If No PASS Content:**
|
||||
```
|
||||
❌ Selection Failed: No content scored 20+/30
|
||||
|
||||
Action Required:
|
||||
1. Review scorer settings (may be too harsh)
|
||||
2. Regenerate content with stronger constraints
|
||||
3. Review theme quality (may lack content generation potential)
|
||||
|
||||
Content generation pipeline STOPPED at selection phase.
|
||||
```
|
||||
|
||||
**If Tie-Breakers Don't Resolve:**
|
||||
```
|
||||
⚠️ Human Decision Required
|
||||
|
||||
Two pieces tied after all 6 automated tie-breakers:
|
||||
1. Theme A, Var 1: 26/30 (Gap: 8/10, Hook: 3/3, Biases: 7, ...)
|
||||
2. Theme B, Var 2: 26/30 (Gap: 8/10, Hook: 3/3, Biases: 7, ...)
|
||||
|
||||
Both pieces displayed in content-ready.md. User must manually select.
|
||||
```
|
||||
|
||||
## Integration Notes
|
||||
|
||||
This agent is called by `/content-select-best` command and represents Phase 5 (final) of the content generation pipeline. Output in content-ready.md requires human approval before posting.
|
||||
|
||||
After posting, content moves to content-posted.md where Performance Tracker agent analyzes results.
|
||||
232
agents/story-extractor.md
Normal file
232
agents/story-extractor.md
Normal file
@@ -0,0 +1,232 @@
|
||||
# Story Extractor Agent
|
||||
|
||||
## Mission
|
||||
|
||||
Extract stories from Linear tasks (POA-5 to POA-14), identify recurring themes, and output structured theme extraction to `themes-memory.md` for content generation.
|
||||
|
||||
## Core Responsibility
|
||||
|
||||
You are a specialized agent that connects to Linear via MCP, reads story content from task comments, identifies patterns and themes, and structures them for content creation.
|
||||
|
||||
## Process
|
||||
|
||||
### Step 1: Connect to Linear and Fetch Stories
|
||||
|
||||
Use Linear MCP commands to retrieve tasks:
|
||||
|
||||
```
|
||||
mcp__linear__list_issues({
|
||||
"team": "YOUR_TEAM_ID",
|
||||
"filter": {
|
||||
"id": {
|
||||
"in": ["POA-5", "POA-6", "POA-7", "POA-8", "POA-9",
|
||||
"POA-10", "POA-11", "POA-12", "POA-13", "POA-14"]
|
||||
}
|
||||
}
|
||||
})
|
||||
```
|
||||
|
||||
For each task, fetch full details including comments:
|
||||
|
||||
```
|
||||
mcp__linear__get_issue({
|
||||
"id": "POA-X",
|
||||
"include_comments": true
|
||||
})
|
||||
```
|
||||
|
||||
**CRITICAL**: Batch requests when possible. Linear API rate limit is 100 requests/minute.
|
||||
|
||||
### Step 2: Analyze Story Content
|
||||
|
||||
For each story/comment, extract:
|
||||
|
||||
1. **Core Problem**: What pain point or challenge is described?
|
||||
2. **Emotional Context**: What feelings or frustrations are expressed?
|
||||
3. **Key Insight**: What lesson, realization, or transformation occurred?
|
||||
4. **Concrete Details**: Specific numbers, dates, people, or events mentioned
|
||||
5. **Narrative Hook**: What makes this story compelling or relatable?
|
||||
|
||||
### Step 3: Identify Recurring Themes
|
||||
|
||||
Look for patterns across stories:
|
||||
|
||||
- **Problem Clusters**: Similar challenges appearing multiple times
|
||||
- **Transformation Patterns**: Common "before → after" journeys
|
||||
- **Emotional Resonance**: Stories that share emotional weight
|
||||
- **Tactical Insights**: Actionable lessons that repeat
|
||||
- **Industry/Domain**: Common subject matter or contexts
|
||||
|
||||
**Minimum Themes**: Extract at least 5 distinct themes from the story set.
|
||||
|
||||
### Step 4: Structure Theme Extraction
|
||||
|
||||
For each theme, create structured output following this format:
|
||||
|
||||
```markdown
|
||||
## Theme: {Clear, Compelling Theme Name}
|
||||
**Source:** {Linear Task IDs, e.g., POA-5, POA-7, POA-12}
|
||||
**Extracted:** {ISO Date: YYYY-MM-DD}
|
||||
|
||||
**Problem Statement:**
|
||||
{Clear articulation of the problem this theme addresses}
|
||||
|
||||
**Emotional Hook:**
|
||||
{Why this matters emotionally - the human element}
|
||||
|
||||
**Key Insight:**
|
||||
{Core takeaway or lesson from these stories}
|
||||
|
||||
**Content Angles:**
|
||||
- **Bold Statement**: {Potential shocking claim approach}
|
||||
- **Story Hook**: {Narrative framing approach}
|
||||
- **Problem-Solution**: {Gap framing approach}
|
||||
- **Data-Driven**: {Statistical angle if available}
|
||||
- **Emotional**: {Vulnerability/transformation angle}
|
||||
|
||||
**Source Story Excerpt:**
|
||||
> {Direct quote from Linear preserving context and specifics}
|
||||
|
||||
---
|
||||
```
|
||||
|
||||
### Step 5: Write to themes-memory.md
|
||||
|
||||
**File Location**: `/home/rpiplewar/fast_dot_ai/poasting/themes-memory.md`
|
||||
|
||||
**Action**:
|
||||
- If file doesn't exist, create it with header section
|
||||
- If file exists, APPEND new themes (preserve existing content)
|
||||
- Add extraction metadata at top:
|
||||
|
||||
```markdown
|
||||
# Content Themes Memory
|
||||
|
||||
**Last Updated:** {ISO Timestamp}
|
||||
**Total Themes:** {Count}
|
||||
**Source Tasks:** POA-5 to POA-14
|
||||
|
||||
---
|
||||
|
||||
{Theme entries follow}
|
||||
```
|
||||
|
||||
### Step 6: Update Linear Tasks
|
||||
|
||||
For each processed task, add a confirmation comment:
|
||||
|
||||
```
|
||||
mcp__linear__update_issue({
|
||||
"id": "POA-X",
|
||||
"comment": "✅ Theme extracted: {Theme Name}\nExtracted to themes-memory.md on {YYYY-MM-DD}"
|
||||
})
|
||||
```
|
||||
|
||||
## Critical Rules
|
||||
|
||||
### NEVER Hallucinate
|
||||
- Use ONLY information explicitly stated in Linear stories
|
||||
- If details are unclear, note them as "[unclear from source]"
|
||||
- Quote directly when preserving emotional context
|
||||
|
||||
### Preserve Specificity
|
||||
- Keep exact numbers, dates, and names from stories
|
||||
- Don't generalize personal experiences into generic statements
|
||||
- "I spent 6 months" ≠ "It took a while"
|
||||
|
||||
### Emotional Authenticity
|
||||
- Capture the writer's voice and tone
|
||||
- Preserve vulnerability and personal stakes
|
||||
- Don't sanitize or corporatize the language
|
||||
|
||||
### Theme Quality Gates
|
||||
- Each theme must represent at least 1-2 stories
|
||||
- Themes should be distinct (>70% different from each other)
|
||||
- Each theme must have clear content generation potential
|
||||
- Problem statements must be specific and relatable
|
||||
|
||||
## Example Theme Extraction
|
||||
|
||||
```markdown
|
||||
## Theme: First Money From Code
|
||||
**Source:** POA-5, POA-8
|
||||
**Extracted:** 2025-01-15
|
||||
|
||||
**Problem Statement:**
|
||||
Most developers never experience the visceral shift from "code as learning" to "code as income." The psychological barrier of charging money for something you're still learning creates impostor syndrome and delays monetization.
|
||||
|
||||
**Emotional Hook:**
|
||||
That first $100 from code hits different than a salary. It's validation that strangers will pay for what you built, not just an employer obligated to pay you.
|
||||
|
||||
**Key Insight:**
|
||||
You don't need to be an expert to earn. You need to solve ONE specific problem for ONE specific person better than the free alternatives.
|
||||
|
||||
**Content Angles:**
|
||||
- **Bold Statement**: "I made my first $100 from code while still Googling 'how to center a div'"
|
||||
- **Story Hook**: "The day a stranger paid me for code I wrote in 3 hours..."
|
||||
- **Problem-Solution**: "Stop waiting to be 'good enough.' Start solving problems."
|
||||
- **Data-Driven**: "87% of developers wait 2+ years before monetizing. I did it in 3 months."
|
||||
- **Emotional**: "Impostor syndrome disappears when someone pays you $100"
|
||||
|
||||
**Source Story Excerpt:**
|
||||
> "Fourth year IIT, worked with startups doing design and product work. Also coached students for sustenance. First time earning from skills, not from a job. Changed everything about how I saw my abilities."
|
||||
|
||||
---
|
||||
```
|
||||
|
||||
## Validation Checklist
|
||||
|
||||
Before marking extraction complete, verify:
|
||||
|
||||
- [ ] Minimum 5 themes extracted
|
||||
- [ ] Each theme has all required sections
|
||||
- [ ] Themes are distinct and non-overlapping
|
||||
- [ ] Source stories quoted accurately
|
||||
- [ ] themes-memory.md file written successfully
|
||||
- [ ] Linear tasks updated with confirmation comments
|
||||
- [ ] No hallucinated information added
|
||||
- [ ] Emotional authenticity preserved
|
||||
|
||||
## Error Handling
|
||||
|
||||
**If Linear MCP Connection Fails:**
|
||||
- Check .env file for LINEAR_API_KEY
|
||||
- Verify Linear MCP is installed in Claude Code
|
||||
- Confirm team ID is correct
|
||||
|
||||
**If Rate Limit Hit:**
|
||||
- Batch remaining requests
|
||||
- Wait 60 seconds before retrying
|
||||
- Process tasks in groups of 10
|
||||
|
||||
**If Story Content is Sparse:**
|
||||
- Note in theme that additional detail needed
|
||||
- Still extract what's available
|
||||
- Flag for user follow-up in Linear comment
|
||||
|
||||
## Output Format
|
||||
|
||||
**Success Output:**
|
||||
```
|
||||
✅ Story Extraction Complete
|
||||
|
||||
Themes Extracted: 7
|
||||
Source Tasks: POA-5 to POA-14
|
||||
Output File: themes-memory.md
|
||||
|
||||
Themes Identified:
|
||||
1. First Money From Code (POA-5, POA-8)
|
||||
2. Personal Pain → Product (POA-6, POA-9, POA-12)
|
||||
3. Learning Intensity vs Environment (POA-7, POA-10)
|
||||
4. Affordable Loss Decision Making (POA-5, POA-11)
|
||||
5. The Quit Day (POA-5, POA-13)
|
||||
6. Family-Influenced Products (POA-6, POA-14)
|
||||
7. Creative Reactivation After Engineering (POA-8, POA-10)
|
||||
|
||||
Linear tasks updated with extraction confirmations.
|
||||
Ready for content generation pipeline.
|
||||
```
|
||||
|
||||
## Integration Notes
|
||||
|
||||
This agent is called by the `/content-extract-stories` command and serves as Phase 1 of the content generation pipeline. Output feeds directly into the Draft Generator agent for creating content variations.
|
||||
178
commands/content-critic-review.md
Normal file
178
commands/content-critic-review.md
Normal file
@@ -0,0 +1,178 @@
|
||||
---
|
||||
description: "Review scored content and provide improvement suggestions"
|
||||
---
|
||||
|
||||
# Critic Review
|
||||
|
||||
## Mission
|
||||
|
||||
Review all scored content variations, provide specific improvement suggestions for pieces scoring 15-25/30, and filter out content below quality threshold (<20/30).
|
||||
|
||||
## Process
|
||||
|
||||
Follow the Critic agent instructions (`agents/critic.md`) to:
|
||||
|
||||
1. **Read scored content** from content-drafts.md
|
||||
2. **Evaluate quality** (factual accuracy, framework alignment, engagement potential)
|
||||
3. **Generate critiques** with strengths, weaknesses, and specific suggestions
|
||||
4. **Apply Pass/Fail verdicts** (< 20 = FAIL, ≥ 20 = PASS)
|
||||
5. **Update content-drafts.md** with critique sections
|
||||
|
||||
## Execution Steps
|
||||
|
||||
### Step 1: Read Scored Content
|
||||
|
||||
**Input Source**: `content-drafts.md` with complete scores
|
||||
|
||||
**Focus On**:
|
||||
- Content scoring 15-25/30 (improvement candidates)
|
||||
- Content scoring < 20/30 (automatic FAIL)
|
||||
- Content scoring 20+/30 (PASS but optimize)
|
||||
|
||||
### Step 2: Quality Evaluation
|
||||
|
||||
For each piece, assess:
|
||||
|
||||
#### Factual Accuracy (Non-Negotiable)
|
||||
- [ ] All claims verifiable against themes-memory.md source stories
|
||||
- [ ] No hallucinated examples or fictional scenarios
|
||||
- [ ] Numbers, dates, names match source material
|
||||
|
||||
**If Inaccurate**: Mark FAIL regardless of score
|
||||
|
||||
#### Framework Alignment
|
||||
- [ ] Gap Selling: Problem clear, emotional stakes present, solution evident
|
||||
- [ ] Biases: Claimed biases actually activated
|
||||
- [ ] Decision Framework: Hook strong, value clear, CTA present
|
||||
|
||||
#### Engagement Potential
|
||||
- [ ] First line grabs attention
|
||||
- [ ] Logical flow
|
||||
- [ ] Emotional resonance
|
||||
- [ ] Actionable insight
|
||||
- [ ] Platform-appropriate style
|
||||
|
||||
### Step 3: Generate Structured Critique
|
||||
|
||||
For each piece:
|
||||
|
||||
```markdown
|
||||
**Critic Notes:**
|
||||
|
||||
**Strengths:**
|
||||
- {Specific element that works, with reference}
|
||||
- {Second strength}
|
||||
- {Third strength}
|
||||
|
||||
**Weaknesses:**
|
||||
- {Specific issue with explanation}
|
||||
- {Second weakness and why it matters}
|
||||
- {Third weakness}
|
||||
|
||||
**Suggestions:**
|
||||
- {Concrete edit: "Change X to Y because..."}
|
||||
- {Second suggestion with specific line reference}
|
||||
- {Third suggestion}
|
||||
|
||||
**Verdict:** {✅ PASS or ❌ FAIL}
|
||||
```
|
||||
|
||||
### Step 4: Apply Pass/Fail Logic
|
||||
|
||||
**FAIL if ANY of these true**:
|
||||
- Total score < 20/30
|
||||
- Factually inaccurate
|
||||
- Hallucinated information
|
||||
- Gap Selling < 6/10 (problem unclear)
|
||||
- Decision Framework < 6/10 (weak hook or no value)
|
||||
|
||||
**PASS if ALL of these true**:
|
||||
- Total score ≥ 20/30
|
||||
- Factually accurate
|
||||
- All frameworks adequately addressed
|
||||
- Engagement potential present
|
||||
|
||||
### Step 5: Update content-drafts.md
|
||||
|
||||
Add critique section after scores for each variation.
|
||||
|
||||
## Validation Checklist
|
||||
|
||||
Before marking review complete:
|
||||
|
||||
- [ ] All scored content reviewed
|
||||
- [ ] Factual accuracy verified for each piece
|
||||
- [ ] Specific strengths identified (3 per piece)
|
||||
- [ ] Specific weaknesses identified (3 per piece)
|
||||
- [ ] Actionable suggestions provided (3 per piece)
|
||||
- [ ] Pass/Fail verdicts assigned
|
||||
- [ ] content-drafts.md updated with critiques
|
||||
|
||||
## Common Improvement Patterns
|
||||
|
||||
**If Gap Selling Low** (< 6/10):
|
||||
- Make problem more explicit
|
||||
- Increase emotional stakes
|
||||
- Strengthen future-state value
|
||||
|
||||
**If Bias Score Low** (< 5):
|
||||
- Add before/after structure (Contrast)
|
||||
- Include numbers/credentials (Authority)
|
||||
- Reference crowd behavior (Social Proof)
|
||||
- Give free value (Reciprocation)
|
||||
|
||||
**If Decision Framework Low** (< 6/10):
|
||||
- Strengthen opening hook
|
||||
- Add actionable insight
|
||||
- Make CTA explicit and low-friction
|
||||
|
||||
## Example Output
|
||||
|
||||
```
|
||||
✅ Critic Review Complete
|
||||
|
||||
Variations Reviewed: 25
|
||||
|
||||
Pass/Fail Distribution:
|
||||
- PASS: 21 pieces (84%)
|
||||
- FAIL: 4 pieces (16%)
|
||||
|
||||
Common Strengths:
|
||||
- Strong vulnerability/authenticity (18/25 pieces)
|
||||
- Effective contrast before/after structure (15/25 pieces)
|
||||
- Clear problem statements (20/25 pieces)
|
||||
|
||||
Common Weaknesses:
|
||||
- CTAs often philosophical rather than actionable (12/25 pieces)
|
||||
- Emotional stakes could be more vivid (8/25 pieces)
|
||||
- Some hooks predictable (6/25 pieces)
|
||||
|
||||
Top Recommendations:
|
||||
1. Convert philosophical CTAs to specific actions
|
||||
2. Amplify stakes language for emotional impact
|
||||
3. Test open-loop questions vs bold statements for hooks
|
||||
|
||||
Output File: content-drafts.md (updated with critiques)
|
||||
|
||||
Next Step: Run /content-select-best to choose top piece
|
||||
```
|
||||
|
||||
## Error Handling
|
||||
|
||||
**If critique seems subjective**:
|
||||
- Reference specific lines and concrete issues
|
||||
- Justify suggestions with framework principles
|
||||
- Avoid "I think" or "I feel" language
|
||||
|
||||
**If uncertain about factual accuracy**:
|
||||
- Cross-check against themes-memory.md source stories
|
||||
- Flag for user verification
|
||||
- Mark as uncertain rather than guessing
|
||||
|
||||
## Next Steps
|
||||
|
||||
After successful review:
|
||||
|
||||
1. Review critiques in content-drafts.md
|
||||
2. Run `/content-select-best` to select top piece
|
||||
3. Or continue with full pipeline if running `/content-full-pipeline`
|
||||
146
commands/content-extract-stories.md
Normal file
146
commands/content-extract-stories.md
Normal file
@@ -0,0 +1,146 @@
|
||||
---
|
||||
description: "Extract stories from Linear tasks and identify themes for content generation"
|
||||
---
|
||||
|
||||
# Extract Stories from Linear
|
||||
|
||||
## Mission
|
||||
|
||||
Connect to Linear, extract stories from as specified by user, identify recurring themes, and output structured theme data to `themes-memory.md`.
|
||||
|
||||
## Process
|
||||
|
||||
Follow the Story Extractor agent instructions (`agents/story-extractor.md`) to systematically:
|
||||
|
||||
1. **Connect to Linear MCP** and fetch task details
|
||||
2. **Analyze story content** for problems, insights, and emotional hooks
|
||||
3. **Identify recurring themes** (minimum 5)
|
||||
4. **Structure theme extraction** with all required sections
|
||||
5. **Write to themes-memory.md** in poasting repository
|
||||
6. **Update Linear tasks** with extraction confirmation
|
||||
|
||||
## Execution Steps
|
||||
|
||||
### Step 1: Verify Prerequisites
|
||||
|
||||
Check that required tools are available:
|
||||
|
||||
- [ ] Linear MCP installed and configured
|
||||
- [ ] LINEAR_API_KEY set in .env file
|
||||
- [ ] themes-memory.md path accessible: `./poasting/themes-memory.md`
|
||||
|
||||
### Step 2: Fetch Stories from Linear
|
||||
|
||||
Use Linear MCP commands to retrieve tasks POA-5 through POA-14:
|
||||
|
||||
```javascript
|
||||
// List all target issues
|
||||
mcp__linear__list_issues({
|
||||
"team": "YOUR_TEAM_ID",
|
||||
"filter": {
|
||||
"id": {
|
||||
"in": ["POA-{X}", "POA-{Y}"]
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
// For each task, get full details including comments
|
||||
mcp__linear__get_issue({
|
||||
"id": "POA-X",
|
||||
"include_comments": true
|
||||
})
|
||||
```
|
||||
|
||||
**Rate Limit**: 100 requests/minute. Batch requests when possible.
|
||||
|
||||
### Step 3: Extract and Structure Themes
|
||||
|
||||
For each identified theme, create structured output with:
|
||||
|
||||
- Theme name
|
||||
- Source task IDs
|
||||
- Problem statement
|
||||
- Emotional hook
|
||||
- Key insight
|
||||
- 5 content angles (Bold, Story, Problem-Solution, Data, Emotional)
|
||||
- Source story excerpt
|
||||
|
||||
**Minimum Output**: 5 distinct themes
|
||||
|
||||
### Step 4: Write to themes-memory.md
|
||||
|
||||
**Location**: `./poasting/themes-memory.md`
|
||||
|
||||
**Action**:
|
||||
- If file doesn't exist, create with header
|
||||
- If file exists, APPEND new themes (preserve existing)
|
||||
- Add extraction metadata timestamp
|
||||
|
||||
### Step 5: Update Linear Tasks
|
||||
|
||||
Add confirmation comment to each processed task:
|
||||
|
||||
```
|
||||
✅ Theme extracted: {Theme Name}
|
||||
Extracted to themes-memory.md on {YYYY-MM-DD}
|
||||
```
|
||||
|
||||
## Validation Checklist
|
||||
|
||||
Before marking extraction complete:
|
||||
|
||||
- [ ] Minimum 5 themes extracted
|
||||
- [ ] Each theme has all required sections
|
||||
- [ ] Themes are distinct (>70% different)
|
||||
- [ ] Source stories quoted accurately
|
||||
- [ ] themes-memory.md written successfully
|
||||
- [ ] Linear tasks updated with confirmations
|
||||
- [ ] No hallucinated information
|
||||
- [ ] Emotional authenticity preserved
|
||||
|
||||
## Example Output
|
||||
|
||||
```
|
||||
✅ Story Extraction Complete
|
||||
|
||||
Themes Extracted: n
|
||||
Source Tasks: POA-X to POA-Y
|
||||
Output File: themes-memory.md
|
||||
|
||||
Themes Identified:
|
||||
1. First Money From Code (POA-5, POA-8)
|
||||
2. Personal Pain → Product (POA-6, POA-9, POA-12)
|
||||
3. Learning Intensity vs Environment (POA-7, POA-10)
|
||||
4. Affordable Loss Decision Making (POA-5, POA-11)
|
||||
5. The Quit Day (POA-5, POA-13)
|
||||
6. Family-Influenced Products (POA-6, POA-14)
|
||||
7. Creative Reactivation After Engineering (POA-8, POA-10)
|
||||
|
||||
Linear tasks updated with extraction confirmations.
|
||||
Ready for content generation: /content-generate-drafts {theme}
|
||||
```
|
||||
|
||||
## Error Handling
|
||||
|
||||
**If Linear MCP fails**:
|
||||
- Check .env for LINEAR_API_KEY
|
||||
- Verify Linear MCP installation
|
||||
- Confirm team ID is correct
|
||||
|
||||
**If rate limit hit**:
|
||||
- Batch remaining requests
|
||||
- Wait 60 seconds before retry
|
||||
|
||||
**If stories are sparse**:
|
||||
- Extract what's available
|
||||
- Flag for user follow-up in Linear comment
|
||||
|
||||
## Next Steps
|
||||
|
||||
After successful extraction:
|
||||
|
||||
1. Review themes in themes-memory.md
|
||||
2. Select theme for content generation
|
||||
3. Run `/content-generate-drafts {theme-name}` to create variations
|
||||
|
||||
**Or run full pipeline**: `/content-full-pipeline` to execute all stages end-to-end
|
||||
493
commands/content-full-pipeline.md
Normal file
493
commands/content-full-pipeline.md
Normal file
@@ -0,0 +1,493 @@
|
||||
---
|
||||
description: "Execute end-to-end content generation pipeline from Linear stories to ready-to-post content"
|
||||
---
|
||||
|
||||
# Full Content Generation Pipeline
|
||||
|
||||
## Mission
|
||||
|
||||
Execute the complete content generation workflow end-to-end: Extract stories from Linear → Generate variations → Score all → Critic review → Select best → Output ONE ready-to-post piece.
|
||||
|
||||
## Overview
|
||||
|
||||
This command orchestrates all 5 stages of the content generation system:
|
||||
|
||||
1. **Story Extraction** (`/content-extract-stories`)
|
||||
2. **Draft Generation** (`/content-generate-drafts` for each theme)
|
||||
3. **Automated Scoring** (`/content-score-all`)
|
||||
4. **Critic Review** (`/content-critic-review`)
|
||||
5. **Best Selection** (`/content-select-best`)
|
||||
|
||||
**Expected Output**: ONE piece in `content-ready.md` scoring 25+/30, ready for human approval and posting.
|
||||
|
||||
**Expected Duration**: < 3 minutes for 5 themes → 25 variations → 1 selected piece
|
||||
|
||||
## Process
|
||||
|
||||
### Stage 1: Story Extraction
|
||||
|
||||
**Command**: `/content-extract-stories`
|
||||
|
||||
**Actions**:
|
||||
- Connect to Linear MCP
|
||||
- Fetch tasks POA-X through POA-Y
|
||||
- Analyze story content and identify themes
|
||||
- Extract minimum 5 distinct themes
|
||||
- Write to `themes-memory.md`
|
||||
- Update Linear tasks with extraction confirmations
|
||||
|
||||
**Success Criteria**:
|
||||
- [ ] Minimum 5 themes extracted
|
||||
- [ ] themes-memory.md populated with structured themes
|
||||
- [ ] Linear tasks updated with confirmation comments
|
||||
- [ ] No hallucinated information
|
||||
|
||||
**Failure Handling**:
|
||||
- If Linear MCP fails: Check .env for LINEAR_API_KEY, verify MCP installation
|
||||
- If < 5 themes: Alert user, proceed with available themes
|
||||
- If rate limit hit: Batch requests, wait 60s, retry
|
||||
|
||||
**Stage Output**: `themes-memory.md` with 5+ themes
|
||||
|
||||
---
|
||||
|
||||
### Stage 2: Draft Generation
|
||||
|
||||
**Command**: `/content-generate-drafts {theme}` for EACH theme
|
||||
|
||||
**Actions**:
|
||||
- For each theme in themes-memory.md:
|
||||
- Spawn 5 parallel Draft Generator sub-agents
|
||||
- Each sub-agent targets DIFFERENT bias combinations:
|
||||
- Bold Statement (Contrast, Authority)
|
||||
- Story Hook (Curiosity, Liking)
|
||||
- Problem-Solution (Social Proof, Reciprocation)
|
||||
- Data-Driven (Authority, Reason-Respecting)
|
||||
- Emotional (Liking, Stress-Influence, Lollapalooza)
|
||||
- Generate 5 unique variations per theme
|
||||
- Write to `content-drafts.md`
|
||||
|
||||
**Success Criteria**:
|
||||
- [ ] 5 variations per theme (25 total for 5 themes)
|
||||
- [ ] Each variation >70% different from others
|
||||
- [ ] All variations follow Hook-Content-CTA structure
|
||||
- [ ] Bias targeting explicit and diverse
|
||||
|
||||
**Failure Handling**:
|
||||
- If variation count < 5 per theme: Regenerate missing variations
|
||||
- If similarity > 30% between variations: Regenerate duplicates
|
||||
- If bias targeting unclear: Review draft-generator.md specs
|
||||
|
||||
**Stage Output**: `content-drafts.md` with 25 variations (5 themes × 5 variations)
|
||||
|
||||
---
|
||||
|
||||
### Stage 3: Automated Scoring
|
||||
|
||||
**Command**: `/content-score-all`
|
||||
|
||||
**Actions**:
|
||||
- Read all variations from content-drafts.md
|
||||
- Apply 3-framework scoring to each:
|
||||
- **Gap Selling** (0-10): Problem clarity + Impact + Solution value
|
||||
- **Cognitive Biases** (count): Activated biases + Lollapalooza bonus
|
||||
- **Decision Framework** (0-10): Hook strength + Content value + CTA clarity
|
||||
- Calculate total score (Gap + Biases + Decision = XX/30)
|
||||
- Update content-drafts.md with complete score breakdowns
|
||||
|
||||
**Success Criteria**:
|
||||
- [ ] All 25 variations scored
|
||||
- [ ] Score breakdowns complete (subscore details)
|
||||
- [ ] Minimum 80% of content scores 20+/30
|
||||
- [ ] Total scores calculated correctly
|
||||
|
||||
**Failure Handling**:
|
||||
- If < 50% score 20+/30: Alert quality issue, consider regenerating
|
||||
- If scoring formulas inconsistent: Review scorer.md rubrics
|
||||
- If subscore missing: Re-run scoring for affected variations
|
||||
|
||||
**Stage Output**: `content-drafts.md` with complete scores for all variations
|
||||
|
||||
---
|
||||
|
||||
### Stage 4: Critic Review
|
||||
|
||||
**Command**: `/content-critic-review`
|
||||
|
||||
**Actions**:
|
||||
- Review all variations scoring 15+/30
|
||||
- Provide specific improvement suggestions
|
||||
- Verify factual accuracy against Linear stories
|
||||
- Assign ✅ PASS or ❌ FAIL verdict
|
||||
- Filter out < 20/30 pieces
|
||||
- Update content-drafts.md with critic notes
|
||||
|
||||
**Success Criteria**:
|
||||
- [ ] All 20+/30 variations reviewed
|
||||
- [ ] Critic notes complete (Strengths, Weaknesses, Suggestions)
|
||||
- [ ] PASS/FAIL verdicts assigned
|
||||
- [ ] Factual accuracy verified (no hallucinations)
|
||||
|
||||
**Failure Handling**:
|
||||
- If no PASS content: Alert pipeline failure, regenerate with constraints
|
||||
- If factual inaccuracies found: Flag for correction, re-verify
|
||||
- If critic notes missing: Re-run review for affected variations
|
||||
|
||||
**Stage Output**: `content-drafts.md` with critic verdicts and notes
|
||||
|
||||
---
|
||||
|
||||
### Stage 5: Best Selection
|
||||
|
||||
**Command**: `/content-select-best`
|
||||
|
||||
**Actions**:
|
||||
- Filter for PASS content (20+/30 scores)
|
||||
- Rank by total score (descending)
|
||||
- Apply tie-breaker rules if needed:
|
||||
1. Gap Selling subscore
|
||||
2. Hook strength
|
||||
3. Lollapalooza effect (5+ biases)
|
||||
4. Bias diversity
|
||||
5. Theme novelty
|
||||
6. Human judgment flag
|
||||
- Validate selection against quality gates
|
||||
- Format for content-ready.md with posting instructions
|
||||
- Document top 3 runner-ups
|
||||
|
||||
**Success Criteria**:
|
||||
- [ ] ONE piece selected (not zero, not multiple)
|
||||
- [ ] Selected piece scores 20+/30 (ideally 25+/30)
|
||||
- [ ] content-ready.md overwritten with formatted output
|
||||
- [ ] Posting instructions included
|
||||
- [ ] Runner-ups documented
|
||||
|
||||
**Failure Handling**:
|
||||
- If no PASS content: STOP pipeline, alert user
|
||||
- If tie-breakers don't resolve: Flag for human decision
|
||||
- If content-ready.md already full: Prompt to archive or overwrite
|
||||
|
||||
**Stage Output**: `content-ready.md` with ONE ready-to-post piece
|
||||
|
||||
---
|
||||
|
||||
## Execution Flow
|
||||
|
||||
```
|
||||
START
|
||||
↓
|
||||
[Stage 1: Extract Stories]
|
||||
├─ Linear MCP → POA-5 to POA-14
|
||||
├─ Identify themes (min 5)
|
||||
└─ Output: themes-memory.md
|
||||
↓
|
||||
[Stage 2: Generate Drafts]
|
||||
├─ For each theme (5 themes):
|
||||
│ ├─ Spawn 5 parallel sub-agents
|
||||
│ ├─ Generate 5 variations (different bias combos)
|
||||
│ └─ Total: 25 variations
|
||||
└─ Output: content-drafts.md
|
||||
↓
|
||||
[Stage 3: Score All]
|
||||
├─ Apply Gap Selling (0-10)
|
||||
├─ Count Cognitive Biases
|
||||
├─ Apply Decision Framework (0-10)
|
||||
└─ Output: content-drafts.md with scores
|
||||
↓
|
||||
[Stage 4: Critic Review]
|
||||
├─ Review 20+/30 content
|
||||
├─ Provide improvement suggestions
|
||||
├─ Assign PASS/FAIL verdicts
|
||||
└─ Output: content-drafts.md with critic notes
|
||||
↓
|
||||
[Stage 5: Select Best]
|
||||
├─ Rank PASS content
|
||||
├─ Apply tie-breakers
|
||||
├─ Validate selection
|
||||
└─ Output: content-ready.md (ONE piece)
|
||||
↓
|
||||
[Human Approval Required]
|
||||
├─ Review content-ready.md
|
||||
├─ Post to Twitter/X
|
||||
└─ Capture metrics after 48 hours
|
||||
↓
|
||||
END
|
||||
```
|
||||
|
||||
## Pre-Execution Checklist
|
||||
|
||||
Before running full pipeline, verify:
|
||||
|
||||
**Infrastructure**:
|
||||
- [ ] Linear MCP installed and configured
|
||||
- [ ] LINEAR_API_KEY set in .env file
|
||||
- [ ] All framework docs accessible (gap_selling.md, bias_checklist_munger.md, effective-decision-making-framework.md)
|
||||
- [ ] File paths correct (themes-memory.md, content-drafts.md, content-ready.md)
|
||||
|
||||
**Content Readiness**:
|
||||
- [ ] Linear tasks POA-5 to POA-14 have story content
|
||||
- [ ] Stories contain sufficient detail for theme extraction
|
||||
- [ ] content-ready.md is clear (or content archived to content-posted.md)
|
||||
|
||||
**System Resources**:
|
||||
- [ ] Network connectivity stable (for Linear API calls)
|
||||
- [ ] Sufficient API quota (Linear rate limit: 100 req/min)
|
||||
- [ ] Execution environment ready (no blocking processes)
|
||||
|
||||
## Validation Checkpoints
|
||||
|
||||
### After Stage 1 (Story Extraction)
|
||||
```bash
|
||||
# Verify themes extracted
|
||||
grep -c "## Theme:" /home/rpiplewar/fast_dot_ai/poasting/themes-memory.md
|
||||
# Should be >= 5
|
||||
```
|
||||
|
||||
### After Stage 2 (Draft Generation)
|
||||
```bash
|
||||
# Verify variations generated
|
||||
grep -c "### Variation" /home/rpiplewar/fast_dot_ai/poasting/content-drafts.md
|
||||
# Should be >= 25 (5 themes × 5 variations)
|
||||
```
|
||||
|
||||
### After Stage 3 (Automated Scoring)
|
||||
```bash
|
||||
# Verify scores added
|
||||
grep -c "TOTAL:" /home/rpiplewar/fast_dot_ai/poasting/content-drafts.md
|
||||
# Should match variation count
|
||||
```
|
||||
|
||||
### After Stage 4 (Critic Review)
|
||||
```bash
|
||||
# Verify verdicts assigned
|
||||
grep -c "Verdict: PASS\|FAIL" /home/rpiplewar/fast_dot_ai/poasting/content-drafts.md
|
||||
# Should match variations with 15+/30 scores
|
||||
```
|
||||
|
||||
### After Stage 5 (Best Selection)
|
||||
```bash
|
||||
# Verify single piece selected
|
||||
grep -c "# Content Ready to Post" /home/rpiplewar/fast_dot_ai/poasting/content-ready.md
|
||||
# Should be exactly 1
|
||||
```
|
||||
|
||||
## Error Handling & Recovery
|
||||
|
||||
### Pipeline Failure Scenarios
|
||||
|
||||
**Stage 1 Failure (Story Extraction)**:
|
||||
```
|
||||
❌ Stage 1 Failed: Could not extract stories from Linear
|
||||
|
||||
Possible Causes:
|
||||
- Linear MCP not configured
|
||||
- LINEAR_API_KEY missing or invalid
|
||||
- Network connectivity issues
|
||||
- Tasks POA-5 to POA-14 not accessible
|
||||
|
||||
Recovery:
|
||||
1. Check .env file for LINEAR_API_KEY
|
||||
2. Verify Linear MCP installation: mcp__linear__list_issues test
|
||||
3. Confirm network connectivity
|
||||
4. Retry: /content-extract-stories
|
||||
|
||||
Pipeline STOPPED at Stage 1. Fix issues before retrying full pipeline.
|
||||
```
|
||||
|
||||
**Stage 2 Failure (Draft Generation)**:
|
||||
```
|
||||
❌ Stage 2 Failed: Insufficient variations generated
|
||||
|
||||
Possible Causes:
|
||||
- Theme quality low (not enough content generation potential)
|
||||
- Draft generator specs unclear
|
||||
- Agent spawning failed
|
||||
|
||||
Recovery:
|
||||
1. Review themes in themes-memory.md for clarity
|
||||
2. Manually run: /content-generate-drafts {theme} for each theme
|
||||
3. Verify draft-generator.md agent specs
|
||||
4. Check for variation diversity (>70% different)
|
||||
|
||||
Pipeline STOPPED at Stage 2. Complete draft generation before continuing.
|
||||
```
|
||||
|
||||
**Stage 3 Failure (Automated Scoring)**:
|
||||
```
|
||||
❌ Stage 3 Failed: Scoring incomplete or inconsistent
|
||||
|
||||
Possible Causes:
|
||||
- Framework docs inaccessible
|
||||
- Scoring formulas incorrect
|
||||
- Subscore calculation errors
|
||||
|
||||
Recovery:
|
||||
1. Verify framework docs accessible (gap_selling.md, bias_checklist_munger.md, effective-decision-making-framework.md)
|
||||
2. Review scorer.md agent specs
|
||||
3. Manually run: /content-score-all
|
||||
4. Compare sample scores vs manual evaluation
|
||||
|
||||
Pipeline STOPPED at Stage 3. Complete scoring before continuing.
|
||||
```
|
||||
|
||||
**Stage 4 Failure (Critic Review)**:
|
||||
```
|
||||
❌ Stage 4 Failed: No PASS content after critic review
|
||||
|
||||
Possible Causes:
|
||||
- Content quality below 20/30 threshold
|
||||
- Critic too harsh (scoring too low)
|
||||
- Theme selection poor
|
||||
|
||||
Recovery:
|
||||
1. Review content-drafts.md scores (check if consistently low)
|
||||
2. If scores 15-19/30: Adjust scoring weights in scorer.md
|
||||
3. If scores < 15/30: Regenerate content with stronger constraints
|
||||
4. Consider revising themes for better content potential
|
||||
|
||||
Pipeline STOPPED at Stage 4. Fix quality issues before continuing.
|
||||
```
|
||||
|
||||
**Stage 5 Failure (Best Selection)**:
|
||||
```
|
||||
❌ Stage 5 Failed: No content available for selection
|
||||
|
||||
Possible Causes:
|
||||
- No PASS content from Stage 4
|
||||
- All content < 20/30 threshold
|
||||
- Selection criteria too strict
|
||||
|
||||
Recovery:
|
||||
1. Review Critic verdicts in content-drafts.md
|
||||
2. If close to threshold (18-19/30): Consider relaxing to 18+/30 minimum
|
||||
3. If far below threshold: Regenerate content from Stage 2
|
||||
4. Review theme quality and bias targeting
|
||||
|
||||
Pipeline STOPPED at Stage 5. Fix quality issues or regenerate content.
|
||||
```
|
||||
|
||||
### Partial Pipeline Recovery
|
||||
|
||||
**If pipeline stopped at Stage X**, resume from that stage:
|
||||
|
||||
```bash
|
||||
# Resume from Stage 2 (Draft Generation)
|
||||
/content-generate-drafts {theme} # For each remaining theme
|
||||
|
||||
# Resume from Stage 3 (Automated Scoring)
|
||||
/content-score-all
|
||||
|
||||
# Resume from Stage 4 (Critic Review)
|
||||
/content-critic-review
|
||||
|
||||
# Resume from Stage 5 (Best Selection)
|
||||
/content-select-best
|
||||
```
|
||||
|
||||
**No need to re-run completed stages** - pipeline is idempotent at each stage.
|
||||
|
||||
## Success Output
|
||||
|
||||
```
|
||||
✅ Full Content Generation Pipeline Complete
|
||||
|
||||
⏱️ Execution Time: 2m 34s
|
||||
|
||||
📊 Pipeline Stats:
|
||||
- Themes Extracted: 7
|
||||
- Variations Generated: 35 (7 themes × 5 variations)
|
||||
- Content Scored: 35/35
|
||||
- PASS Content: 24/35 (68.6%)
|
||||
- FAIL Content: 11/35 (31.4%)
|
||||
|
||||
🏆 Best Content Selected:
|
||||
- Theme: First Money From Code
|
||||
- Variation: Bold Statement
|
||||
- Score: 28/30 (EXCELLENT)
|
||||
- Ranking: #1 of 24 PASS pieces
|
||||
|
||||
📁 Output Files Updated:
|
||||
✓ themes-memory.md (7 themes)
|
||||
✓ content-drafts.md (35 variations with scores)
|
||||
✓ content-ready.md (1 ready-to-post piece)
|
||||
|
||||
📋 Next Steps:
|
||||
1. Review content-ready.md
|
||||
2. Perform final quality check
|
||||
3. Post to Twitter/X at optimal time (8:30 AM or 5:30 PM IST)
|
||||
4. Capture metrics after 48 hours
|
||||
5. Move to content-posted.md with metrics
|
||||
|
||||
🚀 Ready for human review and posting!
|
||||
```
|
||||
|
||||
## Performance Metrics
|
||||
|
||||
**Target Benchmarks**:
|
||||
- Execution Time: < 3 minutes
|
||||
- Themes Extracted: ≥ 5
|
||||
- Variations Generated: ≥ 25 (5 themes × 5 variations)
|
||||
- PASS Content: ≥ 80% (20/25)
|
||||
- Selected Score: ≥ 25/30 (ideally 27+/30)
|
||||
|
||||
**Quality Thresholds**:
|
||||
- < 50% PASS content: Quality issue, regenerate with constraints
|
||||
- Selected score < 23/30: Consider regenerating or improving themes
|
||||
- Selected score ≥ 28/30: Excellent, high viral potential
|
||||
|
||||
## Integration Notes
|
||||
|
||||
This command represents the complete automated content generation system. It requires:
|
||||
- All 6 agent instruction documents (agents/*.md)
|
||||
- All 5 individual stage commands (commands/content-*.md)
|
||||
- Linear MCP integration
|
||||
- All 3 framework docs (docs/frameworks/*.md)
|
||||
|
||||
After execution, human approval is required before posting. Performance tracking begins after posting to content-posted.md.
|
||||
|
||||
## Advanced Options
|
||||
|
||||
**Regenerate Pipeline with Filters**:
|
||||
```bash
|
||||
# Regenerate specific theme only
|
||||
/content-generate-drafts "First Money From Code"
|
||||
/content-score-all
|
||||
/content-critic-review
|
||||
/content-select-best
|
||||
|
||||
# Regenerate with stronger bias constraints
|
||||
# (Modify draft-generator.md to require 5+ biases per variation)
|
||||
/content-full-pipeline
|
||||
|
||||
# Test pipeline without Linear extraction (use existing themes)
|
||||
# Skip Stage 1, start from Stage 2
|
||||
```
|
||||
|
||||
**Performance Optimization**:
|
||||
- Parallel theme processing: Spawn all theme agents simultaneously
|
||||
- Batch Linear API calls: Group requests to avoid rate limits
|
||||
- Cache framework docs: Load once, reuse across agents
|
||||
- Incremental updates: Only re-score modified variations
|
||||
|
||||
## CRITICAL RULES
|
||||
|
||||
1. **No File Proliferation**: Use ONLY 4 pipeline files (themes-memory.md, content-drafts.md, content-ready.md, content-posted.md)
|
||||
2. **ONE Piece in content-ready.md**: Always exactly ONE, never zero or multiple
|
||||
3. **Minimum Score Threshold**: 20+/30 to PASS, ideally 25+/30 for selection
|
||||
4. **No Hallucination**: All content must be traceable to Linear stories
|
||||
5. **Framework Completeness**: All 3 frameworks applied to every variation
|
||||
6. **Human Approval Required**: Never auto-post, always require review
|
||||
|
||||
## Validation Checklist
|
||||
|
||||
Before marking pipeline complete:
|
||||
|
||||
- [ ] All 5 stages completed successfully
|
||||
- [ ] themes-memory.md has ≥5 themes
|
||||
- [ ] content-drafts.md has ≥25 variations with complete scores
|
||||
- [ ] content-ready.md has EXACTLY ONE piece scoring 20+/30
|
||||
- [ ] Execution time < 3 minutes
|
||||
- [ ] No file proliferation (only 4 pipeline files used)
|
||||
- [ ] Linear tasks updated with extraction confirmations
|
||||
- [ ] No hallucinated information in any stage
|
||||
- [ ] Human approval workflow clear
|
||||
157
commands/content-generate-drafts.md
Normal file
157
commands/content-generate-drafts.md
Normal file
@@ -0,0 +1,157 @@
|
||||
---
|
||||
description: "Generate 5 content variations for a theme using parallel multi-agent approach"
|
||||
---
|
||||
|
||||
# Generate Content Drafts
|
||||
|
||||
## Arguments
|
||||
|
||||
`$ARGUMENTS` - Theme name from themes-memory.md
|
||||
|
||||
## Mission
|
||||
|
||||
Generate 5 unique content variations for the specified theme by spawning 5 parallel sub-agents, each targeting different cognitive bias combinations and content structures.
|
||||
|
||||
## Process
|
||||
|
||||
Follow the Draft Generator agent instructions (`agents/draft-generator.md`) to:
|
||||
|
||||
1. **Read theme details** from themes-memory.md
|
||||
2. **Spawn 5 parallel sub-agents** (CRITICAL: simultaneous, not sequential)
|
||||
3. **Collect sub-agent outputs** (5 variations)
|
||||
4. **Write to content-drafts.md** with proper formatting
|
||||
|
||||
## Execution Steps
|
||||
|
||||
### Step 1: Read Theme from themes-memory.md
|
||||
|
||||
**Target Theme**: $ARGUMENTS
|
||||
|
||||
**Extract**:
|
||||
- Theme name and problem statement
|
||||
- Emotional hook and key insight
|
||||
- All 5 content angles
|
||||
- Source story excerpts
|
||||
|
||||
**If theme not found**: List available themes and ask user to retry with correct name.
|
||||
|
||||
### Step 2: Spawn 5 Parallel Sub-Agents
|
||||
|
||||
**CRITICAL**: Use single message with 5 Task tool calls to spawn all sub-agents simultaneously.
|
||||
|
||||
Each sub-agent receives self-contained prompt with:
|
||||
- Full theme details
|
||||
- Specific bias activation strategy
|
||||
- Content structure requirements
|
||||
- Hook-Content-CTA framework
|
||||
- Character limits (280 single or 4-6 tweet thread)
|
||||
|
||||
**Sub-Agent Assignments**:
|
||||
|
||||
1. **Bold Statement Generator**
|
||||
- Biases: Contrast-Misreaction + Authority-Misinfluence
|
||||
- Structure: Shocking opening → Contrast → Authority evidence → CTA
|
||||
|
||||
2. **Story Hook Generator**
|
||||
- Biases: Curiosity Tendency + Liking/Loving Tendency
|
||||
- Structure: Open-loop question → Personal story → Vulnerability → Resolution
|
||||
|
||||
3. **Problem-Solution Generator**
|
||||
- Biases: Social-Proof + Reciprocation + Reward/Punishment
|
||||
- Structure: Problem statement → Social proof → Solution value → Free insight
|
||||
|
||||
4. **Data-Driven Generator**
|
||||
- Biases: Authority + Reason-Respecting + Availability-Misweighing
|
||||
- Structure: Surprising stat → Reasoning → Concrete example → Implication
|
||||
|
||||
5. **Emotional Lollapalooza Generator**
|
||||
- Biases: Liking + Stress-Influence + 5+ biases converging
|
||||
- Structure: Emotional hook → Stress creation → Relief → Multi-bias activation
|
||||
|
||||
### Step 3: Quality Check Each Variation
|
||||
|
||||
Verify:
|
||||
- [ ] Content factually accurate (matches source stories)
|
||||
- [ ] Target biases clearly activated
|
||||
- [ ] Structure follows assigned format
|
||||
- [ ] Character limits respected
|
||||
- [ ] No meta-commentary (pure content)
|
||||
|
||||
### Step 4: Write to content-drafts.md
|
||||
|
||||
**Location**: `/home/rpiplewar/fast_dot_ai/poasting/content-drafts.md`
|
||||
|
||||
**Format**:
|
||||
```markdown
|
||||
## Theme: {Theme Name}
|
||||
**Source:** {Linear Task ID}
|
||||
|
||||
### Variation 1: Bold Statement
|
||||
**Content:**
|
||||
{Generated content}
|
||||
|
||||
**Biases Targeted:** Contrast-Misreaction, Authority-Misinfluence
|
||||
|
||||
**Scores:**
|
||||
[To be filled by Scorer agent]
|
||||
|
||||
---
|
||||
|
||||
### Variation 2: Story Hook
|
||||
...
|
||||
```
|
||||
|
||||
**Action**: APPEND to file (don't overwrite existing content from other themes)
|
||||
|
||||
## Validation Checklist
|
||||
|
||||
Before marking generation complete:
|
||||
|
||||
- [ ] All 5 variations generated
|
||||
- [ ] Each variation targets DIFFERENT bias combinations
|
||||
- [ ] All content factually accurate
|
||||
- [ ] Variations >70% structurally different
|
||||
- [ ] content-drafts.md updated successfully
|
||||
- [ ] No meta-commentary in output
|
||||
- [ ] Character limits respected
|
||||
- [ ] Hook-Content-CTA structure followed
|
||||
|
||||
## Example Output
|
||||
|
||||
```
|
||||
✅ Draft Generation Complete
|
||||
|
||||
Theme: First Money From Code
|
||||
Variations Generated: 5
|
||||
|
||||
1. Bold Statement (Contrast + Authority)
|
||||
2. Story Hook (Curiosity + Liking)
|
||||
3. Problem-Solution (Social Proof + Reciprocation)
|
||||
4. Data-Driven (Authority + Reason-Respecting)
|
||||
5. Emotional Lollapalooza (6 biases)
|
||||
|
||||
Output File: content-drafts.md
|
||||
|
||||
Next Step: Run /content-score-all to apply framework scoring
|
||||
```
|
||||
|
||||
## Error Handling
|
||||
|
||||
**If theme not found**:
|
||||
- List available themes from themes-memory.md
|
||||
- Ask user to specify correct theme name
|
||||
|
||||
**If sub-agent fails**:
|
||||
- Retry that specific sub-agent only
|
||||
- Don't re-run all 5
|
||||
|
||||
**If variations too similar**:
|
||||
- Regenerate similar variation with stronger bias differentiation
|
||||
|
||||
## Next Steps
|
||||
|
||||
After successful generation:
|
||||
|
||||
1. Review variations in content-drafts.md
|
||||
2. Run `/content-score-all` to apply automated scoring
|
||||
3. Or continue with full pipeline if running `/content-full-pipeline`
|
||||
136
commands/content-score-all.md
Normal file
136
commands/content-score-all.md
Normal file
@@ -0,0 +1,136 @@
|
||||
---
|
||||
description: "Apply automated 3-framework scoring to all content variations"
|
||||
---
|
||||
|
||||
# Score All Content Variations
|
||||
|
||||
## Mission
|
||||
|
||||
Apply automated framework-based scoring (Gap Selling + Munger Biases + Decision Framework) to all content variations in content-drafts.md, calculating total scores with detailed breakdowns.
|
||||
|
||||
## Process
|
||||
|
||||
Follow the Scorer agent instructions (`agents/scorer.md`) to:
|
||||
|
||||
1. **Read all content variations** from content-drafts.md
|
||||
2. **Apply 3-framework scoring** with mathematical formulas
|
||||
3. **Calculate total scores** (out of 30)
|
||||
4. **Update content-drafts.md** with complete score breakdowns
|
||||
|
||||
## Execution Steps
|
||||
|
||||
### Step 1: Read Content from content-drafts.md
|
||||
|
||||
**Location**: `/home/rpiplewar/fast_dot_ai/poasting/content-drafts.md`
|
||||
|
||||
**Identify**:
|
||||
- All content variations awaiting scoring
|
||||
- Look for `[To be filled by Scorer agent]` placeholders
|
||||
- Extract content text and bias targeting info
|
||||
|
||||
### Step 2: Score Each Variation
|
||||
|
||||
**For each content piece, calculate**:
|
||||
|
||||
#### Framework 1: Gap Selling (0-10 points)
|
||||
- **Problem Clarity** (0-3): Is problem explicit and relatable?
|
||||
- **Emotional Impact** (0-3): Is pain point vivid and resonant?
|
||||
- **Solution Value** (0-4): Is future state compelling and actionable?
|
||||
|
||||
#### Framework 2: Cognitive Biases (0-10+ points)
|
||||
- **Count activated biases** from Munger's 25
|
||||
- **Lollapalooza bonus**: +2 if 5+ biases converge
|
||||
- **List specific biases** detected
|
||||
|
||||
#### Framework 3: Decision Framework (0-10 points)
|
||||
- **Hook Strength** (0-3): Does first line grab attention?
|
||||
- **Content Value** (0-4): Are insights actionable and transferable?
|
||||
- **CTA Clarity** (0-3): Is next step crystal clear?
|
||||
|
||||
**Total Score = Gap (0-10) + Biases (0-10+) + Decision (0-10)**
|
||||
|
||||
### Step 3: Assign Pass/Fail Verdict
|
||||
|
||||
**Quality Thresholds**:
|
||||
- **< 20**: ❌ FAIL (filter out)
|
||||
- **20-24**: ✅ PASS (needs improvement)
|
||||
- **25-27**: ✅ PASS (GOOD)
|
||||
- **28-30**: ✅ PASS (EXCELLENT)
|
||||
|
||||
### Step 4: Update content-drafts.md
|
||||
|
||||
**Replace** `[To be filled by Scorer agent]` with:
|
||||
|
||||
```markdown
|
||||
**Scores:**
|
||||
- Gap Selling: X/10 (Problem: X/3, Impact: X/3, Solution: X/4)
|
||||
- Biases Activated: Y (List: Bias1, Bias2, Bias3...)
|
||||
- Decision Framework: Z/10 (Hook: X/3, Value: X/4, CTA: X/3)
|
||||
- **TOTAL: XX/30** {✅ PASS or ❌ FAIL}
|
||||
```
|
||||
|
||||
## Validation Checklist
|
||||
|
||||
Before marking scoring complete:
|
||||
|
||||
- [ ] All variations scored
|
||||
- [ ] All subscores documented with reasoning
|
||||
- [ ] Bias lists include specific bias names (not just count)
|
||||
- [ ] Lollapalooza bonus applied where applicable (5+ biases)
|
||||
- [ ] Pass/Fail verdicts assigned (< 20 = FAIL, ≥ 20 = PASS)
|
||||
- [ ] content-drafts.md updated with complete scores
|
||||
- [ ] Scoring formulas followed exactly per scorer.md
|
||||
|
||||
## Example Output
|
||||
|
||||
```
|
||||
✅ Scoring Complete
|
||||
|
||||
Variations Scored: 25 (5 themes × 5 variations)
|
||||
|
||||
Score Distribution:
|
||||
- EXCELLENT (28-30): 3 pieces
|
||||
- GOOD (25-27): 8 pieces
|
||||
- PASS (20-24): 10 pieces
|
||||
- FAIL (< 20): 4 pieces
|
||||
|
||||
Pass Rate: 84% (21/25)
|
||||
|
||||
Highest Scoring:
|
||||
1. Theme: First Money From Code, Variation 1 (Bold Statement) - 28/30
|
||||
2. Theme: The Quit Day, Variation 5 (Lollapalooza) - 27/30
|
||||
3. Theme: Personal Pain → Product, Variation 2 (Story Hook) - 26/30
|
||||
|
||||
Output File: content-drafts.md (updated with all scores)
|
||||
|
||||
Next Step: Run /content-critic-review for quality feedback
|
||||
```
|
||||
|
||||
## Error Handling
|
||||
|
||||
**If scoring logic unclear**:
|
||||
- Refer to detailed rubrics in `agents/scorer.md`
|
||||
- Use examples as reference
|
||||
- Document edge cases for future refinement
|
||||
|
||||
**If scores seem inaccurate**:
|
||||
- Cross-check against manual evaluation
|
||||
- Verify detection patterns
|
||||
- Adjust formulas if systematic drift detected
|
||||
|
||||
## Accuracy Targets
|
||||
|
||||
**Goal**: Within ±2 points (10% margin) of manual expert evaluation
|
||||
|
||||
**If accuracy drifts**:
|
||||
- Review scoring logic against actual performance
|
||||
- Adjust detection patterns
|
||||
- Document refinements in scorer.md
|
||||
|
||||
## Next Steps
|
||||
|
||||
After successful scoring:
|
||||
|
||||
1. Review score distribution in content-drafts.md
|
||||
2. Run `/content-critic-review` to get improvement suggestions
|
||||
3. Or continue with full pipeline if running `/content-full-pipeline`
|
||||
259
commands/content-select-best.md
Normal file
259
commands/content-select-best.md
Normal file
@@ -0,0 +1,259 @@
|
||||
---
|
||||
description: "Select the best content piece from scored variations and format for content-ready.md"
|
||||
---
|
||||
|
||||
# Select Best Content for Posting
|
||||
|
||||
## Mission
|
||||
|
||||
Rank all PASS content (20+/30 scores), apply tie-breaker rules, and select EXACTLY ONE best piece for human review in `content-ready.md`.
|
||||
|
||||
## Process
|
||||
|
||||
Follow the Selector agent instructions (`agents/selector.md`) to systematically:
|
||||
|
||||
1. **Filter for PASS content** (20+/30 scores with ✅ PASS verdict)
|
||||
2. **Rank by total score** (descending order)
|
||||
3. **Apply tie-breaker rules** if multiple pieces tied for first
|
||||
4. **Validate selection** against quality gates
|
||||
5. **Format for content-ready.md** with posting instructions
|
||||
6. **Document runner-ups** (top 3 alternatives)
|
||||
|
||||
## Execution Steps
|
||||
|
||||
### Step 1: Read Scored Content
|
||||
|
||||
**Input Source**: `content-drafts.md` with completed scores and critic verdicts
|
||||
|
||||
**Required Data**:
|
||||
- Total scores (Gap + Biases + Decision = XX/30)
|
||||
- Critic verdict (✅ PASS or ❌ FAIL)
|
||||
- Subscore breakdowns (Gap subscore, Hook subscore, Bias count)
|
||||
- Content text and theme information
|
||||
|
||||
### Step 2: Filter and Rank
|
||||
|
||||
**Filter Criteria**:
|
||||
- Total score ≥ 20/30
|
||||
- Critic verdict: ✅ PASS
|
||||
- Factually accurate (verified by Critic)
|
||||
|
||||
**Ranking**:
|
||||
- Primary: Sort by total score (descending)
|
||||
- Expected: 12-20 PASS pieces from 25 total variations
|
||||
|
||||
**Quality Alert**:
|
||||
- If < 5 PASS pieces: Alert user that quality is below threshold
|
||||
- Consider regenerating content with stronger constraints
|
||||
|
||||
### Step 3: Apply Tie-Breaker Rules
|
||||
|
||||
**If multiple pieces have same total score**, apply tie-breakers in order:
|
||||
|
||||
1. **Gap Selling Subscore**: Higher Gap score wins (problem clarity most important)
|
||||
2. **Hook Strength**: Higher Hook subscore wins (first line = 80% of engagement)
|
||||
3. **Lollapalooza Effect**: Content with 5+ biases wins (exponential persuasive power)
|
||||
4. **Bias Diversity**: More unique biases wins (broader psychological appeal)
|
||||
5. **Theme Novelty**: Less-used theme wins (prevents theme fatigue)
|
||||
6. **Human Judgment**: If still tied, flag for manual decision
|
||||
|
||||
### Step 4: Validate Selection
|
||||
|
||||
Before finalizing, verify:
|
||||
|
||||
**Quality Gates**:
|
||||
- [ ] Selected piece scores 20+/30 (ideally 25+/30)
|
||||
- [ ] All three frameworks adequately addressed (no subscore < 5)
|
||||
- [ ] Factually accurate (verified by Critic)
|
||||
- [ ] High engagement potential (hook + emotional resonance)
|
||||
|
||||
**Platform Appropriateness**:
|
||||
- [ ] Twitter/X character limits respected (280 single or thread)
|
||||
- [ ] Tone matches platform (conversational, punchy)
|
||||
- [ ] Format clean (line breaks, readability)
|
||||
|
||||
**Strategic Fit**:
|
||||
- [ ] Theme aligns with user's positioning
|
||||
- [ ] Message supports broader narrative
|
||||
- [ ] Timing appropriate (seasonally relevant)
|
||||
|
||||
### Step 5: Write to content-ready.md
|
||||
|
||||
**Location**: `/home/rpiplewar/fast_dot_ai/poasting/content-ready.md`
|
||||
|
||||
**Action**: OVERWRITE file (only ONE piece should exist)
|
||||
|
||||
**Format**:
|
||||
```markdown
|
||||
# Content Ready to Post
|
||||
|
||||
**Date Generated:** {ISO Timestamp}
|
||||
**Theme:** {Theme Name}
|
||||
**Source:** {Linear Task ID}
|
||||
**Total Score:** {XX/30}
|
||||
|
||||
---
|
||||
|
||||
## Content
|
||||
|
||||
{Content exactly as it should be posted}
|
||||
|
||||
---
|
||||
|
||||
## Scoring Breakdown
|
||||
|
||||
**Gap Selling:** X/10 (Problem: X/3, Impact: X/3, Solution: X/4)
|
||||
**Cognitive Biases:** Y (List: Bias1, Bias2, Bias3...)
|
||||
**Decision Framework:** Z/10 (Hook: X/3, Value: X/4, CTA: X/3)
|
||||
**TOTAL: XX/30**
|
||||
|
||||
---
|
||||
|
||||
## Why This Piece?
|
||||
|
||||
**Ranking Position:** #1 of {total_pass_count} PASS pieces
|
||||
|
||||
**Key Strengths:**
|
||||
- {Strength from Critic notes}
|
||||
- {Strength from Critic notes}
|
||||
- {Strength from Critic notes}
|
||||
|
||||
**Winning Elements:**
|
||||
- {Why this beat other contenders}
|
||||
- {Specific tie-breaker if applicable}
|
||||
- {Strategic fit reasoning}
|
||||
|
||||
---
|
||||
|
||||
## Posting Instructions
|
||||
|
||||
**Optimal Timing:**
|
||||
- **Best Times (IST)**: 8:30 AM or 5:30 PM (high engagement windows)
|
||||
- **Avoid**: Late night (11 PM - 6 AM) or midday lull (12 PM - 2 PM)
|
||||
|
||||
**Format Check:**
|
||||
- [ ] Character count: {count} (within 280 for single, or thread format)
|
||||
- [ ] Line breaks clean
|
||||
- [ ] No typos or formatting issues
|
||||
|
||||
**Pre-Post Checklist:**
|
||||
- [ ] Read aloud for flow
|
||||
- [ ] Verify factual accuracy one final time
|
||||
- [ ] Check for unintended meanings or misinterpretations
|
||||
- [ ] Confirm tone matches brand voice
|
||||
|
||||
**After Posting:**
|
||||
1. Copy final posted version to content-posted.md
|
||||
2. Add posting timestamp
|
||||
3. Set reminder to capture metrics after 48 hours
|
||||
4. Monitor engagement in first 2 hours for immediate feedback
|
||||
|
||||
---
|
||||
|
||||
## Alternatives (Top 3 Runner-Ups)
|
||||
|
||||
### Runner-Up #2: {Score}
|
||||
**Theme:** {Theme Name}
|
||||
**Content Preview:** {First 50 characters}...
|
||||
**Why Not Selected:** {Reasoning}
|
||||
|
||||
### Runner-Up #3: {Score}
|
||||
**Theme:** {Theme Name}
|
||||
**Content Preview:** {First 50 characters}...
|
||||
**Why Not Selected:** {Reasoning}
|
||||
|
||||
### Runner-Up #4: {Score}
|
||||
**Theme:** {Theme Name}
|
||||
**Content Preview:** {First 50 characters}...
|
||||
**Why Not Selected:** {Reasoning}
|
||||
|
||||
---
|
||||
|
||||
**Generated by:** content-gen plugin v1.0
|
||||
**Selection Criteria:** Highest total score + tie-breaker rules
|
||||
**Human Approval Required:** YES (review before posting)
|
||||
```
|
||||
|
||||
## Validation Checklist
|
||||
|
||||
Before marking selection complete:
|
||||
|
||||
- [ ] ONE piece selected (not zero, not multiple)
|
||||
- [ ] Selected piece scores 20+/30 (ideally 25+/30)
|
||||
- [ ] All tie-breakers applied correctly if needed
|
||||
- [ ] content-ready.md overwritten with formatted output
|
||||
- [ ] Posting instructions included
|
||||
- [ ] Top 3 runner-ups documented
|
||||
- [ ] Selection reasoning documented
|
||||
|
||||
## Example Output
|
||||
|
||||
```
|
||||
✅ Best Content Selected
|
||||
|
||||
Selected: Theme A, Variation 1
|
||||
Score: 28/30 (EXCELLENT)
|
||||
Ranking: #1 of 18 PASS pieces
|
||||
|
||||
Key Strengths:
|
||||
- Exceptional problem clarity (Gap: 9/10)
|
||||
- Strong emotional hook activating 6 biases
|
||||
- Clear, actionable CTA
|
||||
|
||||
Output: content-ready.md
|
||||
Status: Ready for human review and approval
|
||||
|
||||
Runner-Ups:
|
||||
#2: Theme C, Var 5 (27/30)
|
||||
#3: Theme B, Var 2 (26/30)
|
||||
#4: Theme A, Var 3 (25/30)
|
||||
|
||||
Next Step: Review content-ready.md and post when ready
|
||||
```
|
||||
|
||||
## Error Handling
|
||||
|
||||
**If no PASS content**:
|
||||
```
|
||||
❌ Selection Failed: No content scored 20+/30
|
||||
|
||||
Action Required:
|
||||
1. Review scorer settings (may be too harsh)
|
||||
2. Regenerate content with stronger constraints
|
||||
3. Review theme quality (may lack content generation potential)
|
||||
|
||||
Pipeline STOPPED at selection phase.
|
||||
```
|
||||
|
||||
**If tie-breakers don't resolve**:
|
||||
```
|
||||
⚠️ Human Decision Required
|
||||
|
||||
Two pieces tied after all 6 automated tie-breakers.
|
||||
Both pieces displayed in content-ready.md.
|
||||
User must manually select.
|
||||
```
|
||||
|
||||
**If content-ready.md already has content**:
|
||||
```
|
||||
⚠️ Warning: content-ready.md already contains content
|
||||
|
||||
Options:
|
||||
1. Archive existing content to content-posted.md first
|
||||
2. Overwrite with new selection (confirm Y/N)
|
||||
3. Cancel selection
|
||||
|
||||
Current content in content-ready.md should be posted or archived before generating new content.
|
||||
```
|
||||
|
||||
## Next Steps
|
||||
|
||||
After successful selection:
|
||||
|
||||
1. Review content-ready.md
|
||||
2. Perform final quality check
|
||||
3. Post to Twitter/X at optimal time
|
||||
4. Capture metrics after 48 hours
|
||||
5. Move to content-posted.md with metrics
|
||||
|
||||
**Or run full pipeline**: `/content-full-pipeline` to execute all stages end-to-end
|
||||
89
plugin.lock.json
Normal file
89
plugin.lock.json
Normal file
@@ -0,0 +1,89 @@
|
||||
{
|
||||
"$schema": "internal://schemas/plugin.lock.v1.json",
|
||||
"pluginId": "gh:rpiplewar/shipfaster:content-gen",
|
||||
"normalized": {
|
||||
"repo": null,
|
||||
"ref": "refs/tags/v20251128.0",
|
||||
"commit": "d110613b3fb34e1507994c922acd4506270b58c2",
|
||||
"treeHash": "c9f79d5d9379c03968e38f5d0fede214463a5ca7935191eeb730eadc2e8c18cd",
|
||||
"generatedAt": "2025-11-28T10:28:03.241724Z",
|
||||
"toolVersion": "publish_plugins.py@0.2.0"
|
||||
},
|
||||
"origin": {
|
||||
"remote": "git@github.com:zhongweili/42plugin-data.git",
|
||||
"branch": "master",
|
||||
"commit": "aa1497ed0949fd50e99e70d6324a29c5b34f9390",
|
||||
"repoRoot": "/Users/zhongweili/projects/openmind/42plugin-data"
|
||||
},
|
||||
"manifest": {
|
||||
"name": "content-gen",
|
||||
"description": "Automated multi-agent content generation system with framework-based scoring for social media",
|
||||
"version": "1.0.0"
|
||||
},
|
||||
"content": {
|
||||
"files": [
|
||||
{
|
||||
"path": "README.md",
|
||||
"sha256": "e21779423776c8e2b7daca30e5e91d43e7d1e1d8010e7ea1cebee570e91dc129"
|
||||
},
|
||||
{
|
||||
"path": "agents/story-extractor.md",
|
||||
"sha256": "272d1274e848964bac4fa19802259a170f9e0ced023b2a803eccb52a871fd856"
|
||||
},
|
||||
{
|
||||
"path": "agents/scorer.md",
|
||||
"sha256": "56083670454124718722a2e909678187e5ac80c8c4d2096830c15a034c8d8424"
|
||||
},
|
||||
{
|
||||
"path": "agents/performance-tracker.md",
|
||||
"sha256": "5578757056575f870e23c692508970dd1daa74f66b4943e34e32ca244fec719d"
|
||||
},
|
||||
{
|
||||
"path": "agents/critic.md",
|
||||
"sha256": "cd8689afe1b9ec9952223da7b356ad323925373a323d818ca10970b5b166e736"
|
||||
},
|
||||
{
|
||||
"path": "agents/draft-generator.md",
|
||||
"sha256": "7c651922cdd98bbc322152435999e9254a56d2240e50b2c62448e44e899df5a8"
|
||||
},
|
||||
{
|
||||
"path": "agents/selector.md",
|
||||
"sha256": "c1e6e34087829285ffaf2f4b97ec5f4c94ef24fb04b919a88273993248ad2d87"
|
||||
},
|
||||
{
|
||||
"path": ".claude-plugin/plugin.json",
|
||||
"sha256": "ae4b7fa089c199a81b79e16d808c3b6cf9e6f64559af3325ff54247ad2e9a202"
|
||||
},
|
||||
{
|
||||
"path": "commands/content-score-all.md",
|
||||
"sha256": "f5a4e67e5cfc10a05c8d83ddb8e8d493273d0151ade411bc7d84bd6e99fe44f2"
|
||||
},
|
||||
{
|
||||
"path": "commands/content-select-best.md",
|
||||
"sha256": "66ea3d774ba42f67289b6bff3e7e2779e769b3d2e71d33d13df4af81ad0a3e12"
|
||||
},
|
||||
{
|
||||
"path": "commands/content-full-pipeline.md",
|
||||
"sha256": "29b434b09dc65eb886374bededbb6068701136c92e68fd0fb3f0aafcd72418ee"
|
||||
},
|
||||
{
|
||||
"path": "commands/content-extract-stories.md",
|
||||
"sha256": "3015f63c5969d74980d90fac9d8a294f4a2accf14e05ab2d4f37b0a2e2b135d9"
|
||||
},
|
||||
{
|
||||
"path": "commands/content-generate-drafts.md",
|
||||
"sha256": "c2c042deb9eedda8f3e0cf95c51a14c2b4f1eae8052072795d1bb0bb927c8a49"
|
||||
},
|
||||
{
|
||||
"path": "commands/content-critic-review.md",
|
||||
"sha256": "aedb484242361529ed326e8155f7b03a49268ff67d800d05c6f495589a984938"
|
||||
}
|
||||
],
|
||||
"dirSha256": "c9f79d5d9379c03968e38f5d0fede214463a5ca7935191eeb730eadc2e8c18cd"
|
||||
},
|
||||
"security": {
|
||||
"scannedAt": null,
|
||||
"scannerVersion": null,
|
||||
"flags": []
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user