- name
- linear
- description
- Manage Linear issues with automatic team routing, labels, and status updates. Use when "create issue", "create ticket", "Linear task", "update issue status", "list teams", "track task in Linear", "project management", "attach to project", or "create Linear project".
- metadata
- {"openclaw":{"emoji":"📋","requires":{"env":"[Truncated]"}}}
# Linear Skill
Rick puede gestionar issues en Linear con routing automático de equipos Umbral, labels inteligentes y actualizaciones de estado.
## Requisitos
- `LINEAR_API_KEY`: API key de Linear (Settings → API → Personal API keys).
## Tasks disponibles
### 1. Crear issue
Task: `linear.create_issue`
```json
{
"title": "Revisar landing page de Marketing",
"description": "Actualizar copy y CTAs según brief Q2.",
"team_key": "marketing",
"priority": 2
}
```
#### Parámetros
| Parámetro | Tipo | Requerido | Descripción |
|-----------|------|-----------|-------------|
| `title` | str | sí | Título del issue |
| `description` | str | no | Descripción detallada |
| `team_key` | str | no | Clave del equipo Umbral (ej. `"marketing"`, `"asesoria"`). Se infiere del título si se omite |
| `team_id` | str | no | UUID del equipo en Linear. Si no se pasa, se resuelve por `team_name` |
| `team_name` | str | no | Nombre del equipo en Linear (default: `"Umbral"`) |
| `priority` | int | no | `0` Sin prioridad, `1` Urgente, `2` Alta, `3` Media, `4` Baja |
| `add_team_labels` | bool | no | Adjuntar labels del equipo (default: `true`) |
#### Respuesta
```json
{
"ok": true,
"id": "uuid-123",
"identifier": "UMB-5",
"title": "Revisar landing page de Marketing",
"url": "https://linear.app/umbral/issue/UMB-5",
"routing": {
"team_key": "marketing",
"labels_applied": ["Marketing", "Marketing Supervisor"],
"supervisor": "Marketing Supervisor",
"inferred": false,
"linear_team_id": "uuid-team"
}
}
```
### 2. Listar equipos
Task: `linear.list_teams`
```json
{}
```
Devuelve la lista de equipos configurados en Linear.
#### Respuesta
```json
{
"ok": true,
"teams": [
{"id": "uuid-team", "name": "Umbral"}
]
}
```
### 3. Actualizar estado de issue
Task: `linear.update_issue_status`
```json
{
"issue_id": "uuid-123",
"state_name": "Done",
"comment": "Tarea completada correctamente.",
"team_id": "uuid-team"
}
```
#### Parámetros
| Parámetro | Tipo | Requerido | Descripción |
|-----------|------|-----------|-------------|
| `issue_id` | str | sí | UUID del issue en Linear |
| `state_name` | str | no | Nombre del workflow state (ej. `"Done"`, `"Cancelled"`, `"In Progress"`) |
| `comment` | str | no | Comentario a agregar al issue |
| `team_id` | str | no | Necesario para resolver `state_name` → `state_id` |
### 4. Listar proyectos
Task: `linear.list_projects`
```json
{
"query": "Proyecto Embudo",
"limit": 20
}
```
Devuelve proyectos de Linear filtrables por nombre.
### 5. Crear proyecto
Task: `linear.create_project`
```json
{
"name": "Proyecto Embudo Ventas",
"team_name": "Umbral",
"description": "Proyecto operativo para el embudo de ventas."
}
```
Notas:
- Si `if_exists_return=true` (default), retorna el proyecto existente por nombre en vez de duplicarlo.
- Requiere un `team_id` o un `team_name` resoluble.
- Antes de crear un proyecto canonico de Agent Stack, reutilizar el alias historico si ya existe y preferir `LINEAR_AGENT_STACK_PROJECT_ID` en produccion.
### 6. Asociar issue a proyecto
Task: `linear.attach_issue_to_project`
```json
{
"issue_id": "uuid-del-issue",
"project_name": "Proyecto Embudo Ventas",
"create_project_if_missing": true,
"team_name": "Umbral"
}
```
Notas:
- Permite corregir issues que existan pero hayan quedado fuera del project view.
- Si se usa `project_name` y no existe, puede crear el proyecto automáticamente.
### 7. Listar issues de un proyecto
Task: `linear.list_project_issues`
```json
{
"project_name": "Proyecto Embudo Ventas",
"limit": 50
}
```
Devuelve las issues actualmente asociadas a un proyecto.
### 7b. Publicar update de proyecto
Task: `linear.create_project_update`
```json
{
"project_name": "Proyecto Embudo Ventas",
"title": "Cierre de slice CTA",
"body": "Se cerro la definicion provisional de CTA y queda pendiente validar captura.",
"health": "onTrack"
}
```
Usala para dejar trazabilidad ejecutiva en el proyecto de Linear sin abrir una issue nueva.
### 8. Publicar follow-up interno de Agent Stack
Task: `linear.publish_agent_stack_followup`
Usar esta task cuando el pendiente venga de:
- auditorias del repo
- drift operativo
- deuda tecnica u operativa del propio stack
- follow-ups de monitoreo o analisis sobre Worker, Dispatcher, OpenClaw, Redis, Notion, Linear, VPS o VM
Ejemplo:
```json
{
"title": "Unificar dispatcher vivo en VPS",
"summary": "Se detectaron dos procesos dispatcher.service activos.",
"evidence": "ps aux mostro dos procesos Python del dispatcher; systemctl no reflejaba ese estado.",
"impact": "Riesgo de doble consumo y drift operativo silencioso.",
"next_action": "Dejar un solo metodo de arranque y matar el duplicado.",
"kind": "operational_debt",
"designated_agent": "codex"
}
```
Notas:
- publica siempre en el proyecto canónico `Mejora Continua Agent Stack`
- no debe usarse para proyectos externos ni entregables de cliente
### 9. Tomar una issue de Agent Stack
Task: `linear.claim_agent_stack_issue`
Ejemplo:
```json
{
"identifier": "UMB-123",
"agent_name": "rick",
"comment": "Voy a tomar el slice de deploy y dejar trazabilidad."
}
```
Notas:
- agrega una label `Agente: <Nombre>`
- puede mover la issue a `In Progress`
- solo acepta issues del proyecto canónico de Agent Stack
### 10. Listar cola interna de Agent Stack
Task: `linear.list_agent_stack_issues`
Ejemplo:
```json
{
"only_unclaimed": true,
"limit": 20
}
```
Sirve para que Rick u otros agentes derivados de OpenClaw vean qué pendientes internos del stack todavía no tienen owner operativo.
## Notas
- El routing automático infiere el equipo Umbral a partir del título y descripción usando keyword scoring.
- Los labels del equipo se crean automáticamente en Linear si no existen.
- La config de equipos está en `config/teams.yaml`.
- Todas las tasks se encolan vía el Dispatcher a Redis y las ejecuta el Worker.
- Para proyectos oficiales, no basta con crear la issue: hay que dejarla asociada al project correcto en Linear.
- Para deuda y mejora interna del repo, usar el proyecto canónico `Mejora Continua Agent Stack`.
GitHub에서 보기