
linear-check
by my-entourage
MyEntourage.dev agent skills to have all of your AI agent context across communication channels in one place in sync.
SKILL.md
name: linear-check description: Verify implementation status by querying Linear API for issues. Use when checking issue tracking status.
Purpose
Query Linear to verify planning/implementation status of components/features. Returns evidence-based status levels using issue data from Linear.
When to Use
- Directly invoked:
/linear-check authentication - Checking issue status for a component
- Verifying planning and tracking status
- When invoked by other skills (like
/project-status)
Input
Component or feature name(s) to verify. Examples:
/linear-check authentication/linear-check user-dashboard payments
Note: Component searches are case-insensitive.
Authentication
Step 1: Check Linear MCP Availability
The Linear MCP server is preferred because it handles authentication via OAuth.
Check if Linear MCP tools are available by attempting to use a Linear MCP tool. If the tool responds successfully, use MCP for all queries.
Step 2: Fallback to API Token
If Linear MCP is unavailable, fall back to LINEAR_API_TOKEN environment variable from .env.local:
# .env.local
LINEAR_API_TOKEN=lin_api_xxxxxxxxxxxx
Also ensure .entourage/repos.json has the team configuration:
{
"linear": {
"teamName": "Team",
"workspace": "my-workspace"
}
}
Note: teamName accepts team name ("My Team"), team key ("TEAM"), or UUID.
Use curl with the token for GraphQL queries:
curl -X POST https://api.linear.app/graphql \
-H "Authorization: $TOKEN" \
-H "Content-Type: application/json" \
-d '{"query": "..."}'
MCP Detection Protocol
When executing queries, follow this detection flow:
- Attempt MCP tool call (e.g.,
mcp__linear__list_issues) - Check response:
- If successful response with data → Continue using MCP
- If error "MCP not available" or tool not found → Fall back to API
- If auth error from MCP → Fall back to API token from config
Example detection:
Attempting: mcp__linear__list_teams
├── Success → Use MCP for all operations
└── Failure → Check LINEAR_API_TOKEN env var from .env.local
Configuration Discovery
Step 1: Check for Config File
Use the Read tool to check if .entourage/repos.json exists.
If the file does not exist:
> No repository configuration found. Create `.entourage/repos.json` with your Linear settings.
Step 2: Extract Linear Config
Look for linear section in the config:
{
"linear": {
"token": "lin_api_...",
"teamName": "My Team",
"workspace": "my-workspace"
}
}
Step 3: No Linear Configuration
If no linear section exists and MCP is unavailable:
> No Linear configuration found. Either configure Linear MCP or add `linear` section to `.entourage/repos.json`.
Linear API Queries
For each component/feature, run these queries:
Using MCP (Preferred)
Resolve team identifier:
Before querying issues, resolve the configured teamName to a valid team:
- Call
list_teamsto get available teams - Match configured
teamNameagainst team name, key, or UUID - Use the matched team's
namefor all subsequent queries
This allows users to configure any of: team key ("TEAM"), team name ("My Team"), or UUID.
Important: The Linear MCP team parameter only accepts team name or UUID, not team keys. Always resolve keys via list_teams first.
Search issues by component name:
Use the list_issues MCP tool with the query parameter set to the component name and the resolved team name from config.
Get issue details:
Use the get_issue MCP tool with the issue ID.
Get team's workflow states:
Use the list_issue_statuses MCP tool with the resolved team name.
Using API Token (Fallback)
Linear uses a GraphQL API at https://api.linear.app/graphql.
Search issues by component name:
query SearchIssues($term: String!) {
searchIssues(term: $term, first: 20) {
nodes {
identifier
title
state {
name
type
}
assignee {
name
}
updatedAt
url
}
}
}
Get team's workflow states:
query TeamStates($teamKey: String!) {
team(id: $teamKey) {
id
name
states {
nodes {
name
type
position
}
}
}
}
Example curl command:
curl -X POST https://api.linear.app/graphql \
-H "Authorization: lin_api_YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"query": "query { searchIssues(term: \"authentication\", first: 20) { nodes { identifier title state { name type } } } }"
}'
Evidence Synthesis
Apply this decision tree to determine component status based on Linear issue state:
1. Issue state type is "completed"?
YES -> Status: Done (High confidence)
2. Issue state type is "started" AND state name contains "review"?
YES -> Status: In Review (High confidence)
3. Issue state type is "started"?
YES -> Status: In Progress (High confidence)
4. Issue state type is "unstarted" AND state name is "Todo"?
YES -> Status: Todo (High confidence)
5. Issue state type is "backlog"?
YES -> Status: Backlog (High confidence)
6. Issue state type is "triage"?
YES -> Status: Triage (High confidence)
7. Issue state type is "canceled"?
YES -> Status: Canceled (High confidence)
8. No Linear issue found?
-> Status: Unknown
-> Output: "No Linear issue found for this component."
State Type Mapping
Linear uses these state types:
triage- Issues needing review before acceptancebacklog- Accepted but not scheduledunstarted- Scheduled/ready to start (includes "Todo")started- Work in progress (includes "In Progress", "In Review")completed- Donecanceled- Won't fix, duplicate, etc.
Error Handling
MCP Not Available, No Token
> Linear MCP not configured and no API token found. Configure Linear MCP or add LINEAR_API_TOKEN to `.env.local`.
Token Invalid/Expired
If API returns authentication error:
> Linear API error: Authentication failed. Check LINEAR_API_TOKEN in `.env.local`.
Rate Limited
If API returns rate limit error:
> Linear API rate limit reached. Try again later.
Team Not Found
If team identifier is invalid:
> Linear team not found. Check `teamName` in `.entourage/repos.json`.
Output Format
With Linear Configuration
## Linear Scan: [Component Name]
| Issue | Status | State | Assignee | Last Updated |
|-------|--------|-------|----------|--------------|
| TEAM-123 | In Progress | In Progress | @user | 2025-01-10 |
### Linear Details
**TEAM-123:** "Implement authentication flow"
- Status: In Progress
- Assignee: @user
- Updated: Jan 10, 2025
- URL: https://linear.app/my-workspace/issue/TEAM-123
Without Linear Configuration
## Linear Scan
No Linear configuration found. Either:
1. Configure Linear MCP server, or
2. Add `linear` section to `.entourage/repos.json`:
{
"linear": {
"token": "lin_api_...",
"teamName": "My Team",
"workspace": "my-workspace"
}
}
Multiple Components
When checking multiple components, output a summary table followed by details:
## Linear Scan Summary
| Component | Status | Issue | State | Confidence |
|-----------|--------|-------|-------|------------|
| auth | In Progress | TEAM-123 | In Progress | High |
| dashboard | Backlog | TEAM-456 | Backlog | High |
| payments | Unknown | - | - | - |
### Details
[Per-component Linear details...]
Example
Query: /linear-check authentication
Output:
## Linear Scan: authentication
| Issue | Status | State | Assignee | Last Updated |
|-------|--------|-------|----------|--------------|
| TEAM-123 | In Progress | In Progress | @alice | 2025-01-10 |
### Linear Details
**TEAM-123:** "Implement Clerk authentication"
- Status: In Progress
- State: In Progress (started)
- Assignee: @alice
- Updated: Jan 10, 2025
- URL: https://linear.app/my-workspace/issue/TEAM-123
After Output
This skill returns results to the calling context (usually /project-status). Do not stop execution.
Continue with the next step in the workflow or TODO list.
Score
Total Score
Based on repository quality metrics
SKILL.mdファイルが含まれている
ライセンスが設定されている
100文字以上の説明がある
GitHub Stars 100以上
3ヶ月以内に更新がある
10回以上フォークされている
オープンIssueが50未満
プログラミング言語が設定されている
1つ以上のタグが設定されている
Reviews
Reviews coming soon