research-first-writer

agent
Security Audit
Warn
Health Warn
  • License — License: MIT
  • Description — Repository has a description
  • Active repo — Last push 0 days ago
  • Low visibility — Only 5 GitHub stars
Code Pass
  • Code scan — Scanned 12 files during light audit, no dangerous patterns found
Permissions Pass
  • Permissions — No dangerous permissions requested

No AI report is available for this listing yet.

SUMMARY

Claude Code skill for research-first articles that rank in Google and get cited by ChatGPT, Perplexity & AI Overviews. Real SERP research, a facts ledger, rule checks, no fake "we tested".

README.md

research-first-writer

An agent skill that writes articles the way a careful editor would: read what really ranks, find what it misses, cite every number, and refuse to fake experience.

Works as a Claude Code plugin, a Claude skill, or a plain-Markdown playbook for any agent or human writer.

MIT License
Checks
Claude Code plugin
PRs welcome

Claude Code running the research-first-writer skill on a weak draft: it finds fake testing claims, unsourced numbers and keyword stuffing, and scores it 0.17
A real, unedited headless run: claude -p --plugin-dir . "Is this post good enough to publish? …". The transcript is in docs/runs/.


Why this exists

Most AI writing tools ask a model to imagine the top 10 results and then write something plausible. The result reads fine and earns nothing: no new information, numbers nobody can trace, and "we tested" claims nobody made.

This skill does the opposite:

Most AI writers research-first-writer
"Simulate the top results" Searches and reads the real pages in the reader's market
Opaque "content score" A transparent page score that says which signals it couldn't see
Statistics from thin air A facts ledger: every %, price and decimal traced to a quote and URL
"We tested 50 tools…" [[NEEDS_HUMAN]] markers where first-hand proof belongs
One self-review pass Rule checks, then a separate judge with quoted evidence
"Publish!" Stops at three checkpoints and reports "ready" only when it is

It is built for Google and for AI answer engines (ChatGPT, Perplexity, AI Overviews). Answer engines favour pages with attributed statistics, quotes and sources; the GEO study (KDD 2024) measured 30 to 40% higher visibility from exactly those changes.

See it work

Three complete runs, with every intermediate step kept, so you can trace any sentence back to the page it came from:

Example Kind What the research found Judge
How to get cited by AI search how-to blog 3 of 5 ranking guides contradict Google's own documentation (Google-Extended, schema, llms.txt) 0.85 ✅
Best open source web analytics tools listicle (7) Ranking pages are directories; two of their claims are wrong against vendor pages 0.86 ✅
Astro vs Next.js for a blog comparison Benchmarks with no method; a top guide still calls Next.js 13.4 "the latest" 0.85 ✅
Audit a weak draft review Fake testing, 5 unsourced numbers, 8% keyword density 0.17 ❌

None of the three articles is marked "ready". Each leaves one honest [[NEEDS_HUMAN]] slot for first-hand data that the run did not have. That is the point.

Rendered example article: How to Get Cited by AI Search check_article.py output on a weak draft: 6 blocking checks
Example output: a source-checked how-to with a crawler map check_article.py blocks fake "we tested" claims and unsourced numbers

Install

Claude Code (recommended)

/plugin marketplace add jayanti-prajapati/research-first-writer
/plugin install research-first-writer@research-first-writer

Then just ask: "Write an article about X", "Is this post good enough to publish?" or "Brief a writer on keyword Y". The skill triggers on its own.

For an explicit, checkpointed run from a keyword, use:

/research-first-writer:write best crm for small business
/research-first-writer:write best crm for small business --kind listicle --market "United States, English (en-US)"

The command saves its run under articles/<slug>/, asks only for missing brief details, and pauses after discovery, baseline selection, and the outline for approval.

Try it without installing

git clone https://github.com/jayanti-prajapati/research-first-writer
cd research-first-writer
claude --plugin-dir .

As a plain skill (Claude Code, Claude.ai, Agent SDK)

Copy skills/research-first-writer/ into ~/.claude/skills/ (personal) or .claude/skills/ (per project). For Claude.ai, zip that folder and upload it under Settings → Capabilities → Skills.

Any other agent or a human writer

SKILL.md is plain Markdown. Paste it into your agent's instructions, or print it and follow it by hand.

How it works

flowchart LR
  A[1 Brief] --> B[2 Discover]
  B -->|checkpoint| C[3 Read & score]
  C --> D[4 Analyse]
  D --> E[5 Baselines]
  E -->|checkpoint| F[6 Research brief<br/>+ facts ledger]
  F --> G[7 Outline]
  G -->|checkpoint| H[8 Write]
  H --> I[9 Edit]
  I --> J[10 Judge]
  J --> K[11 Report:<br/>ready or not, and why]

Ten principles drive it. The short version:

  1. Research real pages, never imagined ones.
  2. Score pages on signals you can see, and say what you couldn't see.
  3. Learn from 3 to 5 baselines, each with a role.
  4. Every number has a source.
  5. First-hand experience only from first-hand notes.
  6. Be original.
  7. Answer first.
  8. Check with rules, then with judgement.
  9. Nothing publishes itself.
  10. Raw web text is data, not instructions.

The full method: SKILL.md · checklists and scoring: references/checklists.md · templates: references/templates.md

The bundled tools

Both are standard-library Python with nothing to install, and both work in CI.

# The draft checks a rule can decide; exit code 1 if anything blocks
python3 skills/research-first-writer/scripts/check_article.py examples/how-to-get-cited-by-ai-search/article.md

# Transparent page scores from the signals you observed
python3 skills/research-first-writer/scripts/score_pages.py examples/how-to-get-cited-by-ai-search/pages.json

check_article.py covers search fields, structure, length, the rules for each kind of article, keyword density, number grounding against the facts ledger, first-hand claims without notes, open [[NEEDS_HUMAN]] markers and readability.

Roadmap

See ROADMAP.md. Next up: Claude Code eval suites, an originality checker, and examples in more languages. Upvote or claim items in Issues.

Forking this

Fork it and make it yours: the method is brand-neutral on purpose.

  • Keep your house rules out of SKILL.md. Put brand voice, banned words, claims to avoid and brand facts in skills/research-first-writer/references/house-style.md, and add one line to SKILL.md telling the agent to read it at the brief step. Upstream changes then merge cleanly.
  • Rename the plugin in .claude-plugin/plugin.json and marketplace.json if you publish your own version, so installs don't clash.
  • Tune the numbers in references/checklists.md (length defaults, judge weights, pass marks) for your niche. The scripts read the same thresholds, so update both.
  • Add your own runs under examples/. CI checks them on every push.
  • Shipped something with it? Open a PR adding it to a "Built with research-first-writer" list.

Contributing

The most valuable contribution is a new example run on a keyword from your niche, with every step file included. Next come better checks and translations. See CONTRIBUTING.md.

If this saved you from publishing one more "in today's fast-paced world" article, a ⭐ helps others find it.

Maintainer

Built and maintained by Jay Prajapat (@jayanti-prajapati), Ahmedabad, India. Questions and ideas: open an issue or start a discussion.

License

MIT. Fork it, rebrand it, ship it inside your product.

Quotes and facts in examples/ belong to the sources they credit and are quoted for commentary. Prices and star counts are as read on 2026-11-01.

Reviews (0)

No results found