Skip to main content

Is It Us

@skunk-ape/is-it-usv2026.10.28.1· MIT· 3d agoBEHAVIORSREPORTSACCEPTED WARNINGS
01README

When something breaks, find out whether it is upstream before assuming it is you.

check reads the public status pages for GitHub, Cloudflare and AWS, writes one record per provider, and rolls them up into a single summary. The rollup works out which open incidents are new since the previous check and carries a ready-made alert title, message and ntfy priority.

Alerts on what is new, not on what is open

A push fires when an incident appears that the last check had not seen. An outage that stays open for hours, or an AWS regional event that stays open for months, pushes once. A status page that is briefly unreachable keeps its incidents marked as seen, so it does not re-alert when it comes back. The first check alerts on everything already open, since that is when watching began.

Pieces

  • @skunk-ape/is-it-us — the behavior. One read-only method, check: one GET per provider. It fails only when every provider is unreachable, since a rollup of nothing would read as all clear.
  • @skunk-ape/is-it-us/rollup — a report attached to the behavior by default: one table of providers, their open incidents, new ones marked.

The push goes through @mgreten/ntfy-notify. The README has a workflow that runs check and then send, guarded so send is skipped when nothing is new.

Sources

GitHub and Cloudflare publish Atlassian Statuspage summary.json. AWS publishes its Health Dashboard feed as UTF-16 JSON, which is decoded before parsing. Scheduled maintenance is not counted as an incident.

02Behaviors1
@skunk-ape/is-it-usv2026.10.28.1is_it_us.ts

Global Arguments

ArgumentTypeDescription
providers?arrayWhich status pages to read. All three by default; drop one you do not depend on so its incidents never page you.
awsRegions?arrayAWS region codes to care about, such as "us-east-1", plus "global" for events that have no region. Empty keeps every region. Worth setting: AWS events in regions you do not use can stay open for months.
timeoutSeconds?numberPer-provider wall-clock cap. A provider that times out is reported as unreachable; the others still count.
userAgent?stringUser-Agent sent to the status pages.
fn check()
Read the public status pages and roll them up. Read-only: one GET per provider, nothing else. Fails only when every provider is unreachable, since a rollup of nothing would read as all clear.

Resources

provider(30d)— One provider's status on the latest check: overall indicator and its open incidents.
summary(infinite)— The rollup across providers: open and new incidents, and a ready-made alert for ntfy.
03Reports1
@skunk-ape/is-it-us/rollupmethod
rollup_report.ts

Roll GitHub, Cloudflare and AWS status into one table, marking incidents new since the last check.

statusincidents
04Stats
A
100 / 100
Downloads
0
Archive size
13.9 KB
  • Has README or module doc2/2earned
  • README has a code example1/1earned
  • README is substantive1/1earned
  • Most symbols documented1/1earned
  • No slow types (deprecated)1/1earned
  • Dependencies pass trust audit2/2earned
  • Docs keep secrets in a vault1/1earned
  • Has description1/1earned
  • Platform support declared (or universal)2/2earned
  • License2/2earned
  • Verified public repository2/2earned

06Platforms
07Labels