linear
Skill9 starsChanged 4 days agoMITView on GitHub
This skill should be used when the user asks to read, create, update, or search Linear issues, projects, cycles, or teams.
We split this skill into the rules it gives an agent
7 rules. 0 are common, 5 are distinctive, and 2 are very specific to this project.
0
Common
Most of the 77 edited versions we read keep these.
5
Distinctive
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 9
Read, create, update, and search issues in Linear using the Linear GraphQL API.
- Distinctive: line 191
English only: All ticket titles and descriptions must be written in English, regardless of conversation language.
- Distinctive: line 192
Default assignee: Use the host-configured default assignee if one is set (host-specific skill / MEMORY).
- Very specific: line 202
If team context is needed, call teams query first to resolve team IDs
- Very specific: line 203
Use searchIssues for text lookups and issues with filters for structured queries
- Distinctive: line 205
Always format output clearly — show identifier, title, state, assignee, and priority
- Distinctive: line 206
Follow the issue-write rule above before creating or updating issues
“Common” is measured: kept by at least 6 in 10 of the 77 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Linear
Read, create, update, and search issues in Linear using the Linear GraphQL API.
Configuration
- API endpoint:
https://api.linear.app/graphql - Key: a Personal API Key, which the operator stores in the profile home's
credentials.yamlunderlinear.api_key. - Send every Linear request through
charliebot linear graphql. The command is the one reader of the key, so the key stays out of session commands, output and run records.
API Reference
charliebot linear graphql sends one GraphQL request to Linear and prints Linear's JSON response.
It reads the request body from stdin, or from the file that --file <path> names.
The body is a JSON object with a string query and an optional variables object.
Send the viewer query through a quoted heredoc on stdin. This keeps the JSON body out of shell arguments.
charliebot linear graphql <<'JSON'
{"query":"query { viewer { id name email } }"}
JSON| Exit code | Meaning |
| 0 | HTTP 200 and a JSON response without an errors key. |
| 1 | Another status, an errors key, invalid response JSON or a network failure. |
| 2 | Invalid arguments or request body. |
| 3 | The credentials file cannot be read or linear.api_key is missing. |
Pipe the output to jq to format it.
Viewer (who am I)
query { viewer { id name email } }List Teams
query { teams { nodes { id name key } } }List Issues (with filters)
query($filter: IssueFilter) {
issues(filter: $filter, first: 50) {
nodes {
id identifier title state { name } priority assignee { name } createdAt updatedAt
}
}
}Common filters:
- By team:
{"team": {"key": {"eq": "TEAM_KEY"}}} - By assignee:
{"assignee": {"name": {"eq": "Name"}}} - By state:
{"state": {"name": {"in": ["Todo", "In Progress"]}}} - Combined: nest multiple filters together
Get Single Issue
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"); issue(id:) accepts the
human identifier and returns one issue:
query {
issue(id: "ENG-123") {
id identifier title description state { name }
}
}Search Issues
query($term: String!) {
searchIssues(term: $term, first: 20) {
nodes {
id identifier title state { name } assignee { name } priority
}
}
}Two-path recall
The two paths answer different questions, so run both and deduplicate before
presenting. The semantic path searchIssues(term:)
returns hits for unrelated terms, so it answers "does anything look like this"
but cannot prove that no matching issue exists. The structured path
issues(filter:{or:[{title:{containsIgnoreCase:K}},{description:{containsIgnoreCase:K}}]})
answers "does an issue containing K exist"; an empty result is a usable negative.
A conclusion of "no matching issue" requires the structured path; present the
deduplicated union of both paths.
Create Issue
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
Update Issue
mutation($id: String!, $input: IssueUpdateInput!) {
issueUpdate(id: $id, input: $input) {
success
issue { id identifier title state { name } }
}
}Add Comment
mutation($input: CommentCreateInput!) {
commentCreate(input: $input) {
success
comment { id body }
}
}Variables: {"input": {"issueId": "ISSUE_UUID", "body": "Comment text"}}
List Projects
query {
projects(first: 50) {
nodes { id name state { ... on ProjectState { name } } }
}
}List Cycles
query($teamId: String!) {
team(id: $teamId) {
cycles(first: 10, orderBy: createdAt) {
nodes { id name startsAt endsAt }
}
}
}Rules
- English only: All ticket titles and descriptions must be written in English, regardless of conversation language.
- Default assignee: Use the host-configured default assignee if one is set (host-specific skill / MEMORY); otherwise leave unassigned and ask the user.
- Issue writes: A root session shows the draft and gets user confirmation before creating or updating issues.
A sub session follows External System Writes in
~/workspace/charlie-bot/prompts/master.md. - Feishu for documentation: Create a Feishu document for a Linear issue when the user asks for one or when the issue's detail is meant for colleagues to read; otherwise the detail stays in the issue's session artifacts rather than in Linear comments or long descriptions. When a doc exists, each Linear issue maps to one Feishu document, subsequent updates append to the same Feishu doc never a new one, the Feishu doc title matches the Linear issue title, and the Feishu doc URL is linked in the Linear issue description.
- Default Feishu doc sharing: When creating the Feishu doc associated with a Linear issue, set its public permission to tenant-internal readable via
PATCH https://open.feishu.cn/open-apis/drive/v1/permissions/{document_id}/public?type=docxwith{"link_share_entity":"tenant_readable"}after the user explicitly approves that permission write. Do not widen totenant_editableunless the user explicitly asks, and do not enable external public access by default. - Permission-write approval: Any Feishu permission change for an associated Feishu doc, including the default
tenant_readablesetup for a new doc, still requires explicit user approval before sending the Feishu permission write.
Workflow
- Send each request through
charliebot linear graphql(API Reference above). - If team context is needed, call
teamsquery first to resolve team IDs - Use
searchIssuesfor text lookups andissueswith filters for structured queries - For creating/updating issues, resolve team and user IDs first
- Always format output clearly — show identifier, title, state, assignee, and priority
- Follow the issue-write rule above before creating or updating issues
- When adding detailed content to an issue:
a. Create a Feishu doc only when the user asks for one or when the detail is meant for colleagues to read; otherwise leave the detail in the issue's session artifacts
b. Check if the issue description already contains a Feishu doc URL — if so, append new content to that existing doc
c. If no Feishu doc exists yet and one is warranted, get the user's approval for the Feishu document creation and permission write, create one with the same title as the Linear issue, set its public permission via
PATCH https://open.feishu.cn/open-apis/drive/v1/permissions/{document_id}/public?type=docxand{"link_share_entity":"tenant_readable"}, then update the Linear issue description to include the Feishu doc URL d. When a doc exists, all detailed notes, investigation logs, and updates go into the Feishu doc; Linear issue stays concise (see Content conventions)
Content conventions
- Issue body: goal and deliverables only. No status updates, no implementation detail, no results. When no Feishu doc exists, progress and technical content live in the issue's session artifacts; when one exists, they live in the linked Feishu doc.
- Externally shared Feishu result docs are written in English, structured as: what was done, which optimizations, final results, experiment environment, reproducible scripts. No process narrative.
Other versions81 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 81
- lobehub/lobe-chat★ 84ksame name
- lobehub/lobehub★ 84ksame name
- openai/skills★ 27ksame name
- openai/symphony★ 27ksame name
- anthropics/claude-quickstarts★ 19ksame name
- ComposioHQ/awesome-codex-skills★ 17ksame name
- composio-community/awesome-codex-skills★ 16ksame name
- anyproto/anytype-ts★ 9ksame name
- vercel-labs/emulate★ 2ksame name
- Lilac-Labs/gini-agent★ 1.9ksame name
71 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
Used alongsideProjects with it also use agent-deep-links, helium-mcp and 10 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
ComposioHQSkillagent-deep-links
Build, validate, and troubleshoot deep links for Codex, Cursor, VS Code, Visual Studio, and similar tools. Use when users ask for clickable links (especially in Slack) that open threads, files, folders, or app settings.
Also in 3 projects that use this
ComposioHQSkillhelium-mcp
Search real-time news with bias scoring, get live stock/ETF/crypto data with AI analysis, ML options pricing, balanced news synthesis, and meme search via the Helium MCP server.
Also in 3 projects that use this
petestewartSkilldatadog-logs
Query Datadog logs via the Logs Search API v2. Use when the user asks to "check the logs", "search logs", "find errors in Datadog", "look up logs for", "show me production logs", "check for errors", "search Datadog", or any request involving log search, error investigation, or production debugging that requires Datadog log data.
Also in 3 projects that use this
OpenAISkillpull
Also in 5 projects that use this
math-incSkillheartmula
Set up and run HeartMuLa, the open-source music generation model family (Suno-like). Generates full songs from lyrics + tags with multilingual support.
Also in 4 projects that use this
- +7 more from ComposioHQ
In this repository21 other files it gives its agents.
- AGENTS.mdAGENTS.md
- charliebotSkill
- claude-versionSkill
- cli-tool-trapsSkill
- feishuSkill
- file-serverSkill
- gmailSkill
- google-docsSkill
- google-oauthSkill
- google-sheetsSkill
- improve-goalSkill
- improve-workerSkill
- language-portSkill
- llm-context-guidelineSkill
- perfettoSkill
- plan-approvalSkill
- pytorch-gpu-trainingSkill
- skill-managementSkill
- slackSkill
- voice-notesSkill
- writing-styleSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
Reviews can't be read right now.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

