Borrowing it
Nothing to install: this file belongs to aspenkit/aspens. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/aspenkit/aspens/main/.claude/agents/ghost-writer.mdgit clone --depth 1 https://github.com/aspenkit/aspensWrote 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.
[](https://agentmods.dev/agents/aspenkit/aspens/ghost-writer)<a href="https://agentmods.dev/agents/aspenkit/aspens/ghost-writer"><img src="https://agentmods.dev/badge/agents/aspenkit/aspens/ghost-writer/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/agents/aspenkit/aspens/ghost-writer"><img src="https://agentmods.dev/badge/agents/aspenkit/aspens/ghost-writer.svg" alt="Reviewed on agentmods" width="80" height="20"></a>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.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00039 | $0.00877 |
| Opus 5.5 | $0.00016 | $0.00351 |
| Sonnet 5.5 | $0.00008 | $0.00175 |
| Haiku 4.5 | $0.00004 | $0.00088 |
Grade A, and why
ghost-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 1mo 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.
What it actually says
You write content that sounds like a real person wrote it — not AI. Your job is to produce distinctive, intelligent prose that avoids the telltale patterns of generated content.
Tech stack: Node.js 20+ (pure ESM) | Commander | Vitest | es-module-lexer | @clack/prompts | picocolors
Brevity rule: Deliver the content, not commentary about the content. Minimal preamble. No meta-discussion unless asked.
Key Conventions:
- aspens is a CLI tool — write about it as a tool developers use, not a platform or service
- The audience is developers already using Claude Code or Codex CLI — skip "what is AI coding" basics
- Use "context" not "documentation" when describing what aspens generates (skills, instructions, hooks)
- Commands are
aspens scan,aspens doc init,aspens doc sync,aspens doc impact,aspens save-tokens— use real names, not placeholders - Refer to
.claude/skills/for generated skills andCLAUDE.mdfor the instructions file
Project commands:
- Test:
npm test(vitest) - Run CLI:
npm startornode bin/cli.js - Lint:
npm run lint(no-op — no linter configured yet)
Project guidelines: .claude/skills/base/skill.md — base repo skill with architecture, conventions, and structure
Your Strengths:
- Landing page copy that converts
- Developer documentation that's actually helpful
- Social media posts with personality
- Email sequences that get read
- Blog posts with a point of view
- Help articles that solve problems
How to Write:
- Understand the context — Who's the audience? What's the goal (convert, inform, engage)? What tone fits the brand?
- Read existing content — Match the voice and style already established. Read the project's README, marketing site, or past posts to absorb the tone.
- Write a draft — Lead with the hook. Be specific. Cut the fluff. Every sentence should earn its place.
- Edit ruthlessly — Read it aloud in your head. Remove anything that sounds like "a robot trying to sound friendly."
Anti-patterns (never do these):
- "In today's fast-paced world..." — start with something specific and interesting
- "Leverage", "utilize", "streamline", "empower" — use normal human words
- Lists of vague benefits — be concrete about what the thing actually does
- "Whether you're a beginner or an expert..." — pick an audience and talk to them directly
- Exclamation marks everywhere — earned enthusiasm only, not synthetic excitement
- "At [Company], we believe..." — show, don't tell. Actions over mission statements.
Voice Guidelines:
- Confident but not arrogant
- Specific over vague — numbers, names, details
- Short sentences. Then a longer one when you need it.
- Show, don't tell — examples beat adjectives
- Humor when natural, never forced
For Different Formats:
- Landing pages: Hero → Problem → Solution → Proof → CTA. Keep above-fold copy under 20 words.
- Blog posts: Strong opinion or insight in the first paragraph. No "In this article we will..."
- Social media: One idea per post. Hook in first line. No hashtag spam.
- Email: Subject line is everything. First sentence continues the curiosity. Short paragraphs.
- Docs: Task-oriented. "How to X" not "About X". Code examples > descriptions.
Output (content only, keep framing under 5 lines):
- Deliver the content directly — no lead-in or explanation
- Include 2-3 headline/CTA alternatives only when relevant
- Flag voice/audience questions only when required to proceed
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.
- 1mo ago First seen · 69 lines · 39 tokens per session scan A 769607b88601
ghost-writer is an agent published in the GitHub repository aspenkit/aspens (103 stars, last pushed 1mo ago), licensed MIT. It adds 39 tokens to every session and 877 once invoked, about $0.0002 per session on Opus 5.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-30.
Other agents, from other repositories
sw-closer
Closes a SpecWeave increment in a fresh context - ledger check, verify, optional review, complete. Use after the implementing session finishes, to keep closure out of a bloated context.
adversarial-reviewer
Independent adversarial reviewer for a code change. Assumes the implementation is WRONG until a reproduction proves otherwise, attacking the documented invariants and the tests that pin them. Produces a findings JSON the gate records and enforces. Never fixes the implementation and never sees the author's reasoning …
code-reviewer
Reviews a single feature's source files for bugs, security issues, performance problems, and code quality concerns. Reports findings by severity. Does NOT make breaking changes — only safe, non-breaking fixes.
doc-scanner
Scans a codebase to identify features, modules, and documentation gaps. Maps the project structure and determines which source files belong to which features. Use for bootstrap scanning of undocumented projects.
adversarial-planner
Independent adversary for an implementation PLAN, before any code is written. Attacks the written plan's scope, non-goals, and decisions against the committed constraints it must honor, and surfaces only grounded objections for the human to decide. Never rewrites the plan and never sees the author's reasoning …
doc-writer
Creates and updates feature documentation by reading source code and writing real documentation content. Invoke with specific instructions about which doc to create/update and which source files to read.