feat(skill): register seo-signal-validation in marketplace; reconcile spec layout

This commit is contained in:
2026-06-26 10:25:46 +09:00
parent 2cadc30825
commit d20675d02c
3 changed files with 13 additions and 9 deletions

View File

@@ -59,6 +59,7 @@
"./custom-skills/32-seo-crawl-budget",
"./custom-skills/33-seo-migration-planner",
"./custom-skills/34-seo-reporting-dashboard",
"./custom-skills/35-seo-signal-validation",
"./custom-skills/95-ourdigital-presales-seo"
]
},

View File

@@ -111,16 +111,19 @@ All three call the *same* engine; they differ only in what they compare against.
```
35-seo-signal-validation/
SKILL.md frontmatter (name/description/triggers), mode dispatch,
the cascade, short-circuit + verdict synthesis
DESIGN.md this spec (lives with the skill; no new top-level dir)
references/
evidence-cascade.md L1L4 concrete tool calls + short-circuit rules
kg-impact-checks.md the 5 entity checks incl. Wikidata QID verification
verdict-taxonomy.md conditions + ledger format + narrative template
backend-selection.md pointer to 20/21's existing backend tables (no dup)
SKILL.md self-contained: classification, 4-layer cascade,
5 KG checks, 4-way verdict, skepticism rules, output
DESIGN.md PLAN.md spec + plan (live with the skill; no new top-level dir)
code/
CLAUDE.md code-environment notes (env, export→script flow)
scripts/
gsc_signal_delta.py deterministic L1/L4 GSC delta + mover ranking
test_gsc_signal_delta.py
requirements.txt (stdlib only)
```
Target environment: Claude Code only (no desktop/ variant — matches precedent 95/96). Registered in .claude-plugin/marketplace.json under ourdigital-seo.
**Triggers:** `validate serp signal`, `is this ranking real`, `prove SEO impact`, `SEMrush surge real?`, `signal validation`, `신호 검증`, `순위 변화 진짜?`, `오가닉 급증 검증`.
**Conventions honored:** no new output directories beyond this approved folder; Notion writes via notion-writer script only; never crawl/audit Marriott for JHR (sameAs reference only); KR deliverables in Korean, English internal notes OK.

View File

@@ -237,7 +237,7 @@ for s in ["### L3", "### L4", "**CONFIRMED**", "**PARTIAL**", "**ARTIFACT**",
"Special:EntityData", "## Output", "## Non-goals"]:
assert s in t, f"missing: {s}"
n = t.count("\n")
assert 150 <= n <= 320, f"SKILL.md length {n} lines outside expected band"
assert 130 <= n <= 320, f"SKILL.md length {n} lines outside expected band"
print(f"OK SKILL.md decision half ({n} lines)")
PY
```