ワンクリックで
lorenz-linear
Use Lorenz's `linear_graphql` client tool for raw Linear GraphQL operations such as comment editing and upload flows.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Use Lorenz's `linear_graphql` client tool for raw Linear GraphQL operations such as comment editing and upload flows.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Use Lorenz's Jira tracker tools for raw Jira REST API operations such as issue queries, transitions, comments, and JQL searches.
Land a PR by monitoring conflicts, resolving them, waiting for checks, and squash-merging when green; use when asked to land, merge, or shepherd a PR to completion.
Create a well-formed git commit from current changes using session history for rationale and summary; use when asked to commit, prepare a commit message, or finalize staged work.
Investigate stuck runs and execution failures by tracing Lorenz and Codex logs with issue/session identifiers; use when runs stall, retry repeatedly, or fail unexpectedly.
Pull latest origin/main into the current local branch and resolve merge conflicts (aka update-branch). Use when Codex needs to sync a feature branch with origin, perform a merge-based update (not rebase), and guide conflict resolution best practices.
Push current branch changes to origin and create or update the corresponding pull request; use when asked to push, publish updates, or create pull request.
| name | lorenz-linear |
| description | Use Lorenz's `linear_graphql` client tool for raw Linear GraphQL operations such as comment editing and upload flows. |
Use this skill for raw Linear GraphQL work during Lorenz app-server sessions.
Use the linear_graphql client tool exposed by Lorenz's app-server session.
It reuses Lorenz's configured Linear auth for the session.
Tool input:
{
"query": "query or mutation document",
"variables": {
"optional": "graphql variables object"
}
}
Tool behavior:
errors array as a failed GraphQL operation even if the
tool call itself completed.When you need an unfamiliar mutation, input type, or object field, use targeted
introspection through linear_graphql.
List mutation names:
query ListMutations {
__type(name: "Mutation") {
fields {
name
}
}
}
Inspect a specific input object:
query CommentCreateInputShape {
__type(name: "CommentCreateInput") {
inputFields {
name
type {
kind
name
ofType {
kind
name
}
}
}
}
}
Use these progressively:
issue(id: $key) when you have a ticket key such as MT-686.searchIssues(term: ...) when you need search semantics.issue(id: $id) for narrower reads.Issue.links; Linear exposes URL and PR links through
attachments.issues(filter: { identifier: ... }); IssueFilter does not
support an identifier field.Lookup by issue key:
query IssueByKey($key: String!) {
issue(id: $key) {
id
identifier
title
state {
id
name
type
}
project {
id
name
}
branchName
url
description
updatedAt
attachments {
nodes {
id
title
url
sourceType
}
}
}
}
Search fallback:
query SearchIssue($term: String!) {
searchIssues(term: $term, first: 1) {
nodes {
id
identifier
title
state {
id
name
type
}
project {
id
name
}
branchName
url
description
updatedAt
}
}
}
Resolve a key to an internal id:
query IssueByIdOrKey($id: String!) {
issue(id: $id) {
id
identifier
title
}
}
Read the issue once the internal id is known:
query IssueDetails($id: String!) {
issue(id: $id) {
id
identifier
title
url
description
state {
id
name
type
}
project {
id
name
}
attachments {
nodes {
id
title
url
sourceType
}
}
}
}
Use this before changing issue state when you need the exact stateId:
query IssueTeamStates($id: String!) {
issue(id: $id) {
id
team {
id
key
name
states {
nodes {
id
name
type
}
}
}
}
}
Comment records expose resolvedAt and archivedAt. Do not query
resolved or archived.
Use commentUpdate through linear_graphql:
mutation UpdateComment($id: String!, $body: String!) {
commentUpdate(id: $id, input: { body: $body }) {
success
comment {
id
body
}
}
}
Use commentCreate through linear_graphql:
mutation CreateComment($issueId: String!, $body: String!) {
commentCreate(input: { issueId: $issueId, body: $body }) {
success
comment {
id
url
}
}
}
Resolve the project's team and a workflow state first, then call issueCreate. Look up the
project by slug to get its id, its team id, and the team's workflow states:
query ProjectForCreate($slug: String!) {
projects(filter: { slugId: { eq: $slug } }, first: 1) {
nodes {
id
teams(first: 1) {
nodes {
id
states(first: 100) {
nodes {
id
name
type
}
}
}
}
}
}
}
Pick the destination stateId by status name when one is requested, otherwise the first
unstarted state, otherwise the first state. Then create the issue:
mutation CreateIssue($input: IssueCreateInput!) {
issueCreate(input: $input) {
success
issue {
id
identifier
url
}
}
}
Pass { teamId, projectId, stateId, title, description, assigneeId } in input; include
assigneeId only when assigning the issue to a specific user.
Use issueUpdate with the destination stateId:
mutation MoveIssueToState($id: String!, $stateId: String!) {
issueUpdate(id: $id, input: { stateId: $stateId }) {
success
issue {
id
identifier
state {
id
name
}
}
}
}
Use the GitHub-specific attachment mutation when linking a PR:
mutation AttachGitHubPR($issueId: String!, $url: String!, $title: String) {
attachmentLinkGitHubPR(issueId: $issueId, url: $url, title: $title, linkKind: links) {
success
attachment {
id
title
url
}
}
}
If Linear returns Duplicate attachment for duplicate url, treat the PR as
already linked and continue. Do not retry with a different attachment mutation
for the same URL.
If you only need a plain URL attachment and do not care about GitHub-specific link metadata, use:
mutation AttachURL($issueId: String!, $url: String!, $title: String) {
attachmentLinkURL(issueId: $issueId, url: $url, title: $title) {
success
attachment {
id
title
url
}
}
}
Use these when the exact field or mutation shape is unclear:
Do not run full __schema introspection. Linear rejects overly broad schema
queries as too complex. Use targeted __type(name: "...") queries instead.
query QueryFields {
__type(name: "Query") {
fields {
name
}
}
}
query IssueFieldArgs {
__type(name: "Query") {
fields {
name
args {
name
type {
kind
name
ofType {
kind
name
ofType {
kind
name
}
}
}
}
}
}
}
Do this in three steps:
linear_graphql with fileUpload to get uploadUrl, assetUrl, and
any required upload headers.uploadUrl with curl -X PUT and the exact
headers returned by fileUpload.linear_graphql again with commentCreate (or commentUpdate) and
include the resulting assetUrl in the comment body.Useful mutations:
mutation FileUpload($filename: String!, $contentType: String!, $size: Int!, $makePublic: Boolean) {
fileUpload(filename: $filename, contentType: $contentType, size: $size, makePublic: $makePublic) {
success
uploadFile {
uploadUrl
assetUrl
headers {
key
value
}
}
}
}
linear_graphql for comment edits, uploads, and ad-hoc Linear API
queries..md, .txt, or other text documents as attachments unless
the user explicitly asks or the content is too large to reasonably inline;
prefer fenced code blocks in comments instead.stateId
instead of hardcoding names inside mutations.attachmentLinkGitHubPR over a generic URL attachment when linking a
GitHub PR to a Linear issue.fileUpload; those URLs already carry the needed authorization.