feat(seo-schema-validator): back the upgraded SKILL.md with a working 5-layer pipeline
The "Upgrade Schema Validator" commit added SKILL.md referencing files that did not exist. Implement them so the skill actually runs: - scripts/validate_schema.py — 5-layer offline validator (L0 coverage, L1 syntax, L2 vocabulary/value-format, L3 rich-result, L4 consistency) with xlsx/csv/jsonl/ json/dir/live-URL adapters. Gate = zero P0; exits 1 on failure. - scripts/schema_rules.json — curated hotel-focused, offline rule set (edit-only extension point). - scripts/make_sample.py + fixtures/sample_schema.csv — deliberately flawed fixture seeding ≥1 defect per layer; used to self-test. - references/ — validation-methodology, defect-taxonomy (25 codes), hotel-type-map. - templates/ — client-qa-report, decision-log. - code/CLAUDE.md — redirect legacy single-URL tool to the new pipeline. Noise control: MISSING_RECOMMENDED aggregated one-line-per-node; unexpected-property checks opt-in via --strict. Generalized client-specific shilla-type-map → hotel-type-map. Self-tested: default P0=5/P1=4/P2=14 FAIL, --strict --no-recommended P2=0, adapters verified. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
# P1 Decision Log — {{프로젝트명}}
|
||||
|
||||
P0 is non-negotiable: every P0 is fixed before launch (the gate enforces it). **P1 is
|
||||
where judgement lives** — some P1s get fixed, some get consciously accepted. This log
|
||||
records *which, by whom, and why*, so an accepted P1 is a decision on the record, not a
|
||||
silently ignored defect. It is the G3 (테스트) deliverable.
|
||||
|
||||
## How to use
|
||||
|
||||
1. Open `defect_log.csv`, filter to `severity = P1`.
|
||||
2. For each P1 (or each group of identical P1s), add a row below.
|
||||
3. Decision is one of: **Fix** (will correct before launch) / **Accept** (ship as-is,
|
||||
with rationale) / **Defer** (post-launch backlog).
|
||||
4. An `Accept`/`Defer` needs a named approver. `Fix` needs an owner + target date.
|
||||
5. Re-run the validator after the fixes; confirm the fixed P1s are gone.
|
||||
|
||||
## Log
|
||||
|
||||
| # | Code | Entry / scope | Summary | Decision | Owner / Approver | Target / Date | Rationale |
|
||||
|---|---|---|---|---|---|---|---|
|
||||
| 1 | {{CODE}} | {{entry_id or (dataset)}} | {{one line}} | Fix / Accept / Defer | {{name}} | {{YYYY-MM-DD}} | {{why}} |
|
||||
| 2 | | | | | | | |
|
||||
| 3 | | | | | | | |
|
||||
|
||||
## Standing decisions (apply to all entries unless overridden)
|
||||
|
||||
Record cross-cutting calls once here instead of per row — e.g. "MISSING_RECOMMENDED for
|
||||
`starRating` is accepted group-wide: not contractually rated." Reduces log noise.
|
||||
|
||||
| Code | Standing decision | Approver | Date |
|
||||
|---|---|---|---|
|
||||
| {{CODE}} | Accept group-wide — {{reason}} | {{name}} | {{YYYY-MM-DD}} |
|
||||
|
||||
## Sign-off
|
||||
|
||||
| Stage gate | Condition | Confirmed by | Date |
|
||||
|---|---|---|---|
|
||||
| G3 테스트 | All P1 triaged (Fix/Accept/Defer), decisions logged above | {{name}} | {{date}} |
|
||||
| G4 안정화 | P0 = 0, all "Fix" P1 closed, online validator green on sample | {{name}} | {{date}} |
|
||||
Reference in New Issue
Block a user