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 patternsdevelopment
Anxiety-aware, evidence-driven collaboration for stalled or high-stakes work when a user says uncertainty, repeated setbacks, or lack of visible progress is causing significant anxiety or distress. Use immediately when explicitly invoked; when this fit is only inferred from the user's own account, ask permission before applying it. Preserve the user's ideal and turn grounded perspective-taking into persistent, bounded problem solving. Do not use to diagnose, provide therapy, manufacture certainty, or lower goals for reassurance.
development
Build, review, debug, package, and test Roslyn diagnostic analyzers, code fix providers, and incremental source generators. Use for DiagnosticAnalyzer, CodeFixProvider, IIncrementalGenerator, IOperation analysis, Microsoft.CodeAnalysis dependency pinning, Roslyn test harnesses, C#/VB tests, and analyzer NuGet packaging.
testing
Migrates a project that uses checked-in .designer.cs files behind .resx to using a source-generator instead
development
Polish any GitHub repository's surface — labels (emoji rating tiers, P0–P3 priority, impact severity), issue forms, PR template, CI workflows, CODEOWNERS, rulesets, docs. Repo meta & config only — no code logic touched. Use when creating a new repo or polishing an existing one.