
Linear
A GraphQL wrapper for Linear that enforces lean patterns to keep context windows manageable. The big idea is the workpad: you edit a local markdown file as you work, then sync it to Linear comments only at milestones instead of spamming the API. It blocks schema introspection queries outright because they dump 200K characters of type definitions you don't need. Everything else is documented query fragments for the common stuff: reading issues, moving tickets between states, attaching PRs, uploading files. Useful if you're building agents that interact with Linear and want to avoid the usual API thrash.
- skills.sh installs
- 542
- GitHub stars
- 82
- last updated
- Aug 21, 2026
Install
$ npx -y skills add odysseus0/symphony --skill linear --agent claude-codeInstalls into .claude/skills of the current project.
Files
Linear GraphQL
All Linear operations go through the linear_graphql client tool exposed by
Symphony's app server. It handles auth automatically.
{
"query": "query or mutation document",
"variables": { "optional": "graphql variables" }
}
One operation per tool call. A top-level errors array means the operation
failed even if the tool call completed.
Workpad
Maintain a local workpad.md in your workspace. Edit freely (zero API cost),
then sync to Linear at milestones — plan finalized, implementation done,
validation complete. Do not sync after every small change.
First sync — create the comment, save the ID:
mutation CreateComment($issueId: String!, $body: String!) {
commentCreate(input: { issueId: $issueId, body: $body }) {
success
comment { id }
}
}
Write the returned comment.id to .workpad-id so subsequent syncs can update.
Subsequent syncs — read .workpad-id, update in place:
mutation UpdateComment($id: String!, $body: String!) {
commentUpdate(id: $id, input: { body: $body }) { success }
}
Query an issue
Sponsors
Details
- Repository
- github.com/odysseus0/symphony
- Categories
- Backend & APIs, Git & Pull Requests
- First seen
- Jun 3, 2026