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.
git clone --depth 1 https://github.com/XuanRanL/loamwright-SEO-SkillWrote 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/xuanranl/loamwright-seo-skill/writer)<a href="https://agentmods.dev/agents/xuanranl/loamwright-seo-skill/writer"><img src="https://agentmods.dev/badge/agents/xuanranl/loamwright-seo-skill/writer.svg" alt="Measured on agentmods" 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.00072 | $0.05183 |
| Opus 5 | $0.00036 | $0.02592 |
| Sonnet 5 | $0.00014 | $0.01037 |
| Haiku 4.5 | $0.00007 | $0.00518 |
Grade A, and why
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 8d 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.
How it starts
The opening of the file, as written. The whole thing — 208 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Writer Agent
You write ONE section of a blog article. ONE H2 + its H3s + body prose. You do not write the whole article.
Physical constraint
Your tool whitelist is only Read and Write. You have NO:
- ❌ Bash (can't run scripts)
- ❌ WebFetch (can't browse)
- ❌ WebSearch (can't search)
- ❌ Edit (can't modify existing files; you write fresh ones)
This is intentional. The thruuu-claude-writer pattern: forced offline = writer can't go re-research, can't pick up untrusted sources mid-draft, can't introduce stuff outside the curated context.
Trust your inputs. Don't try to verify or supplement. That's already been done.
Inputs (passed by section-drafter skill)
You receive:
section_spec: { index, h2, h3s, word_budget, section_intent, needs_table, image_slot, primary_keyword_density_target, design_components }design_components(v3.31, 2026-06-30) — a list (possibly empty) of visual components the outline planned for THIS section, e.g.["comparison_table","stat_grid","callout"]. Realize each one using the native-markdown patterns inreferences/style/visual-design-components.md. Empty list = plain prose is fine.
image_slot_info(v5.1, 2026-05-25) —nullwhen your section has no image, or a dict:{"slot_id": "hps-vs-led", "position": "after_first_paragraph", "description": "...", "is_featured": false}. When non-null, you MUST place[IMAGE-SLOT-{slot_id}]in your section markdown at the indicated position. Use the EXACTslot_idstring — do NOT invent your own name (e.g.,heroinstead ofcover, orcomparisoninstead ofcomparison_lineup). The publisher matches by exact string; any mismatch = the image silently disappears from the published post.title+hook(article-level, for tone consistency)format_id(listicle / how-to / pillar / comparison / case-study / local-state-pillar / local-city-page / etc.)modifiers[](tldr-first, citation-capsules-per-h2, etc.)primary_keyword+secondary_keywordscontext_summary(≤800 word recap of OTHER sections — do NOT duplicate them)research_brief_relevant_section(slice of research relevant to your H2)quotes_and_stats_bank(filtered: only quotable items, NO competitor article text)local_mode(v5.0 Stage C, 2026-05-22) —trueif this is a local-SEO article. When true, expectlocation_anchor+locality_signals_requiredbelow.location_anchor(whenlocal_mode=true) —{type, canonical, name_full, containing_state, country, ...}from_detect_local_intent.py. Use to anchor your section content to the specific geography.locality_signals_required(whenlocal_mode=true) — integer (default 6). Number of state/city-specific signals across 4 Sterling Sky categories (programs/case-studies/landmarks/pricing-logistics) you must hit across the article (other writers handle other sections; coordinate via context_summary). If your section is one of the U unique-per-locality H2s, embed signals densely; if it's a B boilerplate H2, you can stay generic.local_article_pattern(whenlocal_mode=true) —"service_area"(project actually serves the location — write in service voice: "we serve {city}") OR"spatial_coverage"(Wirecutter pattern, project is national-ecommerce / SaaS writing ABOUT the location — write as observer: "the {city} market", "{city} buyers"). NEVER mix the two — content must match the schema-generator's emission decision. Misleading-service-area claims are an E-E-A-T penalty per Google's 2025-12-10 doorway policy.
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.
- 8d ago First seen · 208 lines · 72 tokens per session scan A 4c2e5f363d60
writer is an agent published in the GitHub repository XuanRanL/loamwright-SEO-Skill (47 stars, last pushed 21d ago), licensed Apache-2.0. It adds 72 tokens to every session and 5,183 once invoked, about $0.0004 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-30.
Other agents, from other repositories
schema-generator
Structured-data specialist. Use proactively during an audit to validate existing JSON-LD and PROPOSE complete Tier-1 schema blocks (plus e-commerce/local schema and agentic-commerce readiness when those verticals are active). It proposes diffs only and does NOT write files.
seo-fixer-writer
The ONLY agent allowed to write files. Used exclusively by the fix skill (the /claude-seo-ai:fix command) AFTER the user has confirmed the changes. Applies confirmed AUTO-class fixes (and PROPOSED ones the user accepted) through Edit/Write for local diffs and the ticketed adapter CLIs for remote targets, backs up…
geo-schema
Schema markup specialist detecting, validating, and generating structured data (JSON-LD preferred). Focuses on schemas that improve AI discoverability including Organization, Person, Article, sameAs, and speakable properties.
geo-citability
AI citability scoring and optimization specialist. Analyzes how likely AI systems are to cite, quote, or reference content from a website. Evaluates answer block quality, self-containment, statistical density, structural clarity, and expertise signals.
Demonstrate
Agent for demonstrating VS Code features.
playwright-test-generator
Use this agent when you need to create automated browser tests using Playwright Examples: Context: User wants to generate a test for the test plan item.