Install
openclaw skills install linear-native-nodeDirect Linear workspace helper using Linear's GraphQL API from native Node.js. Use when creating, listing, updating, commenting on, summarizing, or looking up Linear issues, projects, teams, workflow states, priorities, standup notes, or branch names. Can write to Linear via create/comment/status/priority/project-create commands. Reads LINEAR_API_KEY from the process environment only; no OAuth gateway, bash, Python, npm dependencies, or third-party service.
openclaw skills install linear-native-nodeUse scripts/linear.mjs to talk directly to Linear's GraphQL API at https://api.linear.app/graphql.
Native Node 18+. Zero npm dependencies. Windows, macOS, and Linux friendly. No bash, Python, OAuth gateway, browser login, or third-party proxy.
LINEAR_API_KEY and optional LINEAR_DEFAULT_TEAM from the process environment only.~/.openclaw/.env.https://api.linear.app/graphql.create, comment, status, priority, project-create) and are fail-closed by default: the script exits unless --execute is present after explicit user approval. Read-only commands are the default usage pattern.This is the private/direct version of common Linear helper workflows:
LINEAR_API_KEY from the process environment only; never print the key.Create a Linear API key at:
https://linear.app/settings/api
PowerShell session-only setup:
$env:LINEAR_API_KEY = "<your-linear-key>"
$env:LINEAR_DEFAULT_TEAM = "TEAM"
macOS/Linux shell session-only setup:
export LINEAR_API_KEY="<your-linear-key>"
export LINEAR_DEFAULT_TEAM="TEAM"
LINEAR_DEFAULT_TEAM is optional. Examples below use TEAM and TEAM-123 as placeholders; replace them with your Linear team key and issue identifiers.
From PowerShell, bash, zsh, or any shell with Node on PATH:
node "<skill-dir>/scripts/linear.mjs" help
node "<skill-dir>/scripts/linear.mjs" viewer
node "<skill-dir>/scripts/linear.mjs" issues --team TEAM --mine --limit 10
From OpenClaw, use the bundled script directly:
Run: node <skill-dir>/scripts/linear.mjs my-issues --team TEAM
Run only after explicit approval: node <skill-dir>/scripts/linear.mjs create TEAM "Fix login error" "Users see an error after submitting credentials." --priority high --execute
Add --json to commands when structured output is useful.
Read-only:
help
viewer
organization
teams
projects [--team TEAM] [--limit N]
states <TEAM_KEY>
issues [--team TEAM] [--mine] [--state STATE] [--limit N]
my-issues [--team TEAM] [--state STATE] [--limit N]
my-todos [--team TEAM] [--limit N]
urgent [--team TEAM] [--mine] [--limit N]
standup [--team TEAM] [--limit N]
issue <IDENTIFIER>
branch <IDENTIFIER>
Writes to Linear require explicit approval and --execute:
project-create [TEAM_KEY] "Name" ["Description"] --execute
create [TEAM_KEY] "Title" ["Description"] [--priority urgent|high|medium|low|none] --execute
comment <IDENTIFIER> "Comment" --execute
status <IDENTIFIER> <state-name> --execute
priority <IDENTIFIER> <urgent|high|medium|low|none> --execute
For agent use, perform write commands only when the user clearly requested the Linear change or explicitly approved it. Without --execute, write commands fail before contacting Linear.
List teams, projects, and states:
node "<skill-dir>/scripts/linear.mjs" teams
node "<skill-dir>/scripts/linear.mjs" projects --team TEAM --limit 20
node "<skill-dir>/scripts/linear.mjs" states TEAM
Create a project:
node "<skill-dir>/scripts/linear.mjs" project-create TEAM "Release Planning" "Track launch scope and milestones." --execute
List issues:
node "<skill-dir>/scripts/linear.mjs" issues --team TEAM --limit 20
node "<skill-dir>/scripts/linear.mjs" issues --team TEAM --mine --state "In Progress"
node "<skill-dir>/scripts/linear.mjs" my-issues --team TEAM
node "<skill-dir>/scripts/linear.mjs" my-todos --team TEAM
node "<skill-dir>/scripts/linear.mjs" urgent --team TEAM
Read and update an issue:
node "<skill-dir>/scripts/linear.mjs" issue TEAM-123
node "<skill-dir>/scripts/linear.mjs" comment TEAM-123 "Added reproduction notes." --execute
node "<skill-dir>/scripts/linear.mjs" status TEAM-123 "In Progress" --execute
node "<skill-dir>/scripts/linear.mjs" priority TEAM-123 urgent --execute
Create an issue:
node "<skill-dir>/scripts/linear.mjs" create TEAM "Fix notification delivery" "Notifications are delayed for some users." --priority high --execute
Generate a GitHub-friendly branch name from the Linear issue title:
node "<skill-dir>/scripts/linear.mjs" branch TEAM-123
Get machine-readable output:
node "<skill-dir>/scripts/linear.mjs" my-issues --team TEAM --json
TEAM-123; the script resolves them before updates that need Linear IDs.urgent, high, medium, low, none.standup summarizes assigned active and recently completed issues; it is intentionally lightweight, not a time tracker.1.0.6: Package-only cleanup: publish runtime files only (SKILL.md and scripts/linear.mjs) and keep the local test harness out of the public archive.1.0.5: Fix GraphQL variable construction in issue list queries (issues, my-issues, my-todos, urgent, standup) so only actually used variables are declared and passed.