skills/linear-graphql-skill/SKILL.md
Operate Linear workspace issues, projects, and teams through Linear GraphQL API using UXC. Use when tasks require querying or creating issues, managing projects, or interacting with Linear workflow. Supports both Personal API Key and OAuth authentication.
npx skillsauth add holon-run/uxc linear-graphql-skillInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Use this skill to run Linear GraphQL API operations through uxc.
Reuse the uxc skill guidance for discovery, schema inspection, auth lifecycle, and error recovery.
uxc is installed and available in PATH.https://api.linear.app/graphql.Linear supports two authentication methods:
Get your API key from Linear: https://linear.app/settings/api
Set credential with custom Authorization header:
uxc auth credential set linear-graphql \
--auth-type api_key \
--header "Authorization:{{secret}}" \
--secret "lin_api_XXX"
Or use environment variable:
export LINEAR_API_KEY="lin_api_XXX"
uxc auth credential set linear-graphql \
--auth-type api_key \
--header "Authorization:{{secret}}" \
--secret-env LINEAR_API_KEY
Bind endpoint:
uxc auth binding add \
--id linear-graphql \
--host api.linear.app \
--path-prefix /graphql \
--scheme https \
--credential linear-graphql \
--priority 100
Important (Personal API Key only): Linear API keys require Authorization: lin_api_XXX format (no Bearer prefix). The --header "Authorization:{{secret}}" configuration above is required for API key auth. For OAuth access tokens, use standard Authorization: Bearer <token> semantics (handled by the OAuth credential flow in uxc).
Credential/binding IDs in this skill use linear-graphql by convention; IDs are local aliases and can be changed if needed.
Create an OAuth app in Linear: https://linear.app/settings/api
Start OAuth login:
uxc auth oauth start linear-graphql \
--endpoint https://api.linear.app/graphql \
--redirect-uri http://127.0.0.1:8788/callback \
--scope read \
--scope write
After approval, complete it with:
uxc auth oauth complete linear-graphql \
--session-id <session_id> \
--authorization-response 'http://127.0.0.1:8788/callback?code=...&state=...'
Bind endpoint:
uxc auth binding add \
--id linear-graphql \
--host api.linear.app \
--path-prefix /graphql \
--scheme https \
--credential linear-graphql \
--priority 100
Use fixed link command by default:
command -v linear-graphql-cliuxc link for this skill before using it.uxc link linear-graphql-cli https://api.linear.app/graphqllinear-graphql-cli -hDiscover operations:
linear-graphql-cli -hInspect specific operation:
linear-graphql-cli query/issues -hlinear-graphql-cli mutation/issueCreate -hExecute queries:
# Query issues (simple)
linear-graphql-cli query/issues '{"first":10}'
# Query issues with explicit selection set for useful fields
linear-graphql-cli query/issues '{"first":10,"_select":"nodes { identifier title url state { name } assignee { name } }"}'
# Query teams
linear-graphql-cli query/teams '{"first":10}'
# Create issue (requires write scope)
linear-graphql-cli mutation/issueCreate '{
"input": {
"teamId": "TEAM_ID",
"title": "New Issue Title",
"description": "Issue description"
}
}'
query/issues - List and filter issuesquery/issue - Get single issuequery/teams - List teamsquery/team - Get single teamquery/projects - List projectsquery/workflowStates - List workflow statesmutation/issueCreate - Create new issuemutation/issueUpdate - Update issuemutation/issueArchive - Archive issuemutation/commentCreate - Add commentlinear-graphql-cli query/issues '{"first":20,"_select":"nodes { identifier title url state { name } assignee { name } }"}'
linear-graphql-cli query/issue id=ISSUE_ID
linear-graphql-cli query/teams
linear-graphql-cli mutation/issueCreate '{"input":{"teamId":"YOUR_TEAM_ID","title":"Fix bug"}}'
Error: "Bearer token" prefix rejected
Authorization: Bearer lin_api_XXX--auth-type api_key --header "Authorization:{{secret}}"--auth-type bearerError: "Credential not found"
uxc auth credential listuxc auth binding listOAuth login spans multiple agent turns
uxc auth oauth start ... and uxc auth oauth complete ...uxc auth oauth login ... --flow authorization_code only when one process can wait for the pasted callback URLError: "No binding matched"
uxc auth binding match api.linear.app/graphqluxc auth binding add (see Authentication section)For detailed authentication troubleshooting, see uxc skill's references/auth-configuration.md.
Daemon issues after credential changes
uxc daemon restartuxc daemon statusEnvironment variable not found
--secret for literal values (less secure)--secret-op for 1Password (most secure)--text.ok, kind, data, error.linear-graphql-cli query/issues '{"first":10}' and linear-graphql-cli mutation/issueCreate '{"input":{"teamId":"TEAM_ID","title":"Test"}}')._select (string) when you need explicit return fields, e.g. {"_select":"nodes { identifier title }"}.linear-graphql-cli as the default command path.linear-graphql-cli <operation> ... is equivalent to uxc https://api.linear.app/graphql <operation> ....uxc auth credential info linear-graphql.references/usage-patterns.mddevelopment
Operate Feishu or Lark IM APIs through UXC with a curated OpenAPI schema, tenant-token bearer auth, and chat/message guardrails.
development
Operate X API v2 through UXC with the official OpenAPI schema, OAuth2 PKCE user-context auth, app-only bearer guidance, and read-first guardrails for timeline/bookmark/post workflows.
development
Operate GitHub REST API through UXC with the official OpenAPI schema, explicit gh-to-uxc auth import, and read-first guardrails for repo, issue, pull request, and event workflows.
development
Operate WhatsApp Business Platform Cloud API through UXC with a curated OpenAPI schema, bearer-token auth, and message/profile guardrails.