From ai-brain-starter
Ingests recent Linear issues, comments, and status changes into markdown files for querying by a knowledge graph or AI Brain. Use via /ingest-linear or when the user asks to sync Linear data into the vault.
How this skill is triggered — by the user, by Claude, or both
Slash command
/ai-brain-starter:ingest-linearThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Ingests recent Linear activity (issues, comments, status changes) into the vault as markdown the graphify pipeline can read and the rest of the AI Brain Starter substrate (decision log, session-close cascade, hooks) can act on.
Ingests recent Linear activity (issues, comments, status changes) into the vault as markdown the graphify pipeline can read and the rest of the AI Brain Starter substrate (decision log, session-close cascade, hooks) can act on.
This is one of a small family of ingestion connectors (slack, linear, gmail). Adding the next external source means writing a new normalizer, not a new architecture.
/ingest-linear <team-or-project> (with or without --days N)Do NOT use for:
linear_createIssue)linear_updateIssue)linear_getTeams, or to a project ID via linear_getProjects. If both match, ask the user which one.linear_searchIssues with the team filter. For a project scope, use linear_getProjectIssues. Apply the day filter client-side, since the MCP search does not always support an updated-since cursor.linear_getComments and history (status/assignee changes) via linear_getIssueHistory.## section per issue, comments and history events as ### sub-sections under the issue).External Inputs/Linear/<scope>/<YYYY-MM-DD>.md.The skill is a thin orchestrator. The actual ingestion runs in Python at ${SKILL_ROOT}/ingest.py. The skill assembles the Linear MCP tool calls, hands the raw payloads to ingest.py, and the script does the normalization, file write, and frontmatter.
When invoked:
--days N (optional, default 7).linear_getTeams. If the scope matches a team key (e.g. ENG) or team name, capture the team ID. If no match, call linear_getProjects and try a project name match.linear_searchIssues with teamId filter and limit: 100. For a project scope, call linear_getProjectIssues with the project ID and limit: 100.now - N days). Filter issues whose updatedAt is older than the cutoff.linear_getComments (limit 50) and linear_getIssueHistory (limit 25).ingest.py as JSON on stdin.ingest.py writes the vault file and prints a summary.The vault file at External Inputs/Linear/<scope>/<YYYY-MM-DD>.md has frontmatter:
---
type: external-input
source: linear
scope: <team-key-or-project-name>
scope_kind: team | project
team_id: <uuid or null>
project_id: <uuid or null>
date_range: <YYYY-MM-DD>..<YYYY-MM-DD>
issue_count: <int>
comment_count: <int>
history_count: <int>
ingested_at: <ISO 8601 timestamp>
entity_ids:
linear:
- <ABC-123>
- <ABC-124>
---
Body is chronological by issue updatedAt. Each issue is a ## <ABC-123> <title> section with status, assignee, priority, and the issue description. Comments become ### Comment <YYYY-MM-DD HH:MM> <author> sub-sections. History events become ### Status change <YYYY-MM-DD HH:MM> sub-sections.
Re-running /ingest-linear <scope> --days N on the same calendar day overwrites the same vault file. No append. The entity_ids.linear array reflects exactly the issues in the current window.
A successful run produces:
External Inputs/Linear/<scope>/<date>.mdWrote N issue(s), M comment(s), K history event(s) to <path>.If the scope resolves but contains no matching issues in the window, write the file anyway with issue_count: 0 so re-runs are still idempotent and the absence is recorded.
ingest.py does not require the MCP. The MCP calls happen at the orchestration layer. If the LLM cannot reach the MCP, surface that error to the user, do not write a stub file.issue_count: 0.npx claudepluginhub mycelium-hq/ai-brain-starter --plugin ai-brain-starterPulls recent GitHub repository activity (merged PRs, issues, commits) into the vault as queryable markdown for knowledge graph integration.
Manages Linear issues, projects, and teams using MCP tools, linear CLI, and GraphQL API. Create, update, query issues; handle labels, status, references, and backlogs.
Extracts issues from documents like meeting transcripts or notes and imports them into Linear via interactive workflow with deduplication and preview mode.