Unnamed Skill
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".
$ Installer
git clone https://github.com/SaharCarmel/Sahar-claude-code-marketplace /tmp/Sahar-claude-code-marketplace && cp -r /tmp/Sahar-claude-code-marketplace/plugins/linear-extended/skills/linear-extended ~/.claude/skills/Sahar-claude-code-marketplace// tip: Run this command in your terminal to install the skill
name: linear-extended description: 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".
Linear Extended
Extended operations for Linear: milestones and issue image downloads.
Setup
Install dependencies once:
cd <skill-dir>/scripts && npm install
Authentication
Two methods supported: OAuth (recommended) or API key.
Option A: OAuth Login (Recommended)
First, create an OAuth app in Linear:
- Go to Linear Settings > API > OAuth Applications
- Create new app with redirect URI:
urn:ietf:wg:oauth:2.0:oob - Save the
client_idandclient_secret
Then 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.
Option B: API Key
Set LINEAR_API_KEY environment variable with a personal API key from Linear Settings > API.
Check Auth Status
node <skill-dir>/scripts/auth-status.js
Logout
node <skill-dir>/scripts/auth-logout.js # Keep client credentials
node <skill-dir>/scripts/auth-logout.js --all # Clear everything
List Milestones
node <skill-dir>/scripts/milestones-list.js <project-name-or-id>
Example:
node <skill-dir>/scripts/milestones-list.js Candlekeep
Create Milestone
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"
Update Milestone
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"
Delete Milestone
node <skill-dir>/scripts/milestones-delete.js <milestone-id>
Get Project with Milestones
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 Issue Images
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 downloading
Examples:
# 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
Output
All scripts output JSON. Success includes data, errors include { "error": "message" }.
Repository
