skills/score-intuition-density/SKILL.md
--- name: score-intuition-density description: Computes a 0-10 intuition-density score for a seed body using 8 concrete measurable signals — analogy presence, concrete worked example, counterfactual offered, reframe against default, biology-to-AI transfer, question posed, calibrated hedge, math-to-metaphor handoff. Emits both the numeric score and the list of triggered signals for auditability. Use after topic tagging to enrich seed frontmatter in the substacker Librarian pipeline. Trigger keywo
npx skillsauth add lyndonkl/claude skills/score-intuition-densityInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Related skills: Called by ingest-inbox-item step 3. Reads shared-context/style-guide.md (for em-dash reframe pattern). The score enters the seed's frontmatter as intuition_density.score; the triggered signals are recorded as intuition_density.signals.
Each signal is detected by a concrete pattern (not "LLM vibes"). Weighted sum, clamped to [0, 10].
| Signal | Detection rule | Weight |
|---|---|---|
| analogy_present | explicit "like", "think of it as", "is secretly", "is to X what Y is to Z", em-dash reframe | 2 |
| concrete_worked_example | numbered or named instance with specific numbers / entities (names a system, shows arithmetic) | 2 |
| counterfactual_offered | "if it were X instead", "unlike Y", "this is why Z doesn't work" | 1 |
| reframe_against_default | "not X — Y", "people say X but", em-dash reframe | 1 |
| biology_to_ai | biology vocabulary (antibody, neuron, immune, evolution, synapse, crypt, DNA) in an AI context | 1 |
| question_posed | interrogative sentence that drives the piece forward | 1 |
| hedge_calibrated | "I do not know", "I am not sure", explicit uncertainty with scope | 1 |
| math_to_metaphor_handoff | equation or formal statement followed by prose restatement | 1 |
Max weight sum: 10. Min: 0.
Score one seed body:
- [ ] Step 1: Run each of the 8 detection patterns over body + title
- [ ] Step 2: For each signal that fires, record in signals list
- [ ] Step 3: Sum weights; clamp to [0, 10]
- [ ] Step 4: Return {score: int, signals: [str]}
analogy_present: regex for the markers above, AND the analogy must map source → target (a simile that names only one side doesn't count).concrete_worked_example: presence of numbers + a named entity. "3B params", "$11.35", "fifty queries" — yes. "a model" — no.counterfactual_offered: look for the 3 phrase patterns above, OR an explicit if-not construction.reframe_against_default: em-dash reframe pattern (X — actually Y) or explicit "not X / rather Y".biology_to_ai: biology vocabulary present AND the essay is an AI/ML context (inferred from body topic tags if available).question_posed: ?-terminated sentence that is not rhetorical filler. Excludes questions in a quoted Q&A format.hedge_calibrated: "I do not know" (full sentence, not "I don't know what to order for dinner"), "I am not claiming", "I can't prove", specific-scope hedges ("on n=1", "in the three teams I've tested").math_to_metaphor_handoff: inline math/equation/formal statement (LaTeX or prose-math) followed within 2 sentences by a prose restatement.Input body (dropout-as-ensemble):
had a thought while running — dropout is secretly an ensemble method. each forward pass is a different sub-network. so at test time when you turn dropout off and scale, you're averaging predictions across exponentially many thinned networks. this is why it generalizes. not "regularization" in the L2 sense. more like bagging. reminds me of how the immune system doesn't pick one antibody — it runs a population and lets the best ones dominate. dropout is antibody diversity for weights.
Detection run:
analogy_present — fires (dropout is antibody diversity for weights). +2concrete_worked_example — fires (each forward pass is a different sub-network, specific mechanism). +2counterfactual_offered — fires (not "regularization" in the L2 sense). +1reframe_against_default — fires (more like bagging, reframe against "regularization"). +1biology_to_ai — fires (immune system / antibody). +1question_posed — no.hedge_calibrated — no.math_to_metaphor_handoff — no.Output: {score: 7, signals: [analogy_present, concrete_worked_example, counterfactual_offered, reframe_against_default, biology_to_ai]}.
low_commentary: true above 3 (capped by caller).{score, signals}.testing
Cluster a conference's event records into a small set of coarse themes with finer sub-clusters, an explicit outlier bucket, and soft (multi-membership) affinities — using the hybrid embed-then-label pipeline (embed abstracts, reduce, density-cluster, then LLM-label the clusters) when embedding libraries are available, and an LLM-reasoned hierarchical fallback when they are not. Embeddings do the grouping; the LLM only names the groups. Conference-agnostic. Use when turning structured event records into a navigable theme map for preference elicitation and scheduling, when you need 6-8 reasonable themes rather than 20 muddy ones, or when overlapping talks must belong to more than one theme. Trigger keywords - theme clustering, cluster talks, embed then label, soft membership, outlier talks, conference themes, topic map.
development
Build a personal conference schedule as a constraint-optimization problem — hard constraints (no time overlap, room-to-room travel time, capacity/registration, the attendee's own must-attends and blackouts) plus a user-owned weighted objective trading interest against breadth, pacing (maximize contiguous free time), and serendipity. Surfaces unbreakable conflicts (two high-value overlapping talks the model cannot rank) as decisions for the human rather than silently picking, and reports what each choice traded away. Conference-agnostic. Use to turn a preference profile plus a theme map into a day-by-day plan, to resolve overlapping sessions, or to balance a packed vs paced schedule. Trigger keywords - schedule optimization, conference schedule, constraint optimization, overlapping talks, contiguous free time, conflict surfacing, packed vs paced.
development
Parse a heterogeneous conference program (markdown, HTML, PDF-derived text, or JSON) into normalized event records with per-field confidence scores and independent classification axes (topic, depth, format, prerequisites, recorded, capacity). Detects the program's format before extracting, treats every inferred field as uncertain (present vs inferred vs missing), and flags thin or missing abstracts so downstream enrichment can target them. Conference-agnostic. Use when ingesting a conference or event schedule into a structured store, normalizing a talk/session list, or extracting per-session metadata with calibrated confidence. Trigger keywords - program ingestion, parse schedule, session extraction, event records, conference program, talk metadata, per-field confidence.
development
Build a personalized preference profile from a small number of well-chosen, cluster-grounded questions instead of a long survey. Represents the person's interests as an uncertainty region over the theme map, picks the single highest-information-gain choice-based question (contrasting real talks from different clusters), balances exploiting known interests against exploring uncertain ones, deliberately injects outlier probes to fight selection bias, and stops as soon as the schedule would be stable. Also elicits the user-owned objective weights and hard constraints. Interactive — runs where it can actually ask the person. Conference-agnostic. Use to turn a theme map into a preference profile, to decide what to ask a conference attendee, or to elicit scheduling priorities. Trigger keywords - preference elicitation, ask few questions, information gain, choice-based questions, selection bias probe, objective weights, attendee preferences.