agentleFS
bendyworksbendyworks/claude-skills/skills/linear/SKILL.md

linear

Skill1 starsChanged 37 days agoMITView on GitHub

Read or write Linear issues using the bundled `linear` CLI instead of raw curl + GraphQL. Use whenever the user asks to fetch a Linear issue, look up comments, search Linear, create a Linear issue, update a Linear state, post a comment on a Linear issue, or similar phrasings ("get ABC-NNN", "what's on ABC-592", "comment on the Linear story", "move it to PR Review", "open a Linear issue for ..."). Not for an ID whose prefix the project's CLAUDE.md (or an always-loaded rules file) declares as its GitHub issue key ("PRJ-NNN is issue #NNN") -- that is a GitHub issue; use `gh`. The CLI reads LINEAR_API_TOKEN from the environment and pretty-prints by default.

83 other projects use a version of this.

Adopted by

Most recently taken up by

Used with

Projects with it also use agent-deep-links, helium-mcp and 10 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.
  • ComposioHQSkill

    agent-deep-links

    Build, validate, and troubleshoot deep links for Codex, Cursor, VS Code, Visual Studio, and similar tools. Use when users ask for clickable links (especially in Slack) that open threads, files, folders, or app settings.

    Also in 3 projects that use this

  • ComposioHQSkill

    helium-mcp

    Search real-time news with bias scoring, get live stock/ETF/crypto data with AI analysis, ML options pricing, balanced news synthesis, and meme search via the Helium MCP server.

    Also in 3 projects that use this

  • petestewartSkill

    datadog-logs

    Query Datadog logs via the Logs Search API v2. Use when the user asks to "check the logs", "search logs", "find errors in Datadog", "look up logs for", "show me production logs", "check for errors", "search Datadog", or any request involving log search, error investigation, or production debugging that requires Datadog log data.

    Also in 3 projects that use this

  • OpenAISkill

    pull

    Also in 5 projects that use this

  • SentrySkill

    datadog

    Query live Datadog telemetry (logs, metrics, traces, spans, monitors, incidents, dashboards, services, hosts) through Datadog's Pup CLI. Use when users ask to investigate production behavior in Datadog, including searching logs, checking monitor status, inspecting traces or spans, looking up incidents, finding services, or correlating metrics. Do not use it for Sentry issues, repository/source-code work, or ticketing.

    Also in 4 projects that use this

  • +7 more from ComposioHQ

The file

We split this skill into the rules it gives an agent

4 rules. 0 are common, 1 is distinctive, and 3 are very specific to this project.

  • 0

    Common

    Most of the 79 edited versions we read keep these.

  • 1

    Distinctive

    This author's own choices. Worth a look.

  • 3

    Very specific

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

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

    Put -- before a dash-leading search term or comment message so the rest of the line is taken literally: linear search -- -oauth, linear …

    line 89
  2. Very specific:

    Don't fall back to raw curl against api.linear.app/graphql.

    line 115
  3. Distinctive:

    Don't reach for the Linear MCP -- prefer this CLI over the Linear MCP or raw GraphQL curl.

    line 116
  4. Very specific:

    Don't pass long descriptions inline on the command line.

    line 117

“Common” is measured: kept by at least 6 in 10 of the 79 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

linear CLI

A semantic wrapper around Linear's GraphQL API. Prefer this over curl https://api.linear.app/graphql ... -- it collapses the permission prompt to a single readable line and pretty-prints the response.

Stdlib-only Ruby, bundled with this plugin and available on PATH as linear when the plugin is installed (plugins add their bin/ to PATH). Requirements: Ruby 3.x and a LINEAR_API_TOKEN env var. The token must be a personal API key (the CLI sends it raw in the Authorization header), not an OAuth token. Optionally set LINEAR_TEAM_KEY to your team's key (e.g. ABC) so list and project-list don't need an explicit --team flag.

Read

linear get ABC-NNN [--full] [--json]
linear comments ABC-NNN [--json]
linear search "phrase" [--team KEY] [--limit N] [--json]
linear list --team KEY (--project NAME | --since YYYY-MM-DD | --mine) [--all] [--limit N] [--json]
linear project-list --team KEY [--json]
  • get shows title, state, description, team, project, parent, children, URL.
  • --full adds the comment thread.
  • --json emits the raw GraphQL response for piping.
  • search is case-insensitive substring match over title and description, sorted by most-recently-updated.
  • list shows a team's issues filtered to a project, a created-since date, and/or --mine (assigned to you, or filed by you with no assignee). Excludes completed, canceled and duplicate issues unless --all (pass --all when mining history). --team may be omitted when LINEAR_TEAM_KEY is set.
  • project-list shows a team's projects with their ids and state (the ids feed project-update --id). Also honors LINEAR_TEAM_KEY in place of --team.

Write

linear create --team KEY --title TITLE --priority LEVEL \
              (--project NAME | --no-project) \
              [--description TEXT | --description-file PATH] \
              [--state NAME] [--parent ABC-NNN] [--assignee EMAIL|me] [--json]

linear update ABC-NNN [--state NAME] [--title TITLE] [--priority LEVEL] \
              [--description TEXT | --description-file PATH] \
              [--project NAME] [--parent ABC-NNN] [--assignee EMAIL|me] [--json]

linear comment ABC-NNN ("message body" | --body TEXT | --body-file PATH)
linear comment-delete COMMENT_ID
linear relate ABC-AAA ABC-BBB [--type related|blocks|duplicate]
linear project-create --team KEY --name NAME [--description TEXT] \
              [--content TEXT | --content-file PATH]
linear project-update --id PROJECT_ID [--name NAME] [--description TEXT] \
              [--content TEXT | --content-file PATH]
  • create requires --team, --title, and --priority. --project is required by default (new issues should always be attached to a project); pass --no-project to override deliberately. Project name match is exact-then-substring.
    • Ask the user which project before creating; do not guess. The same work can be contracted maintenance or billable requested-additional-work depending on context only the user knows, and the choice has billing consequences. Offer the candidate projects and let the user pick rather than defaulting from a "bug -> maintenance" heuristic.
    • --state sets the initial workflow state (default Todo, never Triage/Backlog); pass --state "In Progress" when the issue is already being worked. --parent ABC-NNN makes the new issue a sub-issue. --assignee takes an email, a name substring, or the literal me; required when creating in a started state like In Progress.
  • update accepts any combination of --state, --title, --priority, --description, --project (moves the issue), --parent (reparents it as a sub-issue), and --assignee. State name must match a workflow state on the issue's team. Moving to a started state (e.g. In Progress) requires an assignee: pass --assignee, or the issue must already have one.
  • comment appends a comment. Pass the body as the second positional arg (quote it), or use --body TEXT / --body-file PATH for long or markdown bodies.
  • comment-delete deletes a comment by id (ids are shown by linear comments ABC-NNN).
  • relate links two issues (default type related).
  • project-create / project-update manage projects: --description is the one-line summary, --content the full markdown body. Move issues into a project afterward with linear update ABC-NNN --project NAME.

Priority (required on every create)

The CLI refuses create without an explicit --priority. Before creating an issue, propose a priority with a one-line rationale and let the user confirm or override -- same flow as the project question above, and they can be asked together. Guidelines:

  • urgent -- production is actively wrong in a way that moves or misstates money, corrupts data, or blocks users; drop current work. (Wrong money amounts, prod outage, wrong charges visible to customers.)
  • high -- users can hit it today, or it gates other scheduled work or a stakeholder commitment; pick up this cycle. (Live incorrect data/display with no workaround, a repair whose delay compounds, prereq of an in-flight epic.)
  • medium -- the default for scheduled improvement work: structural refactors and epic phases, bugs with a workaround, perf users feel but tolerate.
  • low -- cleanups that don't compound: renames, dead code, tooling, dev-experience items.
  • none -- deliberate parking only (spike awaiting an external/policy decision, placeholder pending triage). Must be passed explicitly; never an accidental default.

Dash-leading values

A value that begins with - is read as a flag and rejected, so a mechanically composed comment or search term that happens to start with a dash needs care:

  • Put -- before a dash-leading search term or comment message so the rest of the line is taken literally: linear search -- -oauth, linear comment ABC-NNN -- -1 broke the build.
  • -- guards positionals only; it cannot rescue a dash-leading option value. Three free-text options have a --*-file variant that accepts one: the issue --description (--description-file), a project's --content (--content-file), and a comment body (--body-file). Writing the text to a file and passing the file option is the safest default when composing bodies programmatically, and it already suits long or markdown text.
  • The other free-text options -- --title, --name, --state, --project, and a project's --description -- have no --*-file variant, so a value that begins with a dash cannot be passed to them at all (a rare limitation of the leading-dash guard). Every remaining option takes a key, id, enum word, email, or date that never begins with a dash, so none of those need escaping.

When to use

  • The user mentions a Linear identifier (ABC-NNN, etc.) and wants info on it: linear get. Not when the project declares that prefix as its GitHub issue key ("PRJ-NNN is issue #NNN"): that ID is a GitHub issue, so use gh issue view NNN.
  • The user wants to scan recent activity on an issue: linear get --full or linear comments.
  • The user wants to find tickets by phrase: linear search.
  • The user asks to open a new ticket, move an issue's state, or post a comment.

Don't

  • Don't fall back to raw curl against api.linear.app/graphql. If the CLI is missing a subcommand you need, propose adding it via a PR to the plugin repo (github.com/bendyworks/rules-that-bend) rather than working around it.
  • Don't reach for the Linear MCP -- prefer this CLI over the Linear MCP or raw GraphQL curl.
  • Don't pass long descriptions inline on the command line. Write them to a file and use --description-file.

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.