feat: add 61 new skills from VoltAgent repository
- 27 official team skills (Sentry, Trail of Bits, Expo, Hugging Face, etc.) - 34 community skills including context engineering suite - All skills validated and compliant with V4 quality bar - Complete source attribution maintained Skills added: - Official: commit, create-pr, find-bugs, iterate-pr, culture-index, fix-review, sharp-edges, expo-deployment, upgrading-expo, hugging-face-cli, hugging-face-jobs, vercel-deploy-claimable, design-md, using-neon, n8n-*, swiftui-expert-skill, fal-*, deep-research, imagen, readme, screenshots - Community: frontend-slides, linear-claude-skill, skill-rails-upgrade, context-*, multi-agent-patterns, tool-design, evaluation, memory-systems, terraform-skill, and more
This commit is contained in:
543
skills/linear-claude-skill/SKILL.md
Normal file
543
skills/linear-claude-skill/SKILL.md
Normal file
@@ -0,0 +1,543 @@
|
||||
---
|
||||
name: linear-claude-skill
|
||||
description: "Manage Linear issues, projects, and teams"
|
||||
allowed-tools:
|
||||
- WebFetch(domain: linear.app)
|
||||
source: "https://github.com/wrsmith108/linear-claude-skill"
|
||||
risk: safe
|
||||
---
|
||||
|
||||
## When to Use This Skill
|
||||
|
||||
Manage Linear issues, projects, and teams
|
||||
|
||||
Use this skill when working with manage linear issues, projects, and teams.
|
||||
# Linear
|
||||
|
||||
Tools and workflows for managing issues, projects, and teams in Linear.
|
||||
|
||||
---
|
||||
|
||||
## ⚠️ Tool Availability (READ FIRST)
|
||||
|
||||
**This skill supports multiple tool backends. Use whichever is available:**
|
||||
|
||||
1. **MCP Tools (mcp__linear)** - Use if available in your tool set
|
||||
2. **Linear CLI (`linear` command)** - Always available via Bash
|
||||
3. **Helper Scripts** - For complex operations
|
||||
|
||||
**If MCP tools are NOT available**, use the Linear CLI via Bash:
|
||||
|
||||
```bash
|
||||
# View an issue
|
||||
linear issues view ENG-123
|
||||
|
||||
# Create an issue
|
||||
linear issues create --title "Issue title" --description "Description"
|
||||
|
||||
# Update issue status (get state IDs first)
|
||||
linear issues update ENG-123 -s "STATE_ID"
|
||||
|
||||
# Add a comment
|
||||
linear issues comment add ENG-123 -m "Comment text"
|
||||
|
||||
# List issues
|
||||
linear issues list
|
||||
```
|
||||
|
||||
**Do NOT report "MCP tools not available" as a blocker** - use CLI instead.
|
||||
|
||||
---
|
||||
|
||||
|
||||
## When to Use This Skill
|
||||
|
||||
Manage Linear issues, projects, and teams
|
||||
|
||||
Use this skill when working with manage linear issues, projects, and teams.
|
||||
## 🔐 Security: Varlock Integration
|
||||
|
||||
**CRITICAL**: Never expose API keys in terminal output or Claude's context.
|
||||
|
||||
### Safe Commands (Always Use)
|
||||
|
||||
```bash
|
||||
# Validate LINEAR_API_KEY is set (masked output)
|
||||
varlock load 2>&1 | grep LINEAR
|
||||
|
||||
# Run commands with secrets injected
|
||||
varlock run -- npx tsx scripts/query.ts "query { viewer { name } }"
|
||||
|
||||
# Check schema (safe - no values)
|
||||
cat .env.schema | grep LINEAR
|
||||
```
|
||||
|
||||
### Unsafe Commands (NEVER Use)
|
||||
|
||||
```bash
|
||||
# ❌ NEVER - exposes key to Claude's context
|
||||
linear config show
|
||||
echo $LINEAR_API_KEY
|
||||
printenv | grep LINEAR
|
||||
cat .env
|
||||
```
|
||||
|
||||
### Setup for New Projects
|
||||
|
||||
1. Create `.env.schema` with `@sensitive` annotation:
|
||||
```bash
|
||||
# @type=string(startsWith=lin_api_) @required @sensitive
|
||||
LINEAR_API_KEY=
|
||||
```
|
||||
|
||||
2. Add `LINEAR_API_KEY` to `.env` (never commit this file)
|
||||
|
||||
3. Configure MCP to use environment variable:
|
||||
```json
|
||||
{
|
||||
"mcpServers": {
|
||||
"linear": {
|
||||
"env": { "LINEAR_API_KEY": "${LINEAR_API_KEY}" }
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
4. Use `varlock load` to validate before operations
|
||||
|
||||
---
|
||||
|
||||
## Quick Start (First-Time Users)
|
||||
|
||||
### 1. Check Your Setup
|
||||
|
||||
Run the setup check to verify your configuration:
|
||||
|
||||
```bash
|
||||
npx tsx ~/.claude/skills/linear/scripts/setup.ts
|
||||
```
|
||||
|
||||
This will check:
|
||||
- LINEAR_API_KEY is set and valid
|
||||
- @linear/sdk is installed
|
||||
- Linear CLI availability (optional)
|
||||
- MCP configuration (optional)
|
||||
|
||||
### 2. Get API Key (If Needed)
|
||||
|
||||
If setup reports a missing API key:
|
||||
|
||||
1. Open [Linear](https://linear.app) in your browser
|
||||
2. Go to **Settings** (gear icon) -> **Security & access** -> **Personal API keys**
|
||||
3. Click **Create key** and copy the key (starts with `lin_api_`)
|
||||
4. Add to your environment:
|
||||
|
||||
```bash
|
||||
# Option A: Add to shell profile (~/.zshrc or ~/.bashrc)
|
||||
export LINEAR_API_KEY="lin_api_your_key_here"
|
||||
|
||||
# Option B: Add to Claude Code environment
|
||||
echo 'LINEAR_API_KEY=lin_api_your_key_here' >> ~/.claude/.env
|
||||
|
||||
# Then reload your shell or restart Claude Code
|
||||
```
|
||||
|
||||
### 3. Test Connection
|
||||
|
||||
Verify everything works:
|
||||
|
||||
```bash
|
||||
npx tsx ~/.claude/skills/linear/scripts/query.ts "query { viewer { name } }"
|
||||
```
|
||||
|
||||
You should see your name from Linear.
|
||||
|
||||
### 4. Common Operations
|
||||
|
||||
```bash
|
||||
# Create issue in a project
|
||||
npx tsx scripts/linear-ops.ts create-issue "Project" "Title" "Description"
|
||||
|
||||
# Update issue status
|
||||
npx tsx scripts/linear-ops.ts status Done ENG-123 ENG-124
|
||||
|
||||
# Create sub-issue
|
||||
npx tsx scripts/linear-ops.ts create-sub-issue ENG-100 "Sub-task" "Details"
|
||||
|
||||
# Update project status
|
||||
npx tsx scripts/linear-ops.ts project-status "Phase 1" completed
|
||||
|
||||
# Show all commands
|
||||
npx tsx scripts/linear-ops.ts help
|
||||
```
|
||||
|
||||
See [Project Management Commands](#project-management-commands) for full reference.
|
||||
|
||||
---
|
||||
|
||||
|
||||
## When to Use This Skill
|
||||
|
||||
Manage Linear issues, projects, and teams
|
||||
|
||||
Use this skill when working with manage linear issues, projects, and teams.
|
||||
## Project Planning Workflow
|
||||
|
||||
### Create Issues in the Correct Project from the Start
|
||||
|
||||
**Best Practice**: When planning a new phase or initiative, create the project and its issues together in a single planning session. Avoid creating issues in a catch-all project and moving them later.
|
||||
|
||||
#### Recommended Workflow
|
||||
|
||||
1. **Create the project first**:
|
||||
```bash
|
||||
npx tsx scripts/linear-ops.ts create-project "Phase X: Feature Name" "My Initiative"
|
||||
```
|
||||
|
||||
2. **Set project state to Planned**:
|
||||
```bash
|
||||
npx tsx scripts/linear-ops.ts project-status "Phase X: Feature Name" planned
|
||||
```
|
||||
|
||||
3. **Create issues directly in the project**:
|
||||
```bash
|
||||
npx tsx scripts/linear-ops.ts create-issue "Phase X: Feature Name" "Parent task" "Description"
|
||||
npx tsx scripts/linear-ops.ts create-sub-issue ENG-XXX "Sub-task 1" "Description"
|
||||
npx tsx scripts/linear-ops.ts create-sub-issue ENG-XXX "Sub-task 2" "Description"
|
||||
```
|
||||
|
||||
4. **Update project state when work begins**:
|
||||
```bash
|
||||
npx tsx scripts/linear-ops.ts project-status "Phase X: Feature Name" in-progress
|
||||
```
|
||||
|
||||
#### Why This Matters
|
||||
|
||||
- **Traceability**: Issues are linked to their project from creation
|
||||
- **Metrics**: Project progress tracking is accurate from day one
|
||||
- **Workflow**: No time wasted moving issues between projects
|
||||
- **Organization**: Linear views and filters work correctly
|
||||
|
||||
#### Anti-Pattern to Avoid
|
||||
|
||||
❌ Creating issues in a "holding" project and moving them later:
|
||||
```bash
|
||||
# Don't do this
|
||||
create-issue "Phase 6A" "New feature" # Wrong project
|
||||
# Later: manually move to Phase X # Extra work
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Project Management Commands
|
||||
|
||||
### project-status
|
||||
|
||||
Update a project's state in Linear. Accepts user-friendly terminology that maps to Linear's API.
|
||||
|
||||
```bash
|
||||
npx tsx scripts/linear-ops.ts project-status <project-name> <state>
|
||||
```
|
||||
|
||||
**Valid States:**
|
||||
| Input | Description | API Value |
|
||||
|-------|-------------|-----------|
|
||||
| `backlog` | Not yet started | backlog |
|
||||
| `planned` | Scheduled for future | planned |
|
||||
| `in-progress` | Currently active | started |
|
||||
| `paused` | Temporarily on hold | paused |
|
||||
| `completed` | Successfully finished | completed |
|
||||
| `canceled` | Will not be done | canceled |
|
||||
|
||||
**Examples:**
|
||||
```bash
|
||||
# Start working on a project
|
||||
npx tsx scripts/linear-ops.ts project-status "Phase 8: MCP Decision Engine" in-progress
|
||||
|
||||
# Mark project complete
|
||||
npx tsx scripts/linear-ops.ts project-status "Phase 8" completed
|
||||
|
||||
# Partial name matching works
|
||||
npx tsx scripts/linear-ops.ts project-status "Phase 8" paused
|
||||
```
|
||||
|
||||
### link-initiative
|
||||
|
||||
Link an existing project to an initiative.
|
||||
|
||||
```bash
|
||||
npx tsx scripts/linear-ops.ts link-initiative <project-name> <initiative-name>
|
||||
```
|
||||
|
||||
**Examples:**
|
||||
```bash
|
||||
# Link a project to an initiative
|
||||
npx tsx scripts/linear-ops.ts link-initiative "Phase 8: MCP Decision Engine" "Q1 Goals"
|
||||
|
||||
# Partial matching works
|
||||
npx tsx scripts/linear-ops.ts link-initiative "Phase 8" "Q1 Goals"
|
||||
```
|
||||
|
||||
### unlink-initiative
|
||||
|
||||
Remove a project from an initiative.
|
||||
|
||||
```bash
|
||||
npx tsx scripts/linear-ops.ts unlink-initiative <project-name> <initiative-name>
|
||||
```
|
||||
|
||||
**Examples:**
|
||||
```bash
|
||||
# Remove incorrect link
|
||||
npx tsx scripts/linear-ops.ts unlink-initiative "Phase 8" "Linear Skill"
|
||||
|
||||
# Clean up test links
|
||||
npx tsx scripts/linear-ops.ts unlink-initiative "Test Project" "Q1 Goals"
|
||||
```
|
||||
|
||||
**Error Handling:**
|
||||
- Returns error if project is not linked to the specified initiative
|
||||
- Returns error if project or initiative not found
|
||||
|
||||
### Complete Project Lifecycle Example
|
||||
|
||||
```bash
|
||||
# 1. Create project linked to initiative
|
||||
npx tsx scripts/linear-ops.ts create-project "Phase 11: New Feature" "Q1 Goals"
|
||||
|
||||
# 2. Set state to planned
|
||||
npx tsx scripts/linear-ops.ts project-status "Phase 11" planned
|
||||
|
||||
# 3. Create issues in the project
|
||||
npx tsx scripts/linear-ops.ts create-issue "Phase 11" "Parent task" "Description"
|
||||
npx tsx scripts/linear-ops.ts create-sub-issue ENG-XXX "Sub-task 1" "Details"
|
||||
|
||||
# 4. Start work - update to in-progress
|
||||
npx tsx scripts/linear-ops.ts project-status "Phase 11" in-progress
|
||||
|
||||
# 5. Mark issues done
|
||||
npx tsx scripts/linear-ops.ts status Done ENG-XXX ENG-YYY
|
||||
|
||||
# 6. Complete project
|
||||
npx tsx scripts/linear-ops.ts project-status "Phase 11" completed
|
||||
|
||||
# 7. (Optional) Link to additional initiative
|
||||
npx tsx scripts/linear-ops.ts link-initiative "Phase 11" "Q2 Goals"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
|
||||
## When to Use This Skill
|
||||
|
||||
Manage Linear issues, projects, and teams
|
||||
|
||||
Use this skill when working with manage linear issues, projects, and teams.
|
||||
## Tool Selection
|
||||
|
||||
Choose the right tool for the task:
|
||||
|
||||
| Tool | When to Use |
|
||||
|------|-------------|
|
||||
| **MCP (Official Server)** | Most operations - PREFERRED |
|
||||
| **Helper Scripts** | Bulk operations, when MCP unavailable |
|
||||
| **SDK scripts** | Complex operations (loops, conditionals) |
|
||||
| **GraphQL API** | Operations not supported by MCP/SDK |
|
||||
|
||||
### MCP Server Configuration
|
||||
|
||||
**Use the official Linear MCP server** at `mcp.linear.app`:
|
||||
|
||||
```json
|
||||
{
|
||||
"mcpServers": {
|
||||
"linear": {
|
||||
"command": "npx",
|
||||
"args": ["mcp-remote", "https://mcp.linear.app/sse"],
|
||||
"env": { "LINEAR_API_KEY": "your_api_key" }
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
> **WARNING**: Do NOT use deprecated community servers. See [troubleshooting.md](troubleshooting.md) for details.
|
||||
|
||||
### MCP Reliability (Official Server)
|
||||
|
||||
| Operation | Reliability | Notes |
|
||||
|-----------|-------------|-------|
|
||||
| Create issue | ✅ High | Full support |
|
||||
| Update status | ✅ High | Use `state: "Done"` directly |
|
||||
| List/Search issues | ✅ High | Supports filters, queries |
|
||||
| Add comment | ✅ High | Works with issue IDs |
|
||||
|
||||
### Quick Status Update
|
||||
|
||||
```bash
|
||||
# Via MCP - use human-readable state names
|
||||
update_issue with id="issue-uuid", state="Done"
|
||||
|
||||
# Via helper script (bulk operations)
|
||||
node scripts/linear-helpers.mjs update-status Done 123 124 125
|
||||
```
|
||||
|
||||
### Helper Script Reference
|
||||
|
||||
For detailed helper script usage, see **[troubleshooting.md](troubleshooting.md)**.
|
||||
|
||||
### Parallel Agent Execution
|
||||
|
||||
For bulk operations or background execution, use the `Linear-specialist` subagent:
|
||||
|
||||
```javascript
|
||||
Task({
|
||||
description: "Update Linear issues",
|
||||
prompt: "Mark ENG-101, ENG-102, ENG-103 as Done",
|
||||
subagent_type: "Linear-specialist"
|
||||
})
|
||||
```
|
||||
|
||||
**When to use `Linear-specialist` (parallel):**
|
||||
- Bulk status updates (3+ issues)
|
||||
- Project status changes
|
||||
- Creating multiple issues
|
||||
- Sync operations after code changes
|
||||
|
||||
**When to use direct execution:**
|
||||
- Single issue queries
|
||||
- Viewing issue details
|
||||
- Quick status checks
|
||||
- Operations needing immediate results
|
||||
|
||||
See **[sync.md](sync.md)** for parallel execution patterns.
|
||||
|
||||
## Critical Requirements
|
||||
|
||||
### Issues → Projects → Initiatives
|
||||
|
||||
**Every issue MUST be attached to a project. Every project MUST be linked to an initiative.**
|
||||
|
||||
| Entity | Must Link To | If Missing |
|
||||
|--------|--------------|------------|
|
||||
| Issue | Project | Not visible in project board |
|
||||
| Project | Initiative | Not visible in roadmap |
|
||||
|
||||
See **[projects.md](projects.md)** for complete project creation checklist.
|
||||
|
||||
---
|
||||
|
||||
## Conventions
|
||||
|
||||
### Issue Status
|
||||
|
||||
- **Assigned to me**: Set `state: "Todo"`
|
||||
- **Unassigned**: Set `state: "Backlog"`
|
||||
|
||||
### Labels
|
||||
|
||||
Uses **domain-based label taxonomy**. See [docs/labels.md](docs/labels.md).
|
||||
|
||||
**Key rules:**
|
||||
- ONE Type label: `feature`, `bug`, `refactor`, `chore`, `spike`
|
||||
- 1-2 Domain labels: `security`, `backend`, `frontend`, etc.
|
||||
- Scope labels when applicable: `blocked`, `breaking-change`, `tech-debt`
|
||||
|
||||
```bash
|
||||
# Validate labels
|
||||
npx tsx scripts/linear-ops.ts labels validate "feature,security"
|
||||
|
||||
# Suggest labels for issue
|
||||
npx tsx scripts/linear-ops.ts labels suggest "Fix XSS vulnerability"
|
||||
```
|
||||
|
||||
## SDK Automation Scripts
|
||||
|
||||
**Use only when MCP tools are insufficient.** For complex operations involving loops, mapping, or bulk updates, write TypeScript scripts using `@linear/sdk`. See `sdk.md` for:
|
||||
|
||||
- Complete script patterns and templates
|
||||
- Common automation examples (bulk updates, filtering, reporting)
|
||||
- Tool selection criteria
|
||||
|
||||
Scripts provide full type hints and are easier to debug than raw GraphQL for multi-step operations.
|
||||
|
||||
## GraphQL API
|
||||
|
||||
**Fallback only.** Use when operations aren't supported by MCP or SDK.
|
||||
|
||||
See **[api.md](api.md)** for complete documentation including:
|
||||
- Authentication and setup
|
||||
- Example queries and mutations
|
||||
- Timeout handling patterns
|
||||
- MCP timeout workarounds
|
||||
- Shell script compatibility
|
||||
|
||||
**Quick ad-hoc query:**
|
||||
|
||||
```bash
|
||||
npx tsx ~/.claude/skills/linear/scripts/query.ts "query { viewer { name } }"
|
||||
```
|
||||
|
||||
## Projects & Initiatives
|
||||
|
||||
For advanced project and initiative management patterns, see **[projects.md](projects.md)**.
|
||||
|
||||
**Quick reference** - common project commands:
|
||||
|
||||
```bash
|
||||
# Create project linked to initiative
|
||||
npx tsx scripts/linear-ops.ts create-project "Phase X: Name" "My Initiative"
|
||||
|
||||
# Update project status
|
||||
npx tsx scripts/linear-ops.ts project-status "Phase X" in-progress
|
||||
npx tsx scripts/linear-ops.ts project-status "Phase X" completed
|
||||
|
||||
# Link/unlink projects to initiatives
|
||||
npx tsx scripts/linear-ops.ts link-initiative "Phase X" "My Initiative"
|
||||
npx tsx scripts/linear-ops.ts unlink-initiative "Phase X" "Old Initiative"
|
||||
```
|
||||
|
||||
**Key topics in projects.md:**
|
||||
- Project creation checklist (mandatory steps)
|
||||
- Content vs Description fields
|
||||
- Discovery before creation
|
||||
- Codebase verification before work
|
||||
- Sub-issue management
|
||||
- Project status updates
|
||||
- Project updates (status reports)
|
||||
|
||||
---
|
||||
|
||||
|
||||
## When to Use This Skill
|
||||
|
||||
Manage Linear issues, projects, and teams
|
||||
|
||||
Use this skill when working with manage linear issues, projects, and teams.
|
||||
## Sync Patterns (Bulk Operations)
|
||||
|
||||
For bulk synchronization of code changes to Linear, see **[sync.md](sync.md)**.
|
||||
|
||||
**Quick sync commands:**
|
||||
|
||||
```bash
|
||||
# Bulk update issues to Done
|
||||
npx tsx scripts/linear-ops.ts status Done ENG-101 ENG-102 ENG-103
|
||||
|
||||
# Update project status
|
||||
npx tsx scripts/linear-ops.ts project-status "My Project" completed
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Reference
|
||||
|
||||
| Document | Purpose |
|
||||
|----------|---------|
|
||||
| [api.md](api.md) | GraphQL API reference, timeout handling |
|
||||
| [sdk.md](sdk.md) | SDK automation patterns |
|
||||
| [sync.md](sync.md) | Bulk sync patterns |
|
||||
| [projects.md](projects.md) | Project & initiative management |
|
||||
| [troubleshooting.md](troubleshooting.md) | Common issues, MCP debugging |
|
||||
| [docs/labels.md](docs/labels.md) | Label taxonomy |
|
||||
|
||||
**External:** [Linear MCP Documentation](https://linear.app/docs/mcp.md)
|
||||
Reference in New Issue
Block a user