linear
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseLinear Project & Ticket Management
Linear项目与工单管理
This skill manages Linear through the GraphQL endpoint only. Do not use or any other CLI wrapper. The project scripts in share a single GraphQL client and hit directly.
linearis${CLAUDE_PLUGIN_ROOT}/skills/linear/scripts/https://api.linear.app/graphql本技能仅通过GraphQL端点管理Linear。请勿使用或任何其他CLI包装器。中的项目脚本共享一个GraphQL客户端,直接访问。
linearis${CLAUDE_PLUGIN_ROOT}/skills/linear/scripts/https://api.linear.app/graphqlPrerequisites
前提条件
Required: API Token
必填项:API令牌
bash
export LINEAR_API_TOKEN='lin_api_xxxxx'Get the token from Linear → Settings → Security & Access → Personal API keys.
bash
export LINEAR_API_TOKEN='lin_api_xxxxx'从Linear → 设置 → 安全与访问 → 个人API密钥获取令牌。
Verify Setup
验证设置
bash
uv run ${CLAUDE_PLUGIN_ROOT}/skills/linear/scripts/read-ticket.py ICE-2041If this returns ticket JSON, auth and GraphQL access are working.
bash
uv run ${CLAUDE_PLUGIN_ROOT}/skills/linear/scripts/read-ticket.py ICE-2041如果返回工单JSON,则认证和GraphQL访问正常。
IMPORTANT: Use Scripts First
重要提示:优先使用脚本
Prefer the scripts in over ad hoc calls. They resolve names to IDs, normalize errors, and keep output JSON-shaped for agent workflows. If you need raw queries for debugging or unsupported operations, use .
${CLAUDE_PLUGIN_ROOT}/skills/linear/scripts/curlreferences/graphql-reference.md优先使用中的脚本,而非临时的调用。这些脚本会将名称解析为ID,标准化错误,并保持输出为JSON格式以适配Agent工作流。如果需要原始查询进行调试或处理不支持的操作,请使用。
${CLAUDE_PLUGIN_ROOT}/skills/linear/scripts/curlreferences/graphql-reference.mdWhen to Use This Skill
何时使用本技能
- Create or update tickets for feature work, bugs, or remediation
- Create projects and milestones to organize work
- Add comments with progress or review notes
- Create, list, or read project documents
- Move issues into projects or milestones
- 创建或更新功能开发、Bug修复或问题修复的工单
- 创建项目和里程碑以组织工作
- 添加包含进度或评审说明的评论
- 创建、列出或读取项目文档
- 将问题移入项目或里程碑
Scripts Overview
脚本概览
| Script | Purpose |
|---|---|
| List issues with optional team, status, and project filters |
| Full-text search issues |
| Create a ticket |
| Read ticket details by identifier or UUID |
| Update ticket fields |
| Add a comment to a ticket |
| Create a project |
| Add tickets to a project |
| Create a project milestone |
| Add tickets to a milestone |
| Create a project document |
| List documents, optionally by project |
| Read a document by UUID |
| 脚本 | 用途 |
|---|---|
| 列出工单,可按团队、状态和项目筛选 |
| 全文搜索工单 |
| 创建工单 |
| 通过标识符或UUID读取工单详情 |
| 更新工单字段 |
| 给工单添加评论 |
| 创建项目 |
| 将工单添加到项目 |
| 创建项目里程碑 |
| 将工单添加到里程碑 |
| 创建项目文档 |
| 列出文档,可按项目筛选 |
| 通过UUID读取文档 |
Ticket Operations
工单操作
List Issues
列出工单
bash
uv run ${CLAUDE_PLUGIN_ROOT}/skills/linear/scripts/list-issues.py --team ICE-T
uv run ${CLAUDE_PLUGIN_ROOT}/skills/linear/scripts/list-issues.py --team ICE-T --limit 100
uv run ${CLAUDE_PLUGIN_ROOT}/skills/linear/scripts/list-issues.py --team ICE-T --status "Todo,In Progress"
uv run ${CLAUDE_PLUGIN_ROOT}/skills/linear/scripts/list-issues.py --team ICE-T --project "Orca Security Remediation"Options:
- filter by team key or name
--team - ,
--limitmax issues to fetch, default-l50 - ,
--statuscomma-separated workflow states-s - project name or UUID
--project
bash
uv run ${CLAUDE_PLUGIN_ROOT}/skills/linear/scripts/list-issues.py --team ICE-T
uv run ${CLAUDE_PLUGIN_ROOT}/skills/linear/scripts/list-issues.py --team ICE-T --limit 100
uv run ${CLAUDE_PLUGIN_ROOT}/skills/linear/scripts/list-issues.py --team ICE-T --status "Todo,In Progress"
uv run ${CLAUDE_PLUGIN_ROOT}/skills/linear/scripts/list-issues.py --team ICE-T --project "Orca Security Remediation"选项:
- 按团队密钥或名称筛选
--team - ,
--limit最大获取工单数量,默认-l50 - ,
--status逗号分隔的工作流状态-s - 项目名称或UUID
--project
Search Issues
搜索工单
bash
uv run ${CLAUDE_PLUGIN_ROOT}/skills/linear/scripts/search-issues.py "Orca Security"
uv run ${CLAUDE_PLUGIN_ROOT}/skills/linear/scripts/search-issues.py "CVE" --team ICE-T
uv run ${CLAUDE_PLUGIN_ROOT}/skills/linear/scripts/search-issues.py "Privileged Role" --status "Todo,Triage"
uv run ${CLAUDE_PLUGIN_ROOT}/skills/linear/scripts/search-issues.py "Docker" --team ICE-T --limit 20Options:
- required search text
query - filter by team key or name
--team - ,
--statuscomma-separated workflow states-s - project name or UUID
--project - ,
--assigneeassignee user ID-a - ,
--limitmax results, default-l25
bash
uv run ${CLAUDE_PLUGIN_ROOT}/skills/linear/scripts/search-issues.py "Orca Security"
uv run ${CLAUDE_PLUGIN_ROOT}/skills/linear/scripts/search-issues.py "CVE" --team ICE-T
uv run ${CLAUDE_PLUGIN_ROOT}/skills/linear/scripts/search-issues.py "Privileged Role" --status "Todo,Triage"
uv run ${CLAUDE_PLUGIN_ROOT}/skills/linear/scripts/search-issues.py "Docker" --team ICE-T --limit 20选项:
- 必填搜索文本
query - 按团队密钥或名称筛选
--team - ,
--status逗号分隔的工作流状态-s - 项目名称或UUID
--project - ,
--assignee经办人用户ID-a - ,
--limit最大结果数量,默认-l25
Create Ticket
创建工单
bash
uv run ${CLAUDE_PLUGIN_ROOT}/skills/linear/scripts/create-ticket.py "Fix CVE-2024-1234" \
--team ICE-T \
--description "Critical vulnerability in production" \
--priority 1 \
--labels "security" \
--jsonOptions:
- required ticket title
title - required team key or name
--team - ,
--descriptiondescription-d - ,
--priority-p,1=urgent,2=high,3=normal4=low - comma-separated label names or UUIDs
--labels - print structured JSON instead of just the identifier
--json
bash
uv run ${CLAUDE_PLUGIN_ROOT}/skills/linear/scripts/create-ticket.py "Fix CVE-2024-1234" \
--team ICE-T \
--description "Critical vulnerability in production" \
--priority 1 \
--labels "security" \
--json选项:
- 必填工单标题
title - 必填团队密钥或名称
--team - ,
--description描述内容-d - ,
--priority-p,1=紧急,2=高,3=正常4=低 - 逗号分隔的标签名称或UUID
--labels - 输出结构化JSON而非仅标识符
--json
Read Ticket
读取工单
bash
uv run ${CLAUDE_PLUGIN_ROOT}/skills/linear/scripts/read-ticket.py ICE-2021
uv run ${CLAUDE_PLUGIN_ROOT}/skills/linear/scripts/read-ticket.py 9e05263f-ed01-4b85-9c74-569fd1a0ce13bash
uv run ${CLAUDE_PLUGIN_ROOT}/skills/linear/scripts/read-ticket.py ICE-2021
uv run ${CLAUDE_PLUGIN_ROOT}/skills/linear/scripts/read-ticket.py 9e05263f-ed01-4b85-9c74-569fd1a0ce13Update Ticket
更新工单
bash
uv run ${CLAUDE_PLUGIN_ROOT}/skills/linear/scripts/update-ticket.py ICE-2021 --status "In Progress"
uv run ${CLAUDE_PLUGIN_ROOT}/skills/linear/scripts/update-ticket.py ICE-2021 --status "Done" --priority 2
uv run ${CLAUDE_PLUGIN_ROOT}/skills/linear/scripts/update-ticket.py ICE-2021 --labels "security,urgent"Options, at least one required:
- new status name or UUID
--status --priority,1=urgent,2=high,3=normal4=low- assignee user ID
--assignee - comma-separated label names or UUIDs; labels are added to the existing set
--labels - project name or UUID
--project - milestone name or UUID
--project-milestone - new title
--title - new description
--description
bash
uv run ${CLAUDE_PLUGIN_ROOT}/skills/linear/scripts/update-ticket.py ICE-2021 --status "In Progress"
uv run ${CLAUDE_PLUGIN_ROOT}/skills/linear/scripts/update-ticket.py ICE-2021 --status "Done" --priority 2
uv run ${CLAUDE_PLUGIN_ROOT}/skills/linear/scripts/update-ticket.py ICE-2021 --labels "security,urgent"选项(至少选一项):
- 新状态名称或UUID
--status --priority,1=紧急,2=高,3=正常4=低- 经办人用户ID
--assignee - 逗号分隔的标签名称或UUID;标签会添加到现有集合中
--labels - 项目名称或UUID
--project - 里程碑名称或UUID
--project-milestone - 新标题
--title - 新描述
--description
Add Comment
添加评论
bash
uv run ${CLAUDE_PLUGIN_ROOT}/skills/linear/scripts/add-comment.py ICE-2021 "Fixed in PR #123"bash
uv run ${CLAUDE_PLUGIN_ROOT}/skills/linear/scripts/add-comment.py ICE-2021 "Fixed in PR #123"Project Operations
项目操作
Create Project
创建项目
bash
uv run ${CLAUDE_PLUGIN_ROOT}/skills/linear/scripts/create-project.py "Security Remediation Q1" \
--team ICE-T \
--description "Eliminate all High severity alerts" \
--priority 1 \
--jsonOptions:
- required project name
name - required team key or name
--team - short summary, max 255 chars
--description - full markdown content for the project page
--content --priority,0=none,1=urgent,2=high,3=normal4=low--target-dateYYYY-MM-DD- print full project JSON
--json
bash
uv run ${CLAUDE_PLUGIN_ROOT}/skills/linear/scripts/create-project.py "Security Remediation Q1" \
--team ICE-T \
--description "Eliminate all High severity alerts" \
--priority 1 \
--json选项:
- 必填项目名称
name - 必填团队密钥或名称
--team - 简短摘要,最多255字符
--description - 项目页面的完整Markdown内容
--content --priority,0=无,1=紧急,2=高,3=正常4=低--target-date格式YYYY-MM-DD- 输出完整项目JSON
--json
Add Issues to Project
将工单添加到项目
bash
uv run ${CLAUDE_PLUGIN_ROOT}/skills/linear/scripts/add-issues-to-project.py PROJECT_UUID ICE-2027
uv run ${CLAUDE_PLUGIN_ROOT}/skills/linear/scripts/add-issues-to-project.py PROJECT_UUID ICE-2027 ICE-2028 ICE-2029
uv run ${CLAUDE_PLUGIN_ROOT}/skills/linear/scripts/add-issues-to-project.py PROJECT_UUID --issues ICE-2027,ICE-2028bash
uv run ${CLAUDE_PLUGIN_ROOT}/skills/linear/scripts/add-issues-to-project.py PROJECT_UUID ICE-2027
uv run ${CLAUDE_PLUGIN_ROOT}/skills/linear/scripts/add-issues-to-project.py PROJECT_UUID ICE-2027 ICE-2028 ICE-2029
uv run ${CLAUDE_PLUGIN_ROOT}/skills/linear/scripts/add-issues-to-project.py PROJECT_UUID --issues ICE-2027,ICE-2028Milestone Operations
里程碑操作
Create Milestone
创建里程碑
bash
uv run ${CLAUDE_PLUGIN_ROOT}/skills/linear/scripts/create-milestone.py "P1: Critical Fixes" \
--project PROJECT_UUID \
--description "RCE and exposed secrets" \
--target-date 2026-02-09 \
--jsonOptions:
- required milestone name
name - required project UUID
--project - milestone description
--description - due date in
--target-dateYYYY-MM-DD - print full milestone JSON
--json
bash
uv run ${CLAUDE_PLUGIN_ROOT}/skills/linear/scripts/create-milestone.py "P1: Critical Fixes" \
--project PROJECT_UUID \
--description "RCE and exposed secrets" \
--target-date 2026-02-09 \
--json选项:
- 必填里程碑名称
name - 必填项目UUID
--project - 里程碑描述
--description - 截止日期,格式为
--target-dateYYYY-MM-DD - 输出完整里程碑JSON
--json
Add Issues to Milestone
将工单添加到里程碑
bash
uv run ${CLAUDE_PLUGIN_ROOT}/skills/linear/scripts/add-issues-to-milestone.py MILESTONE_UUID ICE-2027 ICE-2028bash
uv run ${CLAUDE_PLUGIN_ROOT}/skills/linear/scripts/add-issues-to-milestone.py MILESTONE_UUID ICE-2027 ICE-2028Document Operations
文档操作
Create Document
创建文档
bash
uv run ${CLAUDE_PLUGIN_ROOT}/skills/linear/scripts/create-document.py \
--title "Security Findings Report" \
--project PROJECT_UUID \
--content-file ./report.md \
--jsonOptions:
- required document title
--title - required project name or UUID
--project - markdown content
--content - read content from file
--content-file - print structured JSON
--json
bash
uv run ${CLAUDE_PLUGIN_ROOT}/skills/linear/scripts/create-document.py \
--title "Security Findings Report" \
--project PROJECT_UUID \
--content-file ./report.md \
--json选项:
- 必填文档标题
--title - 必填项目名称或UUID
--project - Markdown内容
--content - 从文件读取内容
--content-file - 输出结构化JSON
--json
List Documents
列出文档
bash
uv run ${CLAUDE_PLUGIN_ROOT}/skills/linear/scripts/list-documents.py --project PROJECT_UUID
uv run ${CLAUDE_PLUGIN_ROOT}/skills/linear/scripts/list-documents.py --project "Security Remediation" --limit 100bash
uv run ${CLAUDE_PLUGIN_ROOT}/skills/linear/scripts/list-documents.py --project PROJECT_UUID
uv run ${CLAUDE_PLUGIN_ROOT}/skills/linear/scripts/list-documents.py --project "Security Remediation" --limit 100Read Document
读取文档
bash
uv run ${CLAUDE_PLUGIN_ROOT}/skills/linear/scripts/read-document.py DOCUMENT_UUIDbash
uv run ${CLAUDE_PLUGIN_ROOT}/skills/linear/scripts/read-document.py DOCUMENT_UUIDCommon Workflow
常见工作流
bash
undefinedbash
undefined1. Create project
1. 创建项目
PROJECT_ID=$(uv run ${CLAUDE_PLUGIN_ROOT}/skills/linear/scripts/create-project.py
"Security Remediation"
--team ICE-T
--description "Eliminate all security vulnerabilities")
"Security Remediation"
--team ICE-T
--description "Eliminate all security vulnerabilities")
PROJECT_ID=$(uv run ${CLAUDE_PLUGIN_ROOT}/skills/linear/scripts/create-project.py
"Security Remediation"
--team ICE-T
--description "Eliminate all security vulnerabilities")
"Security Remediation"
--team ICE-T
--description "Eliminate all security vulnerabilities")
2. Create milestone
2. 创建里程碑
MILESTONE_ID=$(uv run ${CLAUDE_PLUGIN_ROOT}/skills/linear/scripts/create-milestone.py
"P1: Critical"
--project "$PROJECT_ID"
--target-date 2026-02-09)
"P1: Critical"
--project "$PROJECT_ID"
--target-date 2026-02-09)
MILESTONE_ID=$(uv run ${CLAUDE_PLUGIN_ROOT}/skills/linear/scripts/create-milestone.py
"P1: Critical"
--project "$PROJECT_ID"
--target-date 2026-02-09)
"P1: Critical"
--project "$PROJECT_ID"
--target-date 2026-02-09)
3. Create ticket
3. 创建工单
TICKET_ID=$(uv run ${CLAUDE_PLUGIN_ROOT}/skills/linear/scripts/create-ticket.py
"Patch CVE-2024-1234"
--team ICE-T
--priority 1)
"Patch CVE-2024-1234"
--team ICE-T
--priority 1)
TICKET_ID=$(uv run ${CLAUDE_PLUGIN_ROOT}/skills/linear/scripts/create-ticket.py
"Patch CVE-2024-1234"
--team ICE-T
--priority 1)
"Patch CVE-2024-1234"
--team ICE-T
--priority 1)
4. Link ticket into the plan
4. 将工单关联到计划
uv run ${CLAUDE_PLUGIN_ROOT}/skills/linear/scripts/add-issues-to-project.py "$PROJECT_ID" "$TICKET_ID"
uv run ${CLAUDE_PLUGIN_ROOT}/skills/linear/scripts/add-issues-to-milestone.py "$MILESTONE_ID" "$TICKET_ID"
uv run ${CLAUDE_PLUGIN_ROOT}/skills/linear/scripts/add-issues-to-project.py "$PROJECT_ID" "$TICKET_ID"
uv run ${CLAUDE_PLUGIN_ROOT}/skills/linear/scripts/add-issues-to-milestone.py "$MILESTONE_ID" "$TICKET_ID"
5. Attach supporting documentation
5. 附加支持文档
uv run ${CLAUDE_PLUGIN_ROOT}/skills/linear/scripts/create-document.py
--title "Findings Report"
--project "$PROJECT_ID"
--content-file ./report.md
--title "Findings Report"
--project "$PROJECT_ID"
--content-file ./report.md
---uv run ${CLAUDE_PLUGIN_ROOT}/skills/linear/scripts/create-document.py
--title "Findings Report"
--project "$PROJECT_ID"
--content-file ./report.md
--title "Findings Report"
--project "$PROJECT_ID"
--content-file ./report.md
---Direct GraphQL Usage
直接使用GraphQL
If a needed operation does not have a wrapper yet, call the GraphQL endpoint directly rather than introducing a CLI dependency.
bash
curl -X POST https://api.linear.app/graphql \
-H "Content-Type: application/json" \
-H "Authorization: $LINEAR_API_TOKEN" \
-d '{"query":"{ viewer { id name } }"}'Do not use a prefix. Linear expects the raw token.
BearerFor reusable queries and resolver examples, see .
references/graphql-reference.md如果所需操作尚未有包装器,请直接调用GraphQL端点,而非引入CLI依赖。
bash
curl -X POST https://api.linear.app/graphql \
-H "Content-Type: application/json" \
-H "Authorization: $LINEAR_API_TOKEN" \
-d '{"query":"{ viewer { id name } }"}'请勿添加前缀。Linear期望使用原始令牌。
Bearer如需可复用查询和解析器示例,请查看。
references/graphql-reference.mdKnown Limitations
已知限制
- Due dates are not handled by the current project wrappers; use the UI if you need fields not exposed here
- Labels must already exist in the workspace
- Project is capped at 255 characters; use
descriptionfor long-form project docscontent
- 当前项目包装器不处理截止日期;如果需要此处未暴露的字段,请使用UI
- 标签必须已存在于工作区中
- 项目最多255字符;如需长格式项目文档,请使用
description字段content
Error Handling
错误处理
All scripts exit with code on errors.
1Common failures:
Error: LINEAR_API_TOKEN not set and ~/.linear_api_token not foundError: Ticket ICE-9999 not foundError: Team 'INVALID' not foundError: Milestone 'Release 1' matched multiple projects (...)
所有脚本在出错时会以代码退出。
1常见失败情况:
Error: LINEAR_API_TOKEN not set and ~/.linear_api_token not foundError: Ticket ICE-9999 not foundError: Team 'INVALID' not foundError: Milestone 'Release 1' matched multiple projects (...)
Version
版本
- Skill version:
3.0 - Transport:
Linear GraphQL endpoint only
- 技能版本:
3.0 - 传输方式:
仅Linear GraphQL端点