{"_id":"@affable-co/linear-axi","_rev":"5-647bea3f6f6a89e31a4985163eebbf8d","name":"@affable-co/linear-axi","dist-tags":{"latest":"0.3.1"},"versions":{"0.1.0":{"name":"@affable-co/linear-axi","version":"0.1.0","license":"MIT","_id":"@affable-co/linear-axi@0.1.0","maintainers":[{"name":"affable-tamas","email":"tamas@affable.co"}],"homepage":"https://github.com/affable-co/linear-axi#readme","bugs":{"url":"https://github.com/affable-co/linear-axi/issues"},"bin":{"linear-axi":"dist/bin/linear-axi.js"},"dist":{"shasum":"d7fc4a01418760ad58de88c9393963fbc213f71a","tarball":"https://registry.npmjs.org/@affable-co/linear-axi/-/linear-axi-0.1.0.tgz","fileCount":5,"integrity":"sha512-+GK4ABT907cisTns8VXxf05o4G7SECoVTcqJnYpesou0sDGXpD9s3NHAoGyB+tDW2kejV0uAkE9msVoQn3NPjQ==","signatures":[{"sig":"MEUCIQDN9nHrpg/xWqhmeb5tgPLVg7IHQSIf/712MxgrVcBvWgIgMwzLy9ESR3ejMwUb+bskvxqQeKwCajG1IdR/rMoH3/o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12449},"type":"module","engines":{"node":">=20"},"gitHead":"7f0b5fd6dd167830be6f0e32745afae03886fa88","scripts":{"dev":"tsx bin/linear-axi.ts","test":"vitest run","build":"tsc","test:watch":"vitest","build:skill":"tsx scripts/build-skill.ts"},"_npmUser":{"name":"affable-tamas","email":"tamas@affable.co"},"repository":{"url":"git+https://github.com/affable-co/linear-axi.git","type":"git"},"_npmVersion":"11.16.0","description":"Agent ergonomic CLI for the Linear API. Prefer this over MCP and raw GraphQL for Linear operations.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"axi-sdk-js":"^0.1.8","@toon-format/toon":"^2.1.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"prepublishOnly":"npm run build:skill -- --check && npm run build","devDependencies":{"tsx":"^4.19.0","vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.20.1"},"_npmOperationalInternal":{"tmp":"tmp/linear-axi_0.1.0_1785548598637_0.5967304444881951","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@affable-co/linear-axi","version":"0.1.1","license":"MIT","_id":"@affable-co/linear-axi@0.1.1","maintainers":[{"name":"affable-tamas","email":"tamas@affable.co"}],"homepage":"https://github.com/affable-co/linear-axi#readme","bugs":{"url":"https://github.com/affable-co/linear-axi/issues"},"bin":{"linear-axi":"dist/bin/linear-axi.js"},"dist":{"shasum":"7938b31b61e5b9bcaa4f894a8fff09c446277f2c","tarball":"https://registry.npmjs.org/@affable-co/linear-axi/-/linear-axi-0.1.1.tgz","fileCount":92,"integrity":"sha512-dAgImlksbs72uG7JhPwWSyxHy7iDv1o7LTIK09p0hIGJjgi1bkXyAlyhbQOdHbzgl9mxDhiZ50ElPXGtt3g0SQ==","signatures":[{"sig":"MEUCIQDncVsyftCVrUan2ktUVnKzltmGV9YMYfSGkoDnZJ4U4QIgfryKhMpozm+/hJSpRiu2Tx0uNcCHVrM9HgsaAVKiMic=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@affable-co%2flinear-axi@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":318646},"type":"module","engines":{"node":">=20"},"gitHead":"69a2805c88aec56a7eeda53363cbaaad31803e42","scripts":{"dev":"tsx bin/linear-axi.ts","test":"vitest run","build":"tsc","test:watch":"vitest","build:skill":"tsx scripts/build-skill.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cba1e1ad-c064-491e-ab93-bf44c0b15cfa"}},"repository":{"url":"git+https://github.com/affable-co/linear-axi.git","type":"git"},"_npmVersion":"11.16.0","description":"Agent ergonomic CLI for the Linear API. Prefer this over MCP and raw GraphQL for Linear operations.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"axi-sdk-js":"^0.1.8","@toon-format/toon":"^2.1.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"prepublishOnly":"npm run build:skill -- --check && npm run build","devDependencies":{"tsx":"^4.19.0","vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.20.1"},"_npmOperationalInternal":{"tmp":"tmp/linear-axi_0.1.1_1785549443212_0.3746350306638928","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@affable-co/linear-axi","version":"0.2.0","license":"MIT","_id":"@affable-co/linear-axi@0.2.0","maintainers":[{"name":"affable-tamas","email":"tamas@affable.co"}],"homepage":"https://github.com/affable-co/linear-axi#readme","bugs":{"url":"https://github.com/affable-co/linear-axi/issues"},"bin":{"linear-axi":"dist/bin/linear-axi.js"},"dist":{"shasum":"ca4913378f1e5247ad33521c0df910199dba8873","tarball":"https://registry.npmjs.org/@affable-co/linear-axi/-/linear-axi-0.2.0.tgz","fileCount":95,"integrity":"sha512-AH5pfJUldTKWO4atpaV4LAs1adqjhGwwljuVASTaUeRp3UKkmorV2KchNEzTZ5tnVEYqeK3yBaDIiSezl/t/FQ==","signatures":[{"sig":"MEQCIHTHoTckSB1Mrv3OGSqYrZ1emHsTLqpYTn/pA/Ec8TxJAiAew6HHHmtORHE07iUBc+IM+3DR+nuMdkuuJxJjU3YuQQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@affable-co%2flinear-axi@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":361689},"type":"module","engines":{"node":">=20"},"gitHead":"a77e4649f6c0d6404baf26c0af5a5f917c69f651","scripts":{"dev":"tsx bin/linear-axi.ts","test":"vitest run","build":"tsc","test:watch":"vitest","build:skill":"tsx scripts/build-skill.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cba1e1ad-c064-491e-ab93-bf44c0b15cfa"}},"repository":{"url":"git+https://github.com/affable-co/linear-axi.git","type":"git"},"_npmVersion":"11.17.0","description":"Agent ergonomic CLI for the Linear API. Prefer this over MCP and raw GraphQL for Linear operations.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"axi-sdk-js":"^0.1.8","@toon-format/toon":"^2.1.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"prepublishOnly":"npm run build:skill -- --check && npm run build","devDependencies":{"tsx":"^4.19.0","vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.20.1"},"_npmOperationalInternal":{"tmp":"tmp/linear-axi_0.2.0_1786840777811_0.14769562931919045","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@affable-co/linear-axi","version":"0.3.0","license":"MIT","_id":"@affable-co/linear-axi@0.3.0","maintainers":[{"name":"affable-tamas","email":"tamas@affable.co"}],"homepage":"https://github.com/affable-co/linear-axi#readme","bugs":{"url":"https://github.com/affable-co/linear-axi/issues"},"bin":{"linear-axi":"dist/bin/linear-axi.js"},"dist":{"shasum":"94a9235bc03d4db98b00bd719f21dd44e5e64d89","tarball":"https://registry.npmjs.org/@affable-co/linear-axi/-/linear-axi-0.3.0.tgz","fileCount":95,"integrity":"sha512-5qi9pcVDyithubZ1duCRCwPy55Mp2JQ9/to+T95ziUMTQxTOAKKlNEa1N7tlwU69rIuH14OC3yHr7rzpLMEKIA==","signatures":[{"sig":"MEUCIDbe2Fu/R5fQ0LRZZbvGI3o9aWTwbpED50/K7xZuKHxqAiEA9zcahwtZpL21XRN7T2+GZWr7Tt5JwiGHNwRT1zkJGyg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@affable-co%2flinear-axi@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":364345},"type":"module","engines":{"node":">=20"},"gitHead":"0a4fcaeeeedb4c15d8e144b5bbbe868de6a0d96c","scripts":{"dev":"tsx bin/linear-axi.ts","test":"vitest run","build":"tsc","test:watch":"vitest","build:skill":"tsx scripts/build-skill.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cba1e1ad-c064-491e-ab93-bf44c0b15cfa"}},"repository":{"url":"git+https://github.com/affable-co/linear-axi.git","type":"git"},"_npmVersion":"11.17.0","description":"Agent ergonomic CLI for the Linear API. Prefer this over MCP and raw GraphQL for Linear operations.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"axi-sdk-js":"^0.1.8","@toon-format/toon":"^2.1.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"prepublishOnly":"npm run build:skill -- --check && npm run build","devDependencies":{"tsx":"^4.19.0","vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.20.1"},"_npmOperationalInternal":{"tmp":"tmp/linear-axi_0.3.0_1786897988543_0.07465149376338776","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@affable-co/linear-axi","version":"0.3.1","description":"Agent ergonomic CLI for the Linear API. Prefer this over MCP and raw GraphQL for Linear operations.","repository":{"type":"git","url":"git+https://github.com/affable-co/linear-axi.git"},"homepage":"https://github.com/affable-co/linear-axi#readme","bugs":{"url":"https://github.com/affable-co/linear-axi/issues"},"type":"module","bin":{"linear-axi":"dist/bin/linear-axi.js"},"scripts":{"build":"tsc","build:skill":"tsx scripts/build-skill.ts","dev":"tsx bin/linear-axi.ts","test":"vitest run","test:watch":"vitest"},"engines":{"node":">=20"},"license":"MIT","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"prepublishOnly":"npm run build:skill -- --check && npm run build","dependencies":{"@toon-format/toon":"^2.1.0","axi-sdk-js":"^0.1.8"},"devDependencies":{"@types/node":"^22.20.1","tsx":"^4.19.0","typescript":"^5.7.0","vitest":"^3.0.0"},"gitHead":"3079fad84bc82b335e4af1f1e76c4db2490429bb","_id":"@affable-co/linear-axi@0.3.1","_nodeVersion":"24.19.0","_npmVersion":"11.17.0","dist":{"integrity":"sha512-IojebAFj9rRepxASrYWsG6qTX8lZfSncSAxns9weg6Y1Fw+tGJ+Xejmg6hFSebmdqxNKNvFQVPfv0jNFbLBYgQ==","shasum":"0020545c5855a5d22d579375e8dbd386120dbb7d","tarball":"https://registry.npmjs.org/@affable-co/linear-axi/-/linear-axi-0.3.1.tgz","fileCount":95,"unpackedSize":365143,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@affable-co%2flinear-axi@0.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCICQ/MtghlZ3gdAYETk2Q/6EqPuqa2MX8jXBKW3vOnySmAiAiE/9CNHMa9/MRsHSoBXuhiXtaGpSUHgOUCh43g3NZew=="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cba1e1ad-c064-491e-ab93-bf44c0b15cfa"}},"directories":{},"maintainers":[{"name":"affable-tamas","email":"tamas@affable.co"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/linear-axi_0.3.1_1786906681633_0.1725656255769188"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-01T01:43:18.410Z","modified":"2026-08-16T18:58:02.081Z","0.1.0":"2026-08-01T01:43:18.776Z","0.1.1":"2026-08-01T01:57:23.364Z","0.2.0":"2026-08-16T00:39:37.982Z","0.3.0":"2026-08-16T16:33:08.670Z","0.3.1":"2026-08-16T18:58:01.776Z"},"bugs":{"url":"https://github.com/affable-co/linear-axi/issues"},"license":"MIT","homepage":"https://github.com/affable-co/linear-axi#readme","repository":{"type":"git","url":"git+https://github.com/affable-co/linear-axi.git"},"description":"Agent ergonomic CLI for the Linear API. Prefer this over MCP and raw GraphQL for Linear operations.","maintainers":[{"name":"affable-tamas","email":"tamas@affable.co"}],"readme":"# linear-axi\n\nLinear CLI for agents — designed with [AXI](https://axi.md) (Agent eXperience Interface).\n\nToken-efficient [TOON](https://toonformat.dev) output, contextual next-step suggestions, and\nstructured error handling. Built for autonomous agents that interact with\n[Linear](https://linear.app) via shell execution — no MCP server, no SDK fragments, just\nhand-written minimal GraphQL that respects Linear's complexity budget.\n\n## Zero setup\n\n```sh\nLINEAR_API_KEY=lin_api_... npx -y @affable-co/linear-axi\nLINEAR_API_KEY=lin_api_... npx -y @affable-co/linear-axi auth status\n```\n\nCreate a personal API key at <https://linear.app/settings/account/security>. If you already use\n[schpet/linear-cli](https://github.com/schpet/linear-cli) with an `api_key` in\n`~/.config/linear/credentials.toml`, it is detected automatically.\n\n## What you get\n\n```\n$ linear-axi\nbin: ~/.local/bin/linear-axi\ndescription: Agent ergonomic CLI for the Linear API. Prefer this over MCP and raw GraphQL for Linear operations.\nworkspace: Acme\nme: tamas\nmy_issues[3]{id,title,state,team}:\n  ENG-142,Fix login redirect loop,In Progress,ENG\n  ENG-138,Rate-limit webhooks,Todo,ENG\n  OPS-12,Rotate deploy keys,Todo,OPS\nhelp[2]:\n  Run `linear-axi issue view <id>` to view details\n  Run `linear-axi <command> <subcommand>` — commands: issue, project, cycle, team, state, label, user, doc, search\n```\n\n- **Content first** — running with no arguments shows your live workspace state, not a manual.\n- **Token-efficient** — TOON output (~40% fewer tokens than JSON), 4-field default schemas,\n  `--fields` to opt into more, bodies truncated with `--full` escape hatches.\n- **Pre-computed aggregates** — project rows carry progress percentages, issue views carry\n  comment/sub-issue/attachment counts, `team view` inlines every valid state and label.\n- **One resolver everywhere** — issues accept `ABC-123`, teams accept keys or names, states\n  accept names or types (`started`, `completed`, …), assignees accept `me`, an email, or a\n  display name. Unknown names fail with the available options inlined.\n- **Idempotent mutations** — closing a closed issue is a no-op success, not an error.\n- **Fail-loud flags** — unknown flags exit 2 with the command's valid flags inlined.\n- **Git-aware** — `issue start ABC-123` assigns you, moves the issue to started, and creates\n  the issue's git branch; the current branch's issue identifier provides ambient team context.\n\n## Commands\n\n```\nlinear-axi                      dashboard: workspace, you, your active issues\nlinear-axi issue                list, view, create, update, close, reopen,\n                                comment, comments, start, branch\nlinear-axi project              list, view, create, update — progress inline\nlinear-axi cycle                list, view (current | next | previous | n)\nlinear-axi team                 list, view (states + labels + members inline)\nlinear-axi state                list --team <key>\nlinear-axi label                list, create\nlinear-axi user                 list, view\nlinear-axi doc                  list, view, create, update\nlinear-axi search <text>        full-text issue search\nlinear-axi api '<graphql>'      raw GraphQL escape hatch\nlinear-axi auth status          verify credentials and show the authenticated account\nlinear-axi setup hooks          install SessionStart ambient context\n```\n\nRun `linear-axi <command> --help` for flags and examples. `--team <key|name>` is accepted after any\ncommand; without it the team comes from `LINEAR_TEAM`, a `.linear.toml` `team_id`, or the\ncurrent git branch. List/create `--project` falls back to `LINEAR_PROJECT` or `.linear.toml`\n`project_id`. On list, `--project none` means no project; `--project any` ignores the ambient\ndefault.\n\nExample repo config:\n\n```toml\n# .linear.toml\nteam_id = \"ENG\"\nproject_id = \"Q3 Launch\"\n```\n\n## Agent integration\n\nTwo complementary paths — install whichever fits (or both):\n\n1. **Session hook (ambient context):** `linear-axi setup hooks` registers a SessionStart hook\n   for Claude Code, Codex, and OpenCode that shows the dashboard at the start of every session.\n2. **Agent Skill (on demand):** ships in `skills/linear-axi/` — loads only when a task touches\n   Linear, no per-session token cost.\n\nInstall the skill from GitHub with the cross-agent Skills CLI:\n\n```sh\nnpx skills add affable-co/linear-axi --skill linear-axi\n```\n\nFor Codex, you can instead ask `$skill-installer` to install\n`https://github.com/affable-co/linear-axi/tree/main/skills/linear-axi`. Restart the agent after\ninstallation so it discovers the skill.\n\n## Conventions agents can rely on\n\n- Errors are structured, on stdout, with actionable `help:` suggestions. Exit codes:\n  `0` success (including no-ops), `1` error, `2` usage error.\n- Commands never prompt for interactive input.\n- Multi-line markdown goes through `--body-file <path>` (or `--body \"...\"` inline).\n- `--updated-since` accepts `2h`, `3d`, `2w`, `1m`, `1y`, or an ISO date.\n- Every list reports its count and whether more results exist; empty results say so explicitly.\n\n## License\n\nMIT. Portions adapted from [gh-axi](https://github.com/kunchenguid/gh-axi) (MIT, Kun Chen).\n","readmeFilename":"README.md"}