Extended Linear operations - manage project milestones and download images from issues. Use for project phases (Alpha, Beta, Launch), milestone management, or extracting images/screenshots from issues. Triggers: "show milestones", "create milestone", "update milestone", "project phases", "download images from issue", "get issue images", "extract screenshots".
Manages Linear project milestones (create, update, list, delete) and downloads images from issues. Triggers on commands like "show milestones", "create milestone", or "download images from issue CND-121".
/plugin marketplace add SaharCarmel/Sahar-claude-code-marketplace/plugin install linear-extended@sahar-claude-code-marketplaceThis skill inherits all available tools. When active, it can use any tool Claude has access to.
scripts/auth-login.jsscripts/auth-logout.jsscripts/auth-status.jsscripts/issue-images.jsscripts/lib/token-store.jsscripts/milestones-create.jsscripts/milestones-delete.jsscripts/milestones-list.jsscripts/milestones-update.jsscripts/package-lock.jsonscripts/package.jsonscripts/project-get.jsExtended operations for Linear: milestones and issue image downloads.
Install dependencies once:
cd <skill-dir>/scripts && npm install
Two methods supported: OAuth (recommended) or API key.
First, create an OAuth app in Linear:
urn:ietf:wg:oauth:2.0:oobclient_id and client_secretThen authenticate:
# First time: provide credentials (saved for future use)
node <skill-dir>/scripts/auth-login.js --client-id "YOUR_CLIENT_ID" --client-secret "YOUR_CLIENT_SECRET"
# Subsequent logins (credentials remembered)
node <skill-dir>/scripts/auth-login.js
Follow the prompts: open the URL in browser, authorize, paste the code back.
Set LINEAR_API_KEY environment variable with a personal API key from Linear Settings > API.
node <skill-dir>/scripts/auth-status.js
node <skill-dir>/scripts/auth-logout.js # Keep client credentials
node <skill-dir>/scripts/auth-logout.js --all # Clear everything
node <skill-dir>/scripts/milestones-list.js <project-name-or-id>
Example:
node <skill-dir>/scripts/milestones-list.js Candlekeep
node <skill-dir>/scripts/milestones-create.js <project> --name "Name" [--description "..."] [--target-date "YYYY-MM-DD"]
Example:
node <skill-dir>/scripts/milestones-create.js Candlekeep --name "Alpha" --description "Internal testing" --target-date "2025-01-15"
node <skill-dir>/scripts/milestones-update.js <milestone-id> [--name "..."] [--description "..."] [--target-date "..."]
Example:
node <skill-dir>/scripts/milestones-update.js abc123 --name "Beta" --target-date "2025-02-01"
node <skill-dir>/scripts/milestones-delete.js <milestone-id>
node <skill-dir>/scripts/project-get.js <project-name-or-id> [--with-milestones]
Example:
node <skill-dir>/scripts/project-get.js Candlekeep --with-milestones
Download images from a Linear issue (attachments and inline images from description):
node <skill-dir>/scripts/issue-images.js <issue-id> [--output-dir <path>] [--list-only]
Options:
--output-dir <path>: Directory to save images (default: ./linear-images)--list-only: Show image URLs without downloadingExamples:
# Download all images from issue CND-121
node <skill-dir>/scripts/issue-images.js CND-121
# List images without downloading
node <skill-dir>/scripts/issue-images.js CND-121 --list-only
# Save to specific directory
node <skill-dir>/scripts/issue-images.js CND-121 --output-dir /tmp/issue-images
All scripts output JSON. Success includes data, errors include { "error": "message" }.