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.
npx skills add Glad-Labs/poindexter --skill two-pass-writergit clone --depth 1 https://github.com/Glad-Labs/poindexterWrote 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/skills/glad-labs/poindexter/two-pass-writer)<a href="https://agentmods.dev/skills/glad-labs/poindexter/two-pass-writer"><img src="https://agentmods.dev/badge/skills/glad-labs/poindexter/two-pass-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/skills/glad-labs/poindexter/two-pass-writer"><img src="https://agentmods.dev/badge/skills/glad-labs/poindexter/two-pass-writer.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector pass
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.00058 | $0.02286 |
| Opus 5 | $0.00029 | $0.01143 |
| Sonnet 5 | $0.00012 | $0.00457 |
| Haiku 4.5 | $0.00006 | $0.00229 |
Grade A, and why
two-pass-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 7d 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 — 194 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Two-pass writer skill
Two prompts the canonical_blog pipeline uses to draft and revise niche-driven
posts. The architect routes on the description above; UnifiedPromptManager
resolves each template by key (Langfuse override still wins over the bodies
below).
Keys follow the dotted shape atoms.<atom_name>.<purpose>. Variables use
{name} placeholders matched against str.format kwargs; curly literals inside
JSON-shaped templates must be doubled ({{ and }}).
Default prompts — basic but functional; production-quality prompt packs ship as a premium add-on.
atoms.two_pass_writer.revise_prompt
Revise the following draft. For each [EXTERNAL_NEEDED: ...] marker, substitute
the corresponding external fact below and link it inline to its source URL.
Leave all other content as-is.
Return the COMPLETE revised post exactly once. Do not repeat, duplicate, or
append a second copy of any section, and do not pad the length — the revision
should be about as long as the original and end on a complete sentence.
If revision exposes a new claim that needs outside support, mark it
[EXTERNAL_NEEDED: ...] again so the next pass can fill it.
Original draft:
{draft}
External facts:
{aug_block}
atoms.two_pass_writer.generate_with_context
Write a blog post on the topic: "{topic}" with this angle: "{angle}".
{instructions}
Background context — your own prior work, posts, and research notes, each shown
as "From <source>:". These are for your understanding only — write what they say
in your own words and never print a source filename or its label in the post.
Lead with what you (the publisher) have actually built, run, or found here; use
outside sources to corroborate, not to carry the whole article:
{snippet_block}
EVIDENCE MARKERS — the only two markers this prompt accepts:
Both show the reader something REAL instead of a diffusion model's impression
of it. Both take a key from a fixed list; an unlisted key renders nothing, so
never invent one, and never put data, numbers, a description, or a URL inside
the brackets — the contents come from the system, not from you.
- CHARTS. When a section states a NUMERIC claim our own measurements can plot —
a comparison, a rate, a spread — place [CHART: chart-key] on its own line. It
draws the real figures to scale. Available charts:
{chart_targets}
- SCREENSHOTS. When a section makes a claim about THIS system that a real screen
would evidence — a dashboard, a queue, a metric — place
[SCREENSHOT: target-key] on its own line. It captures the live surface, so the
reader sees the actual numbers. Available targets:
{screenshot_targets}
- Place at most one of each, and only where the surrounding prose actually
discusses what it shows. Add no OTHER image markers: ordinary illustrations
are chosen for you after the draft is written.
VOICE
- First person is welcome when it is grounded in the context or SOURCES above.
Use "we"/"our" for work, tests, or results that actually appear there
("we ran this on a 32GB card and saw..."). Never claim work that is not in a
source — if you cannot ground a "we" statement, drop it.
- Write to the reader as "you". Take a clear position; don't hedge with
"both have merits".
CITE YOUR SOURCES (do this — don't avoid the numbers)
- Use the specific numbers, prices, and named results from your sources, and
link each one inline to its exact URL: "it sustains [142 fps at 4K](https://...)".
- Any claim that names a publication, person, or statistic needs an inline
markdown link to its source URL. With no URL, state the point plainly and
drop the attribution — never write a bare "[]", a placeholder parenthetical
like "(source)", "(citation)", or "(url)", or "According to [Source]" with no
link.
- The ONLY square brackets in the post are real markdown links —
[visible text](https://real-url). Never reproduce a background-note label
(a filename, a slug, or a "From <source>:" prefix) as a citation.
- Never invent a statistic, percentage, benchmark, or version number. Use a
figure only when it appears verbatim in a source or background note;
otherwise describe the effect in words ("a clear speedup") with no number. A
plausible-sounding but unsourced number fails review.
- No footnotes and no reference list. Do not use footnote markers ([^1],
[^2]), and do not add a "Sources", "References", "Footnotes", or "Further
reading" section at the end. A source is either an inline markdown link in
the sentence, or it is not cited at all.
- Never write a placeholder or guessed URL, a bare bracketed domain
([example.com/page]), or a meta-note like "placeholder URLs". If you lack a
real https:// URL for a fact — normal for your own background notes — state
it in plain prose with no marker; the pipeline adds internal links afterward.
BE SPECIFIC — USE REAL NAMES
- Name the actual products, tools, models, and numbers from the topic and your
context. If the topic says "RTX 5090", write "RTX 5090" — never a generic
stand-in like [High-End Consumer GPU], [Product Name], or [Enterprise
Accelerator]. A bracketed placeholder is always worse than naming the thing.
- Naming an entity that already appears in your topic or context is NOT
fabrication — it is the job. The anti-fabrication rule bans inventing a
precise number that has no source; it never bans using a name or figure that
is already in front of you. When unsure, name the entity and describe the
effect in plain words.
- Leave NO fill-in-the-blank token in the final post — no [bracketed
placeholder] of any kind, no "TBD", no "(add benchmark here)". If you lack a
specific, write the sentence without it rather than marking a gap.
NAMING PEOPLE (products and people follow different rules)
- Name a person when they are the subject of the piece, the author of a source
you are citing, or a public figure being discussed in their public work — a
researcher and their paper, an author and their book, an executive and their
public statement. That is the job; the sourcing rules above apply as normal.
- Everyone else stays out of the post. When research surfaces a private
individual — someone who merely shares a name or a location with your topic,
a named reviewer, a local business owner — make the point without them. A
real person is not colour for an opening paragraph.
- Describe a named person only by what they published, built, or said on the
record. Never characterise how someone does their job from rating-site
scores, review-site listings, or complaint records — accurate or not, that is
not something to write about a person.
STRUCTURE
- Use real "## " H2 headings ("### " for subsections). Never use a bold line as
a fake heading, and don't open the body with an H1 — the title is added
separately.
- Cover each point once. Do NOT repeat or restate a section to fill length. If
you find yourself rewriting something you already covered, move to the
conclusion instead.
- Finish with a complete concluding paragraph. Never stop mid-sentence.
LENGTH
- Aim for roughly {target_length} words. Treat this as a depth target, not a
quota: reach it by covering the topic thoroughly — concrete detail, worked
examples, and reasoning — never by padding, repeating, or stretching a thin
point. If the topic is genuinely covered in fewer words, stop there; if it
needs more to be complete, write more. A focused post that is shorter beats a
padded one that hits the number.
STYLE
- Vary sentence and paragraph length. Avoid "delve", "testament", "tapestry",
"navigating the landscape", "multifaceted", "at its core", "at the heart of",
"It's not just X, it's Y", "In conclusion", "In summary".
Return the full post body once, in Markdown — no preamble, no image
descriptions, and no placeholder tokens other than [EXTERNAL_NEEDED: ...].
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.
- 7d ago Changed · +21 lines 7d20d3337268
- 11d ago First seen · 173 lines · 58 tokens per session scan A 7f88bc109be7
two-pass-writer is a skill published in the GitHub repository Glad-Labs/poindexter (5 stars, last pushed today), licensed Apache-2.0. It adds 58 tokens to every session and 2,286 once invoked, about $0.0003 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.
Other skills, from other repositories
spec-generate
Product Spec Builder that helps PMs generate clear, structured, testable PRDs. Creates both full and lightweight specs for any product or platform with a guided step-by-step workflow. Output in English Markdown format.
Playwright (Automation + MCP + Scraper)
Browser automation via Playwright MCP. Navigate websites, click elements, fill forms, take screenshots, extract data, and debug real browser workflows. Use when (1) you need a real browser, not static fetch; (2) the task involves Playwright MCP, browser tools, Playwright tests, scripts, or JS-rendered pages; (3) the…
product-team
A Chinese-language product development workflow led by one AI team lead taking several roles: product strategy, requirements writing, prototype creation, and user-experience review.
ux-walkthrough-skill
A user-experience review process that examines a product’s screens and user journeys against its product requirements document (PRD). It checks consistency, accessibility, errors, and whether users can complete tasks clearly.
glmocr
An optical character recognition tool that extracts printed text, tables, mathematical formulas, and handwriting from images or PDFs.
cli-anything
A tool-building workflow that turns software controlled through a graphical interface—such as GIMP or Blender—into a command-line tool. The resulting tool can return machine-readable JSON as well as text for people.