Audit cogni-copywriting's arc-preservation references against cogni-narrative's upstream arc definitions. Detects missing arcs, heading mismatches, word target drift, technique inconsistencies, localization gaps, and validation rule conflicts (like H2 count rules that would reject valid narratives). Use whenever the user mentions "audit arc sync", "check copywriter arcs", "narrative drift check", "compare arcs upstream", "are arcs up to date", "arc contract check", "will copywriter break on this arc", or any question about whether cogni-copywriting references match cogni-narrative definitions — even if they don't say "audit" explicitly. Also use proactively after cogni-narrative version bumps.
From cogni-copywritingnpx claudepluginhub cogni-work/insight-wave --plugin cogni-copywritingThis skill is limited to using the following tools:
Guides browser automation with Playwright, Puppeteer, Selenium for e2e testing and scraping. Teaches reliable selectors, auto-waits, isolation to fix flaky tests.
Provides checklists to review code for functionality, quality, security, performance, tests, and maintainability. Use for PRs, audits, team standards, and developer training.
Enforces A/B test setup with gates for hypothesis locking, metrics definition, sample size calculation, assumptions checks, and execution readiness before implementation.
cogni-narrative (upstream) defines story arcs — each with 4 named elements, section proportions, technique assignments, and localized headings. cogni-copywriting (downstream) has an arc-preservation mode that polishes narratives without breaking their arc structure. The preservation mode relies on three reference files that must stay in sync with upstream definitions:
When cogni-narrative adds arcs, renames headings, adjusts proportions, changes technique assignments, or introduces new structural conventions (like message-driven headings), these downstream references drift. This skill detects that drift and produces an actionable report. It never auto-fixes — the human decides what to change.
Resolve paths relative to the monorepo root. The monorepo root is the nearest ancestor directory containing both cogni-narrative/ and cogni-copywriting/ as siblings.
| # | File | What it provides |
|---|---|---|
| U1 | cogni-narrative/skills/narrative/references/story-arc/arc-registry.md | Master list of all arcs: arc_id, element short names, section proportions, detection signals |
| U2 | cogni-narrative/skills/narrative/references/story-arc/{arc-id}/arc-definition.md | Per-arc: full element headings, DE translations, word proportions, technique notes |
| U3 | cogni-narrative/skills/narrative/references/language-templates.md | Section "Insight Summary (Arc Element Headers)" — exact EN/DE ## headers per arc |
| U4 | cogni-narrative/skills/narrative/references/narrative-techniques/techniques-overview.md | "Application by Arc Element" matrix — which techniques apply to which arc elements |
| # | File | What it contains |
|---|---|---|
| D1 | cogni-copywriting/skills/copywriter/references/09-preservation-modes/arc-preservation.md | Arc detection table, localized heading table, structure preservation rules, validation checklist |
| D2 | cogni-copywriting/skills/copywriter/references/09-preservation-modes/arc-technique-map.md | Per-arc ## Arc: {arc-id} sections with technique table, element rules, word targets |
| D3 | cogni-copywriting/skills/copywriter/references/00-index.md | Mode detection logic — lists which arc patterns trigger arc-aware mode |
Find the monorepo root by walking up from the current working directory until you find a directory containing both cogni-narrative/ and cogni-copywriting/ as children. Set:
MONO_ROOT = <detected root>
UPSTREAM_REGISTRY = ${MONO_ROOT}/cogni-narrative/skills/narrative/references/story-arc/arc-registry.md
UPSTREAM_LANG = ${MONO_ROOT}/cogni-narrative/skills/narrative/references/language-templates.md
UPSTREAM_TECH = ${MONO_ROOT}/cogni-narrative/skills/narrative/references/narrative-techniques/techniques-overview.md
DOWNSTREAM_PRES = ${MONO_ROOT}/cogni-copywriting/skills/copywriter/references/09-preservation-modes/arc-preservation.md
DOWNSTREAM_TECH = ${MONO_ROOT}/cogni-copywriting/skills/copywriter/references/09-preservation-modes/arc-technique-map.md
DOWNSTREAM_INDEX = ${MONO_ROOT}/cogni-copywriting/skills/copywriter/references/00-index.md
Read all 7 main files (U1, U3, U4, D1, D2, D3 plus per-arc U2 definitions). If any upstream file is missing, abort with an error — the contract source is unavailable. If a downstream file is missing, flag it as a CRITICAL finding and continue with remaining checks.
From arc-registry.md (U1), parse the Quick Reference table to build the master arc list:
For each row: arc_id, element_short_names[4], section_proportions
For each arc_id, read {arc-id}/arc-definition.md (U2) and extract:
## header textFrom language-templates.md (U3), find the "Insight Summary (Arc Element Headers)" section. For each arc, extract the EN/DE heading table. These are the canonical heading strings.
From techniques-overview.md (U4), find the "Application by Arc Element" table. For each technique row, note which arc elements it applies to.
From arc-preservation.md (D1), extract:
From arc-technique-map.md (D2), extract:
## Arc: {arc-id} sections existFrom 00-index.md (D3), extract:
Execute checks C1-C8 in order. For each finding, record:
| Field | Description |
|---|---|
| check_id | C1-C8 |
| severity | CRITICAL, HIGH, MEDIUM, or INFO |
| file_to_fix | Downstream file path (relative to monorepo root) |
| finding | What is wrong |
| expected | What the correct value should be (from upstream) |
For each arc_id in the upstream registry:
## Arc: {arc-id} section (D2). If missing: CRITICAL.This is the most important check. A missing arc means the copywriter will either skip arc-aware mode entirely (if it cannot detect the arc) or polish without element-specific technique guidance (if detection works but no technique section exists). A missing entry in 00-index.md means the mode detection routing won't even consider this arc.
For each arc present in both upstream and downstream:
For each arc present in the upstream language-templates.md:
Paradigm check first: Determine whether the upstream arc-definitions use absolute word counts or proportional percentages. If upstream has migrated to proportional percentages (e.g., "27% of target") but the downstream technique map still uses absolute ranges (e.g., "400-500"), flag this as a systemic MEDIUM finding — the entire word target paradigm has shifted and all downstream targets are expressed in the old format, even if the numeric ranges happen to overlap. Also check if the Post-Polish Validation tolerance rule has changed (e.g., from "+/-50 words" to "+/-10% of proportional midpoint").
Per-element check: For each arc present in arc-technique-map.md:
proportion * default_total (default_total = 1675 unless arc-definition specifies otherwise).For each arc present in arc-technique-map.md:
For each arc in arc-technique-map.md:
.claude-plugin/plugin.json for current version.last_updated date.git log --oneline --since="{last_updated}" -- cogni-narrative/skills/narrative/references/story-arc/Check whether the downstream validation rules in arc-preservation.md and arc-technique-map.md are structurally compatible with all upstream arcs — including arcs that may use different conventions than the original 5.
Specific checks:
The point of this check is to catch cases where the downstream validation logic would reject a correctly-produced narrative — a false negative that breaks the polish pipeline silently.
Output the report directly (do not write to file). Use this structure:
# Arc Contract Audit Report
**Date:** {today ISO}
**cogni-narrative version:** {version}
**arc-technique-map.md last_updated:** {date}
**Arcs in upstream registry:** {count}
**Arcs in downstream technique map:** {count}
## Summary
| Severity | Count |
|----------|-------|
| CRITICAL | {n} |
| HIGH | {n} |
| MEDIUM | {n} |
| INFO | {n} |
## Findings
### C1: Arc Coverage
{Table showing each arc's presence in all three downstream files (D1, D2, D3)}
### C2-C8: {Per-check findings}
{For each finding: severity badge, file to fix, what's wrong, what it should be}
## Recommended Actions
{Ordered list: CRITICAL first, then HIGH, then MEDIUM. Each action states the file to edit and the specific change to make.}
End with a single summary line:
Audit complete: X findings (Y CRITICAL, Z HIGH, W MEDIUM, V INFO)
If CRITICAL findings exist, add: "Immediate action recommended — missing arcs mean the copywriter cannot apply arc-aware polish for those narratives."