---
name: linear-issues-talentco
description: Creates and updates Linear issues via MCP for TalentCo MVP and other tenants when explicitly scoped, using CLIENT_CONFIG and api/client-config.json for tenant context, selecting the Linear MCP server that matches the target workspace when multiple tokens exist, and filling descriptions with the repo candidate Definition-of-Ready template. Use when the user asks to file, triage, update, or groom Linear work items for TalentCo or aligned product work in this repository.
---

# Linear issues (TalentCo-first, multi-tenant)

## When to use

- Create or update Linear issues from this repo (bugs, features, chores, spikes).
- Default product focus is **TalentCo MVP**; other tenants only when the user or context names them.

## Tenant and routing

- **Env / config:** [`AGENTS.md`](../../AGENTS.md) — API uses `CLIENT_CONFIG`, Labs uses `VITE_CLIENT_CONFIG`. Valid handles: `yeshuman`, `talentco`, `bookedai`, `lumie`, `recruitrtech`, `lortsmith`.
- **Before creating an issue:** infer the tenant from the user, the files being discussed, or [`api/client-config.json`](../../api/client-config.json) top-level keys. If unclear, ask.
- **Linear team/project are not the same as the client handle.** Use this mapping for confirmed rows only; for anything else ask or run `list_projects` and confirm with the user.

| CLIENT_CONFIG (tenant) | Linear team (default) | Linear project (default) |
|------------------------|------------------------|---------------------------|
| `talentco` (default focus) | Earth Ventures | TalentCo MVP Development |

If Linear names drift, resolve with `list_projects` / `list_teams` and treat the table as a hint until updated.

## Multiple Linear MCP servers

- Cursor may define **several** Linear MCP integrations (different **server** names), each backed by an API key for a **different Linear workspace**.
- **Before any `call_mcp_tool`:** read the tool schema JSON under the workspace `mcps/<server>/tools/` for the server you will call (e.g. `save_issue.json`, `list_issues.json`).
- **Pick the `server` argument** that matches the **workspace** for this tenant/issue (e.g. Earth Ventures vs another org). If the enabled MCP set does not obviously match the tenant, **stop and ask** which server/workspace to use. Do not file issues into the wrong org.
- Never put API keys or tokens in issues, commits, or this skill.

## Candidate issue format (Definition of Ready)

This template is **candidate** process: collaborators review and agree in the PR that owns this skill. It is not implied to be final company policy.

**Title:** outcome-oriented, specific (e.g. “Employer can export shortlist to CSV” not “exports”).

**Description:** use the block below by default when creating issues unless the user supplies a full description. Omit or mark N/A sections they skip.

```markdown
> Candidate DoR — refine via PR that updates `.cursor/skills/linear-issues-talentco/`.

## Routing

- [ ] Tenant / `CLIENT_CONFIG`: … (default product focus: `talentco`)
- [ ] Linear team: …
- [ ] Linear project: …
- [ ] Type: bug | feature | chore | spike

## Problem / goal

…

## Scope

- …
- …

## Non-goals

- …

## Acceptance criteria

- [ ] …
- [ ] …

## This repository

- [ ] Surface: `api/` | `labs/` | both
- [ ] DB / migrations: … | none
- [ ] New or changed env vars: … | none
- [ ] API contract (if Labs depends on backend): … | n/a

## Dependencies

- [ ] Blockers (Linear links or IDs): … | none
- [ ] Open questions: …

## Evidence / links

- …

## Priority / urgency (if not Normal)

- …
```

## Create and update workflow

1. **Dedupe:** `list_issues` with `project` and `query` keywords from the proposed title.
2. **Create:** `save_issue` **without** `id`. **`title` and `team` are required.** Set `project`, `description` (markdown with **literal newlines**, not `\\n` escapes), optional `state` (e.g. Triage), `priority`, `assignee`, `labels`, `links`, `blocks` / `blockedBy` / `relatedTo` per schema.
3. **Update:** `save_issue` **with** `id` (e.g. `EV-123`).
4. **After:** return the issue identifier, URL if present, and echo team/project/state used.

## Anti-patterns

- Creating issues with no `project` when the team backlog would lose context.
- Guessing assignee, priority, or workspace when the user did not imply them.
- Using the wrong MCP `server` for the tenant.

## Related

- Board sync plan (read-only first, retro capture): [talentco-linear-update-planner](../talentco-linear-update-planner/SKILL.md)
- Export triage/backlog summaries to a gist: [linear-project-state-gist](../linear-project-state-gist/SKILL.md).
