Importar desde Linear

Traé un team de Linear a Orkestra como proyecto, preservando issues, cycles (como sprints), workflow states, labels, prioridades y comentarios. Los sub-issues se importan como issues independientes con un puntero al padre via custom field.

Qué formato espera Orkestra

Un JSON con el shape de la GraphQL API de Linear:

{
  "teams":          [{ "id", "key", "name" }],
  "workflowStates": [{ "id", "name", "type", "team": { "id" } }],
  "users":          [{ "id", "email", "name" }],
  "cycles":         [{ "id", "number", "name", "startsAt", "endsAt" }],
  "projects":       [{ "id", "name" }],
  "issues":         [{ "id", "identifier", "title", "state", "assignee", "comments", "labels", "attachments", ... }]
}

Las conexiones GraphQL pueden venir como array plano o como { nodes: [...] }. Orkestra las desempaca automáticamente.

Cómo generar el export

Linear no tiene un botón "exportar a JSON" nativo. Los dos caminos probados:

1) GraphQL API (recomendado)

  1. Generá un API key desde Settings → API en Linear.
  2. Usá Apollo Sandbox o un cliente GraphQL (Postman, Insomnia) apuntando a https://api.linear.app/graphql.
  3. Corré queries separadas por entidad (teams, workflowStates, users, cycles, projects, issues). Para issues, paginá con cursor.
  4. Combiná los resultados en un JSON único con las claves esperadas.

2) Linear CLI + script

Linear mantiene un SDK de TypeScript. Un script de ~50 líneas recorre el team, issues, cycles y escupe el JSON directamente. Escribinos si querés que te compartamos nuestro script base.

Qué se importa

  • Teams → el primer team del array se convierte en un Project de Orkestra. Los demás se ignoran con warning.
  • Issues → Tasks. La prioridad de Linear (0-4) mapea a URGENT/HIGH/MEDIUM/LOW (0 = sin prioridad → MEDIUM).
  • Identifier (ej. ORK-123) → custom field linear_id.
  • WorkflowStates → WorkflowStates. Los de tipo completed quedan marcados como finales.
  • Cycles → Sprints. Estado inferido por fechas: endsAt < hoy → COMPLETED, en curso → ACTIVE, futuro → PLANNED.
  • Linear Projects → custom field linear_project_id por issue (Orkestra no tiene "proyectos dentro de proyectos").
  • Labels → labels en la task.
  • Assignee → usuario de la org matcheado por email.
  • Sub-issues → se importan como issues independientes, con custom field linear_parent_id apuntando al ID del padre en Linear. Orkestra no arma la jerarquía padre-hijo nativa porque el modelo de Task no tiene parentTaskId.
  • Comments → Comments. Si el autor no está en la org, se prefija [Imported from Linear — originally by X].
  • Attachments → ExternalLink (título + URL). No descargamos binarios.

Mapeo de usuarios

Igual que Jira: match por email, missing users en la preview con toggle de invitar. Ver la guía general para el detalle del flujo.

Qué queda fuera de scope

  • Múltiples teams en el mismo JSON — solo se importa el primero.
  • Jerarquía padre-hijo de sub-issues — el puntero queda en linear_parent_id, pero no se crea una relación nativa ni una subtask completed/incompleted.
  • Relaciones entre issues — "blocks", "blocked by", "relates to", "duplicates" no se importan.
  • Cycle goals y milestones — fuera de scope.
  • Custom fields de Linear (estimate, custom views, etc.) — más allá de los 3 de trazabilidad, se ignoran.
  • Custom emojis — no se importan. Si un comentario los usaba, quedan como texto :emoji:.
  • Attachments binarios — solo título y URL.
  • Workflow automations / triggers — fuera de scope.
  • Integrations de Linear (Slack, GitHub sync bidireccional, Figma) — no se migran; hay que reconfigurarlas en Orkestra.

Warnings vs ignores silenciosos

La preview avisa por: múltiples teams, usuarios faltantes, archivo grande. Todo lo demás de la lista anterior se ignora en silencio.

Pasos en Orkestra

  1. Ir a Ajustes → Importar → Linear.
  2. Subir el JSON. Esperá la preview.
  3. Revisar: conteos, estados detectados, missing users, warnings.
  4. (Opcional) Override del mapeo de estados (renombrar, marcar como completado).
  5. (Opcional) Activar invitaciones.
  6. Ejecutar.

Recursos