linear-bulk
Apply the same change to many Linear issues at once. Dry-run by default.
Audit Linear issues for problems (missing labels, stale, duplicates, wrong state, orphaned, unactionable) and propose fixes
> /plugin marketplace add Elnora-AI/elnora-linear > /plugin install linear-workspace@elnora-linear
How it fires
How this command gets triggered: by you, by Claude, or both.
/linear-cleanupContext preview
What this command does when you run it.
Audit Linear issues for problems (missing labels, stale, duplicates, wrong state, orphaned, unactionable) and propose fixes
name: linear-cleanup description: Audit Linear issues for problems (missing labels, stale, duplicates, wrong state, orphaned, unactionable) and propose fixes argument-hint: "<scope: all | team key | project name>" allowed-tools: Bash, AskUserQuestion, Read
Audit Linear issues in **{{scope}}** and propose fixes. Walks six checks, summarizes findings, and asks per-category before any mutation. All `elnora-linear` mutations default to dry-run — explicit `--yes` is required to commit.
elnora-linear issues list --team "<scope>" --limit 100 --output json \
| jq '.[] | select((.labels // []) | map(.name) | any(startswith("Type:")) | not)'For each issue missing the team's required label prefixes (see `references/label-policy.json` or `elnora-linear teams get <key>`), suggest labels from title/description keywords. Repeat the `startswith` check for every required prefix on the team (`Layer:`, `Source:`, etc.).
elnora-linear cleanup --team "<scope>" --inactive-days 30 --action comment --output text
Dry-run by default. Offer: comment / close / cancel / skip. Apply chosen action with `--yes`.
elnora-linear issues list --team "<scope>" --limit 200 --output json
For each pair of issues with >70% title similarity, surface them as candidates. Suggest `elnora-linear relations create --type duplicate-of` or merge.
elnora-linear projects list --team "<scope>" --output json elnora-linear issues list --team "<scope>" --limit 200 --output json
Cross-check each issue's state against its project's status (a `Completed` project shouldn't have `In Progress` issues; a `Backlog` project shouldn't have `In Progress` issues). Flag mismatches.
elnora-linear issues list --team "<scope>" --limit 200 --output json \ | jq '.[] | select(.project == null)'
For each orphan, suggest the most likely project based on title/description vs `elnora-linear projects list --output json`.
elnora-linear issues list --team "<scope>" --limit 200 --output json
Flag any issue where: description is empty or < 50 chars, no acceptance criteria, or the title is vague (e.g. "fix it", "thing broken"). Offer a rewrite via `linear-issue-reviewer` or archive.
1. **Run all six checks** — print a summary table: category, count, severity. 2. **For each non-empty category** — show the matching issues with proposed fixes; use `AskUserQuestion` to offer:
3. **Execute** the chosen action via `elnora-linear issues update <ID> --labels "..."`, `… --state "..."`, `… --project "..."`, etc. Every mutation goes through the standard CLI gates (no permanent deletes without `--yes`). 4. **Report** — fixed count, archived count, flagged-for-manual-review count.
The full Linear API as a CLI, a Claude Code plugin, and a signal-driven hygiene curator — purpose-built for AI coding agents to create, edit, review, and curate Linear issues safely at scale.
Repo: Elnora-AI/elnora-linear
Apply the same change to many Linear issues at once. Dry-run by default.
Run the curator — collect signals from configured signal sources and report
Search Linear issues by keyword, team, assignee, state, or priority
Populate or refresh the Linear reference files (teams, projects, users, workflows)