Linear Views — Recommended Custom Views

Purpose: A single catalog of recommended Linear custom views across Issues, Projects, Initiatives, and Dashboards. Within Issues: hygiene (stale, unowned, overdue), service line / subservice / offering, client & team, phase & cycle. Create via Linear UI (Views → New view; switch tab for Projects/Initiatives/Dashboards) or via script where we have one.

Day 1 onboarding (roles, flows, labels, which views to bookmark first): linear-day-1-guide.md.

References: README.md, linear-cleanup-taxonomy.md, linear-full-cleanup-discovery-report-2026-03-17.md.


Tags and labels needed for views

For the views below to filter correctly, issues and projects need the right labels and initiatives. The canonical label set is in linear-cleanup-taxonomy.md §4 Labels. Summary of what to ensure:

PurposeLabels / initiatives to useUsed by views
Service linedata, ai, strategy-analytics — or initiative = “Data Service” / “A.I Service” / “Strategy Service”B1 (Service - … views in bulk script), Project/Initiative by service line
Phasephase-0, phase-1, phase-2 (kebab; or “Phase 0” etc. if org standard)D1 (manual views only — not created by bulk script)
Offeringomni, edge-to-activation, dbt-audit, full-data-platform, etc. (match vault folder slug)B3 (Edge-to-Activation, Omni, dbt Audit, etc.)
Subservice (optional)Canonical: data-platform, data-modeling, reverse-etl, data-strategy, measurement-kpis, reporting-insights, workflow-automation, knowledge-engineering, copilots-agents (see linear-cleanup-taxonomy §4)B2 (Subservice - … views in bulk script)
Operationalai-assignable, human-only — per linear-labels-ai-human.mdPart E (AI-assignable view)
Deliveryclient-dependency, internalPart E (Blocked / client dependency)

Guidelines: Apply at least one service line label (or link to the right initiative) on every issue/project that belongs to a line. Apply phase labels for Option B / implementation-plan work. Apply offering labels when the work is scoped to a specific offering (Omni, E2A, dbt Audit, etc.). Create missing labels in Linear when running cleanup; do not remove existing capability labels (e.g. cap-, ops-) unless consolidating.


Issues views (default tab)

The sections below (A–E) are Issues views. In Linear, create them with the Issues tab selected in Views.

Bulk script — persona prefixes

apps/platform/scripts/create-linear-views-bulk.ts syncs shared issue views whose names start with [HoD], [CSO], [SL], or [IC] so the sidebar groups when sorted alphabetically:

PrefixWhoWhat
[HoD]Head of DeliveryWorkspace-wide portfolio hygiene (stale, unowned, no project, overdue, due dates, no cycle) and per internal team execution lenses (Platform, Delivery, GTM, …).
[CSO]Client success / account leadPer client team lenses (active, unowned, no project, overdue, due this week, client dependency, stale 4w) plus workspace Blocked — client dependency.
[SL]Service LeadCross-workspace label views: service line, subservice, and key offerings (roster / Operating).
[IC]Individual contributorCross-team slices such as AI-assignable. Use Linear’s built-in My issues for assignee = you.

Config: clientTeams and internalTeams in apps/platform/scripts/linear-views-teams.config.json. Cleanup: after upgrading from the old unprefixed catalog, run once with --prune-legacy to remove legacy view names (see script header).

The filter ideas in Parts A–E below match the bulk script; saved view titles in Linear include the prefix where the script adds it.


Part A — Hygiene (tidy, triage, stale)

A1. Stale / not touched

View nameFilter ideaWhy
[HoD] Active — not updated in 4 weeksState ≠ Done/Canceled and Updated < 4 weeks agoOpen work that’s gone cold; update, close, or archive. (Also: standalone create-linear-view-not-updated-4-weeks.ts without prefix if you maintain a duplicate.)
[HoD] Backlog — not updated in 8 weeksState = Backlog (or similar) and Updated < 8 weeks agoOld backlog; candidates for archive or “Won’t do” (bulk script).
[HoD] In progress — not updated in 2 weeksState = In progress and Updated > 2 weeks agoStuck in-progress work (bulk script).

A2. Unowned / untriaged

View nameFilter ideaWhy
[HoD] Active — no assigneeState ≠ Done/Canceled and Assignee is emptyUnowned open work, all teams (bulk script).
[HoD] Active — no projectState ≠ Done/Canceled and Project is emptyOrphan issues, all teams (bulk script).

A3. Planning / overdue

View nameFilter ideaWhy
[HoD] OverdueDue date < today and State ≠ Done/CanceledMissed due dates, all teams (bulk script).
[HoD] Due this weekDue date in next 7 days and State ≠ Done/CanceledShort-term focus, all teams (bulk script).
[HoD] Active — no due dateIn progress / Triage / unstarted and No due dateIn-flight work without a date (bulk script).

A4. Long-lived open work

View nameFilter ideaWhy
[HoD] Open — older than 90 daysCreated > 90 days ago and State ≠ Done/CanceledVery old open issues (bulk script).

Part B — Service line, subservice, offering

Aligns to README.md: Service line → Subservice → Offering. In Linear, service lines map to initiatives (e.g. “Data Service”, “A.I Service”, “Strategy Service”); offerings may be initiatives or labels (e.g. omni, edge-to-activation). Subservices are grouping only in vault; in Linear use initiative + project naming or labels if you add them.

B1. By service line

View nameFilter ideaWhy
[SL] Service - Data — all activeLabel data and State ≠ Done/CanceledAll active Data line work (bulk script).
[SL] Service - AI — all activeLabel ai and State ≠ Done/CanceledAll active AI line work.
[SL] Service - Strategy & Analytics — all activeLabel strategy-analytics and State ≠ Done/CanceledAll active Strategy & Analytics work.

Manual / alternate: same filters with initiative = “Data Service” / “A.I Service” / “Strategy Service” if you prefer initiative over labels. Match initiative names to your workspace (e.g. “Data Service” vs “Data”).

B2. By subservice (when tagged)

Subservices: Data → data-platform, data-modeling, reverse-etl; Strategy & Analytics → data-strategy, measurement-kpis, reporting-insights; AI → workflow-automation, knowledge-engineering, copilots-agents. Bulk views use these canonical Linear labels. Older issues may still use data-infrastructure, analytics-bi, metrics-kpis, or ai-infrastructure; relabel or add a temporary legacy view if needed. reverse-etl is documented in services README Decision 6 (proposal pending HoD).

View nameFilter ideaWhy
[SL] Subservice - Data PlatformLabel data-platform and ActiveData Platform work (bulk script).
[SL] Subservice - Data ModelingLabel data-modeling and ActiveMarts, semantic layer, modeling (bulk script).
[SL] Subservice - Reverse ETLLabel reverse-etl and ActiveWarehouse→destination syncs, retainer reverse ETL (add to bulk script when label exists).
[SL] Subservice - Data StrategyLabel data-strategy and ActiveRoadmap, advisory, planning (bulk script).
[SL] Subservice - Measurement & KPIsLabel measurement-kpis and ActiveKPI frameworks, attribution (bulk script).
[SL] Subservice - Reporting & InsightsLabel reporting-insights and ActiveDashboards, recurring reporting (bulk script).
[SL] Subservice - Workflow AutomationLabel workflow-automation and ActiveAI-enabled automation (bulk script).
[SL] Subservice - Knowledge EngineeringLabel knowledge-engineering and ActiveGrounding, retrieval, knowledge systems (bulk script).
[SL] Subservice - Copilots & AgentsLabel copilots-agents and ActiveCopilots, agents (bulk script).

Manual / alternate: add initiative + project-name contains … filters in Linear UI if you need tighter scoping than label alone.

Adjust to your actual initiative/label/project naming.

B3. By offering

View nameFilter ideaWhy
[SL] Edge-to-ActivationInitiative = “Edge-to-Activation - Service” or label edge-to-activation and ActiveAll E2A work (bulk script uses label filter).
[SL] Omni Zero-to-OneLabel omni or project name contains “Omni” and ActiveAll Omni engagement work (bulk script uses label).
dbt AuditProject in initiative “Data Service” and project name contains “dbt Audit” (or label dbt-audit) and Activedbt Audit engagements.
(one per key offering)Initiative or label or project patternPipeline and delivery by offering.

Part C — Client & team

C1. By client (delivery) — [CSO] kit

Bulk script adds one client team per row in linear-views-teams.config.jsonclientTeams. For each client label (e.g. LMNT, CTA), these saved view names are synced:

View name (pattern)Filter ideaWhy
[CSO] [Client] — activeTeam = [Client] and State ≠ Done/CanceledDefault account backlog.
[CSO] [Client] — no assigneeTeam + active + assignee emptyUnowned client work.
[CSO] [Client] — no projectTeam + active + no projectOrphan issues on the account.
[CSO] [Client] — overdueTeam + active + due before todayMissed dates on the account.
[CSO] [Client] — due this weekTeam + active + due in 7 daysNear-term client commitments.
[CSO] [Client] — client dependencyTeam + active + label client-dependencyWaiting on the client.
[CSO] [Client] — stale 4 weeksTeam + active + not updated in 4 weeksCold account work.

Add or remove clients by editing clientTeams in the JSON (each needs the correct Linear team key, e.g. LMN for LMNT).

C2. By internal team — [HoD] kit

Bulk script adds one internal team per row in internalTeams. For each internal label (e.g. Platform, Delivery, GTM):

View name (pattern)Filter ideaWhy
[HoD] [Team] — activeTeam = [Internal] and ActiveInternal execution backlog.
[HoD] [Team] — no assigneeTeam + active + assignee emptyUnowned internal work.
[HoD] [Team] — overdueTeam + active + past dueInternal date risk.
[HoD] [Team] — no projectTeam + active + no projectOrphans on that internal team.

Other internal teams (Sales, Marketing, Operations, …): add them to internalTeams in the JSON when you want the same four lenses.


Part D — Phase & cycle

D1. By implementation phase (Option B / SOW)

Not created by create-linear-views-bulk.ts. Add manually in Linear if you want saved phase views.

View nameFilter ideaWhy
Phase 0Label phase-0 and State ≠ Done/CanceledAudit / discovery phase work.
Phase 1Label phase-1 and State ≠ Done/CanceledPilot / first delivery.
Phase 2Label phase-2 and State ≠ Done/CanceledScale / accelerator.

Use label names that match taxonomy (e.g. phase-0, phase-1, phase-2 or “Phase 0”, “Phase 1”, “Phase 2”).

D2. By cycle (if using Linear cycles)

View nameFilter ideaWhy
This cycleCycle = current and State ≠ Done/CanceledCurrent sprint/cycle scope.
[HoD] No cycleCycle is empty and State ≠ Done/CanceledWork not yet scheduled in a cycle (bulk script; workspace-wide).

Part E — Other useful views

View nameFilter ideaWhy
[IC] AI-assignableLabel ai-assignable and Active (allowed statuses per policy)Agent-eligible work (per linear-labels-ai-human.md); bulk script.
[CSO] Blocked — client dependencyLabel client-dependency and Active (workspace-wide)Cross-account chase list; bulk script.
My issuesAssignee = me and State ≠ Done/CanceledPersonal backlog.
Led by [name]Project lead = [person] and ActiveWork led by a specific lead (projects view).

Project views (Views → Projects tab)

Create these with the Projects tab selected in Linear Views. Filters apply to projects (state, team, initiative, lead, etc.).

View nameFilter ideaWhy
Active projectsProject state = In progress (or Started)All projects currently in flight.
Backlog & plannedProject state = Backlog or PlannedUpcoming work; roadmap.
By service lineInitiative = “Data Service” / “A.I Service” / “Strategy Service”Projects grouped by line (Data, AI, Strategy & Analytics).
By teamTeam = [LMNT / Platform / Delivery / …]Projects by client or internal team.
No initiativeInitiative is emptyProjects not yet tied to a service line or offering; triage.
Led by [name]Project lead = [person]Ownership view.

Initiative views (Views → Initiatives tab)

Create these with the Initiatives tab selected. Filters apply to initiatives (state, team, etc.).

View nameFilter ideaWhy
Service linesInitiative name in [“Data Service”, “A.I Service”, “Strategy Service”] and ActiveInternal service-line initiatives.
Client workstreamsInitiative name contains "" (e.g. “LMNT
OfferingsInitiative name in [“Edge-to-Activation - Service”, …] and ActiveOffering-level initiatives.
Active initiativesState = Active (or equivalent)All live initiatives; portfolio view.

Dashboard views (Views → Dashboards tab)

Linear Dashboards are custom dashboards (charts, lists, filters). Use the Dashboards tab to create and organize them. Use for:

  • Health: e.g. issue count by state, overdue count, cycle burndown.
  • Delivery: issues by team, by initiative, by project; project progress.
  • Hygiene: e.g. [HoD] stale / no-project widgets, [CSO] per-client overdue counts.

No fixed view list here; create dashboards that combine the Issue/Project/Initiative filters above into a single screen.


Implementation notes

  • “Active” = workflow state type not completed and not canceled (unstarted, started, etc.).
  • Relative dates: -P4W = 4 weeks ago, -P8W = 8 weeks ago, -P90D = 90 days ago.
  • Initiative vs label: Service-line and offering views work best once initiatives and labels match the taxonomy (see linear-cleanup-taxonomy). If names differ (e.g. “A.I Service” vs “AI”), use the initiative/label names that exist in your workspace.
  • Scripts: Issue viewsnpx tsx scripts/create-linear-views-bulk.ts (from apps/platform) syncs shared views (default config: 51 = 10 [HoD] global + 1 [CSO] global + 7 × N clientTeams + 4 × M internalTeams + 13 [SL] + 1 [IC]): creates missing, updates existing by name, and deletes duplicate copies of those names (keeps newest). Persona prefixes [HoD] / [CSO] / [SL] / [IC] — see Bulk script — persona prefixes. Config: linear-views-teams.config.json (clientTeams, internalTeams). --prune-legacy — removes old unprefixed view names once after upgrading. No phase views (D1) — add manually. Duplicate names: dedupe-linear-custom-views.ts. Blank slate: list-and-delete-linear-views.ts --delete then re-run bulk script. Single-view script: create-linear-view-not-updated-4-weeks.ts. Project, Initiative, and Dashboard views are manual in Linear.
  • Update existing view: Run the create script with LINEAR_VIEW_ID=<id> to update that view.
  • Blank slate: list-and-delete-linear-views.ts --delete removes all custom views; then re-run create-linear-views-bulk.ts (and optionally the standalone create-linear-view-not-updated-4-weeks.ts if you want a second stale view without the [HoD] prefix).