Validate and prepare a localized static-web page set for release after its exact-pair translation is reviewed. Use when checking locale URLs, BCP-47 html lang values, self-canonicals, hreflang alternates, noindex staging, or rendered-language evidence. It does not translate prose, publish a site, or replace source-drift detection.
Scanned 9/3/2026
Install to Claude Code
npx -y skills add OKHP3/skillz --skill okhp3-i18n-page-release --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Okhp3 I18n Page Release?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/okhp3-okhp3-i18n-page-release)More formats (shields.io, HTML) on the badges page.
---
name: okhp3-i18n-page-release
description: >
Validate and prepare a localized static-web page set for release after its
exact-pair translation is reviewed. Use when checking locale URLs, BCP-47
html lang values, self-canonicals, hreflang alternates, noindex staging, or
rendered-language evidence. It does not translate prose, publish a site, or
replace source-drift detection.
license: MIT
compatibility: >
Any Agent Skills-compatible client with filesystem access. Python 3.9+ is
needed only for the optional dependency-free structural validator. A browser
language-detection adapter is optional and must be available locally.
metadata:
author: Jamie Hill (OverKill Hill P³)
version: "1.1.0"
category: universal
origin: okhp3/skillz
homepage: https://overkillhill.com
author-github: https://github.com/OKHP3
in_scope: "Release-readiness verification for localized static HTML routes, locale metadata, alternate graphs, and declared-versus-rendered language evidence."
out_of_scope: "Translating content, certifying native fluency, creating an i18n architecture without an owner-approved registry, automatic publication, or source-drift detection."
---
# okhp3-i18n-page-release
**OverKill Hill P³** · [overkillhill.com](https://overkillhill.com) · [github.com/OKHP3](https://github.com/OKHP3)
This is the release stage after an exact-pair translation skill and before a
localized page is treated as public. It keeps language transformation separate
from page delivery and keeps deterministic source drift separate from technical
SEO and rendered-content evidence.
## Scope
| In scope | Out of scope |
|---|---|
| Static HTML release checks for reviewed or explicitly staged localized routes | Translating, rewriting, or native-language certification |
| BCP-47 language declarations, self-canonicals, alternates, and noindex state | Publishing, sitemap writes, analytics changes, or forced language redirects |
| Optional declared-versus-rendered language evidence when a local adapter exists | Replacing `okhp3-i18n-page-sync` source-drift detection |
## Required inputs
- one reviewed or explicitly draft-marked output from the matching
`okhp3-translation-<source>-<target>` skill;
- an owner-approved locale registry based on
`assets/locale-registry.example.json`;
- the static HTML files named in that registry; and
- the site's stated release policy for each target: `indexable` or
`draft-noindex`.
If the source locale, target BCP-47 tag, route mapping, site origin, or release
state is unknown, return `BLOCKED`. Do not guess a country from a language-only
folder name, and do not change a draft to indexable to make validation pass.
## Procedure
1. Confirm the exact-pair translation record: direction, source and target
hashes, dictionary, review state, unresolved terms, and output locale. A
translation without a review record remains a draft, even if HTML exists.
2. Read the locale registry and its explicit release policy. It is the one
source for locale tag, route root, direction, indexability, optional
x-default fallback, declaration policy, and exact-pair skill. A filesystem
slug such as `fr` is not a substitute for `fr-FR`.
3. Run `scripts/validate-i18n-page-release.py --help`, then use `--check` on
the registry. It verifies each declared HTML file, BCP-47 `html lang`,
self-canonical URL, configured alternate graph, noindex staging policy, and
optional `og:url` equality. It never writes files or fetches a site.
4. Apply the owner-set public-cluster policy. By default, an indexable locale
set is a complete, reciprocal cluster: each
indexable page names itself and every other indexable equivalent with the
registry's BCP-47 tags, plus the declared `x-default`. Draft-noindex pages
remain outside that public cluster until their review gate is complete. This
is a project release policy, not a claim that every item is universally
required by a search engine.
5. If a browser language-detection adapter is available, inspect the rendered
page and retain its report. Reconcile detected body language with `html
lang`, nested `lang` declarations, and `hreflang`. A short page, unreliable
detector result, or unavailable adapter is `UNKNOWN`, not a pass or a
language-quality failure.
6. Check the language switcher manually or with a browser: it names locales in
their own language and maps to the equivalent available route. Do not force
a geo-IP or `Accept-Language` redirect.
7. Return structural results, rendered-language evidence, translation-review
evidence, and release state separately. `ready-for-release` requires all
structural checks to pass, a reviewed indexable translation, and an explicit
owner decision to publish. This skill never makes that publication.
## Boundaries with adjacent skills
| Need | Use this skill? | Route instead |
|---|---|---|
| Translate one owned plainspoken artifact | No | Matching exact-pair translation skill |
| Detect a changed English source or missing target | No | `okhp3-i18n-page-sync` |
| Validate a reviewed localized page before release | Yes | This skill |
| Certify idiomatic target-language prose | No | Authorized native review |
| Add locale routing to an application framework | No | Framework-specific i18n workflow |
## Output contract
Return `Locale registry`, `Translation evidence`, `Structural validation`,
`Rendered-language evidence`, `Release state`, `Warnings and unknowns`, and
`Next action`. Distinguish `pass`, `fail`, `warning`, `unknown`, and
`not-run`. A passing structural validator is not native-language certification,
search-ranking evidence, or publication confirmation.
## Resource routing
- Read `references/locale-registry.md` before creating or changing a registry.
- Use `assets/locale-registry.example.json` as a starting shape, never as live
site data.
- Run `scripts/validate-i18n-page-release.py --help` before direct use.
- Read `evals/evals.json` when changing the skill's validation policy.
- Browser adapters may use an Adobe `page-langs`-style declared-versus-detected
report, but that optional adapter must not become a dependency of the
portable core.
## Evaluation and release
`evals/evals.json` covers an indexable reciprocal cluster, a staged noindex
draft, head-only duplicate-aware metadata, configured language-declaration and
x-default policy, and unavailable rendered-body language evidence. Tests
establish structural behavior only. No fresh live browser benchmark,
native-review study, or search-performance result has been run for version
`1.1.0`.
## About
Built by [Jamie Hill](https://github.com/JamieHill) · [OverKill Hill P³](https://overkillhill.com)
Published at [github.com/OKHP3](https://github.com/OKHP3)
Part of the [OKHP3/skillz](https://github.com/OKHP3/skillz) Agent Skill library.
MIT License -- free to use, fork, and adapt. A nod to the source is appreciated.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!