kirk-content-pipeline

ClawSkills 作者 clawskills

Create KSVC-validated Twitter content from research PDFs. Content types: long threads, quick takes, breaking news, shitposts, personal commentary, victory laps. Triggers on "create content", "write thread", "make a post", "shitpost", or when working with PDFs in /Users/Shared/ksvc/pdfs. REQUIRED STEPS - (1a) Explore agents to scan PDFs, (1b) RLM for deep extraction, (1c) Cross-doc synthesis with rlm-multi, (2) KSVC holdings check (preliminary), (3) write data backbone, (4a) AUDIT with RLM verification, (4a.5) Gemini web cross-validation for FAIL/UNSOURCED inferences, (4b) Final holdings verification (ALL 7 models), (4c) Stylize with kirk-mode skill, (4d) humanizer pass, (5) save draft, (6) chart decision & generation.

安装 / 下载方式

TotalClaw CLI推荐
totalclaw install clawskills:clawskills~lukerspace-kirk-content-pipeline
cURL直接下载,无需登录
curl -fsSL https://skills.taituai.com/api/skills/clawskills%3Aclawskills~lukerspace-kirk-content-pipeline/file -o lukerspace-kirk-content-pipeline.md
# Kirk Content Pipeline

Create Twitter content from analyst research PDFs, validated against KSVC holdings.

## Pipeline Steps (MANDATORY)

```
1a.   Scan PDFs (Explore agents for broad screening)
1b.   Extract insights (RLM for deep extraction - text, tables, AND charts)
1c.   Cross-doc synthesis (rlm-multi for insights across sources)
2.    Check KSVC holdings (preliminary - with known tickers)
3.    Write content (data backbone, Serenity-heavy)
4a.   AUDIT (verify draft claims against source PDFs with RLM)
4a.5. GEMINI CROSS-VALIDATION (web-verify FAIL/UNSOURCED inferences)
4b.   Final Holdings Verification (check ALL 7 models with discovered tickers)
4c.   Stylize (invoke kirk-mode skill for voice/character)
4d.   Humanize (remove AI patterns)
5.    Save draft for approval
6.    Chart decision & generation (after draft crystallizes thesis)
7.    PUBLISH to final folder (clean version for posting)
```

**Never skip steps 4a-4d. Use 1a for multi-PDF screening, 1b for deep extraction, 1c for cross-doc synthesis, 4a for verification, 4a.5 for web cross-validation, 4b for final holdings check, 4c for character voice, 4d for AI pattern removal.**

**⚠️ CRITICAL: Step 1b extracts data. Step 1c synthesizes across docs. Step 4a VERIFIES the written content. Step 4a.5 CROSS-VALIDATES inferences.**
- 1b: "What does each PDF say?" (per-doc extraction)
- 1c: "What patterns emerge across PDFs?" (cross-doc synthesis)
- 4a: "Does my draft accurately reflect the sources?" (source-locked verification)
- 4a.5: "Are the flagged inferences valid per public sources?" (web cross-validation)
- 4c: "Which Kirk mode fits this situation?" (character voice)

---

## Subagent Permissions (CRITICAL)

**Subagents CANNOT Read files outside the project directory.** PDFs in `/Users/Shared/ksvc/pdfs/` are blocked. The fix: **symlink PDFs into the project directory** before spawning subagents.

**The main agent MUST create a symlink before Step 1a:**
```bash
ln -sf "/Users/Shared/ksvc/pdfs/YYYYMMDD" ".claude/pdfs-scan"
```

Then subagents Read from `.claude/pdfs-scan/filename.pdf` — this works because the path resolves inside the project.

| Access Method | `/Users/Shared/` path | Symlinked project path |
|--------------|----------------------|----------------------|
| Subagent Read tool (PDF) | ❌ Auto-denied | ✅ Works |
| Subagent Read tool (images) | ❌ Auto-denied | ✅ Works |
| Main agent Read tool | ✅ User approves | ✅ Works |
| Bash → RLM | ✅ Any path | ✅ Any path |

**Discovered 2026-02-07:** Subagents fail with `"Permission to use Read has been auto-denied (prompts unavailable)"` on `/Users/Shared/` paths. Symlink into project dir = full Read access. Tested: 19 PDFs, medium thoroughness, 125k tokens, zero errors.

---

## Content Types & Voice Blends

**Full guide:** `references/kirk-voice.md` — Read this for templates and examples.

Kirk voice = Serenity's data + Citrini7's wit + Jukan's skepticism + Zephyr's energy.

| Type | When | Blend | Key Element |
|------|------|-------|-------------|
| **Long Thread** | Deep dive, multi-source | Serenity + Jukan | TLDR + skepticism |
| **Quick Take** | Single insight, one report | Citrini7 + Serenity | Punchy + one number |
| **Breaking News** | Just dropped | Zephyr + Jukan | Reaction word + number |
| **Shitpost** | Market absurdity | Citrini7 + Zephyr | Meme format |
| **Personal Commentary** | Opinion, question | Pure Jukan | First-person + uncertainty |
| **Victory Lap** | KSVC call worked | Pure Zephyr | Entry/Now + thesis |

### Quick Formulas

**Long Thread:** Hook → TLDR → Numbers → Skepticism → Position

**Quick Take:** Headline number → Context → "If you're looking now..."

**Breaking News:** "Huge." / "Well well well..." → Key number → Source

**Victory Lap:** "$TICKER up X% since KSVC added it" → Entry/Now → Thesis validated

---

## Step 1a: Scan PDFs with Explore Agents

Use Explore agents for **broad screening** when you have many PDFs to review. This is faster than RLM for initial discovery.

### Step 1a.0: Check Published Threads (MANDATORY - DO FIRST)

**⚠️ Before scanning any PDFs, check what Kirk has already posted.**

```bash
# List all published threads
ls /Users/Shared/ksvc/threads/

# Read recent thread.md files to understand what topics are covered
```

For each published thread, note:
- **Topic** (what was the thesis?)
- **Source PDFs used** (check _metadata.md)
- **Date** (how recent?)

**Then when selecting a topic after scanning, REJECT any topic that:**
- Uses the same primary source PDF as a published thread
- Covers the same thesis/angle (even if from different sources)
- Would read as a repeat to Kirk's followers

**Acceptable overlap:**
- A follow-up/update to a previous thread with NEW data (e.g., earnings confirm the thesis)
- A different angle on the same sector (e.g., posted about ABF shortage, now posting about specific company earnings)
- Explicitly framed as "update: here's what changed since my last post on X"

**Why this exists (Case Study — ABF Substrate, 2026-02-07):**

Kirk published a 10-tweet thread on Feb 5 covering Goldman's ABF shortage report (10%→21%→42%, Kinsus/NYPCB/Unimicron). On Feb 7, the pipeline picked the same Goldman report and produced a 3-tweet quick take with the same numbers, same companies, same angle. We didn't check published threads first, so we wasted a pipeline run on duplicate content when 10 other fresh topic angles were available.

### When to Use
- Screening 10+ PDFs to find relevant ones
- Finding cross-document connections
- Building a thesis from multiple sources
- Don't know which PDFs matter yet

### How to Scan
```
1. Check published threads (Step 1a.0 above)

2. List recent PDF folders and count PDFs
   ls /Users/Shared/ksvc/pdfs/ | tail -5
   ls /Users/Shared/ksvc/pdfs/YYYYMMDD/ | wc -l

3. Symlink PDFs into project directory (REQUIRED for subagent access)
   ln -sf "/Users/Shared/ksvc/pdfs/YYYYMMDD" ".claude/pdfs-scan"

4. Split PDFs into groups and spawn parallel Explore agents
   TARGET: ~5 PDFs per agent. Spawn ALL agents in a single message.
   - Each agent gets a specific list of filenames to scan
   - All agents run simultaneously → total time = slowest agent
   - Haiku is cheap — more agents = faster with no meaningful cost increase
```

### Agent Sizing

| PDFs | Agents | PDFs/Agent | Expected Time |
|------|--------|-----------|---------------|
| ≤5 | 1 | all | ~25s |
| 6-10 | 2 | ~5 each | ~25s |
| 11-15 | 3 | ~5 each | ~25s |
| 16-20 | 4 | ~5 each | ~25s |
| 21-30 | 5-6 | ~5 each | ~30s |

**Why ~5 PDFs per agent?** Sweet spot for speed. Each PDF takes ~4-8s to Read + summarize. 5 PDFs ≈ 25s per agent. Adding more PDFs per agent saves nothing (same total tokens) but makes wall-clock time worse.

**Cost:** Haiku is cheap. 4 agents × 5 PDFs × ~4k tokens = ~80k input tokens total — same as 1 agent doing all 20. Parallelism is free.

**Cross-doc synthesis trade-off:** Each agent only sees its batch, so cross-batch themes are the main agent's job. This is fine — the main agent merges all results anyway.

### Example: Spawn Explore Agents

**Step 1: Main agent creates symlink and lists PDFs:**
```bash
ln -sf "/Users/Shared/ksvc/pdfs/20260205" ".claude/pdfs-scan"
/bin/ls ".claude/pdfs-scan/"
```

**Step 2: Split filenames into groups and spawn agents in parallel (single message, multiple Task calls):**
```
# Agent 1 — first batch
Task(subagent_type="Explore", prompt="""
**THOROUGHNESS: medium**

Scan these specific PDFs for content angles:
- file1.pdf
- file2.pdf
- file3.pdf
- file4.pdf
- file5.pdf
- file6.pdf
- file7.pdf

For each PDF, Read enough pages to understand the full thesis (use judgment — some need 1-2 pages, others 1-5):

Read(file_path="/Users/dydo/Documents/agent/ksvc-intern/.claude/pdfs-scan/FILENAME.pdf", pages="1-5")

For each PDF extract:
- Company/sector, ticker, rating, price target
- Key thesis and supporting numbers
- Supply chain connections
- Potential content angles

After scanning your batch, provide:
1. Per-PDF sum