# Vendor status sweep — a replayable Reelier skill

One-sweep status check of npm and GitHub public status pages — read-only, no account needed

A real, read-only Reelier skill against a live public API — no account, no keys, no writes. Every replay proves: npm's and GitHub's public status APIs both answer with a status indicator.

- Steps: 2 · Assertions: 4 · Effect: read (counts parsed from the file, never hand-typed)
- Endpoints: https://status.npmjs.org/api/v2/status.json · https://www.githubstatus.com/api/v2/status.json
- Canonical file: https://raw.githubusercontent.com/seldonframe/reelier/main/examples/portfolio/vendor-status-sweep.skill.md
- HTML page: https://www.reelier.com/skills/vendor-status-sweep

## What this checks

Two steps: an HTTP GET to npm's public Statuspage API, then one to GitHub's. Four assertions, two per vendor: the API answered 200 and status.indicator is a string. Both endpoints are Statuspage v2 — same shape, no auth.

The indicator is "none" when all systems are operational, else "minor", "major", or "critical". A vendor incident shows up in the bound values on the receipt; it does not fail the replay. The skill's job is "did the status API answer honestly", not "is the vendor having a good day".

## The skill file (verbatim)

```markdown
---
name: vendor-status-sweep
description: One-sweep status check of npm and GitHub public status pages — read-only, no account needed
---

<!-- synced from seldonframe/reelier examples/portfolio — edit there -->

# Vendor status sweep

Inputs: (none — works as-is for any project; these two vendors are upstream of almost everyone)

<!--
  Both endpoints are public Statuspage v2 APIs — same shape, no auth.
  `status.indicator` is "none" when all systems are operational, else
  "minor" / "major" / "critical". The assertions pin the SHAPE (the field
  exists and is a string), not the value — a vendor incident should show up
  in the bound values on the receipt, not fail the replay: the skill's job
  is "did the status API answer honestly", not "is the vendor having a good
  day".

  Endpoints verified live on 2026-07-21: both 200, both indicator "none".
-->

## Steps

### Step 1 — npm status
- intent: Fetch the npm public status page API and confirm a well-formed status indicator
- action: http.get {"url": "https://status.npmjs.org/api/v2/status.json"}
- assert: status == 200
- assert: json.status.indicator is string
- bind: npm_indicator = json.status.indicator
- bind: npm_status = json.status.description
- effect: read

### Step 2 — GitHub status
- intent: Fetch the GitHub public status page API and confirm a well-formed status indicator
- action: http.get {"url": "https://www.githubstatus.com/api/v2/status.json"}
- assert: status == 200
- assert: json.status.indicator is string
- bind: github_indicator = json.status.indicator
- bind: github_status = json.status.description
- effect: read
```

## Run it yourself

`reelier run` takes a local file, so fetch the canonical copy first (or clone the repo). The replay writes its receipt to `.reelier/runs/`.

```sh
curl -fsSL https://raw.githubusercontent.com/seldonframe/reelier/main/examples/portfolio/vendor-status-sweep.skill.md -o vendor-status-sweep.skill.md
npx -y reelier@latest run vendor-status-sweep.skill.md

# or from a clone:
git clone https://github.com/seldonframe/reelier
cd reelier && npx -y reelier@latest run examples/portfolio/vendor-status-sweep.skill.md
```

## Seed receipt — 2026-07-21

Replayed for real with the published CLI (resolved to reelier@0.12.1) on 2026-07-21; the run record confirms passed: true and 0 LLM tokens (input + output). Verbatim output:

```
✓ Step 1 — npm status [passed] 150ms
✓ Step 2 — GitHub status [passed] 85ms

PASSED: 2/2 steps ok, 0 failed, 235ms total
```

Standing audit log: a GitHub Action replays all five portfolio skills every 6 hours (plus on demand) — https://github.com/seldonframe/reelier/actions/workflows/portfolio-replay.yml. A failing endpoint produces an honestly failing receipt, never a retried-until-green one.

## Point it at your project

Nothing to swap — npm and GitHub are upstream of almost everyone. It works as-is for any project.

---

Reelier — agents make claims, Reelier writes receipts. AGPL-3.0.
Portfolio index: https://www.reelier.com/skills (twin: https://www.reelier.com/skills.md) · Replay ledger: https://www.reelier.com/replays · Machine-readable summary: https://www.reelier.com/llms.txt
