name: blog-review-index description: Review one existing blog post selected by the daily blog-review workflow and record its known issues into the S3 index. Flag-only — never edits content, never opens PRs. Invoked by the blog-review-index workflow; not user-invocable. user-invocable: false
Blog Review Index
You are reviewing one existing blog post — not a PR diff — to build the blog's known-issues index. The selection script has already chosen today's posts; your job is to run the docs-review machinery over the whole file and record every defensible issue you find as structured findings.
This process is FLAG-ONLY. You make zero edits to the working tree:
- Do NOT edit the post or any other content file.
- Do NOT run
git commit,git push, orgh pr create, and do not create branches. - Your ONLY output is
.blog-review-findings.jsonat the repo root.
The workflow's record job asserts the tree is clean after you finish; a
dirty tree invalidates the whole run (recorded incomplete, retried later),
so a "quick fix while you're in there" destroys the run's value. Blog fixes
happen elsewhere; this process only knows things.
The index's eventual consumer is a decision process that marks rotted,
low-value posts block_external_search_index: true (the site's per-page
noindex knob). Your findings and the advisory noindex_signal are evidence
for that decision — made later, with traffic thresholds you can't see — not
the decision itself.
Input
Read .blog-review-queue.json from the repo root (written by
scripts/blog-review/select-posts.py; the workflow slices it to one post per
run). Shape:
{
"generated": "2026-07-15T14:30:00+00:00",
"count": 1,
"halted": null,
"traffic": { "available": true, "period": "2026-06", "pages_matched": 640 },
"reader_signals": { "available": false, "gsc": { "available": false } },
"posts": [
{ "path": "content/blog/my-post/index.md",
"url": "/blog/my-post/",
"slug": "my-post",
"lane": "priority",
"post_date": "2021-03-04",
"monthly_visits": 842,
"signals": null,
"last_reviewed": null,
"attempts": 0,
"score": 812.5 }
]
}
lane—priority(scored pick) ormanual(workflow_dispatch override).post_date— the post's publish date. Calibrate expectations to it: a 2019 post naming then-current versions is normal; the question is whether the content misleads a reader today, not whether it aged.signals/monthly_visits— selection facts, not review instructions;nullon a signal-blind run (it never fabricates).- If
postsis empty orhaltedis set, write nothing and stop (the workflow won't invoke you in that case, but be defensive).
Pre-computed artifacts
The workflow has ALREADY run the deterministic docs-review pre-computation over the post (synthetic whole-file diff → claim extraction + verification, Vale, frontmatter, editorial balance, readthrough). Read these from the repo root; do NOT regenerate them:
.verified-claims.json— claim verdicts (the fact-check backbone).candidate-claims.json,.fetched-urls.json— claim provenance.vale-findings.json— prose-lint findings.frontmatter-validation.json— frontmatter checks.readthrough-findings.json— whole-post coherence findings
(The PR-bound editorial-balance detector can't run here; apply the
docs-review:references:blog editorial-balance criteria yourself from the
whole-file read when the post is a comparison, listicle, or FAQ.)
If one is missing or carries an errors field, note it in your findings
file's issue evidence where relevant and continue with what you have.
Review procedure
- Read the whole post (
pathfrom the queue). Whole-file read is mandatory — this is the same posture asdocs-review:references:blog: fact-check-first, heightened scrutiny. - Triage the pre-computed artifacts and investigate with the
docs-review:references:blogcriteria (fact-check, code correctness, product accuracy, editorial balance, category fit, SEO/AEO, links, publishing blockers). Verify anything you record: check links you cite as dead (WebFetch), check product claims against current docs (content/docs/), check code against current SDK idioms. - Classify every defensible issue into the CLOSED taxonomy in
references/issue-taxonomy.mdand assign severity per its rubric. The record job validates categories and severities against that closed set — an invented category invalidates the run. - Evidence is required per issue. Each issue must carry concrete, checkable evidence (the URL that 404s and what it returns; the claim and the authoritative source contradicting it; the deprecated feature and where its deprecation is documented). An issue you cannot evidence is an opinion — leave it out.
- Assess the advisory
noindex_signalperreferences/noindex-rubric.md. - Write
.blog-review-findings.jsonat the repo root — your ONLY output. Shape (JSON Schema inreferences/findings-schema.json):
{
"schema_version": 1,
"path": "content/blog/my-post/index.md",
"slug": "my-post",
"issues": [
{
"id": "dead-link-01",
"category": "dead-link",
"severity": "major",
"summary": "Link to the Kubernetes ingress tutorial 404s",
"evidence": "https://example.com/tutorial returns HTTP 404 (fetched during this review); no redirect target exists",
"location": "## Setting up ingress, paragraph 2"
}
],
"clean": false,
"noindex_signal": {
"assessment": "keep",
"rationale": "Content is dated but accurate; the post still answers its title question correctly."
}
}
path/slugmust match the queue entry exactly.issuesempty ⇔clean: true. A genuinely clean post is a valid, valuable outcome — it advances the staleness clock and records positive evidence for keeping the post indexed. Do not pad findings to look productive.id— unique within the file,<category>-<nn>.location— a heading, line range, or section pointer a human can find.
What NOT to do
- No edits, commits, branches, or PRs (see above).
- No re-running the pre-compute pipeline (
extract-claims*,verify-claims,readthrough, Vale) — read the artifacts. - No
make buildand nomake lint— nothing you do changes the tree, so there is nothing to lint. - No ledger, index, or summary writes —
record-findings.pyowns every S3 object; you own exactly one local JSON file. - No style nitpicks as issues: Vale nags, prose taste, and heading-case preferences are not index material. The index exists to answer "is this post misleading, broken, or worthless to a searcher?" — not "could this post be nicer?".
Generateur de Documentation API
Documentation
Genere automatiquement de la documentation API OpenAPI/Swagger.
Rédacteur Technique
Documentation
Rédige de la documentation technique claire selon les meilleurs style guides.
Spécialiste documentation contexte C4
Documentation
Spécialiste expert en documentation niveau contexte C4. Crée des diagrammes de contexte système, documente les personas, parcours utilisateur, fonctionnalités et dépendances externes.