plugins/linear-orchestrator/skills/linear-pagination-filtering/SKILL.md
This skill should be used when fetching large result sets from Linear — cursor pagination, filter DSL, sorting, and complexity budgeting. Activates on "linear pagination", "linear filter", "linear cursor", "linear filtering".
npx skillsauth add markus41/claude Linear Pagination + FilteringInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
References:
Linear uses opaque forward cursors. Pattern:
query Page($cursor: String, $filter: IssueFilter) {
issues(first: 50, after: $cursor, filter: $filter, orderBy: updatedAt) {
pageInfo { hasNextPage endCursor }
nodes { id }
}
}
first ranges 1-250. No last/before — Linear is forward-only. To paginate descending, use orderBy with the appropriate direction (e.g. createdAt).
Helper in lib/pagination.ts:
async function* paginateAll<T>(
fetch: (cursor: string | null) => Promise<{ nodes: T[]; pageInfo: { hasNextPage: boolean; endCursor: string } }>
): AsyncGenerator<T> {
let cursor: string | null = null;
while (true) {
const page = await fetch(cursor);
yield* page.nodes;
if (!page.pageInfo.hasNextPage) return;
cursor = page.pageInfo.endCursor;
}
}
Filters are nested JSON trees:
filter: {
and: [
{ state: { type: { eq: "started" } } },
{ priority: { lte: 2 } },
{ or: [
{ assignee: { isMe: { eq: true } } },
{ team: { key: { eq: "ENG" } } }
] },
{ labels: { some: { name: { in: ["bug", "regression"] } } } }
]
}
| Op | Strings | Numbers | Booleans | Dates |
|----|---------|---------|----------|-------|
| eq | ✓ | ✓ | ✓ | ✓ |
| neq | ✓ | ✓ | ✓ | ✓ |
| in / nin | ✓ | ✓ | — | — |
| contains / startsWith | ✓ | — | — | — |
| lt / lte / gt / gte | — | ✓ | — | ✓ |
| null | ✓ | ✓ | ✓ | ✓ |
some: { ... } — at least one related entity matchesevery: { ... } — all related entities matchnone: { ... } — no related entity matchesOpen issues in current cycle assigned to me:
filter: {
and: [
{ state: { type: { neq: "completed" } } },
{ cycle: { isActive: { eq: true } } },
{ assignee: { isMe: { eq: true } } }
]
}
Issues blocked by something:
filter: { hasRelatedRelations: { eq: true } }
Triage queue for ENG team older than 24h:
filter: {
and: [
{ team: { key: { eq: "ENG" } } },
{ state: { type: { eq: "triage" } } },
{ createdAt: { lt: "2026-04-29T00:00:00Z" } }
]
}
orderBy: updatedAt | createdAt | priority | manual. For complex sorts, fetch unsorted and sort client-side (only feasible for small result sets).
Each filter clause adds to query complexity. Reduce by:
first: <smaller> on connections within nodestools
Build Teams-native agents with the Teams SDK (formerly Teams AI Library v2) — App class, activity routing, adaptive cards, streaming, AI-generated labels, feedback, message extensions, Teams-as-MCP-server, and the bring-your-own-AI pattern with Agent Framework.
tools
Run agents on Microsoft Foundry (formerly Azure AI Foundry) Agent Service — prompt agents vs hosted agents, threads/runs and the Responses API, built-in tools (Bing grounding, code interpreter, file search, MCP, OpenAPI, A2A), connected agents, Entra agent identity, SDKs, and observability/evaluations.
tools
Build and host custom engine agents with the Microsoft 365 Agents SDK — AgentApplication, the Activity protocol, channel reach via Azure Bot Service, hosting Agent Framework or Semantic Kernel engines, and the Agents Toolkit/Playground workflow. Successor to the Bot Framework SDK.
tools
Design, govern, and extend Microsoft Copilot Studio agents — topics, generative orchestration, knowledge, tools and MCP, agent flows, autonomous triggers, publishing channels, Copilot Credits pricing, and solution-based ALM on Power Platform.