Linear custom views — audit log and cleanup

Purpose: Record workspace custom-view inventory, dedupe guidance, and how to re-list or refresh views.

Last audited: 2026-04-06


How to list views (API)

From apps/platform (listing is paginated — full workspace):

npx tsx scripts/list-and-delete-linear-views.ts

Duplicate names (e.g. after multiple bulk runs): keep newest per name and delete extras:

npx tsx scripts/dedupe-linear-custom-views.ts --dry-run
npx tsx scripts/dedupe-linear-custom-views.ts

Re-running create-linear-views-bulk.ts is idempotent (updates by name, removes duplicate names for views in that script’s list).

Requires LINEAR_API_KEY or BRAINFORGE_PLATFORM_LINEAR_APP_TOKEN (see linear-api-setup.md).

Blank slate (destructive): same script with --delete removes all custom views — use only when intentionally rebuilding; then recreate recommended views via create-linear-views-bulk.ts and manual project/initiative views per linear-views.md.


Snapshot — 2026-04-06 (reset)

All views returned by list-and-delete-linear-views.ts were deleted (blank slate), then create-linear-views-bulk.ts was re-run (persona-prefixed issue views; see linear-views.md). Project views removed by that API must be recreated manually in Linear if still needed.

Earlier inventory (before delete)

Listed 8 workspace custom views (mix of projects / initiatives / issues):

NameNotes
Q2 OKR ProjectsProject-oriented
Active ProjectsProject-oriented
Non-Triage IssuesIssue filter
New IssuesIssue filter
Ops InitiativesInitiative-oriented
LMNT Omni PlanClient initiative
MigrationLegacy
All projectsProject-oriented

No duplicate names detected in this snapshot. Project / initiative views overlap conceptually with rows in linear-views.md (e.g. Active projects) — reconcile naming in Linear UI when consolidating sidebar clutter.


After bulk script — issue views

The bulk script creates ~51 shared issue views by default (persona prefixes [HoD] / [CSO] / [SL] / [IC]; per-client and per-internal-team kits from linear-views-teams.config.json). Phase views are not in the script — add manually per linear-views.md D1 if needed. Confirm in Linear UI (Views → Issues); the workspace customViews GraphQL list in list-and-delete-linear-views.ts may not enumerate every view type or scope—use UI as source of truth for dedupe.


Dedupe and retirement (human steps)

  1. In Linear → Views, sort by name; merge or delete views that differ only by stale filters.
  2. Prefer Spaces or name prefixes ([CSO], [HoD], [SL]) per linear-day-1-guide.md.
  3. Retire views tied to ended programs (e.g. one-off migrations) after archiving underlying work.