Install any skill in seconds. Free to start, no credit card required.
Get Started Free →jeremylongshore/linear-reference-architecture
Production-grade Linear integration architecture patterns.
Passed 18 of 23 test cases with the skill, and 12 of 23 without it.
and 5 more in the full report
6 fixed12 passed either way5 still failing0 broke
Tokens, turns and time describe resource use, not a dollar price.
One of 6 test cases the skill fixed. Same model, same prompt, with and without the skill.
In a Linear gateway class, how should cache keys for team workflow states be formatted, and how is the expiration timestamp stored in the cache entry?
| Checked | Without skill | With skill |
|---|---|---|
| The cache key formats the team ID with a states: prefix. | Missed | Passed |
| The expiration timestamp is calculated by adding the TTL in seconds multiplied by 1000 to Date.now(). | Missed | Passed |
The instructions your model reads when the skill loads.
Production-grade architectural patterns for Linear integrations. Choose the right pattern based on team size, complexity, and real-time requirements.
| Pattern | Best For | Complexity | Rate Budget | Example |
|---|---|---|---|---|
| Simple | Single app, small team | Low | < 500 req/hr | Internal dashboard |
| Service-Oriented | Multiple apps, shared state | Medium | 500-2,000 req/hr | Platform with Linear sync |
| Event-Driven | Real-time needs, many consumers | High | < 500 req/hr + webhooks | Multi-service notification system |
| CQRS | Audit trails, complex queries | Very High | Minimal API calls | Compliance-grade tracking |
Direct SDK calls from your application. Best for scripts, internal tools, and prototypes.
// src/linear.ts — single module, shared client
import { LinearClient } from "@linear/sdk";
const client = new LinearClient({ apiKey: process.env.LINEAR_API_KEY! });
// Direct SDK calls from any part of your app
export async function getOpenIssues(teamKey: string) {
return client.issues({
first: 50,
filter: {
team: { key: { eq: teamKey } },
state: { type: { nin: ["completed", "canceled"] } },
},
orderBy: "priority",
});
}
export async function createBugReport(teamId: string, title: string, description: string) {
const labels = await client.issueLabels({ filter: { name: { eq: "Bug" } } });
return client.createIssue({
test cases passed, vs 12 / 23 without
More skills from the same source and nearby in the registry, with their headline benchmark lift.