Cuga GitHub Issues
cuga-project/cuga-agent
Create GitHub issues for cuga-agent (bugs, features, epics, designs, and related work) against origin using gh, with epic → feature → issue hierarchy and GraphQL sub-issue linking.
Use Symphony's lineargraphql client tool for raw Linear GraphQL operations such as comment editing and upload flows.
$ npx skills add karanhudia/borg-ui --skill linear -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install karanhudia/borg-ui linear --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/karanhudia/borg-ui.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.codex/skills/linear .claude/skills/linear && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "linear" agent skill from https://github.com/karanhudia/borg-ui/tree/main/.codex/skills/linear into .claude/skills/linear/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "linear", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/karanhudia/borg-ui/tree/main/.codex/skills/linearType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add karanhudia/borg-ui --skill linear -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install karanhudia/borg-ui linear --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/karanhudia/borg-ui.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.codex/skills/linear .agents/skills/linear && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "linear" agent skill from https://github.com/karanhudia/borg-ui/tree/main/.codex/skills/linear into .agents/skills/linear/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "linear", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add karanhudia/borg-ui --skill linear -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install karanhudia/borg-ui linear --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/karanhudia/borg-ui.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.codex/skills/linear .cursor/skills/linear && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "linear" agent skill from https://github.com/karanhudia/borg-ui/tree/main/.codex/skills/linear into .cursor/skills/linear/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "linear", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/karanhudia/borg-ui.git --path .codex/skills/linear--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add karanhudia/borg-ui --skill linear -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install karanhudia/borg-ui linear --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/karanhudia/borg-ui.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.codex/skills/linear .gemini/skills/linear && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "linear" agent skill from https://github.com/karanhudia/borg-ui/tree/main/.codex/skills/linear into .gemini/skills/linear/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "linear", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install karanhudia/borg-ui linearInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add karanhudia/borg-ui --skill linear -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/karanhudia/borg-ui.git skills-src && mkdir -p .github/skills && cp -r skills-src/.codex/skills/linear .github/skills/linear && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "linear" agent skill from https://github.com/karanhudia/borg-ui/tree/main/.codex/skills/linear into .github/skills/linear/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "linear", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add karanhudia/borg-ui --skill linear -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install karanhudia/borg-ui linear --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/karanhudia/borg-ui.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.codex/skills/linear .opencode/skills/linear && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "linear" agent skill from https://github.com/karanhudia/borg-ui/tree/main/.codex/skills/linear into .opencode/skills/linear/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "linear", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
linearUse Symphony's lineargraphql client tool for raw Linear GraphQL operations such as comment editing and upload flows.
Linear is an agent skill from karanhudia/borg-ui. Use Symphony's lineargraphql client tool for raw Linear GraphQL operations such as comment editing and upload flows.
Its SKILL.md is about 1.7k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Backend & APIs, covering GraphQL. It works with GraphQL and GitHub. The repository describes itself as: Replace complex Borg Backup terminal commands with a beautiful web UI. Create, schedule, and restore backups with just a few clicks. The licence is AGPL-3.0.
3 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 196a74a. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
curlFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use curl, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Linear loads about 1.7k tokens when it runs. Until then it costs about 32 tokens; SKILL.md has 431 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from karanhudia/borg-ui at commit 196a74a, republished under its AGPL-3.0 licence (© karanhudia). 431 words, ~1,710 tokens.
.claude/skills/linear/SKILL.md (or your agent's skills folder).Use this skill for raw Linear GraphQL work during Symphony app-server sessions.
Use the linear_graphql client tool exposed by Symphony's app-server session.
It reuses Symphony's configured Linear auth for the session.
Tool input:
{
"query": "query or mutation document",
"variables": {
"optional": "graphql variables object"
}
}Tool behavior:
errors array as a failed GraphQL operation even if the
tool call itself completed.When you need an unfamiliar mutation, input type, or object field, use targeted
introspection through linear_graphql.
List mutation names:
query ListMutations {
__type(name: "Mutation") {
fields {
name
}
}
}Inspect a specific input object:
query CommentCreateInputShape {
__type(name: "CommentCreateInput") {
inputFields {
name
type {
kind
name
ofType {
kind
name
}
}
}
}
}Use these progressively:
issue(id: $key) when you have a ticket key such as MT-686.issues(filter: ...) when you need identifier search semantics.issue(id: $id) for narrower reads.Lookup by issue key:
query IssueByKey($key: String!) {
issue(id: $key) {
id
identifier
title
state {
id
name
type
}
project {
id
name
}
branchName
url
description
updatedAt
links {
nodes {
id
url
title
}
}
}
}Lookup by identifier filter:
query IssueByIdentifier($identifier: String!) {
issues(filter: { identifier: { eq: $identifier } }, first: 1) {
nodes {
id
identifier
title
state {
id
name
type
}
project {
id
name
}
branchName
url
description
updatedAt
}
}
}Resolve a key to an internal id:
query IssueByIdOrKey($id: String!) {
issue(id: $id) {
id
identifier
title
}
}Read the issue once the internal id is known:
query IssueDetails($id: String!) {
issue(id: $id) {
id
identifier
title
url
description
state {
id
name
type
}
project {
id
name
}
attachments {
nodes {
id
title
url
sourceType
}
}
}
}Use this before changing issue state when you need the exact stateId:
query IssueTeamStates($id: String!) {
issue(id: $id) {
id
team {
id
key
name
states {
nodes {
id
name
type
}
}
}
}
}Use commentUpdate through linear_graphql:
mutation UpdateComment($id: String!, $body: String!) {
commentUpdate(id: $id, input: { body: $body }) {
success
comment {
id
body
}
}
}Use commentCreate through linear_graphql:
mutation CreateComment($issueId: String!, $body: String!) {
commentCreate(input: { issueId: $issueId, body: $body }) {
success
comment {
id
url
}
}
}Use issueUpdate with the destination stateId:
mutation MoveIssueToState($id: String!, $stateId: String!) {
issueUpdate(id: $id, input: { stateId: $stateId }) {
success
issue {
id
identifier
state {
id
name
}
}
}
}Use the GitHub-specific attachment mutation when linking a PR:
mutation AttachGitHubPR($issueId: String!, $url: String!, $title: String) {
attachmentLinkGitHubPR(
issueId: $issueId
url: $url
title: $title
linkKind: links
) {
success
attachment {
id
title
url
}
}
}If you only need a plain URL attachment and do not care about GitHub-specific link metadata, use:
mutation AttachURL($issueId: String!, $url: String!, $title: String) {
attachmentLinkURL(issueId: $issueId, url: $url, title: $title) {
success
attachment {
id
title
url
}
}
}Use these when the exact field or mutation shape is unclear:
query QueryFields {
__type(name: "Query") {
fields {
name
}
}
}query IssueFieldArgs {
__type(name: "Query") {
fields {
name
args {
name
type {
kind
name
ofType {
kind
name
ofType {
kind
name
}
}
}
}
}
}
}Do this in three steps:
linear_graphql with fileUpload to get uploadUrl, assetUrl, and
any required upload headers.uploadUrl with curl -X PUT and the exact
headers returned by fileUpload.linear_graphql again with commentCreate (or commentUpdate) and
include the resulting assetUrl in the comment body.Useful mutations:
mutation FileUpload(
$filename: String!
$contentType: String!
$size: Int!
$makePublic: Boolean
) {
fileUpload(
filename: $filename
contentType: $contentType
size: $size
makePublic: $makePublic
) {
success
uploadFile {
uploadUrl
assetUrl
headers {
key
value
}
}
}
}linear_graphql for comment edits, uploads, and ad-hoc Linear API
queries.stateId
instead of hardcoding names inside mutations.attachmentLinkGitHubPR over a generic URL attachment when linking a
GitHub PR to a Linear issue.fileUpload; those URLs already carry the needed authorization.© karanhudia, AGPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .codex/skills/linear of karanhudia/borg-ui.
Open the folder on GitHubat commit 196a74a
Linear next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Linear this skillkaranhudia/borg-ui | 1.7k | — | ~1.7k | Automated safety check: Pass | AGPL-3.0 | |
| Cuga GitHub Issuescuga-project/cuga-agent | 895 | — | ~1.2k | Automated safety check: Pass | Custom licence | |
| Distilled SDKalchemy-run/distilled | 431 | — | ~6k | Automated safety check: Pass | Apache-2.0 | |
| Review PR Commentslatitude-dev/latitude-llm | 4.7k | — | ~2.6k | Automated safety check: Pass | MIT | |
| Merge Queuefullsend-ai/fullsend | 147 | — | ~712 | Automated safety check: Pass | Apache-2.0 | |
| Golang Graphqlcontext-labs/whip | 1.1k | 1 repos | ~3.2k | Automated safety check: Pass | MIT |
cuga-project/cuga-agent
Create GitHub issues for cuga-agent (bugs, features, epics, designs, and related work) against origin using gh, with epic → feature → issue hierarchy and GraphQL sub-issue linking.
alchemy-run/distilled
Build or update a distilled SDK for an API provider — sourcing its OpenAPI/Smithy/GraphQL/discovery description, adding the spec mirror that feeds it, generating packages/<provider, listing it on…
latitude-dev/latitude-llm
Triages a PR with GitHub CLI: loads issue-level and inline review feedback (gh pr view, gh api REST, gh api graphql as appropriate), walks items in order, replies in the correct thread, optional…
fullsend-ai/fullsend
A skill your agent uses when you need to add a PR to a GitHub merge queue, check what's currently queued, or find out why a PR was removed from the queue.
context-labs/whip
GraphQL APIs in Go using gqlgen or graphql-go. An agent skill from context-labs/whip.
github/awesome-copilot
Copilot left 14 review comments on your PR — half are nits. An agent skill from github/awesome-copilot.
karanhudia/borg-ui
Live Borg debugging by exec-ing into the borg-web-ui Docker container.
karanhudia/borg-ui
Pull latest origin/main into the current local branch and resolve merge conflicts (aka update-branch).
karanhudia/borg-ui
Push current branch changes to origin and create or update the corresponding pull request; use when asked to push, publish updates, or create pull request.
karanhudia/borg-ui
Continue a multi-phase engineering spec from its progress table.
Categories
Use Symphony's lineargraphql client tool for raw Linear GraphQL operations such as comment editing and upload flows. Linear is an agent skill from karanhudia/borg-ui. Use Symphony's lineargraphql client tool for raw Linear GraphQL operations such as comment editing and upload flows.
Linear fits situations like: tasks that involve GraphQL.
Run `npx skills add karanhudia/borg-ui --skill linear -a claude-code`. Or copy the skill folder (.codex/skills/linear in karanhudia/borg-ui) into .claude/skills/linear in your project. Claude Code loads it when a task matches its description.
Run `npx skills add karanhudia/borg-ui --skill linear -a codex`. Or copy the skill folder (.codex/skills/linear in karanhudia/borg-ui) into .agents/skills/linear in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add karanhudia/borg-ui --skill linear -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/linear, .gemini/skills/linear, .github/skills/linear and .opencode/skills/linear in your project.
Going by SKILL.md and its folder, Linear needs the command-line tools its instructions call (curl).
SKILL.md contains no URLs. Its commands use curl, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Linear is published under the AGPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.7k tokens (SKILL.md is roughly 6.8k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Linear: Cuga GitHub Issues (cuga-project/cuga-agent, 895 stars), Distilled SDK (alchemy-run/distilled, 431 stars), Review PR Comments (latitude-dev/latitude-llm, 4.7k stars) and Merge Queue (fullsend-ai/fullsend, 147 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
karanhudia (a GitHub user) maintains it in karanhudia/borg-ui, which has 1,656 GitHub stars. The repository holds 5 skills in this directory. The repository was last updated on October 7, 2026.
Source: karanhudia/borg-ui on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.