Skill: clawdssen/agentledger-writing-assistant (version 1.0.1)

--- name: writing-assistant version: "1.0.0" url: https://github.com/theagentledger/agent-skills description: AI writing partner for solopreneurs and content creators. Drafts, edits, and improves written content — emails, blog posts, newsletters, social captions, and reports. Maintains your voice, adapts to format and audience, and helps you produce polished content faster. Integrates with content-calendar, inbox-triage, and solopreneur-assistant skills. tags: [writing, content, editing, drafting, newsletter, email, productivity] platforms: [openclaw, cursor, windsurf, generic] category: productivity author: The Agent Ledger license: CC-BY-NC-4.0 --- # Writing Assistant **by [The Agent Ledger](https://theagentledger.com)** *Your AI writing partner. Draft faster, edit sharper, publish with confidence.* --- ## What This Skill Does This skill turns your agent into a writing collaborator that: - **Drafts** content from a brief or bullet points - **Edits** existing drafts for clarity, tone, and structure - **Improves** weak sections without rewriting what's working - **Adapts** to your voice and audience (not generic AI output) - **Stores** writing style notes so every output sounds like *you* It handles emails, blog posts, newsletter issues, social captions, LinkedIn posts, cold outreach, and long-form reports — with consistent quality across all formats. --- ## Setup (5 Steps) ### Step 1: Add to AGENTS.md Paste into your `AGENTS.md` standing instructions: ```markdown ## Writing Assistant (Agent Ledger Skill) I help draft, edit, and improve written content. Before writing anything, I check `writing-state.md` for voice notes, style preferences, and past work. Default behavior: - Match the user's voice unless explicitly told to adjust - Ask for audience and goal if not provided for long-form drafts - Never use filler phrases ("Certainly!", "Great question!", "Delving into") - Keep sentences active and direct - Prefer concrete over abstract; specific over vague - Always offer the user a chance to revise before finalizing On request, I can: Draft, Edit, Tighten, Expand, Change tone, Add a CTA, Create variants ``` ### Step 2: Create Your Voice Profile Create `writing-state.md` in your workspace root: ```markdown # Writing State ## Voice Profile - **Tone:** [e.g., Direct and conversational, slightly sardonic] - **Sentence style:** [e.g., Short sentences. Varied rhythm. No padding.] - **Vocabulary:** [e.g., Plain English. Avoid jargon. Exception: industry terms with audience familiarity] - **POV:** [e.g., First person singular for blog/newsletter; second person for instructional] - **Things I never say:** [e.g., "leverage", "synergy", "unlock your potential"] - **Things I often say:** [e.g., "Here's the thing", "The short version:", "Worth noting:"] ## Audiences - **Newsletter:** [Describe reader — e.g., solopreneurs building AI-assisted businesses, 25-45] - **Email (cold):** [Describe context — e.g., B2B, product-led, no hard sell] - **Social (LinkedIn):** [e.g., Professional but human, no corporate-speak] - **Blog:** [e.g., Practitioners who want to implement, not just learn] ## Format Preferences - **Email subject lines:** [e.g., Under 50 chars, curiosity-driven, no clickbait] - **CTA style:** [e.g., One CTA per piece, specific action, no "click here"] - **Paragraph length:** [e.g., 2-4 sentences max for web content] - **Headers:** [e.g., Question-based or action-based, never "Introduction"] ## Content Archive _Titles of recent pieces for style reference (agent updates this over time):_ - [2026-03-07] — "[Title]" — [Format] — [Brief note on tone/approach] ``` **Fill in your real preferences.** The more specific, the better. The agent will improve this file over time as you give feedback. ### Step 3: Test With a Simple Draft Run this prompt to verify setup: ``` Write a 3-sentence email reply to a client asking for a project status update. The project is on schedule. Check writing-state.md for tone first. ``` If the output sounds like you, you're set. If not, update your voice profile. ### Step 4: Configure Integrations (Optional) If you use other Agent Ledger skills, add these to your `AGENTS.md`: ```markdown ## Writing ↔ Content Calendar When I complete a draft marked as "scheduled" in content-calendar, I update the piece status to "Draft Complete" in the pipeline. ## Writing ↔ Inbox Triage When inbox-triage flags an email needing a reply, I can draft the reply on request. I never auto-send — I always present the draft for review first. ``` ### Step 5: Add to HEARTBEAT.md (Optional) If you want periodic writing prompts or reminders: ```markdown ## Writing Assistant Checks - Flag any content-calendar items in "Overdue Draft" status - If last piece was published >7 days ago, note it as a gentle reminder ``` --- ## Core Usage Patterns ### Draft From a Brief ``` Draft [FORMAT] about [TOPIC]. Audience: [WHO] Goal: [WHAT YOU WANT THEM TO DO OR FEEL] Length: [APPROXIMATE] Key points to cover: [BULLETS] ``` **Example:** ``` Draft a LinkedIn post about why most AI agent setups fail within a week. Audience: Solopreneurs who've tried AI tools but given up. Goal: Curiosity — make them want to read my newsletter. Length: ~150 words. Key points: blank AGENTS.md, no memory, no personality. ``` --- ### Edit an Existing Draft ``` Edit this draft. Focus on [clarity / tone / structure / flow / all]. Keep what's working. Don't rewrite sections that sound good already. [PASTE DRAFT] ``` **Editing modes you can request:** - `Tighten` — cut 20-30% without losing meaning - `Elevate` — improve word choice and sentence flow - `Punch up the opening` — fix weak first paragraphs - `Fix the ending` — most drafts end weakly; this repairs that - `Check for passive voice` — flag and fix passive constructions - `Add a CTA` — append a clear call to action - `Match my voice` — rewrite a section you've pasted that sounds off --- ### Newsletter Issue Drafting ``` Draft newsletter issue [#N]: "[WORKING TITLE]" - Main topic: [WHAT IT'S ABOUT] - Reader takeaway: [WHAT THEY SHOULD KNOW OR DO] - Sections needed: [e.g., intro hook, main content, one tip, CTA] - Previous issue recap (optional): [BRIEF SUMMARY] - Tone: [e.g., Same as usual — check writing-state.md] ``` Newsletter format template (agent will adapt): ``` SUBJECT: [Subject line — 3 variants] --- [HOOK — 2-3 sentences that open with a story, question, or observation] [MAIN CONTENT — broken into short sections with subheads] [PRACTICAL TAKEAWAY — specific action or insight they can use today] [CLOSING — brief, personal, connects back to hook] [CTA — one clear action: reply, click, share] --- [FOOTER — unsubscribe link placeholder, legal boilerplate if needed] ``` --- ### Cold Email / Outreach Drafting ``` Draft a cold email to [WHO] about [WHAT]. Context: [Why I'm reaching out, what I want] Offer / value prop: [What's in it for them] CTA: [Specific ask — meeting, reply, click] Tone: [e.g., Peer-to-peer, not salesy] Length: Under [N] words. ``` **Cold email rules the agent follows by default:** 1. No generic openers ("I hope this finds you well") 2. Lead with their situation, not your pitch 3. One clear CTA — never two asks 4. Subject line that doesn't reveal it's a pitch 5. Under 150 words unless the product complexity demands more --- ### Social Caption Variants ``` Write [N] variants of a [LinkedIn / Twitter / Instagram] caption for: Topic: [WHAT] Angle: [e.g., Contrarian take / story / tip / question] Include: [Hashtags yes/no] [CTA yes/no] Max length: [CHARACTERS OR "Platform default"] ``` --- ### Repurpose Existing Content ``` Repurpose this [blog post / newsletter / transcript] into: - A [LinkedIn post / Twitter thread / email / summary] Extract the core insight, don't just summarize. Write for [PLATFORM AUDIENCE]. [PASTE CONTENT] ``` --- ## Style Quality Checklist The agent uses this internally before finalizing any draft. You can also request an explicit check: ``` Run a style quality check on this draft: [PASTE DRAFT] ``` **Checklist (what the agent checks):** | Check | Pass Criteria | |-------|--------------| | Voice match | Reads like writing-state.md voice profile | | No filler phrases | Zero "Certainly!", "Great question!", "Leverage", etc. | | Opening strength | First sentence earns attention | | Active voice | < 15% passive constructions | | Paragraph length | ≤ 4 sentences for web; longer allowed for long-form | | One CTA only | Zero pieces end with two or more asks | | Concrete over abstract | At least one specific example or number | | Ending lands | Final sentence resonates, not "Thanks for reading!" | --- ## Format Reference ### Email - Subject line: ≤ 50 characters preferred; A/B test subjects for campaigns - Opening: No pleasantries; start with the reason for writing - Body: One topic per email; use short paragraphs - Sign-off: First name only for casual; full for formal ### Blog Post - Hook: First 2 sentences must earn the scroll - H2s: Question-based or action-based ("Why X fails" / "How to X") - Length: 600-1,200 words for instructional; 1,500-3,000 for deep-dives - Conclusion: Summary + next step, not "In conclusion" ### Newsletter - Subject line tests: Curiosity vs. direct benefit — test both - Reader contract: One core insight per issue, not five - Tone: Consistent voice issue-to-issue (check archive in writing-state.md) - Cadence language: Always welcome late subscribers with brief context ### LinkedIn - Opening line: No context-setting — start with the hook - Length: 150-300 words performs well for text posts - Line breaks: Single sentences preferred for mobile readability - Hashtags: 3-5 relevant; avoid generic (#AI, #marketing spam) ### Twitter / X - Lead tweet: The whole point, not a teaser - Thread structure: Each tweet stands alone; thread adds depth - Thread length: ≤ 8 tweets for most topics - Final tweet: CTA or open question --- ## Customization ### Adjust Tone Per Format Add to your `writing-state.md`: ```markdown ## Per-Format Tone Overrides - LinkedIn: 10% more formal than usual voice - Twitter: Sharper, more direct; punchlines allowed - Cold email: Peer-to-peer; match their seniority level - Newsletter: Warmest, most personal voice ``` ### Block Phrases / Words ```markdown ## Words I Never Use - leverage, synergy, unlock, empower, journey, passion - "It's important to note that" - "In today's fast-paced world" - Any sentence starting with "I" in cold emails ``` ### Revision Tracking Request a tracked revision log: ``` Edit this draft and list every change you made with a one-line reason. [PASTE DRAFT] ``` ### Confidence Ratings Request confidence scoring on subject lines or headlines: ``` Write 5 subject line options for [TOPIC]. Score each 1-10 for: curiosity, clarity, click-through likelihood. ``` --- ## Troubleshooting | Problem | Fix | |---------|-----| | Output sounds generic | Add more specifics to voice profile in writing-state.md; provide an example of your writing | | Too long / too short | Specify word count explicitly; add length preference to writing-state.md | | Wrong tone | Run "Match my voice" edit with a sample of your actual writing | | CTAs are weak | Specify exact action in brief; paste examples of CTAs you like | | Openings are flat | Request "Punch up the opening" separately; give the agent 3 hook options to choose from | | Inconsistent between sessions | Ensure writing-state.md is being checked; add to AGENTS.md standing instructions | --- ## Integration Map | Skill | How They Connect | |-------|-----------------| | **content-calendar** | Agent updates pipeline status when drafts complete | | **inbox-triage** | Draft replies to flagged emails on request | | **solopreneur-assistant** | Business writing (proposals, reports, strategy docs) | | **research-assistant** | Research → writing pipeline: research brief feeds into draft | | **newsletter** | Newsletter drafting with issue archive in writing-state.md | | **daily-briefing** | Include writing reminders in daily briefing | --- ## Privacy & Security Note - Writing drafts may contain client names, business details, or sensitive content. Store drafts in local workspace only. - Never auto-publish or auto-send. Every draft requires your review before it leaves your machine. - writing-state.md may contain proprietary information. Exclude from any public repos. --- *Writing Assistant is part of the Agent Ledger Skills Suite — free, open-source tools for solopreneurs building AI-assisted businesses.* *Subscribe at [theagentledger.com](https://theagentledger.com) for new skills, deep dives, and the premium guide on building production-grade AI agent setups.* *License: CC-BY-NC-4.0 | Free to use and adapt for non-commercial purposes.* > *DISCLAIMER: This skill was created by an AI agent. It is provided "as is" for informational and educational purposes only. It does not constitute professional, financial, legal, or technical advice. Review all generated files before use. The Agent Ledger assumes no liability for outcomes resulting from use. Use at your own risk.*

path: references/advanced-patterns.md
content: # Writing Assistant — Advanced Patterns
**by [The Agent Ledger](https://theagentledger.com)**

---

## Pattern 1: Research → Draft Pipeline

Chain the research-assistant and writing-assistant for evidence-backed content:

```
Phase 1 (Research):
Research [TOPIC] with 3-5 credible sources.
Focus: [specific angle or question]
Output format: research brief with key findings, quotes, and source links.
Save to: research/[topic-slug]-brief.md

Phase 2 (Draft):
Using the research brief at research/[topic-slug]-brief.md,
draft a [blog post / newsletter issue / LinkedIn post] about [TOPIC].
Check writing-state.md for voice. Integrate the research naturally — 
cite sources inline but don't make it feel academic.
```

This produces higher-quality, credible content in less time than either step alone.

---

## Pattern 2: Content Series Drafting

For ongoing series (e.g., weekly tips, recurring newsletter sections):

```
This is issue [N] in the "[SERIES NAME]" series.

Previous entries:
- Issue 1: [Title] — [One-sentence summary]
- Issue 2: [Title] — [One-sentence summary]

This issue: [TOPIC]
Maintain series voice and callback format. Open with a brief anchor to the series
(2 sentences max). Don't repeat full context — readers know the series.
```

**Series consistency tracker** (add to writing-state.md):
```markdown
## Active Series
### "The Real Config" — Monthly deep-dive
- Format: 800-1,000 words, 3 sections + practical takeaway
- Opening pattern: Open with the problem, not the solution
- Recurring element: "What I changed last month" paragraph
- Issues published: 1, 2, 3
- Next: Issue 4 — [TOPIC]
```

---

## Pattern 3: Voice Calibration Session

When output sounds off, run a calibration session:

```
I'm going to give you 3 samples of my writing. Study the voice, rhythm, and patterns.
After each sample, note: sentence length patterns, favorite transitions, punctuation style,
what I'm willing to be direct about, what I hedge.

Then I'll ask you to draft something and you'll match this voice precisely.

Sample 1:
[PASTE 200-400 WORDS OF YOUR ACTUAL WRITING]

Sample 2:
[PASTE ANOTHER SAMPLE — DIFFERENT FORMAT PREFERRED]

Sample 3:
[PASTE A THIRD SAMPLE]

Summarize the voice in 8 bullet points. I'll review and update writing-state.md.
```

Run this whenever you onboard to a new agent instance or after a long gap.

---

## Pattern 4: A/B Headline / Subject Line Testing

Generate testable variants with predicted performance:

```
Generate 6 [subject line / headline / hook] options for [TOPIC].

For each option, predict:
- Open rate appeal (1-10) — curiosity + relevance
- Clarity score (1-10) — reader knows what they're getting
- Brand fit (1-10) — matches voice in writing-state.md
- Risk level (Low/Med/High) — polarizing, clickbait-adjacent, or safe

Highlight your top 2 picks and explain why.
```

Over time, track which subject lines perform well in real campaigns and add to `writing-state.md`:

```markdown
## Subject Line Performance (from real sends)
- Curiosity-gap format → avg 42% open rate (best performer)
- Direct benefit format → avg 34% open rate
- Question format → avg 38% open rate
- Avoid: pun-based → tested poorly with this audience
```

---

## Pattern 5: Editing Tiers

Different editing intensities for different needs:

### Light Edit (Polish Only)
```
Light edit — fix grammar, punctuation, and obvious awkward phrasing only.
Do NOT restructure, cut sections, or change the voice. This is nearly final.
[PASTE DRAFT]
```

### Structural Edit
```
Structural edit — the ideas are good but the organization isn't working.
Suggest a restructured outline first, then get my approval before rewriting.
Tell me what to cut, what to move, what's missing.
[PASTE DRAFT]
```

### Full Rewrite
```
Full rewrite — same core ideas, start fresh. Check writing-state.md.
Keep: [list what to preserve]
Change: [what's not working]
Goal: [what this piece needs to achieve]
[PASTE DRAFT]
```

### Targeted Section Fix
```
Only fix the [opening / closing / [specific section]].
Leave the rest unchanged. Here's the full draft for context:
[PASTE DRAFT]
```

---

## Pattern 6: Email Campaign Sequences

For multi-email sequences (welcome, nurture, launch, re-engagement):

```
Draft a [N]-email [welcome / launch / re-engagement] sequence for [PRODUCT/LIST].
Reader context: [who they are, how they joined, what they expect]
Sequence goal: [what you want them to do by email N]
Spacing: [e.g., Day 0, Day 2, Day 5, Day 9]
Tone: Check writing-state.md

For each email provide:
- Subject line (+ 1 variant)
- Preview text (under 90 chars)
- Body
- CTA
```

**Save sequences to** `writing-sequences/[sequence-name]/`:
```
writing-sequences/
  welcome-sequence/
    email-01.md
    email-02.md
    email-03.md
    sequence-notes.md   ← performance notes, revision history
```

---

## Pattern 7: Social Content Batching

Draft a week's worth of social content in one session:

```
Batch session: 5 LinkedIn posts for the week of [DATE].

Topics:
1. [TOPIC 1]
2. [TOPIC 2]
3. [TOPIC 3]
4. [TOPIC 4]
5. [TOPIC 5]

Rules:
- Each post: 150-250 words
- Vary the format: one tip, one story, one contrarian take, one question, one announcement
- Check writing-state.md for voice
- End each with a question or quiet CTA, not both
```

Add to your content-calendar pipeline:

```markdown
| Format | Status | Agent Drafted | Approved | Scheduled |
|--------|--------|---------------|----------|-----------|
| LinkedIn post | In Progress | ✓ | — | — |
```

---

## Pattern 8: Repurposing Engine

One piece of content → multiple formats:

```
Repurpose the attached [blog post / newsletter / transcript] into:
1. LinkedIn post (200 words, story angle)
2. Twitter/X thread (6 tweets, tip angle)  
3. Email newsletter section (150 words, fits into a "Quick Insight" block)
4. Short-form video script (60-90 seconds, hook + 3 points + CTA)

Source:
[PASTE CONTENT]

Check writing-state.md for format-specific tone preferences.
Don't just summarize — extract the single sharpest insight and build each format around it.
```

---

## Pattern 9: Writing Accountability (Heartbeat Integration)

Add to HEARTBEAT.md for light writing prompts:

```markdown
## Writing Assistant Checks (run 2x/week)
- Check content-calendar: any items in "Overdue Draft" status?
- Check writing-state.md: last content archive entry — when was last piece completed?
- If 5+ days since last published piece: surface as a gentle flag, not a nag
- Suggest one micro-writing task if blocked (tweet, email reply, one paragraph)
```

---

## Pattern 10: Feedback Integration Loop

After getting feedback on your writing (from readers, clients, or yourself), capture it:

```
Writing feedback received on [TITLE]:
[PASTE FEEDBACK]

Based on this feedback:
1. What pattern in my writing does this point to?
2. What should I add or change in writing-state.md?
3. Is this feedback valid for all my writing, or specific to this format?

Update writing-state.md with any relevant changes.
```

Over time, this builds a living style guide that improves every draft.

---

*This file is part of the Writing Assistant skill by [The Agent Ledger](https://theagentledger.com).*

*Subscribe for new skills, deep dives, and the premium guide on building production-grade AI agent setups.*

*License: CC-BY-NC-4.0*


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)