Verwendung
- Installationsbefehl kopieren und das Quellpaket vor der Installation in der eigenen Agentenumgebung prüfen.
- Benötigte Werkzeuge, Zugangsdaten und Hosts im Original prüfen.
- Eingabe und gewünschtes Ergebnis beschreiben und die Ausgabe mit den Quellen abgleichen.
npx skills add https://github.com/jeffabailey/skills-writing --skill write-statusVor dem Start
- Die Installation umfasst weder Modellabo noch API-Kontingent oder Dateizugriffsrechte.
- Sterne und Installationen zeigen Aktivität, keine unabhängige Qualitäts- oder Sicherheitsprüfung.
Aus dem Quell-Repository gerendert; Überschriften, Beispiele, Code, Tabellen, Links und Bilder bleiben erhalten.
Article status
Answer one question fast: which per-article writing skills have run on this article, and which haven't. Then offer the review if it's missing. This skill only reads; the only thing it starts is write-review, and only after the user says yes.
Usage
/write:status [article]article is a path to an index.md or its bundle folder. Omit it to check the last article created or changed (the same lookup write-review uses).
Workflow
- Resolve the article. If the user named one, use it. If you created or edited an article earlier in this conversation, use the last one. Otherwise run the check with no argument: the script calls
write-review/scripts/last-article.sh, which picks the repo from$BLOG_ROOT, else the current directory's git repo if it hascontent/orhugo/content/, else~/Projects/websites/jeffbaileyblog; inside it, the newest uncommitted article wins, then the most-changed article of the last commit. The script prints that choice on itsPicked by:line. Repeat it to the user, because from the wrong directory the default repo can silently pick a different article than the one they meant.
- Run the check. Needs only
python3andgit(command -v python3 git; if missing, say "tool missing" and stop).
python3 "${CLAUDE_SKILL_DIR}/scripts/article_status.py" check [article]${CLAUDE_SKILL_DIR} is this skill's directory; substitute it if your agent does not expand the variable. The script reads three places, so you don't search transcripts yourself:
- the run ledger (
~/.local/state/jbb-writing/runs.jsonl, or$XDG_STATE_HOME/jbb-writing/), which the writing skills append to when they finish; - Claude Code transcripts, for
Skillcalls and slash commands that named the article's folder (and, for calls with no arguments, the first article that session read afterwards); - the article itself, for work that leaves a mark (see
artifactbelow).
It takes a second or two. Use --json to parse it (summary holds the missing/stale/covered lists).
- Report the
Picked by:line, the table (one row per skill), and the script's last line (Missing: ... Stale: ... Covered by write-validate-article: ...) as the summary. Use the script's lists as they are; don't rebuild them by hand. Statuses:
| Status | Meaning |
|---|---|
ran | A run is on record and still applies. |
covered | No newer run of its own, but a current write-validate-article run did this check: it runs lychee (links), markdownlint-cli2 and an AGENTS.md pass. Applies to write-check-links, write-run-markdown-lint, hugo-agents-compliance. Not counted as missing. If the validate note says a step was NOT RUN, no coverage is claimed. |
stale | A check ran (itself or via validate), but the article changed after it, so the result may be out of date. |
artifact | No run on record, but the file shows the work. Cover: the cover.image file exists beside index.md. SEO: description is at most 160 characters and there are 4-7 keywords (the rules in hugo/content/prompts/seo-front-matter.md). Not proof the skill ran. |
missing | No evidence. For write-seo the detail says which SEO rule failed (for example "10 keywords, needs 4-7"). |
When answering "what's left before I publish?", list only missing and stale rows; covered and artifact rows are done unless the user wants a deeper pass. Say once, briefly, that transcripts are kept only transcripts_kept_days days (30 by default), so missing on an older article can mean "ran before the ledger existed".
- Offer the review. If
write-reviewismissing, ask exactly:
Run write-review on <folder> now? [y/N]Then stop and wait. Only y or yes (any case) runs it; anything else, including no answer, means no. Don't ask about the other missing skills; list them and let the user pick. If write-review is stale, mention it in the summary but don't prompt, since a review already exists.
- On yes, invoke the
write-reviewskill (jbb-writing-skills:write-reviewwhen installed as a plugin) with the absolute article path.write-reviewrecords its own run in the ledger as its last step, so don't record it again. Only if it ended without printingrecorded write-review on ...(crashed, or an older copy without the record step), record it yourself with its overall score as the note. Then re-runcheckand show thewrite-reviewrow.
Recording runs from other skills
record is how the ledger grows. The per-article writing skills call it as their last step; run it yourself only after a tracked skill finishes without recording:
python3 "<write-status dir>/scripts/article_status.py" record <skill> <article> [--note TEXT]Skill names are accepted in any form (write-seo, /write:seo, jbb-writing-skills:write-seo). Only the eight skills above are tracked. A second record of the same skill on the same article within 10 minutes is skipped (the first one, from the skill itself, keeps its note); pass --force to add it anyway. Timestamps are stored to the microsecond, so a record made right after an edit doesn't read as stale.

