add-event

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

16 stars

Best use case

add-event is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

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

Teams using add-event should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/add-event/SKILL.md --create-dirs "https://raw.githubusercontent.com/diegosouzapw/awesome-omni-skill/main/skills/development/add-event/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/add-event/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How add-event Compares

Feature / Agentadd-eventStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

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

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# 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

Related Skills

adding-persistent-event

16
from diegosouzapw/awesome-omni-skill

Adds a new type of event that gets persisted to the event log. Use this when adding new kinds of write operations to the system or when adding new events to existing code.

add-event-type

16
from diegosouzapw/awesome-omni-skill

Add a new event type to the frontend feed system with corresponding React component. Use when user mentions "new event", "add event type", "event block", "new block type", or wants to display new agent output types.

abuse-prevention

16
from diegosouzapw/awesome-omni-skill

Abuse prevention - rate limiting, moderation, bad actors. Use when fighting abuse.

1k-adding-socket-events

16
from diegosouzapw/awesome-omni-skill

Adds new WebSocket event subscriptions to OneKey. Use when implementing new socket events, handling server push messages, or adding real-time data subscriptions. Socket, WebSocket, event, subscription, push, real-time.

event-store-design

16
from diegosouzapw/awesome-omni-skill

Design and implement event stores for event-sourced systems. Use when building event sourcing infrastructure, choosing event store technologies, or implementing event persistence patterns.

event-sourcing-architect

16
from diegosouzapw/awesome-omni-skill

Expert in event sourcing, CQRS, and event-driven architecture patterns. Masters event store design, projection building, saga orchestration, and eventual consistency patterns. Use PROACTIVELY for e...

asyncredux-events

16
from diegosouzapw/awesome-omni-skill

Use the Event class to interact with Flutter's stateful widgets (TextField, ListView, etc.). Covers creating Event objects in state, consuming events with `context.event()`, scrolling lists, changing text fields, and the event lifecycle.

event-driven

16
from diegosouzapw/awesome-omni-skill

Event-driven architecture patterns including message queues, pub/sub, event sourcing, CQRS, and sagas. Use when implementing async messaging, distributed transactions, event stores, command query separation, domain events, integration events, data streaming, choreography, orchestration, or integrating with RabbitMQ, Kafka, Apache Pulsar, AWS SQS, AWS SNS, NATS, event buses, or message brokers.

create-event-handlers

16
from diegosouzapw/awesome-omni-skill

Sets up RabbitMQ event publishers and consumers following ModuleImplementationGuide.md Section 9. RabbitMQ only (no Azure Service Bus). Creates publishers with DomainEvent (tenantId preferred), consumers with handlers, naming {domain}.{entity}.{action}, required fields (id, type, version, timestamp, tenantId, source, data). Use when adding event-driven communication, async workflows, or integrating via events.

analytics-events

16
from diegosouzapw/awesome-omni-skill

Add product analytics events to track user interactions in the Metabase frontend

aggregating-event-datasets

16
from diegosouzapw/awesome-omni-skill

Aggregate and summarize event datasets (logs) using OPAL statsby. Use when you need to count, sum, or calculate statistics across log events. Covers make_col for derived columns, statsby for aggregation, group_by for grouping, aggregation functions (count, sum, avg, percentile), and topk for top N results. Returns single summary row per group across entire time range. For time-series trends, see time-series-analysis skill.

acc-create-domain-event

16
from diegosouzapw/awesome-omni-skill

Generates DDD Domain Events for PHP 8.5. Creates immutable event records with metadata, past-tense naming. Includes unit tests.