一键导入
linear
This skill should be used when the user asks to read, create, update, or search Linear issues, projects, cycles, or teams.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
This skill should be used when the user asks to read, create, update, or search Linear issues, projects, cycles, or teams.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
| name | linear |
| description | This skill should be used when the user asks to read, create, update, or search Linear issues, projects, cycles, or teams. |
| version | 1.0.0 |
Read, create, update, and search issues in Linear using the Linear GraphQL API.
~/.charliebot/config.yaml under linear_api_keyhttps://api.linear.app/graphqlAll requests use POST to the GraphQL endpoint with headers:
Content-Type: application/json
Authorization: TOKEN
Read the token from ~/.charliebot/config.yaml before making any API calls.
curl -s -X POST https://api.linear.app/graphql \
-H "Content-Type: application/json" \
-H "Authorization: $LINEAR_API_KEY" \
-d '{"query": "GRAPHQL_QUERY"}'
Use python3 -c '...' or python3 -m json.tool to parse and format JSON responses.
query { viewer { id name email } }
query { teams { nodes { id name key } } }
query($filter: IssueFilter) {
issues(filter: $filter, first: 50) {
nodes {
id identifier title state { name } priority assignee { name } createdAt updatedAt
}
}
}
Common filters:
{"team": {"key": {"eq": "TEAM_KEY"}}}{"assignee": {"name": {"eq": "Name"}}}{"state": {"name": {"in": ["Todo", "In Progress"]}}}query($id: String!) {
issue(id: $id) {
id identifier title description state { name } priority
assignee { name } labels { nodes { name } }
comments { nodes { body user { name } createdAt } }
}
}
You can also look up by identifier (e.g. "ENG-123"):
query {
issueSearch(query: "ENG-123", first: 1) {
nodes { id identifier title description state { name } }
}
}
query($query: String!) {
issueSearch(query: $query, first: 20) {
nodes {
id identifier title state { name } assignee { name } priority
}
}
}
mutation($input: IssueCreateInput!) {
issueCreate(input: $input) {
success
issue { id identifier title url }
}
}
Variables:
{
"input": {
"teamId": "TEAM_UUID",
"title": "Issue title",
"description": "Markdown description",
"priority": 2,
"assigneeId": "USER_UUID"
}
}
Priority: 0=No priority, 1=Urgent, 2=High, 3=Medium, 4=Low
mutation($id: String!, $input: IssueUpdateInput!) {
issueUpdate(id: $id, input: $input) {
success
issue { id identifier title state { name } }
}
}
mutation($input: CommentCreateInput!) {
commentCreate(input: $input) {
success
comment { id body }
}
}
Variables: {"input": {"issueId": "ISSUE_UUID", "body": "Comment text"}}
query {
projects(first: 50) {
nodes { id name state { ... on ProjectState { name } } }
}
}
query($teamId: String!) {
team(id: $teamId) {
cycles(first: 10, orderBy: createdAt) {
nodes { id name startsAt endsAt }
}
}
}
feishu skill), NOT as Linear comments or long descriptions. Each Linear issue maps to one Feishu document — subsequent updates are appended to the same Feishu doc, never a new one. The Feishu doc title should match the Linear issue title. The Feishu doc URL must be linked in the Linear issue description.PATCH https://open.feishu.cn/open-apis/drive/v1/permissions/{document_id}/public?type=docx with {"link_share_entity":"tenant_readable"} after the user explicitly approves that permission write. Do not widen to tenant_editable unless the user explicitly asks, and do not enable external public access by default.tenant_readable setup for a new doc, still requires explicit user approval before sending the Feishu permission write.~/.charliebot/config.yamlteams query first to resolve team IDsissueSearch for text-based lookups, issues with filters for structured queriesPATCH https://open.feishu.cn/open-apis/drive/v1/permissions/{document_id}/public?type=docx and {"link_share_entity":"tenant_readable"}, then update the Linear issue description to include the Feishu doc URL
c. All detailed notes, investigation logs, and updates go into the Feishu doc; Linear issue stays concise (status + Feishu link)Enforces explicit user approval before implementing any plan. Use when presenting a plan, receiving plan feedback, or about to delegate implementation.
CharlieBot repo structure, architecture, and development conventions. Use when modifying charlie-bot code.
How to write effective improve loop goal prompts — for the master CC agent that writes the --goal-file content.
methodology for iterative improve loop workers.
CharlieBot skill directory layout, sync rules, and CLI tool mappings. Use when creating, installing, or syncing skills across Claude Code, Codex, Gemini, OpenCode, and Antigravity.
This skill should be used when the user asks to read, create, or edit Feishu/Lark documents, search docs in their Feishu workspace, or fetch content from a Feishu wiki or docx URL.