← Since.devCONTENT HISTORY

Update to Since.dev

Snapshot Nov 12, 2026 · 00:10 UTC · version 4.3.0

Collection source: downloaded plugin package.

WHAT CHANGED

First saved snapshot

No earlier snapshot is available to establish a change.

Save Since.dev and check future changes in Following.

Up to 3 plugins free · no card required.

Compare saved observations

Download comparison JSON
Full technical diff · 0 changed fields
Full snapshot data
{
  "description": "Use when editing CI workflows (.github/workflows/*.yml), Dockerfiles, docker-compose files or runtime version files (.nvmrc, .node-version, .python-version, .tool-versions, go.mod, global.json), when choosing a runtime or base image version, and when a CI runner or image fails. Asks Since.dev which runner images, base images and runtime versions are past or near end of life, and what to move to.",
  "included_files": [],
  "name": "since-ci-and-runtimes",
  "skill_md_contents": "---\nname: since-ci-and-runtimes\ndescription: Use when editing CI workflows (.github/workflows/*.yml), Dockerfiles, docker-compose files or runtime version files (.nvmrc, .node-version, .python-version, .tool-versions, go.mod, global.json), when choosing a runtime or base image version, and when a CI runner or image fails. Asks Since.dev which runner images, base images and runtime versions are past or near end of life, and what to move to.\n---\n\n# Check runtimes, images and CI runners with Since.dev\n\nRuntimes and CI runners reach end of life on published dates. After that, runtimes stop getting security fixes, and retired CI runner images make jobs fail. Since.dev tracks these dates from each project's own schedule.\n\n## Runtime version files\n\nSend the file to `check_code` as a manifest:\n\n```json\n{ \"manifest\": { \"path\": \".nvmrc\", \"content\": \"18\\n\" } }\n```\n\nThis works for `.nvmrc`, `.node-version`, `.python-version`, `.tool-versions`, `go.mod` and `global.json`. The answer gives each runtime's status, end-of-life date and the line it is on.\n\n## Dockerfiles, compose files and workflows\n\nRead the versions out of the file yourself: base images (`FROM node:18-alpine`), `runs-on:` runner labels (`macos-14`, `ubuntu-22.04`) and `setup-*` action versions (`node-version: 18`). Then check each one as a surface with `check_code`:\n\n```json\n{ \"surface\": \"runtime:node@18\" }\n```\n\n```json\n{ \"surface\": \"runtime:github-actions-runner-images@macos-14\" }\n```\n\nThe surface is `runtime:<product>@<version>`, for example `runtime:python@3.9`, `runtime:go@1.23` or `runtime:dotnet@8`.\n\n## See what ends soon\n\n```json\n{ \"surface\": \"runtime:nodejs\", \"within\": \"180d\" }\n```\n\nWith `whats_changed`, this lists the end-of-life dates coming up, soonest first.\n\n## Moving off an old version\n\nPrefer the newest supported LTS or the version the answer names as the replacement, change every place that pins it (the version file, the Dockerfile, the workflow), then check again. `needs_review` and `unknown` are not settled: read the cited source or ask the user.\n"
}

SHA-256 of public snapshot: 436edd9199aa396430ca17aaa6cc4346ea7bbf75d4af449735d54e6230af4257