원클릭으로
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 직업 분류 기준
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.
| 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)