# Add Event

> Add an event/conference to your CV's relevant events list with intelligent data extraction, validation, and automatic commit generation

- Skill: `diegosouzapw/add-event` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add diegosouzapw/add-event`
- Raw SKILL.md: https://api.skillmd.com/api/skills/diegosouzapw/add-event/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: diegosouzapw (https://skillmd.com/u/diegosouzapw)
- Updated: 2026-09-08
- Page: https://skillmd.com/skills/diegosouzapw/add-event

---


# Add Event to CV

Add an event or conference to your CV's relevant events list with intelligent data extraction and validation.

## Usage

```
/add-event <event identifier>
```

Where `<event identifier>` can be:

- Event title (e.g., "AWS re:Invent 2024")
- URL to event page (Eventbrite, Meetup, Luma, conference websites, etc.)
- Path to screenshot containing event information
- Leave empty to enter manual mode with prompts

## Behavior

When invoked, this skill will:

### 1. **Extract Event Information**

   - If a URL is provided: Fetch and parse the page for title, location, and date
   - If a screenshot is provided: Parse the image using vision capabilities to extract event details
   - If a title is provided: Search the web for the event to get accurate location and date
   - If empty: Prompt user for title, location, and date manually

### 2. **Validate the Event**

   - Confirm the event exists and information is accurate
   - Check for duplicates in the existing `relevantEvents` array
   - Alert if the event is already present
   - Validate date and location formats

### 3. **Format the Entry**

   Properly format the event entry following existing conventions:

   - **Location format**: "City, Country" or "Virtual"
     - Examples: "San Francisco, USA", "Berlin, Germany", "Virtual"
     - Standardize country names (USA not US, etc.)
   
   - **Date format**:
     - Single day: "DD MMM YYYY" (e.g., "21 Oct 2015")
     - Multi-day same month: "DD-DD MMM YYYY" (e.g., "27-28 Aug 2024")
     - Multi-day cross-month: "DD MMM - DD MMM YYYY" (e.g., "30 Jan - 2 Feb 2024")
   
   - **Title**: Use official event name, preserve capitalization and special characters

   Example formats:

   ```typescript
   {
       title: 'Engineering Leadership Community Annual 2024',
       location: 'San Francisco, USA',
       date: '27-28 Aug 2024',
   }

   {
       title: 'TEDx Goiânia',
       location: 'Goiânia, Brazil',
       date: '21 Oct 2015',
   }

   {
       title: 'ELC Match & Learn: increasing velocity without losing quality',
       location: 'Virtual',
       date: '25 Apr 2024',
   }
   ```

### 4. **Determine Insertion Position**

   - Parse existing event dates to determine chronological position
   - Events are sorted newest first (reverse chronological order)
   - Insert in the correct position to maintain order
   - Show where in the list it will be inserted

### 5. **Show Proposed Changes**

   - Display the complete diff showing:
     - The formatted event entry
     - Its position in the list (with before/after context)
     - Line numbers for reference
   - Highlight that events are in reverse chronological order

### 6. **Request User Approval**

   - Present the changes and ask for explicit confirmation
   - Options: "approve", "edit", "cancel"
   - If "edit" is selected, allow user to modify title, location, or date

### 7. **Commit Changes**

   - If approved, use the Edit tool to add the event to `src/components/cv/cvData.ts`
   - Create a descriptive commit message:

     ```
     Add event to CV: [Event Title]

     Location: [Location]
     Date: [Date]

     Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
     ```

   - Run `npm run lint` to ensure code formatting is correct

### 8. **Offer to Push**
   - After successful commit, ask if the user wants to push to the remote branch
   - If yes, execute: `git push -u origin <branch-name>`

## Important Notes

- **File Location**: Events are stored in `src/components/cv/cvData.ts`
- **Structure**: Single array at `cvData.relevantEvents[]` (around lines 797-850)
- **Ordering**: Events MUST be in reverse chronological order (newest first)
- **Date Parsing**:
  - Accept various input formats (MM/DD/YYYY, DD-MM-YYYY, "Month DD, YYYY", etc.)
  - Always convert to CV format: "DD MMM YYYY" or "DD-DD MMM YYYY"
  - Use 3-letter month abbreviations (Jan, Feb, Mar, etc.)
- **Location Standardization**:
  - Always use full country names: "USA" not "US"
  - Format: "City, Country" - capitalize appropriately
  - Use "Virtual" for online-only events (not "Online", "Remote", etc.)
- **Linting**: Always run `npm run lint` before committing to maintain code quality
- **PDF Generation**: Remind user they may want to rebuild the CV PDF with `npm run build`

## Supported Event Platforms

The skill can parse event information from:

- Eventbrite (eventbrite.com)
- Meetup (meetup.com)
- Luma (lu.ma)
- LinkedIn Events
- Conference websites (via HTML/JSON-LD parsing)
- Generic event pages with structured data

## Error Handling

- If event information cannot be found or validated, ask user to provide details manually
- If duplicate is detected, inform user and ask if they want to continue anyway
- If date format is ambiguous, ask user to clarify
- If location format is unclear, suggest standard format and confirm
- If web search/URL fetch fails, fall back to manual entry mode

## Examples

```bash
# Add by title (will search for event details)
/add-event AWS re:Invent 2024

# Add by URL
/add-event https://www.eventbrite.com/e/example-event-tickets-123456

# Add by Luma URL
/add-event https://lu.ma/example-event

# Add by screenshot
/add-event /path/to/event-screenshot.png

# Manual mode (prompts for all details)
/add-event
```

## Date Format Examples

Input formats accepted:
- "August 27-28, 2024"
- "27-28 Aug 2024"
- "2024-08-27 to 2024-08-28"
- "27/08/2024 - 28/08/2024"
- "Aug 27, 2024"

Output formats (standardized):
- Single day: "21 Oct 2015"
- Multi-day (same month): "27-28 Aug 2024"
- Multi-day (cross month): "30 Jan - 2 Feb 2024"

## Configuration

Default behavior can be customized:

- **auto-push**: Set to `true` to automatically push after commit (default: `false`)
- **auto-approve**: Set to `true` to skip approval step (default: `false`, not recommended)
- **date-format-preference**: Preferred input date format for ambiguous dates (default: `auto-detect`)
- **sort-order**: Maintain chronological order (default: `newest-first`, do not change)

## Workflow Tips

1. **Batch Adding**: If adding multiple events, you can invoke the skill multiple times in succession
2. **Recent Events**: When adding recent events, dates are usually easier to find and validate
3. **Historical Events**: For older events, you may need to rely on manual entry if details are not online
4. **Virtual Events**: Always use "Virtual" as the location for online-only events
5. **Event Series**: For recurring events (e.g., "Annual Conference 2024"), include the year in the title

## Related Commands

- `npm run dev` - Preview changes locally
- `npm run build` - Build production site and generate updated PDF
- `npm run lint` - Format code (automatically run by skill)
- `git log` - View commit history

## Troubleshooting

**Problem**: Date format not recognized
- **Solution**: Provide date in "DD MMM YYYY" format directly or let the skill prompt for clarification

**Problem**: Event marked as duplicate but seems different
- **Solution**: Check if the event title is slightly different (e.g., year included or not)

**Problem**: Location format incorrect
- **Solution**: Use "City, Country" format exactly, or "Virtual" for online events

**Problem**: Commit fails
- **Solution**: Check that you're on a clean branch and have no uncommitted changes

## Testing Checklist

Before considering the skill complete, verify:

- [ ] Can add event by title (web search)
- [ ] Can add event by URL (multiple platforms)
- [ ] Can add multi-day event with correct date format
- [ ] Can add single-day event
- [ ] Can add virtual event
- [ ] Duplicate detection works
- [ ] Events inserted in correct chronological position (newest first)
- [ ] Date format conversion works for various inputs
- [ ] Location standardization works
- [ ] Commit message generated correctly
- [ ] Linting runs successfully
- [ ] Changes show correct diff with context

