Migrate from Jira, Asana, GitHub Issues, or other tools to Linear.
Use when planning a migration, executing data transfer,
or mapping workflows between issue tracking tools.
Trigger: "migrate to linear", "jira to linear", "asana to linear",
"import to linear", "linear migration", "github issues to linear".
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
A direct command skips the review prompt. Inspect the source before running it.
Migrate from Jira, Asana, GitHub Issues, or other tools to Linear.
Use when planning a migration, executing data transfer,
or mapping workflows between issue tracking tools.
Trigger: "migrate to linear", "jira to linear", "asana to linear",
"import to linear", "linear migration", "github issues to linear".
Designed for Claude Code, also compatible with Codex and OpenClaw
Linear Migration Deep Dive
Overview
Comprehensive guide for migrating from Jira, Asana, or GitHub Issues to Linear. Covers assessment, workflow mapping, data export, transformation, batch import with hierarchy support, and post-migration validation. Linear also has a built-in importer (Settings > Import) for Jira, Asana, GitHub, and CSV.
asyncfunctionvalidateMigration(client: LinearClient,
teamId: string,
sourceIssues: JiraIssue[],
idMap: Map<string, string>
): Promise<{ valid: boolean; issues: string[] }> {
constproblems: string[] = [];
// Check all issues were importedif (idMap.size < sourceIssues.length) {
problems.push(`Missing: ${sourceIssues.length - idMap.size} issues not imported`);
}
// Sample validation: check 50 random issuesconst sample = sourceIssues.slice(0, 50);
for (const source of sample) {
const linearId = idMap.get(source.key);
if (!linearId) {
problems.push(`${source.key}: not imported`);
continue;
}
try {
const issue = await client.issue(linearId);
if (issue.title !== source.summary) {
problems.push(`${source.key}: title mismatch`);
}
} catch {
problems.push(`${source.key}: not found in Linear (${linearId})`);
}
awaitnewPromise(r =>setTimeout(r, 50));
}
return { valid: problems.length === 0, issues: problems };
}
Post-Migration Checklist
[ ] All issues imported and validated
[ ] Parent/child relationships correct
[ ] Labels and priorities mapped correctly
[ ] User assignments transferred
[ ] Integrations reconfigured (GitHub, Slack)
[ ] Team workflows customized in Linear
[ ] Team trained on Linear
[ ] Source system set to read-only
[ ] Parallel run period started (2 weeks recommended)
[ ] Archive source system after parallel run