Skip to content
PluginStats

@enrichlayer/el-linear weekly downloads statistics

By enrichlayer · npm · Claude Code

A pragmatic CLI for Linear.app — deterministic team/label/member resolution, structured issue validation, configurable term enforcement, and a GraphQL escape hatch.

View on npm Stale · Oct 18, 2026

@enrichlayer/el-linear has 3,115 recorded weekly downloads on npm.

Weekly downloads
3,115
Official API · Oct 18, 2026
7-day growth
—
Insufficient history
30-day growth
—
Insufficient history
90-day growth
—
Insufficient history
Rank
—
Among tracked npm listings

About @enrichlayer/el-linear

<p align="center"> <img src="public/logo-256.png" alt="el-linear logo" width="160" height="160" /> </p> <h1 align="center">el-linear</h1>

A pragmatic CLI for Linear.app — deterministic team / label / member resolution, structured issue validation, configurable term enforcement, and a GraphQL escape hatch for everything that isn't a first-class command.

Note on naming. This package was briefly published as @enrichlayer/linctl with binary linctl, but reverted to @enrichlayer/el-linear (binary el-linear) because of an npm name collision with dorkitude/linctl. See CHANGELOG.md for the migration recipe.

Install

Published on npm as @enrichlayer/el-linear.

pnpm add -g @enrichlayer/el-linear
# or
npm install -g @enrichlayer/el-linear

Requires Node.js ≥ 22.

Quickstart

# Run the interactive setup wizard. Only the API token is required;
# every other step is skippable and revisitable later.
el-linear init

# Sanity-check
el-linear teams list

# Create your first issue
el-linear issues create "Investigate flaky deploy" \
  --team ENG --assignee alice --project "Reliability" \
  --description "..."

el-linear init walks you through the API token, default team, member aliases, and other defaults. Each step is also a stand-alone sub-command (el-linear init token, el-linear init aliases --import users.csv, etc.) so you can revisit individual sections later. Skip is the default at every prompt — running the wizard twice with no input is a no-op.

If you'd rather skip the wizard entirely, the configuration schema is fully documented in docs/configuration.md so any LLM or script can write ~/.config/el-linear/config.json directly.

Output is JSON by default. Pipe through jq for ad-hoc queries, or use the built-in --jq / --fields / --raw flags.

Why el-linear

The Linear API + SDK are excellent. el-linear adds the layer above them that every team ends up writing themselves:

ConcernWhat el-linear gives you
Name resolutionMap team keys, member aliases, and label names to UUIDs from one config file. No fuzzy matching, no API roundtrips per call.
Issue hygieneRequired labels, required assignee, required project, type-label-to-verb conventions — all configurable. Warn or hard-fail.
Term enforcementCatch misspellings of brand and project names in issue titles and descriptions ("EnrichLayer" → "Enrich Layer").
Status defaults"No project? → Triage. Has assignee+project? → Todo." Per-workspace, configurable.
Auto-link & relateWhen you write EMW-258 in a description, el-linear wraps it as a markdown link and creates the corresponding sidebar relation. Prose like "blocked by EMW-258" infers the relation type.
Agent delegationUse Linear's native delegate field for agent work while keeping the human assignee responsible. issues start moves work to the team's first started status.
GraphQL escape hatchAnything not covered by built-in commands: el-linear graphql '{ viewer { id } }'. Schema introspection included.
Bundled Claude skillThe published tarball includes a claude-skills/linear-operations/ directory you can symlink into your project's .claude/skills/.

Authentication

el-linear supports either OAuth or a personal Linear API token. OAuth is configured with:

el-linear init oauth

By default, that command walks you through registering your own Linear OAuth app. Teams can make the flow a single browser authorization step by writing a local, untracked app-defaults file at ~/.config/el-linear/team-oauth.json or pointing EL_LINEAR_OAUTH_CONFIG at one:

{
  "linearOAuth": {
    "actor": "user",
    "clientId": "your-linear-oauth-client-id",
    "redirectPort": 8765,
    "scopes": ["read", "write", "issues:create", "comments:create"],
    "passwordManagerPath": "op://vault/item/client_id"
  }
}

passwordManagerPath is optional metadata for humans/scripts; el-linear does not execute password-manager commands from it. Do not put a client_secret in this shared file. The OAuth flow uses PKCE.

For agent/service-account OAuth, authorize the app actor:

el-linear init oauth --actor app

App actor tokens can request app:assignable and app:mentionable, but not admin. The authorized app user ID is stored in oauth.json as viewerId.

OAuth apps that have Linear's client-credentials grant enabled can obtain an app-user token without a browser. Keep the secret out of argv and source it through an environment variable:

export LINEAR_OAUTH_CLIENT_SECRET="..."
el-linear init oauth --client-credentials --actor app \
  --client-id your-linear-oauth-client-id

Use --client-secret-env NAME to read a differently named variable and --scopes read,write,issues:create,comments:create to override the configured scope set. The 0600 profile state stores the secret so el-linear can acquire a new token before expiry and once after an HTTP 401; client-credentials tokens do not have refresh tokens. Keep the scope set stable: Linear revokes an app's existing client-credentials tokens when a new token requests different scopes. This flow is opt-in. Remote automation can keep using LINEAR_API_TOKEN, which remains higher precedence than profile OAuth.

At runtime, credentials are resolved in this order:…

Description from the npm listing.

  • linear
  • linear.app
  • cli
  • issue-tracker
  • graphql
  • claude
  • claude-code

README badge

Show your rank in a README or on your website. The badge updates automatically.

Charts

Images: 30d · 1y · all time · 1600×900 dark

Adoption over time

@enrichlayer/el-linear weekly downloads on npm, last 90 days: 3,115 weekly downloads as of Oct 18, 2026.@enrichlayer/el-linearWeekly downloads on npm · Last 90 days3,115downloads / week2.8K2.9K3K3.1K3.2K3.3K3.4K3.5KJul 20Aug 4Aug 19Sep 3Sep 18Oct 3Oct 18downloads / weekOct 18, 2026 – Oct 18, 2026 · 1 observations · Updated Oct 18, 2026pluginstats.com
@enrichlayer/el-linear weekly downloads on npm, last 90 days: 3,115 weekly downloads as of Oct 18, 2026.

7/30/90-day growth

@enrichlayer/el-linear weekly downloads growth on npm: 7-day growth unavailable, 30-day growth unavailable, 90-day growth unavailable.@enrichlayer/el-linearWeekly downloads growth on npm3,115downloads / week now7-day growthinsufficient historyInsufficient history30-day growthinsufficient historyInsufficient history90-day growthinsufficient historyInsufficient historyGrowth vs. nearest observation to each baseline date · Updated Oct 18, 2026pluginstats.com
@enrichlayer/el-linear weekly downloads growth on npm: 7-day growth unavailable, 30-day growth unavailable, 90-day growth unavailable.

Ranking history

@enrichlayer/el-linear has no ranking history on npm yet.@enrichlayer/el-linearnpm ranking · by weekly downloads · Last 90 daysNo ranking observations in this periodno observations · 0 observations · Updated Oct 18, 2026pluginstats.com
@enrichlayer/el-linear has no ranking history on npm yet.

Listing placement

All npm2,422 listings · 122 pages · 1,213 shown · page 64, #18 (overall #1,278)
All npm: every listing in weekly downloads order

Listing placement

Claude Code297 listings · 15 pages · page 6, #6 (overall #106)
Claude Code: every listing in weekly downloads order

Filled points are observed values; hollow points come from Internet Archive snapshots of the listing page. Dashed segments span periods with no observations — values between points are not interpolated.

Each band is one page of 20. Weekly downloads on a linear scale. Placement is projected from weekly downloads, so it can differ from the marketplace's own sort order. Hover a dot to see the listing.

Recent observations

Full history (1)
Recent weekly downloads observations for @enrichlayer/el-linear
Date (UTC)Weekly downloadsChange vs. previous
3,115—

Similar npm Claude Code plugins

All 20 @enrichlayer/el-linear alternatives

Data source

Weekly downloads (trailing 7 complete days) come from the official npm downloads API. Downloads include CI and mirrors and are not equivalent to installs or users. npm publishes no ratings.

Listing: https://www.npmjs.com/package/@enrichlayer/el-linear. First seen Oct 22, 2026; last successful collection Oct 22, 2026. See the methodology.