feat(skill): register seo-signal-validation in marketplace; reconcile spec layout
This commit is contained in:
@@ -59,6 +59,7 @@
|
|||||||
"./custom-skills/32-seo-crawl-budget",
|
"./custom-skills/32-seo-crawl-budget",
|
||||||
"./custom-skills/33-seo-migration-planner",
|
"./custom-skills/33-seo-migration-planner",
|
||||||
"./custom-skills/34-seo-reporting-dashboard",
|
"./custom-skills/34-seo-reporting-dashboard",
|
||||||
|
"./custom-skills/35-seo-signal-validation",
|
||||||
"./custom-skills/95-ourdigital-presales-seo"
|
"./custom-skills/95-ourdigital-presales-seo"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -111,16 +111,19 @@ All three call the *same* engine; they differ only in what they compare against.
|
|||||||
|
|
||||||
```
|
```
|
||||||
35-seo-signal-validation/
|
35-seo-signal-validation/
|
||||||
SKILL.md frontmatter (name/description/triggers), mode dispatch,
|
SKILL.md self-contained: classification, 4-layer cascade,
|
||||||
the cascade, short-circuit + verdict synthesis
|
5 KG checks, 4-way verdict, skepticism rules, output
|
||||||
DESIGN.md this spec (lives with the skill; no new top-level dir)
|
DESIGN.md PLAN.md spec + plan (live with the skill; no new top-level dir)
|
||||||
references/
|
code/
|
||||||
evidence-cascade.md L1–L4 concrete tool calls + short-circuit rules
|
CLAUDE.md code-environment notes (env, export→script flow)
|
||||||
kg-impact-checks.md the 5 entity checks incl. Wikidata QID verification
|
scripts/
|
||||||
verdict-taxonomy.md conditions + ledger format + narrative template
|
gsc_signal_delta.py deterministic L1/L4 GSC delta + mover ranking
|
||||||
backend-selection.md pointer to 20/21's existing backend tables (no dup)
|
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`, `신호 검증`, `순위 변화 진짜?`, `오가닉 급증 검증`.
|
**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.
|
**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.
|
||||||
|
|||||||
@@ -237,7 +237,7 @@ for s in ["### L3", "### L4", "**CONFIRMED**", "**PARTIAL**", "**ARTIFACT**",
|
|||||||
"Special:EntityData", "## Output", "## Non-goals"]:
|
"Special:EntityData", "## Output", "## Non-goals"]:
|
||||||
assert s in t, f"missing: {s}"
|
assert s in t, f"missing: {s}"
|
||||||
n = t.count("\n")
|
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)")
|
print(f"OK SKILL.md decision half ({n} lines)")
|
||||||
PY
|
PY
|
||||||
```
|
```
|
||||||
|
|||||||
Reference in New Issue
Block a user