skills/component-extraction/SKILL.md
Domain-neutral methodology for the third level of Adler-style reading - extracting structured components (terms, propositions, arguments, solutions) from a document section by section. Selects a reading strategy appropriate to document size and structure (section-based for documents under 50 pages with clear sections; windowing for long documents without breaks; targeted for hybrid content where only specific sections matter). Writes per-section extraction notes that downstream synthesis can consume. Reusable across any extraction workflow - skill creation from a methodology document, Pass-2 content grasp on a paper's full text, evidence-mining from a long-form report. Use when an agent has done structural analysis and now needs to extract the actual atomic content. Trigger keywords - component extraction, section-by-section extraction, extract terms, extract propositions, extract arguments, Adler Level 3, interpretive reading.
npx skillsauth add lyndonkl/claude component-extractionInstall 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.
The third level of Adler's reading methodology. Builds on structural-analysis: now that the document's unity, parts, and problems are mapped, this skill extracts atomic components — terms, propositions, arguments, solutions — section by section.
The extraction is the substrate the downstream synthesis works on. Quality here determines downstream artifact quality.
- [ ] Step 1: Choose a reading strategy based on document size and structure
- [ ] Step 2: Initialize a per-section extraction workspace
- [ ] Step 3: For each section in turn — read it, extract terms / propositions / arguments / solutions, write to workspace, clear from context
- [ ] Step 4: Cross-reference (terms used across sections, contradictions across sections)
- [ ] Step 5: Output the consolidated extraction
The calling agent passes:
source: the documentstructural_output: from structural-analysis — gives the parts list and unity statementpurpose_context: e.g., paper_pass_2_content_grasp, skill_extraction_from_methodology, evidence_miningdomain_hint: optionalMatch strategy to document characteristics from structural-analysis. Don't read everything at once — that's how context windows fill and quality drops.
When: clear sections, document under ~50 pages.
How: read one section, extract components for it, write to workspace, clear context, repeat. Each section is a unit of focused attention.
This is the default strategy. Most well-structured documents fit it.
When: long document over ~50 pages with no clear section breaks (long-form essays, transcripts).
How: read 200-line chunks with ~20-line overlap (so context spans the boundary), extract per chunk, dedupe across chunks at the end.
When: hybrid content where only specific sections from structural-analysis are high-value for the calling purpose.
How: read only the high-value sections (skip the rest with a note), extract intensively per relevant section.
The calling agent's purpose_context determines which sections are high-value.
For each section, extract these four component types. Each gets a structured entry.
Words or short phrases the document defines, uses repeatedly, or relies on as load-bearing concepts. Capture:
Distinguish terms-of-art (specific to this document or field) from generic terms (where the document uses an ordinary word in a normal sense — those don't need extraction).
Statements the document makes — claims it wants the reader to accept. Capture:
How does the document get from premise A to conclusion C? Capture:
Anything the document provides as a model of execution — examples worked through, templates to fill, scripts to run, procedures to follow. Capture:
A consolidated extraction that the synthesis level (synthesis-application) can evaluate.
## Component Extraction Output
### Reading strategy used
{section-based | windowing | targeted}
Rationale: {why}
### Per-section extractions
#### Section 1: {name}
**Terms:**
- {term} — {definition} — {section ref}
- ...
**Propositions:**
- {claim} — {evidence or "no support"} — {hedge if any}
- ...
**Arguments:**
- Premises: {list}
Conclusion: {claim}
Reasoning: {steps}
Gaps: {if any}
**Solutions:**
- {example or template} — {context} — {what's variable}
#### Section 2: {name}
... (same structure)
### Cross-section observations
- Terms used across sections (consolidated definitions)
- Contradictions: where section X says A and section Y says not-A
- Reused arguments: where the same logical move appears multiple times
purpose_context=skill_extraction_from_methodology. Each extracted component becomes a candidate for the SKILL.md being built — terms become the skill's vocabulary, propositions become its claims, arguments become its decision logic, solutions become its examples and templates.
purpose_context=paper_pass_2_content_grasp. Per-section extraction maps cleanly to the paper's section structure (intro / methods / results / discussion). The output feeds Pass 2's content-grasp questions: terms become unfamiliar-terms-to-gloss, propositions become the main argument, arguments become the hypothesis-evidence chain, solutions become the figure-by-figure analysis.
purpose_context=evidence_mining. Propositions are the centerpiece — extract every claim with its evidence and hedge, prepare for downstream triangulation across documents.
{none}. Don't pad to fit the template.structural-analysis — Level 2, run before this. Provides the parts list this skill iterates over.synthesis-application — Level 4, run after this. Evaluates the components this skill produced for completeness + logic + applicability.research-claim-map — pairs naturally with the evidence_mining purpose; consumes propositions and triangulates.skills/skill-creator/SKILL.md invokes this skill as its Step 3.paper-three-pass-extraction invokes this skill in Pass 2 to produce the structured per-section content used by the synthesizer.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.