/plugin install linear-assistant@cosmictaco-marketplace- Get your API key from https://linear.app/settings/api-keys
- Add it to your project's
.envfile at the root:
echo "LINEAR_API_KEY=lin_api_xxx" >> .envbun run cli initThis will:
- Auto-detect your Linear teams from the API key
- Show you available teams to choose from
- Ask about your workflow (e.g., "Review todos, check requirements, assign to developers")
- Offer workflow presets (Review & Analyze, Ralph Agent, Custom)
- Generate a personalized skill in
.claude/skills/linear-{team}-workflow.md
Example output:
π Linear Assistant - Initialization Wizard
This wizard will help set up your personalized Linear workflow.
π Fetching your Linear teams...
1. ASCOP (ASC) - ID: 7d832321-d9bc-41bd-aeca-aa1f2675d5da
2. Engineering (ENG) - ID: 9f4c7d2e-a1b3-4e5f-8c9d-2b6a4f7e8c9d
Select team number (or paste ID directly): 1
β
Selected: ASCOP
π Describe your Linear workflow:
(e.g., 'Review all todos, check requirements, assign to developers')
Your workflow: Review client todos, analyze requirements, update descriptions, assign to developers
Would you like to use a workflow preset? (yes/no): yes
Available presets:
1. Review & Analyze - Review todos, analyze, update, assign
2. Ralph Agent - Create tasks and assign to Ralph agents
3. Custom - Use your own workflow
Select preset (1-3): 1
β
Workflow skill created!
π Location: /Users/john/.claude/skills/linear-ascop-workflow/SKILL.md
π‘ Next step: Load the skill with /skill in Claude
In Claude, type:
/skill linear-ascop-workflow
This loads your personalized skill with all the commands documented.
Now you can use linear commands directly from Claude. Your skill documents all available commands:
# List all todos
linear list-issues --team 7d832321-d9bc-41bd-aeca-aa1f2675d5da --state "Todo"
# Review a specific issue
linear get-issue --team 7d832321-d9bc-41bd-aeca-aa1f2675d5da --id ASC-123
# After analyzing, update the title and move to In Progress
linear update-issue --team 7d832321-d9bc-41bd-aeca-aa1f2675d5da --id ASC-123 \
--title "Better title" \
--description "Updated requirements" \
--state "In Progress"
# Add a comment
linear add-comment --team 7d832321-d9bc-41bd-aeca-aa1f2675d5da --id ASC-123 \
--message "Reviewed and ready to implement"
# When done, move to In Review
linear update-issue --team 7d832321-d9bc-41bd-aeca-aa1f2675d5da --id ASC-123 \
--state "In Review"Your generated skill includes a step-by-step guide:
Step 1: List all todos
linear list-issues --team 7d832321-d9bc-41bd-aeca-aa1f2675d5da --state "Todo"Output:
ID | Title | State | Assignee | Priority
--------|--------------------------------|--------|-------------|----------
ASC-120 | Fix login dropdown menu | Todo | Unassigned | 2
ASC-121 | Add password reset flow | Todo | Unassigned | 2
ASC-122 | Update user profile page | Todo | Unassigned | 3
Step 2: Review each issue
linear get-issue --team 7d832321-d9bc-41bd-aeca-aa1f2675d5da --id ASC-120Output:
π Issue: ASC-120 - Fix login dropdown menu
Status: Todo
Assignee: Unassigned
Priority: 2
URL: https://linear.app/ascop/issue/ASC-120
Description:
The dropdown menu on the login page doesn't close when clicking outside.
Users get stuck and have to refresh the page.
Client requirement: Must close on click-outside or ESC key
π Images (1):
1. https://uploads.linear.app/abc/def/screenshot.png
π¬ Comments (2):
@alice (2024-01-15):
Can you add a video of the bug?
@bob (2024-01-16):
Added screenshot, user says it happens on Chrome & Firefox
Step 3: Analyze and update
After reviewing, you decide:
- Title needs clarification: "Fix dropdown - close on click-outside + ESC"
- Priority is correct (2 = High)
- Assign to John (developer)
linear update-issue --team 7d832321-d9bc-41bd-aeca-aa1f2675d5da --id ASC-120 \
--title "Fix dropdown - close on click-outside + ESC key" \
--description "Dropdown menu on login page must close when: (1) clicking outside, (2) pressing ESC. Currently doesn't close. Affects Chrome & Firefox. See screenshot in comments." \
--state "In Progress" \
--assignee john-idStep 4: Add follow-up comment
linear add-comment --team 7d832321-d9bc-41bd-aeca-aa1f2675d5da --id ASC-120 \
--message "Reviewed and assigned to John. Updated title and description based on client feedback. Ready to implement."Step 5: When John finishes
linear update-issue --team 7d832321-d9bc-41bd-aeca-aa1f2675d5da --id ASC-120 \
--state "In Review"
linear add-comment --team 7d832321-d9bc-41bd-aeca-aa1f2675d5da --id ASC-120 \
--message "Implementation complete. Ready for QA review."You can work with multiple Linear projects by creating different workflow skills for each:
bun run cli init # Run again for a different team
# Select team 2: Engineering
# Creates: .claude/skills/linear-engineering-workflow/SKILL.md
/skill linear-engineering-workflow # Load that workflowNow you have both:
/skill linear-ascop-workflowβ for ASCOP project/skill linear-engineering-workflowβ for Engineering project
Each uses its own team ID and workflow.
The wizard automatically finds all teams you have access to. No manual ID lookups needed.
When you get-issue, it automatically extracts image URLs from descriptions:
π Images (2):
1. https://uploads.linear.app/abc/def/screenshot.png
2. https://uploads.linear.app/xyz/qrs/error.png
You can download these to review locally.
All comments are displayed with author and timestamp, so you see the full context.
All commands support --json for automation:
linear list-issues --team 7d832321... --state "Todo" --jsonReturns structured JSON for piping to other tools.
Each workflow skill is generated based on YOUR workflow:
- Your description is documented
- Your team ID is pre-filled
- Workflow presets (Review, Ralph) include your specific steps
Make sure your .env file exists at the project root:
cat .env | grep LINEAR_API_KEY
# Should show: LINEAR_API_KEY=lin_api_xxxList available teams:
linear list-teamsMake sure you're using the exact team ID from the list.
Different teams have different workflow states. Use the exact state name from Linear UI (e.g., "Todo", "In Progress", "In Review", "Done").
Make sure you:
- Have
buninstalled - Ran
bun run cli initfrom your project root - Have LINEAR_API_KEY in
.env - Loaded the generated skill with
/skill
List issues with optional filters
linear list-issues --team <TEAM_ID> [--state <STATE>] [--json]Get full details of a specific issue
linear get-issue --team <TEAM_ID> --id <ISSUE_ID> [--json]Create a new issue
linear create-issue --team <TEAM_ID> --title <TITLE> \
[--description <DESC>] [--priority <1-4>] [--assignee <USER_ID>] [--json]Priority: 1 (Urgent), 2 (High), 3 (Medium), 4 (Low)
Update issue fields
linear update-issue --team <TEAM_ID> --id <ISSUE_ID> \
[--state <STATE>] [--title <TITLE>] [--description <DESC>] \
[--assignee <USER_ID>] [--priority <1-4>] [--json]Add a comment to an issue
linear add-comment --team <TEAM_ID> --id <ISSUE_ID> --message <MESSAGE> [--json]List all projects in a team
linear list-projects --team <TEAM_ID> [--json]List cycles/sprints
linear list-cycles --team <TEAM_ID> [--active-only] [--json]List all available teams
linear list-teams [--json]- Always review images - Issue descriptions often contain important screenshots
- Check comments - Context from the team is in comments
- Use --json - When piping to other tools or scripts
- Customize your skill - After generation, you can edit the skill to add custom steps
- One workflow per team - Keep things organized by team
- Batch updates - Process issues in groups (todos first, then assigned, etc.)
If you selected the "Ralph Agent" preset, your skill includes steps for creating Ralph tasks:
# Step 1: Get the issue
linear get-issue --team 7d832321... --id ASC-123
# Step 2: Analyze and create Ralph task with issue context
# (You create the Ralph task with the issue data)
# Step 3: Move to In Progress
linear update-issue --team 7d832321... --id ASC-123 --state "In Progress"
linear add-comment --team 7d832321... --id ASC-123 --message "Assigned to Ralph agent"
# Step 4: When Ralph completes
linear update-issue --team 7d832321... --id ASC-123 --state "Done"
linear add-comment --team 7d832321... --id ASC-123 --message "Completed by Ralph agent"Need help? Check the generated skill file or run:
linear help <command>