with one click
corp-web-japan-publication-gap-audit
// Audit missing publication IDs in corp-web-japan and decide whether each gap should become a hidden redirect record, a full local migration, a redirect-policy fix, or no action.
// Audit missing publication IDs in corp-web-japan and decide whether each gap should become a hidden redirect record, a full local migration, a redirect-policy fix, or no action.
[HINT] Download the complete skill directory including SKILL.md and all related files
| name | corp-web-japan-publication-gap-audit |
| description | Audit missing publication IDs in corp-web-japan and decide whether each gap should become a hidden redirect record, a full local migration, a redirect-policy fix, or no action. |
| version | 1.0.0 |
| author | Hermes Agent |
| license | MIT |
| metadata | {"hermes":{"tags":["corp-web-japan","publications","id-gaps","hidden-posting","redirect","corp-web-contents","vercel-logs"]}} |
Use this when reviewing corp-web-japan publication/content routing and you notice missing numeric IDs in local content directories such as:
src/content/whitepapers/*.mdxsrc/content/events/*.mdxsrc/content/news/*.mdxsrc/content/blog/*.mdxsrc/content/demo/**src/content/use-cases/*.mdxA missing ID does not automatically mean:
The correct answer depends on:
../corp-web-contentsja) source exists there nowIn practice, the user expects this gap/source/traffic audit before a conclusion like “this PR is stale” or “just add hidden + redirect”.
Do not jump directly from “ID gap” to “create hidden posting”.
Always classify the gap first:
full-local-migration candidatehidden redirect record candidatelegacy redirect-policy candidateseparate anomaly / needs more source tracingintentional omission / no actionFrom the repo root, enumerate actual IDs and gaps per family.
Example:
python3 - <<'PY'
import os,re,glob
roots=[
('blog','src/content/blog'),
('whitepapers','src/content/whitepapers'),
('news','src/content/news'),
('events','src/content/events'),
('use-cases','src/content/use-cases'),
('demo-aip','src/content/demo/aip'),
('demo-acp','src/content/demo/acp'),
]
for name,root in roots:
ids=sorted(int(os.path.splitext(os.path.basename(p))[0]) for p in glob.glob(root+'/*.mdx') if re.match(r'^\d+\.mdx$', os.path.basename(p)))
gaps=[]
if ids:
gaps=sorted(set(range(min(ids), max(ids)+1))-set(ids))
print(f'[{name}] count={len(ids)} gaps={gaps}')
PY
Also list actual filenames to avoid bad assumptions.
Before deciding a gap is accidental, inspect corpus tests such as:
tests/whitepaper-imported-ja-corpus.test.mjstests/events-imported-ja-corpus.test.mjsIf the missing IDs are explicitly excluded from expectedIds, treat the omission as intentional current behavior, even if it may still deserve reconsideration.
Important interpretation:
../corp-web-contents source existenceStay grounded in the sibling repo the user named.
For each missing ID, inspect current/history paths.
Useful commands:
cd ../corp-web-contents
# broad path discovery by id
for id in 13 14; do
git log --all --name-only --pretty=format: | sed '/^$/d' | sort -u | grep "/$id/" || true
done
Prefer narrowing by family patterns such as:
/white-paper/<id>//webinars/<id>//blog/<id>//use-cases/<id>/This is the critical fork.
Example shape:
pages/features/documentation/white-paper/<id>/<slug>/ja/content.mdxInterpretation:
Example shape:
pages/features/demo/webinars/<id>/<slug>/en/content.mdxpages/features/demo/webinars/<id>/<slug>/ko/content.mdxja/content.mdxInterpretation:
Use Vercel production logs for live evidence.
Fast existence check:
vercel logs --project corp-web-japan --environment production --since 24h --json --no-branch --limit 20
Then query specific suspected paths:
vercel logs --project corp-web-japan --environment production --since 30d --search '/features/documentation/white-paper/13' --json --no-branch --limit 20
vercel logs --project corp-web-japan --environment production --since 30d --search '/features/demo/webinars/7' --json --no-branch --limit 20
vercel logs --project corp-web-japan --environment production --since 30d --search '/events/6' --json --no-branch --limit 20
Important patterns:
runtime-missing-redirect + 307 means legacy traffic still hits the path404 on a would-be current canonical path means the gap may already be user-visibleUse this when:
ja/content.mdx exists thereTypical example:
../corp-web-contents/pages/features/documentation/white-paper/<id>/.../ja/content.mdx existsRecommendation:
Use this when:
Important note:
Use this when:
Typical example:
/features/demo/webinars/<id>/...Recommendation:
Use this when:
/events/6/<slug>Recommendation:
Use this when:
For each family, summarize like this:
Family: whitepapers
Gap IDs: 13, 14
ID 13
- corp-web-contents canonical JA source: yes
- production traffic evidence: yes (`/features/documentation/white-paper/13/...` 307)
- classification: full local migration candidate
- note: do not jump straight to hidden redirect
src/content/whitepapers can omit IDs that still exist in ../corp-web-contents/pages/features/documentation/white-paper/<id>/.../ja/content.mdxsrc/content/events can intentionally omit webinar IDs that exist in corp-web-contents only as EN/KO source without ja/content.mdxruntime-missing-redirect traffic to /features/demo/webinars/<id>/..., that usually points to redirect-policy work rather than local Japanese MDX migrationexpectedIdsA gap audit is complete when you can answer, for each missing ID: