AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified MIT Self-run

Meaningful Linear Issues

skill-stealth-engine-skills-meaningful-linear-issues · by stealth-engine

Create complete, analytics-ready Linear issues in ONE pass — resolve the right project (never guess it), and proactively fill the metadata that's technically optional but matters for planning/analytics: priority, estimate, labels (a Type + an Area from the team's existing taxonomy), milestone, assignee, cycle, and relations. Use when asked to 'create/file/open a Linear issue', 'log a ticket', 'ad…

No reviews yet
0 installs
13 views
0.0% view→install

Install

$ agentstack add skill-stealth-engine-skills-meaningful-linear-issues

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-stealth-engine-skills-meaningful-linear-issues)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
1mo ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Meaningful Linear Issues? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Meaningful Linear issues

A good issue is not just a good description — that's the easy half. The half agents skip is the metadata that makes Linear actually work as a planning tool: estimates feed cycle velocity, labels feed breakdowns, milestones feed roadmaps, the project feeds everything. Those fields are optional in the API, so agents leave them blank and the user has to come back and ask again.

Flip the default: metadata is opt-OUT, not opt-in. Resolve and fill it before calling save_issue, in one pass — propose concrete values, don't omit.

Cardinal rule: never guess the project

The single worst failure is dropping an issue into the wrong/random project. Resolve the project in this order — stop at the first that's certain:

  1. Context — the issue's repo/area maps to a known project; the user named it; a

sibling issue you're relating to has one.

  1. Confirm — call [list_projects](#discover-valid-values) and match by name; if

one clearly fits, state which and proceed.

  1. Ask — if it's still ambiguous, ask the user which project rather than

picking one. A missing project is recoverable; a wrong one quietly pollutes the wrong roadmap.

Never pass a project you inferred from vibes. Team is required too — usually unambiguous from the project, but resolve it the same way.

The one-pass workflow

  1. Discover what's available (only what you don't already know): projects, the

team's label taxonomy, milestones, the current cycle, assignable users.

  1. Draft the issue with every applicable field filled (checklist below).
  2. Create with one save_issue call. If anything was genuinely a judgment call

(estimate, priority), state the values you chose so the user can correct one — that's still one pass, not "I left them blank, ask me again."

Create vs. backfill — mind the id

Same checklist, two save_issue modes — don't conflate them:

  • Create (new issue): save_issue with no id. Fill everything below.
  • Backfill (existing bare issue): save_issue WITH its idupdate, don't

create. Omitting the id here would make a duplicate. get_issue first if you need to see what's already set, then pass only the fields you're adding. labels replaces the whole set — include existing labels alongside the new ones. Relations (blocks / blockedBy / relatedTo) are append-only — adding one won't drop existing links (use removeBlocks / removeBlockedBy / removeRelatedTo to remove). Other fields you don't pass are left untouched.

Metadata checklist — fill before save_issue

| Field | How to set it well | | --- | --- | | team (required) | From the project. list_teams / get_team if unknown. | | project | Resolve, never guess (above). | | title | Imperative, specific, scannable. Lead with the verb + the object. | | description | The implementation detail (see [template](#description-template)). | | priority | 1 Urgent · 2 High · 3 Medium · 4 Low · 0 None. Infer from impact/urgency; default 3 for normal work, ask if it's clearly load-bearing. | | estimate | Set a real value; Linear snaps it to the team's scale, so you don't need the scale up front — but read back and surface the stored value (it may change: 3 on an exponential team 0,1,2,4,8,16 returns 4; Fibonacci 0,1,2,3,5,8 keeps 3). get_team doesn't expose the scale (as of this MCP version) — infer it from existing issues' estimates (list_issues) only if you need exact pointing. Some teams disable estimates — if save_issue rejects it, drop the field. | | labels | Pick from the existing taxonomy (list_issue_labels for the team) — don't invent labels. Typically one Type (Feature / Bug / Improvement / Chore / Docs / Refactor / Security / Performance / Test / …) and one Area (the relevant module/domain). Match the team's grouped labels rather than guessing names. | | assignee | "me", the named owner, or the project/issue's usual owner (list_users to resolve a name/email). Don't leave unassigned if an owner is obvious. | | milestone | list_milestones for the project; attach if one fits the work. (None exist? skip — don't fabricate.) | | cycle | Set the current cycle (list_cyclescurrent) for active work unless the user opts out — don't rely on auto-add, which some teams disable, leaving the issue out of every cycle (and out of velocity). Skip only for backlog/future work that isn't for the current cycle. | | relations | parentId for sub-work; blocks / blockedBy for ordering; relatedTo for siblings. Link issues you reference in the description — it's cheap and powers dependency views. | | dueDate | ISO date (YYYY-MM-DD). Set only when there's a real deadline — a launch, a dependency, a commitment. Don't fabricate one; most issues have none. |

If a field genuinely doesn't apply (e.g. no milestones exist), skip it knowingly — the goal is "nothing useful left blank," not "every field stuffed."

Discover valid values

Only the values you don't already have in context. These are the Linear MCP tools:

  • list_projects (filter by name/team) — resolve the project.
  • list_issue_labels (by team) — the label taxonomy; reuse, don't invent.
  • list_milestones (by project) — fitting milestone, if any.
  • list_cycles (by teamId, type: current) — to set the current cycle (don't rely on auto-add).
  • list_users (by name/email, or "me") — resolve an assignee.
  • list_teams / get_team — when the team isn't obvious from the project.

Then create with save_issue (omit id to create). labels and assignee accept names or IDs; priority is the 0–4 int.

Description template

Keep what makes implementation unambiguous; drop ceremony:


## Context / problem

## Scope

## Acceptance

Use real newlines and markdown, not escaped \n. Mention related issues by ID so Linear links them (and add them to relatedTo).

Gotchas

  • Don't guess the project — the one unrecoverable mistake. Ask if unsure.
  • Estimate snaps to the team's scale (a passed 3 stores as 4 on an exponential

team) — read back and surface the stored value so the snap isn't silent; and some teams disable estimates entirely — drop the field if it's rejected.

  • Labels must already exist — pull them from list_issue_labels and pass the

exact names; creating ad-hoc labels pollutes the taxonomy. Prefer one Type + one Area.

  • Milestone belongs to a project, cycle belongs to a team — don't cross them; a

milestone from another project will be rejected.

  • Don't rely on cycle auto-add — some teams disable it, leaving the issue out of

every cycle. Set the current cycle explicitly; skip only for backlog/future work.

  • One pass, not two — if you're unsure of priority/estimate, pick a sensible value

and say so; don't ship a bare issue and wait to be asked for the rest.

Pre-flight checklist (before save_issue)

  • [ ] Project resolved (from context/confirmed/asked) — not guessed.
  • [ ] Team set; title imperative + specific; description has context + scope + acceptance.
  • [ ] Priority set; estimate set (or knowingly skipped if the team disables it).
  • [ ] Labels: a Type (always) + an Area if one fits — from the existing taxonomy, not invented.
  • [ ] Assignee set (or deliberately left for triage); milestone attached if one fits.
  • [ ] Relations linked for any issues/PRs referenced.
  • [ ] Anything you judged (priority/estimate) stated back to the user in your reply.

See also

  • [conventional-commits](../conventional-commits/SKILL.md) — the matching discipline

for commit/PR titles, so the issue → branch → PR → release chain stays clean.

Sources

  • Linear MCP tool surface (save_issue, list_projects, list_issue_labels,

list_milestones, list_cycles, list_users, get_team) and observed behaviour: estimates snap to the team's scale, new issues auto-join the active cycle when the team enables auto-add (don't rely on it), labels are a grouped Type/Area taxonomy that must pre-exist.

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.