Skip to content
Back to skills

Stacks Calendar

ASecurity

Use when working with calendar functionality in Stacks - exporting events to Google Calendar, Outlook, Yahoo, or ICS format, the CalendarLink interface for event definitions, timezone handling, all-day events, or calendar URL generation. Covers @stacksjs/calendar-api.

  • 631 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added June 5, 2026
developmenttypescriptgobashapi

Works with

  • api

Security analysis

A100/100

Scanned September 3, 2026

npx -y skills add stacksjs/stacks --skill stacks-calendar --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Stacks Calendar?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Stacks Calendar
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/stacksjs-stacks-calendar/badge)](https://www.skillsdirectory.com/skills/stacksjs-stacks-calendar)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: stacks-calendar
description: Use when working with calendar functionality in Stacks - exporting events to Google Calendar, Outlook, Yahoo, or ICS format, the CalendarLink interface for event definitions, timezone handling, all-day events, or calendar URL generation. Covers @stacksjs/calendar-api.
license: MIT
compatibility: Bun >= 1.3.0, TypeScript
allowed-tools: Read Edit Write Bash Grep Glob
---

# Stacks Calendar

Calendar event export to 4 calendar providers.

## Key Paths
- Core package: `storage/framework/core/calendar-api/src/`
- Package: `@stacksjs/calendar-api`

## Export Functions

```typescript
import { exportCalendarGoogle, exportCalendarIcs, exportCalendarOutlook, exportCalendarYahoo } from '@stacksjs/calendar-api'

const event: CalendarLink = {
  title: 'Team Meeting',
  description: 'Weekly standup',
  from: new Date('2024-06-15T10:00:00'),
  to: new Date('2024-06-15T11:00:00'),
  address: '123 Main St, City',
  timezone: 'America/New_York',
  allDay: false
}

// Generate URLs
const googleUrl = exportCalendarGoogle(event)
// → https://calendar.google.com/calendar/render?action=TEMPLATE&text=...

const icsContent = exportCalendarIcs(event)
// → BEGIN:VCALENDAR\nBEGIN:VEVENT\n...

const outlookUrl = exportCalendarOutlook(event)
// → https://outlook.live.com/calendar/0/deeplink/compose?...

const yahooUrl = exportCalendarYahoo(event)
// → https://calendar.yahoo.com/?v=60&title=...
```

## CalendarLink Interface

```typescript
interface CalendarLink {
  title: string
  description?: string
  from: Date              // start time
  to: Date                // end time
  allDay?: boolean        // all-day event (ignores time)
  address?: string        // location
  timezone?: string       // IANA timezone (e.g., 'America/New_York')
}
```

## Calendar Store Types

```typescript
interface CalendarStore {
  day: number
  month: number
  year: number
  currentMonthYear: string
  datesOfMonth: number[]
  currentWeekView: WeekDates[]
}

interface Events {
  date: string
  title: string
  description?: string
  month: number
  day: number
  year: number
  time?: Time
}

interface Time { from: string, to: string }
interface WeekDates { month: number, date: number }
```

## All-Day Events

```typescript
const allDayEvent: CalendarLink = {
  title: 'Company Holiday',
  from: new Date('2024-12-25'),
  to: new Date('2024-12-25'),
  allDay: true  // only date matters, no time component
}
```

## Format Differences

| Feature | Google | ICS | Outlook | Yahoo |
|---------|--------|-----|---------|-------|
| URL-based | Yes | No (file) | Yes | Yes |
| Timezone | URL param | VTIMEZONE | URL param | URL param |
| All-day | Date only | DATE value | isAllDay=true | st= format |
| Description | details= | DESCRIPTION | body= | desc= |

## Gotchas
- Note package name is `@stacksjs/calendar-api` (not `@stacksjs/calendar`)
- ICS export returns file content (not a URL) — serve as `.ics` download
- All-day events use date-only format, ignoring time components
- Timezone handling varies by provider — ICS includes VTIMEZONE block
- Google Calendar uses UTC format in URLs
- For task scheduling (cron), use `@stacksjs/scheduler` instead
- ICS generates a unique UID per event for calendar deduplication

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.