--- name: talk-intro description: Generates speaker introductions for talks and events in three length variants. activation: manual --- # talk-intro Generates speaker introductions for talks and events. Produces three length variants (short, medium, long) adapted to the event context. Outputs Markdown files to `output/intros/`. ## Activation Activated by user request with a talk topic and event context. Example triggers: - "write a speaker intro for my talk on [topic]" - "generate an introduction for [event]" - "I need a speaker bio for [conference]" - "create a talk introduction" ## Inputs - **Talk topic** (required): The subject of the talk or presentation. - **Event context** (required): The type of event — technical conference, business meeting, or academic setting. Used to adapt tone and emphasis. - **Person ID** (optional): Which profile to generate the introduction for. Defaults to the primary profile if only one exists. - **Output filename prefix** (optional): Custom prefix for output files. Defaults to `--`. ## Workflow ### 1. Load person profile - Read the target person profile from `kb/profiles/.yaml` - Read `kb/graph-index.yaml` to discover related entities - Load referenced skills from `kb/skills/` - Load referenced experiences from `kb/experiences/` - Load referenced projects from `kb/projects/` ### 2. Identify relevant expertise - Use introduction generation logic (`src/intro/intro-generator.ts`) to select expertise relevant to the talk topic - Match skills, experiences, and projects that relate to the talk subject - Prioritize recent and high-level expertise ### 3. Determine tone - Adapt tone based on event context: - **Technical conference** — emphasize technical skills, open source contributions, hands-on experience, specific technologies - **Business meeting** — emphasize leadership, strategic impact, organizational achievements, business outcomes - **Academic setting** — emphasize research, publications, methodology, teaching, formal credentials - Select vocabulary and sentence structure appropriate to the context ### 4. Generate length variants - **Short** (2-3 sentences): Name, current role, and one key qualification relevant to the talk topic - **Medium** (one paragraph): Expanded context including relevant experience, notable achievements, and connection to the talk topic - **Long** (multiple paragraphs): Full professional narrative relevant to the talk, including career arc, specific projects, and expertise depth ### 5. Apply template - Apply the speaker introduction template (`templates/intro-speaker.md`) - Fill in all three length variants - Include metadata (person, topic, event context, generation date) ### 6. Write output - Write the generated introduction to `output/intros/.md` - Present all three variants to the user for selection ## Output - Speaker introduction file: `output/intros/.md` - Contains short, medium, and long variants in a single file ## Shared Modules This skill depends on the following shared validation and utility modules: - `src/schemas/validate.ts` — Entity validation (validate sources before generation) - `src/schemas/types.ts` — TypeScript type definitions for all entity types - `src/io/yaml-utils.ts` — YAML serialization/deserialization - `src/io/entity-files.ts` — Entity file read management ## Rules and Constraints 1. **No fabrication** — only include information present in the knowledge base; never invent credentials or achievements 2. **Three variants required** — always produce short, medium, and long variants 3. **Length ordering** — short < medium < long in character count 4. **Topic relevance** — emphasize expertise related to the talk topic 5. **Tone adaptation** — adjust language and emphasis to match event context 6. **Markdown output** — output as Markdown suitable for direct use 7. **Template-based** — use `templates/intro-speaker.md` for consistent formatting 8. **Schema-validated sources** — only read from validated entity files in `kb/`