npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@mplibunao/oxlint-standards

v0.1.0

Published

Opinionated oxlint JS-plugin presets.

Readme

@mplibunao/oxlint-standards

Opinionated oxlint presets for MP's code-quality backpressure package.

The package exports an oxlint JS plugin plus preset objects for Effect, Effect-in-React, stack-neutral JavaScript/TypeScript hygiene, and monorepo boundaries.

Usage

Install the package, then load it from a standalone .oxlintrc.json:

{
  "jsPlugins": ["@mplibunao/oxlint-standards"],
  "rules": {
    "@mplibunao/oxlint-standards/no-effect-as": "error",
    "@mplibunao/oxlint-standards/no-barrel-import": "error"
  }
}

The compiled package is the supported consumer path. Inline vite-plus jsPlugins config may work later, but this package validates the standalone oxlint config path first.

Rule severity

Rules ship with graded default severities. Correctness, safety, and agent-failure-mode rules default to error. Style and preference rules default to a quieter level. The aim is an error signal worth acting on instead of a wall of errors.

Some coding agents act on error but skip warn, so an adversarial review step helps the quieter rules land. Every rule is overridable: raise any rule to error in your own .oxlintrc.json when you want a hard stop. The reasoning is in docs/decisions/004-rule-curation-and-severity-posture.md.

Presets

The main package entry exports:

  • effectPreset: gen-first Effect v4 structural rules. It includes require-yield: off and no-shadow: off because idiomatic Effect.gen conflicts with those native rules.
  • effectReactPreset: Effect and @effect-atom rules for React code, including atom/state-update rules and the broad React state-hook ban.
  • generalPreset: stack-neutral JS/TS backpressure, including prevent-dynamic-imports and built-in no-nested-ternary.
  • boundariesPreset: package-boundary rules such as no-cross-package-relative-imports.

The unqualified react preset name is reserved for a future stack-neutral React preset. Do not combine effect-react with that future hooks-first preset because effect-react forbids hooks that a general React preset would regulate.

Effect language-service boundary

This package ships fast AST-shape rules only. Type-aware Effect semantics belong in the consumer's own @effect/language-service setup.

Recommended consumer setup:

{
  "compilerOptions": {
    "plugins": [
      {
        "name": "@effect/language-service",
        "diagnosticSeverity": {
          "importFromBarrel": "error",
          "missingEffectServiceDependency": "error",
          "leakingRequirements": "error",
          "unsafeEffectTypeAssertion": "error",
          "instanceOfSchema": "error",
          "globalDate": "error",
          "globalRandom": "error",
          "globalConsole": "error",
          "globalFetch": "error",
          "globalTimers": "error",
          "preferSchemaOverJson": "error",
          "schemaSyncInEffect": "error",
          "cryptoRandomUUID": "error"
        }
      }
    ]
  }
}

no-barrel-import intentionally overlaps the language service's importFromBarrel diagnostic because the AST rule gives config-free feedback before a TypeScript project is wired.

Catalog posture

v0 targets Effect v4 identifiers. Effect v3 spellings are out of scope unless a v4 structural matcher catches them naturally.

The catalog currently records:

  • 50 linteffect v0.0.6 source rules represented for inventory.
  • 47 ported linteffect rules.
  • 3 explicit linteffect drops: no-if-statement, no-effect-fn-generator, and no-ternary.
  • 21 reimplemented structural/recon rules, including effect-no-multiple-provide, prefer-effect-fn, no-barrel-import, no-inline-schema-compile, and executor-derived error/schema/promise rules.
  • 1 built-in default: oxlint no-nested-ternary in generalPreset.
  • 13 LSP-owned semantic diagnostics documented for @effect/language-service.

See docs/references/rules.md for the consumer-facing catalog and src/rule-manifest.ts for the machine-checkable source of truth.

Attribution

The linteffect-derived rules are derived from @catenarycloud/linteffect, the MIT-licensed GritQL rule pack by Roman Naumenko. The GritQL tooling is not copied into this package.