agentleFS
DrawdEADrawdEA/dev-shortcuts/sanity-check/SKILL.md

sanity-check

Skill1 starsChanged 7 months agoMITView on GitHub

Checks whether an npm package, library, or code pattern is current, maintained, and recommended. Use this skill whenever the user mentions a specific npm package, library, framework, or pattern (e.g. "should I use X", "is X still good", "using X for Y", "/sanity-check X"). Also auto-trigger when the user pastes code that imports or requires a library you're unfamiliar with, or when discussing tech stack choices. Also triggers on "/sanity-check --scan" or "scan my dependencies" to audit an entire package.json. Don't wait to be asked — if a package or pattern comes up and its currency is relevant, run this check proactively.

11 other projects use a version of this.

Adopted by

Most recently taken up by

Used with

Projects with it also use launch-graphics, publish-registry and 2 more.

Other files people use alongside this one.

Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
  • rivet-devSkill

    launch-graphics

    Generate agentOS marketing/launch graphics (launch & social heroes, code-snippet cards) from the committed generators in docs-internal/graphics. Use when asked to make, update, or render an agentOS launch image, social image, "agentOS Apps" graphic, or technical code-snippet image.

    Also in 3 projects that use this

  • rivet-devSkill

    publish-registry

    Publish @agentos-software/* registry packages from AgentOS. Use whenever the user asks to publish or release registry software/agent packages.

    Also in 3 projects that use this

  • MicrosoftSkill

    release

    Use ONLY when the user explicitly asks to cut/publish a Huabu desktop release or tag a version. Performs an outward action — bumps the version in apps/desktop/package.json, commits + annotated-tags vX.Y.Z, and pushes the branch + tag. That tag push auto-builds the macOS/Windows installers and publishes a GitHub Release. Provides `status`, `bump`, `tag-push`, and a one-command `run` (bump → tag-push).

    Also in 3 projects that use this

  • +1 more from rivet-dev

The file

We split this skill into the rules it gives an agent

4 rules. 0 are common, 2 are distinctive, and 2 are very specific to this project.

  • 0

    Common

    Most of the 10 edited versions we read keep these.

  • 2

    Distinctive

    This author's own choices. Worth a look.

  • 2

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Use web_search and web_fetch.

    line 31
  2. Very specific:

    Expo-specific packages: check https://docs.expo.dev — npm data alone isn't enough for SDK version gating

    line 150
  3. Distinctive:

    Native modules in RN: check New Architecture compatibility list

    line 151
  4. Distinctive:

    Unknown package: if npm 404s, say so and search — might be a typo or GitHub-only

    line 152

“Common” is measured: kept by at least 6 in 10 of the 10 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

/sanity-check

Two modes:

  1. Single package — /sanity-check <package> — live check on one package
  2. Full scan — /sanity-check --scan — audit entire package.json for vibe/agentic compatibility

Mode 1: Single package check

Trigger conditions

  • Explicit: user types /sanity-check <package>
  • Auto: user mentions a package/library/pattern where its health matters
  • Auto: user pastes code with unfamiliar imports
  • Auto: user asks "should I use X for Y" or "is X still good"

Data sources (in order)

  1. npm registry — https://registry.npmjs.org/<package-name> (latest version, publish date, deprecated field)
  2. GitHub repo — releases/tags page and README for maintenance signals
  3. Bundlephobia — https://bundlephobia.com/package/<n> if bundle size is relevant
  4. Training knowledge — known dead/deprecated patterns, ecosystem shifts
  5. Startup/builder community vibe — X/Twitter, Reddit (r/reactjs, r/expo, r/javascript, r/startups), Hacker News. Search "<package> site:reddit.com OR site:news.ycombinator.com" and "<package> 2026 opinion".

Use web_search and web_fetch. Search pattern: "<package> deprecated OR alternative OR 2026".

Single package output format

## Sanity check: <package-name>

**Verdict: ✅ Current** | **⚠️ Caution** | **❌ Dead/Avoid**

One-line reason.

---

### Details
- **Latest version**: x.x.x (released N months ago)
- **npm weekly downloads**: ~Xm
- **Actively maintained**: Yes / No / Unclear (last commit: ...)
- **Deprecated flag**: None / "Use X instead"
- **Known issues**: [any breaking changes, migration notes]

### Ecosystem signal
[1-2 sentences on community sentiment, trends, alternatives if relevant]

### Vibe check 🌡️
**Builder/startup community opinion**: [Bullish / Neutral / Bearish / Divided]
[2-3 sentences: what are devs/founders saying on X, Reddit, HN? Hot takes, trends, is it the "cool" pick or "boring enterprise" pick?]

### Recommendation
[Concrete: keep using it / migrate to X / fine for Y but not Z]

Mode 2: Full dependency scan (/sanity-check --scan)

Audits every package in the nearest package.json through the lens of vibe coding / agentic engineering compatibility — i.e. how well each package works when Claude (or another LLM) is writing the code.

What "vibe/agentic compatible" means

A package is LLM-friendly if:

  • Well-typed — bundled TypeScript types mean Claude can infer correct API shape
  • Actively maintained — recent publishes mean Claude's training data is less likely stale
  • Well-documented — rich README/docs give LLMs better context to generate correct usage
  • Stable API — not multiple majors ahead of what's installed (Claude may generate newer API syntax)
  • Not deprecated — obvious

How to run

Find the nearest package.json in the current project, then run:

python {SKILL_DIR}/scripts/scan_deps.py path/to/package.json

The script fetches live npm registry data for every dep and returns structured JSON. Parse the JSON and generate a terminal summary.

Scan output format

Print a terminal summary — one line per package, grouped by risk level:

🔍 Dependency scan: <project-name> (<N> packages)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

❌ HIGH RISK (fix these)
  moment          v2.29  →  stale 36mo, deprecated, no types
  node-sass       v4.x   →  deprecated, use sass

⚠️  CAUTION
  axios           v1.x   →  2 major versions behind latest
  redux           v4.x   →  active but often overkill for vibe coding

✅ VIBE-FRIENDLY
  zod             v3.x   →  typed, active, LLM-friendly API
  react-query     v5.x   →  current, excellent docs
  ...

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📊 Summary: X healthy · Y caution · Z high risk
🤖 Agentic compatibility score: N/10

Top recommendations:
1. [most impactful fix]
2. [second fix]
3. [third fix]

Scoring rubric (per package)

SignalWeight
Deprecated flag❌ immediate high risk
No TypeScript types (bundled or @types)⚠️ caution
Last publish > 12 months⚠️ caution
Last publish > 24 months❌ high risk
Major version 2+ behind latest⚠️ caution
Sparse README (<500 chars)⚠️ caution
Active + typed + rich docs✅ vibe-friendly

Dead patterns reference (verify if old)

PatternStatusReplacement
moment❌ Dead (self-deprecated)date-fns, dayjs, Temporal API
enzyme❌ Dead (React 17+ broken)@testing-library/react
request (npm)❌ Dead (deprecated 2020)axios, ky, fetch
node-sass❌ Deadsass (Dart Sass)
tslint❌ Deadeslint + typescript-eslint
react-scripts (CRA)⚠️ Zombievite, Next.js
redux alone⚠️ Often overkillzustand, jotai, RTK if needed
styled-components v5⚠️ Check v6 compatv6 or tailwind
expo-av⚠️ Splittingexpo-audio, expo-video
@react-navigation/native v5⚠️ Oldv6/v7

Edge cases

  • Monorepo packages (@tanstack/react-query): check root package on npm
  • Expo-specific packages: check https://docs.expo.dev — npm data alone isn't enough for SDK version gating
  • Native modules in RN: check New Architecture compatibility list
  • Unknown package: if npm 404s, say so and search — might be a typo or GitHub-only
  • Multiple packages: /sanity-check axios zod react-query → stacked verdict blocks
  • Patterns not packages: skip npm steps, go straight to web_search + training knowledge

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.