---
name: deeper-signals-narrative
description: >
  Use this skill whenever a user wants to synthesize multi-source assessment data on one leader
  into a criteria-aligned narrative report for a search committee, hiring CEO, or board. Triggers:
  "leadership narrative", "candidate assessment report", "write up this executive assessment",
  "executive search report", "assessment summary for the committee", "profile against the success
  criteria", or any request combining a role's success criteria with candidate materials
  (psychometrics from any vendor, 360 feedback, interviews, references, case or simulation
  performance, biodata) and asking for a written profile or narrative. Also triggers on an
  uploaded executive assessment pack or a committee or hiring CEO audience. Use it whenever the
  deliverable is a criteria-structured narrative on one leader, even if "narrative" is never said.
  It characterizes evidence against the criteria; it never recommends, ranks, or gives a hire /
  no-hire verdict; the output is a draft for a qualified assessor to own.
license: Proprietary
---

# Leadership Narrative Summary

This skill helps executive search consultants and assessment partners synthesize multiple
data sources on a single leader (VP and Director level to Board) into a coherent,
criteria-aligned draft narrative, delivered as a Deeper Signals branded Word document of
approximately 10 pages. It accelerates the writing, never the judgement: the output is a
working draft the assessor reviews, edits, and takes ownership of before anyone else sees
it.

The skill is fully standalone. The booklet generator, brand fonts and assets, the verbatim
text blocks, and all reference material are bundled in this folder, with no dependency on
any other Deeper Signals skill and no network calls. Source materials can come from any
assessment vendor.

---

## Operating principles (non-negotiable)

1. **Every claim is traceable.** Drafting happens only from the evidence register built in
   extraction; any candidate-specific statement that cannot be anchored to a register
   entry gets cut. General leadership knowledge may interpret evidence, never substitute
   for it, and never masquerades as candidate-specific evidence.
2. **Criteria are the spine.** User-supplied success criteria structure the whole
   document. No criteria, no document (Gate 1).
3. **Evidence is characterized; the candidate is never rated.** Each criterion gets one of
   five evidence statuses, computed mechanically from the register. No hire / no-hire
   recommendation, no ranking, no verdict, no suitability statement, ever, even when the
   user asks directly. Decline briefly and point to the evidence summary and open
   questions: the judgement belongs to the assessor and the committee.
4. **Convergence outweighs single sources**, weighted by the evidence typology. Interview
   self-description alone never supports a strength or a development area.
5. **Valence is coded, not judged freely.** Every evidence item is coded, one item at a
   time, against a user-confirmed evidence coding frame (Gate 1.5); an item's direction
   for a criterion derives from the polarity of the indicators it matches, an item can
   point different ways for different criteria, and a mandatory verification pass
   re-derives every coding before statuses are computed. The frame codes evidence; it
   never scores, rates, or ranks the candidate, and it never contains invented scored
   exemplars.
6. **Fact, observation, self-report, inference, and hypothesis stay explicitly
   distinguished**, in the register and in the prose. Divergence is interpreted as a
   labeled hypothesis, never just flagged.
7. **The output is a starting point, never a final product, and its AI origin is
   unmissable.** The artefact says so itself: the AI-generated working-draft tagline on
   the cover, the AI-generated draft footer on every body page, the how-to-use note
   naming the AI origin, the "How this document was produced" statement with the
   highlighted AI-mistakes caution directly under the source inventory, the AI-generated
   draft notice that opens the executive summary, and the closing disclaimer.
   Interpretation cautions are written into the prose where a reading needs the
   assessor's confirmation.
8. **Protected characteristics never enter** the register or the document, even when a
   source volunteers them (see `references/evidence_rules.md`).
9. **Thin evidence makes a shorter document**, with Insufficient Evidence stated honestly.
   Padding is a build-breaking defect.
10. **One candidate per run.** Never compare, rank, or express preference across
    candidates, even when the user has run the skill on several against the same criteria.

---

## Workflow

### Step 1: Run the intake gates

Read `references/intake_gates.md` and run all the gates before touching candidate
material: (1) success criteria, hard gate, with a derive-from-role-spec fallback that
requires explicit confirmation; (1.5) evidence coding frame, hard gate, guiding the user
along either path: ingest and normalize indicators they supply, or say plainly that
evidence cannot be coded consistently without a frame, derive one from the definitions
and the mandate (3 to 6 effective, 2 to 4 ineffective per criterion, no invented
exemplars), and require confirm-with-edits; (2) source materials, hard gate, with a
played-back inventory, tier classification, and the question whether any source has a
designed mapping to the criteria (recorded as targets); (3) role mandate and business
context, hard gate, a short paragraph suffices; (4) audience, length, candidate name,
role, organization. Confirm the whole intake in one compact playback before extraction.

### Step 2: Extract into the evidence register

Read `references/evidence_rules.md`. Process each source into `register.json` (schema in
that file): every evidence item gets a source, tier, epistemic status, and one coding
entry per criterion it bears on (or a MOTIVATION / DERAILER / ONBOARDING
pseudo-criterion). Code one item at a time against the frame, restating the candidate
indicators before deciding the match; never sweep a source in bulk. Code the behavior,
never the eloquence, length, or confidence of the text. Respect targeted sources: coding
across a source's targets requires the matched indicator plus a one-line justification.
If a recurring theme fits no indicator, propose a frame addition and recode only after
the user confirms. After any psychometric source, run the mandatory verification
checkpoint: play back instrument, scales, score format, and scores, and get the user's
confirmation before the data enters the register. Never guess a score; ask for a paste
instead. Then run the mandatory verification pass: re-derive every coding from the frame
and the item summary, in item order, and carry the disagreements and proposed
resolutions to the coverage checkpoint.

### Step 3: Validate, compute statuses, and run the coverage checkpoint

```bash
python3 scripts/validate_register.py register.json register_computed.json
```

The validator checks structure and the frame, recomputes every coding valence from
indicator polarity (failing on any mismatch, so a hand-edited valence cannot survive),
warns on cross-target codings without justification, screens for protected-characteristic
content, computes coverage, and assigns each criterion's status mechanically (decision
table in `references/status_taxonomy.md`). Play the printed coverage summary back to the
user together with the verification-pass disagreements and resolutions, flagging criteria
with no observed-behavior evidence or none at all and any uncoded items, and let them add
sources or accept the gaps. Draft only after they confirm. If a computed status or
valence looks wrong, fix the coding and re-run; neither is ever hand-edited.

### Step 4: Draft the narrative

Read `references/document_structure.md` and `references/status_taxonomy.md` (calibrated
language), then draft `narrative.json` (shape documented in the builder docstring and
`evals/fixtures/sample_narrative.json`): section paragraphs within budget, criterion
blocks that open on the computed status, context anchoring to the Gate 3 mandate
throughout, and attribution woven into prose. At interpretation-critical points (every
Mixed Evidence reading, every derailer hypothesis, motivation when it rests on the
candidate's own account), write the caution into the prose itself; the bracketed
[ASSESSOR REVIEW] marker syntax is retired and the builder rejects it. Executive
register, no jargon in the body, instruments in the methodology section only. No em or
en dashes anywhere; no italics except statistical symbols.

### Step 5: Build the booklet content

```bash
python3 scripts/build_narrative_content.py register_computed.json narrative.json content.json
```

The builder enforces the section order, cross-checks every narrative status against the
computed status (failing on any mismatch), enforces word budgets (fail above 115 percent),
rejects the retired marker syntax and any em or en dash, and assembles the automatic
elements: AI-generated draft cover labels and per-page footer, the how-to-use and
confidentiality page, the source inventory (no tier codes) with the production statement
and AI-mistakes caution directly under it, the AI-generated draft notice that opens the
executive summary, the criteria and frame origin line, the
criteria-at-a-glance visual (status chips plus per-source direction strip computed from
the coding, with its legend), the evidence map in lay terms, the typology, coding, and
evidence notes (the last citing the published evidence base), the
protected-characteristics and register notes, the coding-frame appendix (always in the
document, mid-run additions marked), the About Deeper Signals block, and the verbatim
disclaimer as the final block (all from `data/verbatim_blocks.json`).

### Step 6: QA scan

```bash
python3 scripts/qa_scan.py content.json
```

Hard failures (dashes, banned decision language) must be fixed. Review flags (flag-tier
terms, protected-characteristic terms, italics) must each be resolved: rewrite, or confirm
a legitimate descriptive use. Re-run until clean or every flag is individually confirmed.

### Step 7: Generate, verify, deliver

```bash
node booklet/scripts/generate_booklet.js content.json /mnt/user-data/outputs/<candidate>_leadership_narrative_draft.docx booklet/assets
python3 booklet/scripts/embed_fonts.py /mnt/user-data/outputs/<candidate>_leadership_narrative_draft.docx booklet/assets/fonts
```

Always embed fonts (the document is external-facing by definition). Render to PDF, inspect
every page (stranded headings, orphaned lines, split short table rows, oversized white
space), and fix and re-render until clean. Confirm the AI-generated draft label on the
cover, the AI-generated footer on every body page, the production statement and
AI-mistakes caution under the source inventory, the AI-generated draft notice at the top
of the executive summary, the glance visual with its legend, the coding-frame appendix
with its origin line, no tier codes anywhere, and the disclaimer as the final block. Deliver the .docx with a one-line restatement that it
is a draft requiring assessor review before circulation, and mention once that the
evidence register is available on request.

---

## Model requirements

Run this skill on the largest available Claude model (Opus or Fable class) for any real
engagement; Sonnet class is the supported floor; Haiku-class models are unsupported.
Published evidence on LLM evaluation design (see `references/validation_program.md`)
found that larger, newer models produced better psychometric properties and that rich
construct information helped only larger models while degrading smaller ones; this
skill's extraction and coding stage is exactly that kind of high-integration task. The
skill cannot detect or select the model it runs on, so state the recommendation when the
user's setup is unclear. Re-run the eval suite whenever the underlying model version
changes.

---

## Guardrails (what the skill must never do)

- Never produce a hiring recommendation, ranking, verdict, endorsement, or suitability
  statement about the candidate, in the document or in chat, however the request is
  phrased.
- Never draft without confirmed criteria, at least one source, and the role mandate (the
  three hard gates).
- Never generate content presented as if from a source the user did not provide, and
  never let general leadership knowledge stand in for candidate evidence.
- Never enter protected-characteristic material into the register or the document.
- Never hand-edit a criterion status or a coding valence; both come from the validator
  only, and valence derives from indicator polarity.
- Never extract or draft without a confirmed evidence coding frame (Gate 1.5 is hard),
  never grow the frame silently, and never invent scored exemplars for it.
- Never code in bulk, and never let the eloquence, length, or confidence of a source text
  move a coding.
- Never report an unverified psychometric score; the verification checkpoint is mandatory.
- Never compare or rank candidates across runs.
- Never remove the draft labelling and AI-provenance disclosure (cover tagline, per-page
  footer, how-to-use note, production statement and AI-mistakes caution, and the
  AI-generated draft notice that opens the executive summary), the About Deeper Signals
  block, or the verbatim disclaimer. These are enforced three times over: the builder
  assembles them, the QA scan hard-fails without them, and the generator refuses to
  render a document that lacks them. They are never removed, including on request.
- Never produce the .docx by any means other than the vendored generator
  (booklet/scripts/generate_booklet.js) fed by scripts/build_narrative_content.py. A
  document produced any other way is not a valid deliverable of this skill.
- Never render a chart that scores the candidate: no composite alignment score, no radar
  or spider profile, no numeric encoding of statuses. The glance visual shows evidence
  direction by source, nothing more.
- Never infer pronouns from a name.
- Never give legal advice.

---

## Reference files

- `references/intake_gates.md`: the gates including Gate 1.5 (the evidence coding frame,
  both entry paths, indicator guidance, no exemplars), exact behaviors, fallbacks, and
  the more-than-12-criteria consolidation flag.
- `references/evidence_rules.md`: the evidence typology and weighting, the v1.2 register
  schema (coding frame, per-criterion coding entries, computed valences, targets and
  justifications), the one-item-at-a-time discipline, the construct-irrelevance guard,
  extraction, the psychometric verification checkpoint and the coding verification pass,
  divergence patterns, and the protected-characteristics rule.
- `references/status_taxonomy.md`: the five statuses, the mechanical assignment decision
  table, calibrated language per status, and neutral rendering.
- `references/document_structure.md`: section order and budgets, voice and register,
  marker rules, formatting rules, and the full build pipeline.
- `references/validation_program.md`: the pre-publication QA plan, coding stability and
  convergence study designs, model-version re-validation triggers, the API deployment
  pattern, and what is intentionally out of scope (no scores, no selection analyses).
- `data/verbatim_blocks.json`: all locked verbatim text (AI-generated draft labels and
  footer, how-to-use, production statement and AI-mistakes caution, the executive summary
  AI notice, glance legend, methodology coding and evidence notes with the citation,
  appendix intro and origin sentences, disclaimer, CTA). Swapping wording here is a data-file change; the
  disclaimer is flagged for legal review before external release.
- `data/banned_language.json`, `data/protected_characteristics.json`: the scan term sets.
- `scripts/`: `validate_register.py` (validation, screen, coverage, statuses),
  `build_narrative_content.py` (assembly and enforcement), `qa_scan.py` (final text scan).
- `booklet/`: the bundled Deeper Signals booklet generator (docx library compiled in, no
  install needed): `scripts/generate_booklet.js`, its readable source
  `generate_booklet.src.js` (adds `table` with optional per-cell fill for the status
  chips, `overview_callout`, pagination controls, and the `meta.footerText` per-page
  draft footer), `scripts/embed_fonts.py`, and `assets/`
  (fonts, logo, cover gradient). Rebuild after editing the source with
  `npx esbuild booklet/scripts/generate_booklet.src.js --bundle --platform=node --outfile=booklet/scripts/generate_booklet.js`.
- `evals/`: twenty-two scenarios and the worked fixtures (`sample_register.json`,
  `sample_narrative.json`) that validate the pipeline end to end.

Host requirements: Python 3 and Node.js. The QA step uses host tools (LibreOffice,
pdftoppm) for validation and PDF rendering where available.
