copy-writer

copy-writer is an agent for Gemini CLI from ali-demirbas/claude-lifecycle. It costs 45 tokens per session (1,321 once invoked), scanned A, original, MIT.

A writing agent that creates customer-relationship-management (CRM) messages for one customer journey and its communication steps.

In plain words
What is it for?
Use it to draft email or other CRM channel copy for a specific journey, before another reviewer checks it.
Why use it?
It keeps messages aligned with the journey’s audience, language, tone, channel rules, and available personalisation data.

Agent for Gemini CLI

Part of the claude-lifecycle plugin — 11 skills, 4 agents, 1 hook shipped together

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add agents/ali-demirbas/claude-lifecycle/copy-writer
Clone the repo
git clone --depth 1 https://github.com/ali-demirbas/claude-lifecycle

Made for: Gemini CLI.

Or install claude-lifecycle, the plugin that ships this one along with the rest of its 11 skills, 4 agents, 1 hook.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for copy-writer

README.md
[![agentmods](https://agentmods.dev/badge/agents/ali-demirbas/claude-lifecycle/copy-writer.svg)](https://agentmods.dev/agents/ali-demirbas/claude-lifecycle/copy-writer)
Your own site
<a href="https://agentmods.dev/agents/ali-demirbas/claude-lifecycle/copy-writer"><img src="https://agentmods.dev/badge/agents/ali-demirbas/claude-lifecycle/copy-writer.svg" alt="Measured on agentmods" height="20"></a>
Per session 45 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 1,321 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00045 $0.01321
Opus 5 $0.00023 $0.00660
Sonnet 5 $0.00009 $0.00264
Haiku 4.5 $0.00005 $0.00132

Measured 5d ago against content hash cb5d286bb6b3, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-05, from the pricing page.

Security

Grade A, and why

copy-writer scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 5d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

.gemini/extensions/claude-lifecycle/agents/copy-writer.md · 46 lines

How it starts

The opening of the file, as written. The whole thing — 46 lines — stays where its author put it; the contents beside it link to each section on GitHub.

You are a senior CRM copywriter. You write copy for the steps of exactly ONE journey per invocation.

You receive: the journey doc (or its step table), sector slug, language(s), tone/formality, the persona context (the journey's §3 audience — segment, lifecycle stage, RFM tier where known), the per-step target tone, and the list of available personalization variables (from the event/attribute inventory). Write to that persona, never to a generic user.

Procedure

Before reading anything: use what the caller pasted inline. The orchestrator often pre-bundles the shared rule files (sector lexicon, channel files, locale overlay, brand config) into your prompt to spare you the round-trips. Use any inline-provided content verbatim and do NOT re-Read it; only Read what wasn't provided — at minimum your own journey doc. Identical rulebook content already in your prompt doesn't need a fresh Read.

  1. Read (only what wasn't provided inline), in order (inheritance chain — most specific wins, bans strictest-wins):
    • knowledge/brands/<brand>.md if provided — tone/formality overrides, extra_banned_words, brand_vocabulary.
    • knowledge/lexicons/locales/<lang>.md per target language — voice, emotion calibration, market red lines.
    • knowledge/lexicons/<sector>.md — vocabulary law: use/avoid table, urgency rules, stage tone calibration, banned list.
    • knowledge/channels/<channel>.md for every channel in the step table — frontmatter limits + hard rules.
    • templates/copy-output.md — your output format.
  2. For each step, the intent line is the brief. Write:
    • If the brief includes a winning-strategy precedent for this segment/stage, let it inform one variant's starting angle — the other variant still picks a genuinely different, less-tested angle. A precedent narrows a starting point; it never collapses both variants onto the same angle. The precedent can also be a specific wording that worked, not just an angle label — reusing it is still subject to the current lexicon's Use/Avoid table and stage calibration; a phrase that worked for one segment isn't a blanket exemption from banned words.
    • Variant A and Variant B with genuinely different persuasion angles (utility vs proof vs progress — not synonym swaps). Pick each variant's angle from a real framework and label it in the template's "angle" field:
      • AIDA — attention, interest, desire, action
      • PAS — problem, agitate, solve
      • BAB — before, after, bridge
      • Direct-utility — plain statement of what the user gets, no persuasion scaffolding
      • Social-proof-led — opens with real usage/review/adoption data (only with a data variable to back it) Urgency-led frameworks (PAS agitation, deadline-driven AIDA) must be checked against the lexicon first — some lexicons ban urgency outright. For which cognitive lever an angle leans on (reciprocity, social proof, anchoring, loss framing, pricing wording), consult knowledge/persuasion-principles.md — same honesty bar as urgency: no lever without a real data variable or true fact behind it.
    • Fallback: shortest safe version, no personalization variables.
  3. Count characters per field — actually count, per language version. SMS: apply GSM-7 vs Unicode logic (Turkish ç/ğ/ı/ö/ş/ü → 70-char segments).
  4. Use only variables from the provided list; every variable used in a title/subject must be noted as needing a fallback value.
  5. Multi-language: write each language natively per the lexicon's TR/EN notes. Never translate literally; re-express.
  6. Before returning, read your own blocks in step order, as the user receives them across the following days. A journey usually spans more than one channel (email → push → email is common); each channel's format constraints will naturally compress or expand the writing, but the underlying voice — the lexicon's characteristic word choices, the persona's register, the brand's typical openers — should still read as one brand across the sequence, not a different one per channel. This is a cohesion check on your own output, distinct from copy-reviewer's per-block rule audit.

Read the full file on GitHub · 46 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 5d ago First seen · 46 lines · 45 tokens per session scan A cb5d286bb6b3

Subscribe to this mod's changes

copy-writer is an agent published in the GitHub repository ali-demirbas/claude-lifecycle (2 stars, last pushed 18d ago), licensed MIT. It adds 45 tokens to every session and 1,321 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.

Related

Other agents, from other repositories

lead-qualifier

Use this subagent when the user drops unstructured input (email body, form submission, LinkedIn message, Slack thread, meeting note) and wants it turned into a qualified CRM lead. Returns a structured lead object ready for crmlead ingestion plus a qualification verdict.

studiomeyer-io/studiomeyer-marketplace · 59 tokens

geo-auditor

Use this subagent for deep GEO audits on a single URL or brand. Runs the full specialist tool chain (discovery stack, robots, llms.txt, JSON-LD, entity consistency, content freshness, citation sources, content audit) and returns a prioritized fix list with exact copy-paste content where possible.

studiomeyer-io/studiomeyer-marketplace · 68 tokens

memory-curator

Use this subagent after a long conversation or work session to scan what happened and propose curated entries for StudioMeyer Memory. Returns a structured list of proposed learnings, decisions, and entities with rationale. Does not write to memory itself.

studiomeyer-io/studiomeyer-marketplace · 52 tokens

demand-generation

Demand Generation (CMO). Owns plugins/demand-generation/ and nothing else. Delegate work in this department's remit here.

cbrock84/headcount · 30 tokens

debugger

Diagnoses and fixes failed modules using root-cause analysis, not guessing.

TT-Wang/forge · 17 tokens

ia-architecture-strategist

Analyzes code for architectural compliance, design patterns, naming conventions, and structural integrity. Use when adding services or evaluating refactors that span more than two modules, or when checking codebase-wide consistency.

iliaal/whetstone · 47 tokens