# skills/_artifacts/skill_tree.yaml
# Generated by skill-tree-generator
# Library: @burglekitt/gmt
# Version: 1.14.0
library:
  name: '@burglekitt/gmt'
  version: 1.14.0
  repository: https://github.com/burglekitt/gmt.git
  description: Temporal-based date and time utilities with timezone support and polyfill integration
generated_from:
  domain_map: 'skills/_artifacts/domain_map.yaml'
  skill_spec: 'skills/_artifacts/skill_spec.md'
generated_at: '2026-08-23'

skills:
  # Consumer-facing core skills
  - name: Get Current Date/Time
    slug: get-current
    type: core
    domain: core-date-operations
    path: 'skills/get-current/SKILL.md'
    package: 'packages/gmt'
    description: Get the current date, time, or timestamp as ISO 8601 strings
    sources:
      - 'burglekitt/gmt:packages/gmt/src/plain/get/index.ts'
      - 'burglekitt/gmt:packages/gmt/src/zoned/get/index.ts'
      - 'burglekitt/gmt:packages/gmt/src/utc/get/index.ts'
      - 'burglekitt/gmt:packages/gmt/src/unix/get/index.ts'

  - name: Parse Date/Time
    slug: parse-date-time
    type: core
    domain: core-date-operations
    path: 'skills/parse-date-time/SKILL.md'
    package: 'packages/gmt'
    description: Parse individual components from date/time strings; also parseRfc2822, parseHttp, parseSql, parseRfc3339 for decoding fixed interchange grammars (email Date headers, HTTP headers, SQL datetime literals, RFC 3339)
    sources:
      - 'burglekitt/gmt:packages/gmt/src/plain/parse/index.ts'
      - 'burglekitt/gmt:packages/gmt/src/zoned/parse/parseRfc2822.ts'
      - 'burglekitt/gmt:packages/gmt/src/utc/parse/parseHttp.ts'
      - 'burglekitt/gmt:packages/gmt/src/plain/parse/parseSql.ts'
      - 'burglekitt/gmt:packages/gmt/src/zoned/parse/parseRfc3339.ts'

  - name: Format Date/Time
    slug: format-date-time
    type: core
    domain: core-date-operations
    path: 'skills/format-date-time/SKILL.md'
    package: 'packages/gmt'
    description: Format date/time values for display with locale support; includes plain absolute (formatDate/Time/DateTime), plain relative (formatRelativeDate/Time/DateTime), standalone locale calendar-name lookups (getLocaleEraNames, getLocaleMonthNames, getLocaleWeekdayNames, getLocaleMeridiems), and fixed-grammar named machine formats (formatRfc2822, formatHttp, formatSql, formatRfc3339)
    sources:
      - 'burglekitt/gmt:packages/gmt/src/plain/format/index.ts'
      - 'burglekitt/gmt:packages/gmt/src/plain/locale/index.ts'
      - 'burglekitt/gmt:packages/gmt/src/plain/locale/getLocaleEraNames.ts'
      - 'burglekitt/gmt:packages/gmt/src/plain/locale/getLocaleMonthNames.ts'
      - 'burglekitt/gmt:packages/gmt/src/plain/locale/getLocaleWeekdayNames.ts'
      - 'burglekitt/gmt:packages/gmt/src/zoned/format/formatRfc2822.ts'
      - 'burglekitt/gmt:packages/gmt/src/utc/format/formatHttp.ts'
      - 'burglekitt/gmt:packages/gmt/src/plain/format/formatSql.ts'
      - 'burglekitt/gmt:packages/gmt/src/zoned/format/formatRfc3339.ts'
      - 'burglekitt/gmt:packages/gmt/src/plain/locale/getLocaleMeridiems.ts'

  - name: Format Relative Time
    slug: format-relative-time
    type: core
    domain: core-date-operations
    path: 'skills/format-relative-time/SKILL.md'
    package: 'packages/gmt'
    description: Produce human-friendly relative strings ("yesterday", "in 2 hours") across plain, zoned, unix, and utc values
    requires:
      - format-date-time
    sources:
      - 'burglekitt/gmt:packages/gmt/src/plain/format/formatRelativeDate.ts'
      - 'burglekitt/gmt:packages/gmt/src/plain/format/formatRelativeTime.ts'
      - 'burglekitt/gmt:packages/gmt/src/plain/format/formatRelativeDateTime.ts'
      - 'burglekitt/gmt:packages/gmt/src/zoned/format/formatRelativeZoned.ts'
      - 'burglekitt/gmt:packages/gmt/src/unix/format/formatRelativeUnix.ts'
      - 'burglekitt/gmt:packages/gmt/src/utc/format/formatRelativeUtc.ts'

  - name: Calculate Dates
    slug: calculate-dates
    type: core
    domain: core-date-operations
    path: 'skills/calculate-dates/SKILL.md'
    package: 'packages/gmt'
    description: Add or subtract time from dates; add*/subtract* accept an optional overflow ("constrain" | "reject") option, diff* accept optional smallestUnit/roundingIncrement/roundingMode rounding options, addBusinessDays/subtractBusinessDays skip weekends for Mon–Fri arithmetic, clampDate restricts a date to a range, closestDateTo finds the nearest candidate by calendar distance, getLocaleStartOfWeek/getLocaleEndOfWeek compute locale-driven week boundaries
    sources:
      - 'burglekitt/gmt:packages/gmt/src/plain/calculate/index.ts'
      - 'burglekitt/gmt:packages/gmt/src/plain/calculate/clampDate.ts'
      - 'burglekitt/gmt:packages/gmt/src/plain/calculate/closestDateTo.ts'

  - name: Durations
    slug: durations
    type: core
    domain: core-date-operations
    path: 'skills/durations/SKILL.md'
    package: 'packages/gmt'
    description: Parse, validate, combine, rebalance, and format ISO 8601 duration strings via isValidDuration, parseDuration, addDuration/subtractDuration, normalizeDuration, and formatDuration; bridge diff* functions to duration strings via diffDateAsDuration/diffDateTimeAsDuration/diffZonedAsDuration/diffUnixAsDuration/diffUtcAsDuration
    requires:
      - calculate-dates
    sources:
      - 'burglekitt/gmt:packages/gmt/src/duration/index.ts'
      - 'burglekitt/gmt:packages/gmt/src/plain/calculate/diffDateAsDuration.ts'
      - 'burglekitt/gmt:packages/gmt/src/plain/calculate/diffDateTimeAsDuration.ts'
      - 'burglekitt/gmt:packages/gmt/src/zoned/calculate/diffZonedAsDuration.ts'
      - 'burglekitt/gmt:packages/gmt/src/unix/calculate/diffUnixAsDuration.ts'
      - 'burglekitt/gmt:packages/gmt/src/utc/calculate/diffUtcAsDuration.ts'

  - name: Compare Dates
    slug: compare-dates
    type: core
    domain: core-date-operations
    path: 'skills/compare-dates/SKILL.md'
    package: 'packages/gmt'
    description: Compare date values for ordering; use isWeekend/isZonedWeekend for locale-aware weekend checks, isBusinessDay for fixed ISO Mon–Fri business-day checks, and getLocaleDayOfWeek/getLocaleZonedDayOfWeek for locale-relative day-of-week indices
    sources:
      - 'burglekitt/gmt:packages/gmt/src/plain/compare/index.ts'
      - 'burglekitt/gmt:packages/gmt/src/zoned/compare/index.ts'
      - 'burglekitt/gmt:packages/gmt/src/plain/get/index.ts'
      - 'burglekitt/gmt:packages/gmt/src/zoned/get/index.ts'

  - name: Validate Dates
    slug: validate-dates
    type: core
    domain: core-date-operations
    path: 'skills/validate-dates/SKILL.md'
    package: 'packages/gmt'
    description: Validate date/time strings, timezone identifiers, intervals, and ranges; check whether a timezone observes daylight saving time (hasDaylightSaving); list DST transition instants for a timezone in a given year (getDstTransitions); check point-in-interval and interval-in-interval containment; merge overlapping or adjacent intervals; split intervals into sub-intervals by duration unit
    sources:
      - 'burglekitt/gmt:packages/gmt/src/plain/validate/index.ts'
      - 'burglekitt/gmt:packages/gmt/src/plain/interval/validate/index.ts'
      - 'burglekitt/gmt:packages/gmt/src/plain/interval/intervalContainsDate.ts'
      - 'burglekitt/gmt:packages/gmt/src/plain/interval/intervalContainsTime.ts'
      - 'burglekitt/gmt:packages/gmt/src/plain/interval/intervalContainsDateTime.ts'
      - 'burglekitt/gmt:packages/gmt/src/plain/interval/intervalUnionDate.ts'
      - 'burglekitt/gmt:packages/gmt/src/plain/interval/intervalUnionTime.ts'
      - 'burglekitt/gmt:packages/gmt/src/plain/interval/intervalUnionDateTime.ts'
      - 'burglekitt/gmt:packages/gmt/src/plain/interval/splitIntervalByUnitDate.ts'
      - 'burglekitt/gmt:packages/gmt/src/plain/interval/splitIntervalByUnitTime.ts'
      - 'burglekitt/gmt:packages/gmt/src/plain/interval/splitIntervalByUnitDateTime.ts'
      - 'burglekitt/gmt:packages/gmt/src/utc/validate/index.ts'
      - 'burglekitt/gmt:packages/gmt/src/utc/interval/validate/index.ts'
      - 'burglekitt/gmt:packages/gmt/src/utc/interval/intervalContainsUtc.ts'
      - 'burglekitt/gmt:packages/gmt/src/utc/interval/intervalUnionUtc.ts'
      - 'burglekitt/gmt:packages/gmt/src/utc/interval/splitIntervalByUnitUtc.ts'
      - 'burglekitt/gmt:packages/gmt/src/unix/validate/index.ts'
      - 'burglekitt/gmt:packages/gmt/src/unix/interval/validate/index.ts'
      - 'burglekitt/gmt:packages/gmt/src/unix/interval/intervalContainsUnix.ts'
      - 'burglekitt/gmt:packages/gmt/src/unix/interval/intervalUnionUnix.ts'
      - 'burglekitt/gmt:packages/gmt/src/unix/interval/splitIntervalByUnitUnix.ts'
      - 'burglekitt/gmt:packages/gmt/src/zoned/validate/index.ts'
      - 'burglekitt/gmt:packages/gmt/src/zoned/validate/hasDaylightSaving.ts'
      - 'burglekitt/gmt:packages/gmt/src/zoned/get/getDstTransitions.ts'
      - 'burglekitt/gmt:packages/gmt/src/zoned/interval/validate/index.ts'
      - 'burglekitt/gmt:packages/gmt/src/zoned/interval/intervalContainsZoned.ts'
      - 'burglekitt/gmt:packages/gmt/src/zoned/interval/intervalUnionZoned.ts'
      - 'burglekitt/gmt:packages/gmt/src/zoned/interval/splitIntervalByUnitZoned.ts'

  - name: Zoned Date Operations
    slug: zoned-date-ops
    type: core
    domain: zoned-date-operations
    path: 'skills/zoned-date-ops/SKILL.md'
    package: 'packages/gmt'
    description: Work with timezone-aware dates and times; includes formatZonedDateTime, formatZonedRange, formatRelativeZoned, convertPlainDateTimeToZoned with full DST disambiguation control, addZoned/subtractZoned with overlap-only DST disambiguation control, clampZoned/closestZonedTo for range restriction and nearest-candidate selection, and the startOfZoned/endOfZoned/startOfQuarterForZoned/endOfQuarterForZoned/mapZonedHoursInDay/getLocaleZonedStartOfWeek/getLocaleZonedEndOfWeek/getLocaleZonedDayOfWeek family (plus unix/ counterparts) with full disambiguation + offset control
    sources:
      - 'burglekitt/gmt:packages/gmt/src/zoned/get/index.ts'
      - 'burglekitt/gmt:packages/gmt/src/zoned/format/index.ts'
      - 'burglekitt/gmt:packages/gmt/src/zoned/validate/index.ts'
      - 'burglekitt/gmt:packages/gmt/src/zoned/convert/index.ts'
      - 'burglekitt/gmt:packages/gmt/src/zoned/calculate/addZoned.ts'
      - 'burglekitt/gmt:packages/gmt/src/zoned/calculate/subtractZoned.ts'
      - 'burglekitt/gmt:packages/gmt/src/zoned/calculate/startOfZoned.ts'
      - 'burglekitt/gmt:packages/gmt/src/zoned/calculate/endOfZoned.ts'
      - 'burglekitt/gmt:packages/gmt/src/zoned/calculate/startOfQuarterForZoned.ts'
      - 'burglekitt/gmt:packages/gmt/src/zoned/calculate/endOfQuarterForZoned.ts'
      - 'burglekitt/gmt:packages/gmt/src/zoned/calculate/getLocaleZonedStartOfWeek.ts'
      - 'burglekitt/gmt:packages/gmt/src/zoned/calculate/getLocaleZonedEndOfWeek.ts'
      - 'burglekitt/gmt:packages/gmt/src/zoned/calculate/clampZoned.ts'
      - 'burglekitt/gmt:packages/gmt/src/zoned/calculate/closestZonedTo.ts'
      - 'burglekitt/gmt:packages/gmt/src/zoned/map/mapZonedHoursInDay.ts'
      - 'burglekitt/gmt:packages/gmt/src/unix/calculate/startOfUnix.ts'
      - 'burglekitt/gmt:packages/gmt/src/unix/calculate/endOfUnix.ts'
      - 'burglekitt/gmt:packages/gmt/src/unix/calculate/startOfQuarterForUnix.ts'
      - 'burglekitt/gmt:packages/gmt/src/unix/calculate/endOfQuarterForUnix.ts'

  - name: Convert Temporal Types
    slug: convert-types
    type: core
    domain: conversion
    path: 'skills/convert-types/SKILL.md'
    package: 'packages/gmt'
    description: Convert between plain and zoned (with DST disambiguation control), or unix/utc representations; convertDateToCalendar expresses a date in a non-Gregorian CalendarSystem (gregorian, hebrew, islamic-civil, islamic-tabular, islamic-umalqura, japanese, buddhist, taiwan, persian, indian, ethiopic, ethiopic-amete-alem, coptic)
    sources:
      - 'burglekitt/gmt:packages/gmt/src/plain/convert/index.ts'
      - 'burglekitt/gmt:packages/gmt/src/zoned/convert/index.ts'
      - 'burglekitt/gmt:packages/gmt/src/unix/convert/index.ts'
      - 'burglekitt/gmt:packages/gmt/src/utc/convert/index.ts'
      - 'burglekitt/gmt:packages/gmt/src/types/calendar-system.ts'
      - 'burglekitt/gmt:packages/gmt/src/internal/ethiopicFamilyCalendar.ts'

  # Consumer-facing interval skills
  - name: Interval Operations
    slug: interval-ops
    type: core
    domain: interval-operations
    path: 'skills/interval-ops/SKILL.md'
    package: 'packages/gmt'
    description: Range math over two-point intervals — validate, contain, overlap, intersect, union, difference, xor, abut, engulf, construct from a point + duration, split by duration unit, and count calendar-unit boundaries across plain, zoned, unix, and utc
    requires: []
    sources:
      - 'burglekitt/gmt:packages/gmt/src/plain/interval/index.ts'
      - 'burglekitt/gmt:packages/gmt/src/zoned/interval/index.ts'
      - 'burglekitt/gmt:packages/gmt/src/unix/interval/index.ts'
      - 'burglekitt/gmt:packages/gmt/src/utc/interval/index.ts'
      - 'burglekitt/gmt:packages/gmt/src/duration/validate/isValidDuration.ts'

  # Consumer-facing composition skills
  - name: App Integration
    slug: app-integration
    type: composition
    domain: integration
    path: 'skills/app-integration/SKILL.md'
    package: 'packages/gmt'
    description: Integrate gmt with application frameworks

  - name: Lint Package Suggestion
    slug: lint-package-suggestion
    type: composition
    domain: integration
    path: 'skills/lint-package-suggestion/SKILL.md'
    package: 'packages/gmt'
    description: Recommend appropriate lint packages from @burglekitt toolchain
    requires: []

  # Lifecycle skills
  - name: Issue Creation
    slug: issue-creation
    type: lifecycle
    domain: core-date-operations
    path: 'skills/issue-creation/SKILL.md'
    package: 'packages/gmt'
    description: Create feature requests with proper details for maintainers

  - name: PR Contribution
    slug: pr-contribution
    type: lifecycle
    domain: integration
    path: 'skills/pr-contribution/SKILL.md'
    package: 'packages/gmt'
    description: Contribute improvements via pull requests

  # Maintainer skills (document how to work on gmt itself)
  - name: New Method Implementation
    slug: new-method-implementation
    type: core
    domain: core-date-operations
    path: 'skills/new-method-implementation/SKILL.md'
    package: 'packages/gmt'
    description: Implement or extend a gmt API in packages/gmt/src

  - name: Unit Test Generation
    slug: unit-test-generation
    type: core
    domain: core-date-operations
    path: 'skills/unit-test-generation/SKILL.md'
    package: 'packages/gmt'
    description: Write or update gmt unit tests with deterministic Temporal-safe patterns
    requires:
      - new-method-implementation

  - name: API Expansion Workflow
    slug: api-expansion-workflow
    type: lifecycle
    domain: core-date-operations
    path: 'skills/api-expansion-workflow/SKILL.md'
    package: 'packages/gmt'
    description: Handle feature requests for missing gmt functionality