configs/skills/blog-locale-audit/SKILL.md
Audit a directory of multilingual blog content for completeness, consistency, hreflang correctness, meta-tag parity, and freshness. Builds a translation coverage matrix, flags stale translations, validates hreflang and schema, and emits a prioritized report with runnable fix commands. Use when user says "locale audit", "blog locale-audit", "check translations", "multilingual audit", "translation check", "hreflang check", "Uebersetzungen pruefen".
npx skillsauth add shenxingy/claude-code-kit blog-locale-auditInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Audits a directory of multilingual blog content to ensure every language version is complete, consistent, correctly tagged, and SEO-optimized. Catches international content issues before they hurt rankings.
Adapted from
claude-blog-multilingualby Chris Mueller (Pro Hub Challenge, March 2026). Original: https://github.com/Chriss54/multilingual-int
en/, de/, fr/).lang and translatedFrom fields.hreflang-map.json if present.translatedFrom target, or the
sourceLanguage field in hreflang-map.json if present).Show which translations are missing:
### Translation coverage matrix
| Post (EN) | DE | FR | ES | JA |
|-----------|----|----|----|----|
| how-to-avoid-ai-slop | ok | ok | missing | missing |
| content-marketing-2026 | ok | missing | ok | missing |
Coverage: 60% (6 of 10 expected translations present)
Missing: 4 translations needed
For every post that exists in multiple languages:
| Check | What | Severity | |-------|------|----------| | Section count | Same number of H2 and H3 sections | Critical | | FAQ count | Same number of FAQ items | High | | Image count | Same number of images | High | | Chart count | Same number of charts (SVG figures) | High | | Word count ratio | Within expected band for language pair (DE +20% to +30%, JA -20%, ES +10%) | Medium | | Link count | Similar internal and external link counts | Medium | | Citation capsule count | Same number per H2 across versions | Medium | | Frontmatter parity | All required fields present per version | High |
Flag every significant deviation as an issue.
For every language version verify:
| Element | Check | Severity |
|---------|-------|----------|
| Title tag | Present, correct length for the language | Critical |
| Meta description | Present, correct length, contains a stat | Critical |
| lang attribute or frontmatter lang | Present, valid ISO 639-1 | Critical |
| Schema inLanguage | Matches lang | High |
| Schema translationOfWork | Points to the source URL | High |
| Alt text | Translated (no English alt in non-EN posts) | High |
| Slug | Localized (no English slug in non-EN posts) | Medium |
| Tags | Localized | Medium |
| Keywords | Localized | Medium |
If hreflang-tags.html, hreflang-sitemap.xml, or hreflang-map.json
exists in the directory:
| Check | What | Severity |
|-------|------|----------|
| Self-referencing | Each page references itself | Critical |
| Return tags | Every relationship is bidirectional | Critical |
| x-default | Present, points to source language | Critical |
| Language codes | Valid ISO 639-1 (with optional region) | High |
| URL consistency | Same protocol, same trailing-slash convention | Medium |
| Completeness | Every language version represented | High |
If no hreflang files exist, report it as a critical gap and offer:
"Run /blog multilingual <topic> --languages ... to regenerate, or create
hreflang-tags.html manually."
If seo-hreflang from claude-seo is installed, suggest running it for
deeper validation.
For posts with translatedDate in frontmatter:
| Check | What | Severity |
|-------|------|----------|
| Source updated after translation | Source modified after translatedDate | Critical |
| Translation older than 90 days | May need refresh | Medium |
| lastUpdated mismatch across versions | Versions out of sync | Medium |
| File mtime newer than translatedDate | Content changed without frontmatter update | Warning |
Emit actionable commands per stale file:
3 translations are stale:
- de/ki-trends-2026.md (source updated 2 days ago)
-> Run: /blog translate en/ai-trends-2026.md --to de
- fr/ki-trends-2026.md (source updated 2 days ago)
-> Run: /blog translate en/ai-trends-2026.md --to fr
- es/tendencias-ia-2026.md (translation > 90 days old)
-> Run: /blog translate en/ai-trends-2026.md --to es
Output as markdown by default. If the user passes --html, also write the
report to locale-audit-report.html with the same content.
## Multilingual content audit report
### Summary
- Posts audited: [N] across [N] languages
- Overall health: [score] / 100
- Critical issues: [N]
- Warnings: [N]
### Translation coverage
[Matrix from Phase 2]
### Issues found
#### Critical
- [Issue with file references]
#### Warnings
- [Issue with file references]
#### Passed
- [Checks that passed]
### Prioritized fixes
1. [Highest-impact action]
2. [...]
### Stale-translation alerts
[Runnable commands from Phase 6]
### Quick fixes
- Run `/blog translate <file> --to <missing-langs>` for [N] missing translations.
- Run `/blog multilingual` to regenerate hreflang assets.
- Run `/blog localize <file> --locale <code>` for weak cultural adaptations.
| Scenario | Action | |----------|--------| | Empty directory | "No blog posts found in [path]" | | Only one language present | Report coverage, suggest target languages | | No hreflang files | Flag as critical gap, offer regeneration | | Unrecognized file format | Skip with a warning |
/blog translate <file> --to <missing-codes>/blog localize <file> --locale <code>/blog multilingual <topic> --languages <codes>development
Orchestrate a fleet of parallel `codex exec` workers with you (Claude Code) as the supervisor — spawn one per isolated git worktree, dispatch headless, verify each INDEPENDENTLY, PR/merge. The manual "codex-ultracode" pattern for fanning out real implementation, research, or review work onto Codex. Bakes in the hard gotchas (stdin blocking, background tracking, don't-trust-self-reports, writer isolation). Triggers on — orchestrate codex, codex workers, codex fleet, spawn codex, delegate to codex in parallel, manual ultracode, 开 codex 小弟, 派 codex worker — NOT for a single cross-vendor opinion (use the `second-opinion-codex` agent), NOT for web-UI worker decomposition (use `/orchestrate`).
development
Create and manage git worktrees for parallel Codex sessions
development
Verify project behavior anchors — compilation, tests, and interaction checks after autonomous runs. NOT the Codex built-in /verify (which runs the app to observe a single change working) — this one walks the AGENTS.md "Features (Behavior Anchors)" list.
documentation
End-of-session documentation sync — updates TODO.md and PROGRESS.md only (run /commit after to commit everything)