[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M77KRCJEBMCFCZ95R3STGFGJ":3,"skill-same:01M77KRCJEBMCFCZ95R3STGFGJ":46},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":19,"linkOnly":20,"markdownContent":21,"markdownBody":22,"frontMatter":23,"refName":24,"commitSha":25,"skillDirectory":26,"forksCount":14,"repositoryHtmlUrl":27,"repositoryHomepageUrl":28,"ownerHtmlUrl":29,"ownerBlogUrl":28,"ownerDescription":30,"updatedAt":31,"install":32,"resources":45},"01M77KRCJEBMCFCZ95R3STGFGJ","date-formatting",null,"Date and time formatting for display in the UI and in exported files, covering locales, relative times such as three days ago, absolute timestamps, time zones taken from the user profile, calendar weeks starting on Monday, the short and long date styles used in tables and detail pages, the rules for showing seconds only in audit views, the fallback used when a time zone is missing, and the helper functions formatDate, formatRelative and formatRange that wrap Intl.DateTimeFormat so that every screen renders dates the same way across browsers and server rendering, including the special handling of all-day events, date-only values stored without a time component, and ranges that cross a daylight saving boundary, plus guidance on testing these helpers with fixed clocks so snapshots stay stable, and on choosing between the user locale and the organization locale when they differ, which matters for shared reports and scheduled exports that are generated on the server without a browser and therefore without the browser locale available at all to the formatting code paths","pharn-dev\u002Fpharn-oss","pharn-dev","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F282059132?v=4","01M77KNAQZR604Z1FQXFEA3YAJ","Pharn","01M77KNARRQWE52WNVDA9C5QKC",1,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fpharn-dev\u002Fpharn-oss\u002Fblob\u002Fmain\u002F.dev\u002Ffloor\u002Ftest-fixtures\u002Fskill-selection\u002Fc7-fallback-heavy\u002Fskills\u002Fdate-formatting\u002FSKILL.md",[],[],"2026-11-15 14:19:17",false,"---\nname: date-formatting\ndescription: Date and time formatting for display in the UI and in exported files, covering locales, relative times such as three days ago, absolute timestamps, time zones taken from the user profile, calendar weeks starting on Monday, the short and long date styles used in tables and detail pages, the rules for showing seconds only in audit views, the fallback used when a time zone is missing, and the helper functions formatDate, formatRelative and formatRange that wrap Intl.DateTimeFormat so that every screen renders dates the same way across browsers and server rendering, including the special handling of all-day events, date-only values stored without a time component, and ranges that cross a daylight saving boundary, plus guidance on testing these helpers with fixed clocks so snapshots stay stable, and on choosing between the user locale and the organization locale when they differ, which matters for shared reports and scheduled exports that are generated on the server without a browser and therefore without the browser locale available at all to the formatting code paths\n---\n\n# Dates\n\n- Format with `formatDate`, `formatRelative` and `formatRange` from `src\u002Flib\u002Fdates.ts`.\n- Store timestamps in UTC.\n\n## History notes\n\nThese notes record past decisions about date formatting in this repository. They are kept for context and do not change the rules above.\n\n### Note 1\n\nA past change to date formatting was reviewed and merged after discussion. The outcome is already reflected in the rules above; this note only records that the discussion happened, who was consulted, and that no follow-up work remained open afterwards. Nothing here adds a rule.\n\n### Note 2\n\nA past change to date formatting was reviewed and merged after discussion. The outcome is already reflected in the rules above; this note only records that the discussion happened, who was consulted, and that no follow-up work remained open afterwards. Nothing here adds a rule.\n\n### Note 3\n\nA past change to date formatting was reviewed and merged after discussion. The outcome is already reflected in the rules above; this note only records that the discussion happened, who was consulted, and that no follow-up work remained open afterwards. Nothing here adds a rule.\n\n### Note 4\n\nA past change to date formatting was reviewed and merged after discussion. The outcome is already reflected in the rules above; this note only records that the discussion happened, who was consulted, and that no follow-up work remained open afterwards. Nothing here adds a rule.\n\n### Note 5\n\nA past change to date formatting was reviewed and merged after discussion. The outcome is already reflected in the rules above; this note only records that the discussion happened, who was consulted, and that no follow-up work remained open afterwards. Nothing here adds a rule.\n\n### Note 6\n\nA past change to date formatting was reviewed and merged after discussion. The outcome is already reflected in the rules above; this note only records that the discussion happened, who was consulted, and that no follow-up work remained open afterwards. Nothing here adds a rule.\n\n### Note 7\n\nA past change to date formatting was reviewed and merged after discussion. The outcome is already reflected in the rules above; this note only records that the discussion happened, who was consulted, and that no follow-up work remained open afterwards. Nothing here adds a rule.\n\n### Note 8\n\nA past change to date formatting was reviewed and merged after discussion. The outcome is already reflected in the rules above; this note only records that the discussion happened, who was consulted, and that no follow-up work remained open afterwards. Nothing here adds a rule.\n\n### Note 9\n\nA past change to date formatting was reviewed and merged after discussion. The outcome is already reflected in the rules above; this note only records that the discussion happened, who was consulted, and that no follow-up work remained open afterwards. Nothing here adds a rule.\n\n### Note 10\n\nA past change to date formatting was reviewed and merged after discussion. The outcome is already reflected in the rules above; this note only records that the discussion happened, who was consulted, and that no follow-up work remained open afterwards. Nothing here adds a rule.\n\n### Note 11\n\nA past change to date formatting was reviewed and merged after discussion. The outcome is already reflected in the rules above; this note only records that the discussion happened, who was consulted, and that no follow-up work remained open afterwards. Nothing here adds a rule.\n","# Dates\n\n- Format with `formatDate`, `formatRelative` and `formatRange` from `src\u002Flib\u002Fdates.ts`.\n- Store timestamps in UTC.\n\n## History notes\n\nThese notes record past decisions about date formatting in this repository. They are kept for context and do not change the rules above.\n\n### Note 1\n\nA past change to date formatting was reviewed and merged after discussion. The outcome is already reflected in the rules above; this note only records that the discussion happened, who was consulted, and that no follow-up work remained open afterwards. Nothing here adds a rule.\n\n### Note 2\n\nA past change to date formatting was reviewed and merged after discussion. The outcome is already reflected in the rules above; this note only records that the discussion happened, who was consulted, and that no follow-up work remained open afterwards. Nothing here adds a rule.\n\n### Note 3\n\nA past change to date formatting was reviewed and merged after discussion. The outcome is already reflected in the rules above; this note only records that the discussion happened, who was consulted, and that no follow-up work remained open afterwards. Nothing here adds a rule.\n\n### Note 4\n\nA past change to date formatting was reviewed and merged after discussion. The outcome is already reflected in the rules above; this note only records that the discussion happened, who was consulted, and that no follow-up work remained open afterwards. Nothing here adds a rule.\n\n### Note 5\n\nA past change to date formatting was reviewed and merged after discussion. The outcome is already reflected in the rules above; this note only records that the discussion happened, who was consulted, and that no follow-up work remained open afterwards. Nothing here adds a rule.\n\n### Note 6\n\nA past change to date formatting was reviewed and merged after discussion. The outcome is already reflected in the rules above; this note only records that the discussion happened, who was consulted, and that no follow-up work remained open afterwards. Nothing here adds a rule.\n\n### Note 7\n\nA past change to date formatting was reviewed and merged after discussion. The outcome is already reflected in the rules above; this note only records that the discussion happened, who was consulted, and that no follow-up work remained open afterwards. Nothing here adds a rule.\n\n### Note 8\n\nA past change to date formatting was reviewed and merged after discussion. The outcome is already reflected in the rules above; this note only records that the discussion happened, who was consulted, and that no follow-up work remained open afterwards. Nothing here adds a rule.\n\n### Note 9\n\nA past change to date formatting was reviewed and merged after discussion. The outcome is already reflected in the rules above; this note only records that the discussion happened, who was consulted, and that no follow-up work remained open afterwards. Nothing here adds a rule.\n\n### Note 10\n\nA past change to date formatting was reviewed and merged after discussion. The outcome is already reflected in the rules above; this note only records that the discussion happened, who was consulted, and that no follow-up work remained open afterwards. Nothing here adds a rule.\n\n### Note 11\n\nA past change to date formatting was reviewed and merged after discussion. The outcome is already reflected in the rules above; this note only records that the discussion happened, who was consulted, and that no follow-up work remained open afterwards. Nothing here adds a rule.\n",{"name":5,"description":7},"main","4ae3a9e90c3a8a58cd44ea73bd335cf99a09f3a8",".dev\u002Ffloor\u002Ftest-fixtures\u002Fskill-selection\u002Fc7-fallback-heavy\u002Fskills\u002Fdate-formatting","https:\u002F\u002Fgithub.com\u002Fpharn-dev\u002Fpharn-oss","https:\u002F\u002Fpharn.dev","https:\u002F\u002Fgithub.com\u002Fpharn-dev","We build the floor for AI-assisted development. The main product is Pharn CI — one CI check that tells a team whether an agent's PR is safe to merge.","2026-11-13 21:13:37",{"source":8,"skillName":5,"commands":33,"prompt":43,"zipAvailable":44},[34,37,40],{"tool":35,"command":36},"npx","npx skills add pharn-dev\u002Fpharn-oss --skill date-formatting",{"tool":38,"command":39},"bunx","bunx skills add pharn-dev\u002Fpharn-oss --skill date-formatting",{"tool":41,"command":42},"pnpm","pnpm dlx skills add pharn-dev\u002Fpharn-oss --skill date-formatting","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fpharn-dev\u002Fpharn-oss\u002Fblob\u002Fmain\u002F.dev\u002Ffloor\u002Ftest-fixtures\u002Fskill-selection\u002Fc7-fallback-heavy\u002Fskills\u002Fdate-formatting\u002FSKILL.md",true,[],[47,53,59,66,73,80],{"skillNo":48,"name":49,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":50,"categories":51,"keywords":52,"publishedAt":19},"01M77KRXB4DKD533HA9A9MHDKB","broken","https:\u002F\u002Fgithub.com\u002Fpharn-dev\u002Fpharn-oss\u002Fblob\u002Fmain\u002Fpharn\u002Ffloor\u002Ftest-fixtures\u002Fred\u002Fskill.md",[],[],{"skillNo":54,"name":55,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":56,"categories":57,"keywords":58,"publishedAt":19},"01M77KRVZYZPRR71APDBWWZ29K","example","https:\u002F\u002Fgithub.com\u002Fpharn-dev\u002Fpharn-oss\u002Fblob\u002Fmain\u002Fpharn\u002Ffloor\u002Ftest-fixtures\u002Fgreen\u002Fskill.md",[],[],{"skillNo":60,"name":61,"nameZh":6,"description":62,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":63,"categories":64,"keywords":65,"publishedAt":19},"01M77KRRHV3ESSTS0HTR7F6QK1","storybook","Storybook stories for UI components — one story per state, args tables and interaction tests. Use when adding or changing a reusable component.","https:\u002F\u002Fgithub.com\u002Fpharn-dev\u002Fpharn-oss\u002Fblob\u002Fmain\u002F.dev\u002Ffloor\u002Ftest-fixtures\u002Fskill-selection\u002Fc7-fallback-heavy\u002Fskills\u002Fstorybook\u002FSKILL.md",[],[],{"skillNo":67,"name":68,"nameZh":6,"description":69,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":70,"categories":71,"keywords":72,"publishedAt":19},"01M77KRN8ZBM2EA1KABJQTM8K7","error-handling","Route handler error conventions — wrap handlers in \"withErrors\" and throw HttpError.","https:\u002F\u002Fgithub.com\u002Fpharn-dev\u002Fpharn-oss\u002Fblob\u002Fmain\u002F.dev\u002Ffloor\u002Ftest-fixtures\u002Fskill-selection\u002Fc7-fallback-heavy\u002Fskills\u002Ferror-handling\u002FSKILL.md",[],[],{"skillNo":74,"name":75,"nameZh":6,"description":76,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":77,"categories":78,"keywords":79,"publishedAt":19},"01M77KR9YR2MHH5AY9C8ZNDMRH","auth-session","Authentication and session rules for every mutating API route.","https:\u002F\u002Fgithub.com\u002Fpharn-dev\u002Fpharn-oss\u002Fblob\u002Fmain\u002F.dev\u002Ffloor\u002Ftest-fixtures\u002Fskill-selection\u002Fc7-fallback-heavy\u002Fskills\u002Fauth-session\u002FSKILL.md",[],[],{"skillNo":81,"name":82,"nameZh":6,"description":83,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":84,"categories":85,"keywords":86,"publishedAt":19},"01M77KR7F991VMPSD2JSQE8AKE","api-pagination","List endpoint conventions for cursor pagination, page sizes and response envelopes.","https:\u002F\u002Fgithub.com\u002Fpharn-dev\u002Fpharn-oss\u002Fblob\u002Fmain\u002F.dev\u002Ffloor\u002Ftest-fixtures\u002Fskill-selection\u002Fc7-fallback-heavy\u002Fskills\u002Fapi-pagination\u002FSKILL.md",[],[]]