blog-post-redactor
Turn work that actually shipped into an article a working engineer would finish reading. The source material is the repository: commits, diffs, pull requests, the changelog, docs, tests. Not recollection, and not the model’s sense of what a project like this probably did.
This is not a blog generator. It refuses to write the parts it cannot support.
Where this fits
Pathfinder’s other loops build the work and record what happened. This one turns that record outward: it reads work Pathfinder can prove happened and produces a technical story worth publishing.
/ticket complete — a feature, ticket, or release lands ↓/blog-post-redactor write ↓collect reconstruct what actually happened, from the repository ↓angles find the stories in it, and recommend one ↓write write the chosen post ↓verify check it against its own evidenceIt reads whatever repository the session is working in, which is how every other Pathfinder skill behaves. There is no separate mode for that.
Invocation
/blog-post-redactor write/blog-post-redactor write --pr 126/blog-post-redactor write --since v4.3.0/blog-post-redactor write --range v4.3.0..HEAD/blog-post-redactor write "Pathfinder 4.4.0"write runs the whole pipeline. The four stage names run one stage each, which
is how you resume after a correction instead of starting over:
/blog-post-redactor collect --since v4.3.0/blog-post-redactor angles/blog-post-redactor write/blog-post-redactor verifyA free-text scope names work in human terms. It cannot be resolved to commits on its own, so collection records that gap and every later stage treats the boundary as unconfirmed until a human supplies a ref.
Process
- Take the action from the invocation. With none, run
write. - Read only
skills/blog-post-redactor/actions/<action>.mdand follow it exactly. writerunscollect,angles,write,verifyin that order, reading each stage file when it reaches that stage — never all four at once.
The pipeline
Four stages, separated on purpose. Each one reads the artifact the previous stage wrote, not the previous stage’s reasoning.
collect → blog-posts/evidence.json, blog-posts/evidence.mdangles → blog-posts/angles.md, and the candidates shown in the conversationwrite → blog-posts/article.md, metadata.json, linkedin.md, x-thread.mdverify → a report, and edits to the outputs aboveKeeping them apart is the point. Extraction that already knows the story it wants will find that story; a writing stage that can still reach the repository will reach for whatever the paragraph needs. The artifact between two stages is the contract, and it is a file so that a human can read it, correct it, and re-run one stage.
Outputs
Everything lands in blog-posts/ at the repository root, or in the directory
the human names. Nothing is written anywhere else.
blog-posts/ evidence.json the collected bundle, machine-readable evidence.md the structured evidence model, human-readable angles.md 3–5 candidate stories, with a recommendation article.md the article metadata.json title, slug, summary, angle, scope, confidence, open questions linkedin.md a LinkedIn post x-thread.md an X threadRules
These hold in every stage.
- Evidence or nothing. Every factual claim traces to a source reference in
the collected bundle. The grammar is in
evidence-model.md. - Mark what you cannot support. A claim worth making that no evidence backs
is written with
[NEEDS HUMAN CONFIRMATION]beside it and listed inmetadata.json. Prefer cutting the claim. Never quietly assert it. - Read-only against the repository. Collection runs an allowlist of git
subcommands and refuses everything else. No stage commits, stages, branches,
rewrites history, or edits a source file.
verifyfails the run if anything outside the output directory changed. - The human owns publication. This skill writes files. It does not commit, push, post, or publish, and it does not offer to.
- Voice is configuration. How the article sounds is
voice.md. What counts as a story isstory-patterns.md. Neither is part of the extraction logic, and editing either must never require editing a stage.
Files
evidence-model.md— the typed evidence model and the source-reference grammarvoice.md— voice, banned language, register. Edit freely.story-patterns.md— the angle catalogue and how to judge onetemplates/— the shape of each outputengine/— the deterministic ends: read-only collection, and verification
Any repository Pathfinder is working in
Nothing here names a project, a stack, or a publication, so the skill works on whatever repository the session is in — the same as the rest of the kit. A repository with no pull requests, no changelog, and no tests still produces a blog post; it produces a smaller one, with lower stated confidence, and says which evidence was absent. That degradation is a feature of the design, not an edge case.