ワンクリックで
linear
Symphony の `linear_graphql` client tool を使って、コメント編集や アップロードフローなどの生の Linear GraphQL 操作を行う。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Symphony の `linear_graphql` client tool を使って、コメント編集や アップロードフローなどの生の Linear GraphQL 操作を行う。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
現在の変更内容とセッション履歴をもとに、根拠のある整った `git commit`を作成する。コミット作成、コミットメッセージ準備、またはステージ済み作業の仕上げを頼まれたときに使う。
issue / session 識別子を手がかりに Symphony と Codex のログを追い、停滞した実行や失敗の原因を調べる。実行が止まる、何度もリトライする、あるいは予期せず失敗するときに使う。
PR の競合監視、解消、チェック待ち、グリーン後の squash merge までを行い、PR を着地させる。land、merge、あるいは PR を最後まで面倒見るよう頼まれたときに使う。
現在のローカルブランチへ最新の `origin/main` を取り込み、マージ競合を 解決する(いわゆる update-branch)。feature branch を origin と同期し、 rebase ではなく merge で更新し、競合解決のベストプラクティスに沿って 進める必要があるときに使う。
現在のブランチの変更を `origin` に push し、対応する pull request を作成 または更新する。push、公開、PR 作成を頼まれたときに使う。
Create new skills, modify and improve existing skills, and measure skill performance. Use when users want to create a skill from scratch, update or optimize an existing skill, run evals to test a skill, benchmark skill performance with variance analysis, or optimize a skill's description for better triggering accuracy.
| name | linear |
| description | Symphony の `linear_graphql` client tool を使って、コメント編集や アップロードフローなどの生の Linear GraphQL 操作を行う。 |
Symphony の app-server session 中に、生の Linear GraphQL 操作が必要なときはこの skill を使う。
Symphony の app-server session から公開される linear_graphql client tool を使う。
このツールは、その session に設定された Linear 認証をそのまま再利用する。
ツール入力:
{
"query": "query or mutation document",
"variables": {
"optional": "graphql variables object"
}
}
ツールの挙動:
errors 配列が返った場合、tool call 自体が完了していてもGraphQL operation は失敗として扱う。知らない mutation、input type、object field が必要になったら、linear_graphql で対象を絞った introspection を行う。
mutation 名の一覧を出す:
query ListMutations {
__type(name: "Mutation") {
fields {
name
}
}
}
特定の input object を調べる:
query CommentCreateInputShape {
__type(name: "CommentCreateInput") {
inputFields {
name
type {
kind
name
ofType {
kind
name
}
}
}
}
}
次の順で段階的に使う。
MT-686 のようなチケットキーがあるなら、まず issue(id: $key) を使う。issues(filter: ...) に切り替える。issue(id: $id) を優先する。issue key で引く:
query IssueByKey($key: String!) {
issue(id: $key) {
id
identifier
title
state {
id
name
type
}
project {
id
name
}
branchName
url
description
updatedAt
links {
nodes {
id
url
title
}
}
}
}
identifier filter で引く:
query IssueByIdentifier($identifier: String!) {
issues(filter: { identifier: { eq: $identifier } }, first: 1) {
nodes {
id
identifier
title
state {
id
name
type
}
project {
id
name
}
branchName
url
description
updatedAt
}
}
}
key から内部 id を解決する:
query IssueByIdOrKey($id: String!) {
issue(id: $id) {
id
identifier
title
}
}
内部 id がわかったあとの詳細取得:
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
}
}
}
}
issue の state を変更する前に、正確な stateId が必要ならこれを使う。
query IssueTeamStates($id: String!) {
issue(id: $id) {
id
team {
id
key
name
states {
nodes {
id
name
type
}
}
}
}
}
linear_graphql 経由で commentUpdate を使う。
mutation UpdateComment($id: String!, $body: String!) {
commentUpdate(id: $id, input: { body: $body }) {
success
comment {
id
body
}
}
}
linear_graphql 経由で commentCreate を使う。
mutation CreateComment($issueId: String!, $body: String!) {
commentCreate(input: { issueId: $issueId, body: $body }) {
success
comment {
id
url
}
}
}
移動先の stateId を指定して issueUpdate を使う。
mutation MoveIssueToState($id: String!, $stateId: String!) {
issueUpdate(id: $id, input: { stateId: $stateId }) {
success
issue {
id
identifier
state {
id
name
}
}
}
}
PR をリンクするときは GitHub 専用の attachment mutation を使う。
mutation AttachGitHubPR($issueId: String!, $url: String!, $title: String) {
attachmentLinkGitHubPR(
issueId: $issueId
url: $url
title: $title
linkKind: links
) {
success
attachment {
id
title
url
}
}
}
GitHub 固有のリンクメタデータが不要で、単なる URL 添付でよいならこちらを使う。
mutation AttachURL($issueId: String!, $url: String!, $title: String) {
attachmentLinkURL(issueId: $issueId, url: $url, title: $title) {
success
attachment {
id
title
url
}
}
}
field や mutation の正確な shape が不明なときは、以下を使う。
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
}
}
}
}
}
}
}
次の 3 手順で行う。
linear_graphql で fileUpload を呼び、uploadUrl、assetUrl、そして必要な upload header を受け取る。fileUpload が返した header をそのまま使い、curl -X PUT でローカルファイルのバイト列を uploadUrl へ送る。linear_graphql で commentCreate(または commentUpdate)を呼び、生成された assetUrl をコメント本文に含める。使う mutation:
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 を使う。stateId を使う。attachmentLinkGitHubPR を優先する。fileUpload が返す署名付き upload URLに対してだけ使う。必要な認可情報はその URL 自体に含まれている。