Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/kwanpham2195/symphony-go/linearnpx skills add kwanpham2195/symphony-go --skill lineargit clone --depth 1 https://github.com/kwanpham2195/symphony-goWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/kwanpham2195/symphony-go/linear)<a href="https://agentmods.dev/skills/kwanpham2195/symphony-go/linear"><img src="https://agentmods.dev/badge/skills/kwanpham2195/symphony-go/linear.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00028 | $0.00775 |
| Opus 5 | $0.00014 | $0.00387 |
| Sonnet 5 | $0.00006 | $0.00155 |
| Haiku 4.5 | $0.00003 | $0.00077 |
Grade A, and why
linear scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 5d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 137 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Linear GraphQL
Use the linear_graphql tool exposed by Symphony's app-server session for raw Linear API access.
Tool Input
{
"query": "query or mutation document",
"variables": { "optional": "graphql variables" }
}
One operation per call. Top-level errors array means the operation failed.
Common Operations
Query an issue
query IssueByKey($key: String!) {
issue(id: $key) {
id identifier title
state { id name }
project { id name }
url description
}
}
Get team workflow states
query IssueTeamStates($id: String!) {
issue(id: $id) {
team {
states { nodes { id name type } }
}
}
}
Move issue to a state
mutation MoveIssue($id: String!, $stateId: String!) {
issueUpdate(id: $id, input: { stateId: $stateId }) {
success
issue { id identifier state { name } }
}
}
Create a comment
mutation CreateComment($issueId: String!, $body: String!) {
commentCreate(input: { issueId: $issueId, body: $body }) {
success
comment { id url }
}
}
Update a comment
mutation UpdateComment($id: String!, $body: String!) {
commentUpdate(id: $id, input: { body: $body }) {
success
comment { id body }
}
}
Attach a GitHub PR
mutation AttachPR($issueId: String!, $url: String!, $title: String) {
attachmentLinkGitHubPR(issueId: $issueId, url: $url, title: $title, linkKind: links) {
success
attachment { id url }
}
}
Schema introspection
query ListMutations {
__type(name: "Mutation") { fields { name } }
}
query InspectInput($name: String!) {
__type(name: $name) {
inputFields { name type { kind name ofType { kind name } } }
}
}
Post-PR Workflow
After pushing a PR, move the issue to In Review so the orchestrator stops re-dispatching:
- Fetch the team's workflow states to get the exact
stateIdfor "In Review". - Update the issue state:
mutation MoveIssue($id: String!, $stateId: String!) { issueUpdate(id: $id, input: { stateId: $stateId }) { success issue { id identifier state { name } } } } - Attach the PR URL to the issue.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 5d ago First seen · 137 lines · 28 tokens per session scan A 48838751bd9e
linear is a skill published in the GitHub repository kwanpham2195/symphony-go (10 stars, last pushed 3mo ago), licensed MIT. It adds 28 tokens to every session and 775 once invoked, about $0.0001 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
codex-symphony
Install and operate a portable OpenAI Symphony + Linear orchestration setup in any Git repository. Use when the user wants a one-command local Symphony runner, a reusable WORKFLOW template, background launch scripts, or a Codex wrapper that restarts Symphony automatically when reopening the CLI.
linear-cli
Manage Linear issues from the command line using the linear cli. This skill allows automating linear management.
Release
This skill should be used when the user asks to "make a release", "create a release", "cut a release", "release a new version", "publish a release", or mentions preparing for release. Provides comprehensive workflow for reviewing changes, updating changelog, determining semver bump, and publishing.
release-core-test
Invoke when dev-testing a Cyrus change that spans CYPACK (edgeworker + CLI) and CYHOST (Vercel-hosted GUI) and the hosted GUI needs to point at an unreleased cyrus-core from this repo. Publishes cyrus-core (and claude-runner if needed) as a -test.N prerelease under the npm test dist-tag so CYHOST can install it via…
cyrus-setup-claude-auth
Configure Claude Code authentication for Cyrus — API key, OAuth token, or third-party provider.
f1-test-drive
Orchestrate F1 test drives to validate the Cyrus agent system end-to-end across issue-tracker, EdgeWorker, and activity rendering.