skills/dotnet-timezone/SKILL.md
.NET timezone handling guidance for C# applications. Use when working with TimeZoneInfo, DateTimeOffset, NodaTime, UTC conversion, daylight saving time, scheduling across timezones, cross-platform Windows/IANA timezone IDs, or when a .NET user needs the timezone for a city, address, region, or country and copy-paste-ready C# code.
npx skillsauth add williamlimasilva/.copilot dotnet-timezoneInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
4 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Resolve timezone questions for .NET and C# code with production-safe guidance and copy-paste-ready snippets.
Identify the request type first:
If the library is unclear, default to TimeZoneConverter for cross-platform work. If the scenario involves recurring schedules or strict DST rules, prefer NodaTime.
If the user provides an address, city, region, country, or document containing place names:
references/timezone-index.md for common Windows and IANA mappings.For each resolved location, provide:
Location: <resolved place>
Windows ID: <windows id>
IANA ID: <iana id>
UTC offset: <standard offset and DST offset when relevant>
DST: <yes/no>
Then include a cross-platform snippet like:
using TimeZoneConverter;
TimeZoneInfo tz = TZConvert.GetTimeZoneInfo("Asia/Colombo");
DateTime local = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, tz);
If multiple locations are present, include one block per location and then a combined multi-timezone snippet.
If a location is ambiguous, list the possible timezone matches and ask the user to choose the correct one.
Use references/timezone-index.md for Windows to IANA mappings.
Always provide both formats:
TimeZoneInfo.FindSystemTimeZoneById() on WindowsNodaTime, and TimeZoneConverterUse references/code-patterns.md and pick the smallest pattern that fits:
TimeZoneInfo for Windows-only codeTimeZoneConverter for cross-platform conversionNodaTime for strict timezone arithmetic and DST-sensitive schedulingDateTimeOffset for APIs and data transferAlways include package guidance when recommending third-party libraries.
Mention the relevant warning when applicable:
TimeZoneInfo.FindSystemTimeZoneById() is platform-specific for timezone IDs.DateTime.Now in databases; store UTC instead.DateTimeKind.Unspecified as a bug risk unless it is deliberate input.For address and location requests:
For code and architecture requests:
Keep responses concise and code-first.
references/timezone-index.md: common Windows and IANA timezone mappingsreferences/code-patterns.md: ready-to-use .NET timezone patternstools
Create a new workshop or use an existing directory as one. Handles two paths: (A) use an existing local directory the operator points at, or (B) create a new private GitHub repo in the signed-in account. Never creates a repo inside another repo.
development
Guide for setting up vcpkg in C++ projects, managing dependency versions, and cross-compiling. Covers manifest initialization, CMake and Visual Studio integration, classic-to-manifest migration, version pinning, baselines, overrides, triplets, and cross-compilation. Use when a user is working with vcpkg project setup, installation, version management, or cross-platform builds. For specialized tasks, additional references cover custom registries and overlay ports (references/registries.md), CI/CD and binary caching (references/ci.md), and troubleshooting and dependency lifecycle (references/troubleshooting.md).
testing
Emit structured agent signals — hands-up, blocked, done, checkpoint, partnership. Signals are written as JSON to .signals/ for dashboard consumption and noted in the journal for persistence.
development
Install and configure Markstream streaming Markdown renderers for Vue, React, Svelte, Angular, Nuxt, and Vue 2 applications. Use for package selection, minimal peer dependencies, CSS order, SSR boundaries, streaming mode, and renderer setup.