/** * SeoPlaybookParser — pure, TOTAL markdown parser for bober.seo-* skill files * (spec-20260715-ultimate-seo-suite, Sprint 2; mirrors * `SecuritySignatureParser`, src/orchestrator/security-knowledge/parser.ts:137-156). * * Block format (mirrored in skills/bober.seo-generic/SKILL.md's "## Signature * Block Format" section — the two are one executable spec): * * ### * - **Title:** * - **Workflows:** comma, separated, SeoWorkflow, members * - **Tactic:** * - **Invariant:** * - **PrimarySourceUrl:** * - **PolicyClass:** auto-safe|human-approve|never-encode * - **EvidenceGrade:** verified|primary-unverified|single-source * - **LiveWeightStatus:** live-corroborated|documented-only|unknown (soft field, defaults to unknown) * - **Keywords:** comma, separated, keywords * * A block is split on a `### ` heading (heading text, trimmed, is the * playbookId). Two DROP rules beyond the security template (architecture * Data Model comments; research §5/§6): * 1. `PrimarySourceUrl` missing/empty -> DROP (no-uncited-claim — the * whole point of this format). * 2. `PolicyClass` === "never-encode" -> DROP (parasite SEO, expired-domain * plays, paid links, mass AI pages, AI-recommendation poisoning). * Plus the standard: empty playbookId, missing Title, or an invalid * PolicyClass value all drop the block. Never throws. No code fences here — * SEO signatures carry `tactic`, not unsafe/safe examples, so there is no * `extractFencedExample` machinery to port. */ import type { SeoSignature } from "./types.js"; export declare const SeoPlaybookParser: { /** * Pure and total: parses `markdown` (no fs access), never throws, and * returns ONLY the surviving signatures — dropped blocks (uncited or * never-encode) are absent from the output entirely. */ parse(markdown: string, skillRelPath: string): SeoSignature[]; /** Same as `parse`, plus a dropped-block count for report-diagnostics auditability. */ parseWithDiagnostics(markdown: string, skillRelPath: string): { signatures: SeoSignature[]; dropped: number; }; }; //# sourceMappingURL=parser.d.ts.map