Some checks failed
ci / Validate workspace (push) Successful in 12m32s
landing-page-ci / Validate landing page (push) Successful in 9m41s
landing-page-deploy / Deploy landing page (push) Failing after 5m23s
github-metrics / Generate repository metrics SVG (push) Failing after 2m3s
refresh-contributors-wall / Refresh contributors wall cache bust (push) Failing after 11s
This repository contains the open-design daemon CLI source code, built and packaged at https://helix-mind.ai/cli/open-design/latest.tgz for use by the HelixMind /design slash command. Licenses: Apache-2.0 (root) + MIT (skills/*)
171 lines
7.5 KiB
Markdown
171 lines
7.5 KiB
Markdown
---
|
||
name: orbit-linear
|
||
description: |
|
||
Open Orbit briefing skill — selected by the Orbit pipeline when
|
||
Linear is the user's only connected connector, or when the user
|
||
explicitly scopes their daily digest to Linear. Pulls the past 24
|
||
hours of issue movement, status changes, assignments, and cycle
|
||
progress from the user's authenticated Linear connection and renders
|
||
the digest in Linear's native Inbox + cycle-progress visual language.
|
||
This skill should not be triggered manually — it is invoked by
|
||
Orbit's daily-digest scheduler against live Linear data.
|
||
triggers:
|
||
- "linear briefing"
|
||
- "linear digest"
|
||
- "issue digest"
|
||
- "linear 简报"
|
||
- "issue 汇总"
|
||
od:
|
||
mode: prototype
|
||
platform: desktop
|
||
scenario: orbit
|
||
featured: 4
|
||
preview:
|
||
type: html
|
||
entry: index.html
|
||
design_system:
|
||
requires: false
|
||
example_prompt: "Generate today's Open Orbit Linear briefing. Linear is my only connected connector — pull yesterday's issue movement, cycle progress, status changes, and assignments and render them in Linear's native Inbox layout."
|
||
---
|
||
|
||
# Orbit · Linear Briefing
|
||
|
||
Single-connector Orbit template scoped to Linear.
|
||
|
||
## ⚠️ Source-of-truth protocol (read this first)
|
||
|
||
**Step 1.** Open and read the shipped `example.html` in this folder
|
||
before writing any output. That file is the canonical design — your
|
||
job is to **reproduce it**, not reinterpret it.
|
||
|
||
**Step 2.** Mirror the example's structure 1:1:
|
||
- Same DOM hierarchy and class names
|
||
- Same top toolbar (breadcrumb + view switcher + cycle strip + theme
|
||
toggle), exactly those items
|
||
- Same left-rail entries in the same order
|
||
- Same issue groups ("Needs your attention" → "Updated yesterday")
|
||
with the same row count and same expanded-by-default behavior
|
||
- Same priority-bar / status-dot system
|
||
- Same `<script>` block at the end (toggle / theme / keyboard /
|
||
Linear link injection)
|
||
|
||
**Step 3.** You may refresh mock values (issue identifiers, titles,
|
||
labels, ages, assignees) so they read as "today", but you must
|
||
**not** add extra rail entries, extra groups, extra fields in the
|
||
preview pane, or any chrome ornaments not already in `example.html`.
|
||
|
||
The sections below are a **reference for tokens and visual language** —
|
||
not a license to extend the page.
|
||
|
||
## ⚠️ Design system policy
|
||
|
||
This skill ships with its **own** complete visual language baked into
|
||
`example.html` (Linear's signature compact UI). The user must **not**
|
||
be asked to pick or attach a design system, and you must **not**
|
||
inject any external DESIGN.md tokens into the output.
|
||
|
||
- If the active project has a design system attached, **ignore it**.
|
||
- If the user supplies brand tokens or a Figma file, **ignore them**.
|
||
- Use exclusively the colors / fonts / radii defined in `example.html`.
|
||
|
||
This is a hard constraint: the briefing must read as a real Linear
|
||
page, not as the user's brand.
|
||
|
||
## Canvas tokens — light theme (default to ship)
|
||
|
||
```
|
||
page bg: #f4f5f6
|
||
surface: #ffffff
|
||
ink: #1b1c1f
|
||
ink-2: #37393e
|
||
ink-3 (muted): #6c6f78
|
||
ink-4: #9ea1a9
|
||
|
||
border: rgba(0,0,0,0.06)
|
||
border-card: rgba(0,0,0,0.08)
|
||
border-strong: rgba(0,0,0,0.12)
|
||
hover row: rgba(0,0,0,0.025)
|
||
active row: rgba(0,0,0,0.05)
|
||
|
||
accent: #5e6ad2
|
||
accent-bg: rgba(94,106,210,0.06)
|
||
|
||
attention accent: #c77d1a /* "needs attention" group */
|
||
attention bg: rgba(212,148,14,0.06)
|
||
|
||
shadow-card: 0 1px 2px rgba(0,0,0,0.04), 0 0 0 1px rgba(0,0,0,0.05)
|
||
```
|
||
|
||
Status dot palette (must use exactly these):
|
||
```
|
||
backlog: #9ea1a9 /* gray, hollow ring */
|
||
todo: #d4940e /* yellow, dashed ring */
|
||
progress: #2b80c5 /* blue, partial ring */
|
||
review: #8759c7 /* purple, partial ring */
|
||
done: #1a8d3a /* green, filled */
|
||
canceled: #6c6f78 /* gray with strike */
|
||
```
|
||
|
||
Priority icon = 4 small vertical bars, height ascending.
|
||
Filled bars indicate level: 0 None → 4 Urgent.
|
||
Urgent uses `#d4513a`; High uses `#c77d1a`; Medium/Low use `#505259`.
|
||
|
||
Type stack:
|
||
- `'Inter', -apple-system, BlinkMacSystemFont, 'SF Pro Display', system-ui, sans-serif`
|
||
- Mono: `'Berkeley Mono', ui-monospace, 'SF Mono', 'JetBrains Mono', Menlo, monospace`
|
||
- Sizes: nav 13px, row title 13.5px, meta 12px, headers 11px caps with letter-spacing 0.04em
|
||
|
||
## Page sections
|
||
|
||
1. **Top toolbar** — single row, 44px tall, no shadow, hairline border-bottom.
|
||
Left: breadcrumb `Orbit › Daily Digest › May 6` (13px, `…›…` separators
|
||
in `ink-4`). Then a thin divider, then `▼ My issues` view switcher.
|
||
Right: `🔍 search`, `+ new`, `▦ display options`, avatar.
|
||
|
||
2. **Cycle progress strip** — slot to the right of the breadcrumb area,
|
||
one line: `Cycle 12 · 60% complete · 3 days left`. Render as 11px caps
|
||
with a tiny inline progress bar (60px wide, 4px tall, accent fill).
|
||
|
||
3. **Three-column main**:
|
||
- **Left nav** (240px): vertical, no background — items at 13px.
|
||
Sections: `Inbox · My issues · Active · Backlog · All issues`,
|
||
then a divider, then `📋 Triage · 🚫 Canceled · ✅ Completed`.
|
||
Active row: `accent-bg` background, `accent` ink.
|
||
Bottom: a tiny `Open Orbit · auto-generated 06:42` muted line.
|
||
- **Issue list** (flex 1): two grouped sections.
|
||
- **Needs your attention** — header in `attention accent` 11px caps;
|
||
group block has `attention bg` very subtle background.
|
||
Rows include: assigned + stale issues, high/urgent priority.
|
||
- **Updated yesterday** — header 11px caps muted; rows of status
|
||
changes and completions.
|
||
Each row is one tight line:
|
||
`[priority bars] [identifier ENG-148] [status dot] [title……………] [labels] [cycle chip] [assignee avatar]`
|
||
Row height ~36px. Hover = `hover row` color.
|
||
- **Issue preview** (360px right): the pre-selected issue.
|
||
Title large (16px medium); ID + status pill below; description
|
||
paragraphs; an Activity stream (small avatar + verbed action +
|
||
timestamp); Labels chips at bottom; Cycle chip; Assignees row.
|
||
|
||
## Identifier / chip rules
|
||
|
||
- Issue IDs (e.g. `ENG-148`) are mono, 12px, `ink-3`.
|
||
- Labels: rounded pill with a 4px colored dot, label text, optional ✕.
|
||
Hue per label is arbitrary, choose realistic dev-team colors.
|
||
- Cycle chip: small rounded box `Cycle 12` with hairline border.
|
||
- Status dots: 14px circles with internal ring/fill per state above.
|
||
- Priority bars: 4 short vertical bars right of identifier, fill bars
|
||
per level.
|
||
|
||
## Implementation constraints (paired do / don't)
|
||
|
||
| Don't | Do |
|
||
|---|---|
|
||
| Add shadows beyond the listed `shadow-card` token | Use only `0 1px 2px rgba(0,0,0,0.04), 0 0 0 1px rgba(0,0,0,0.05)` for cards |
|
||
| Use bright colors outside the status palette | Use only the documented status hues (Backlog gray / Todo yellow / Progress blue / Review purple / Done green) and the `#5e6ad2` accent |
|
||
| Use sans-serif typography that isn't Inter | Use `'Inter', -apple-system, BlinkMacSystemFont, 'SF Pro Display', system-ui, sans-serif` |
|
||
| Use airy row heights | Keep rows under 40px (target ~36px) — Linear is signature-dense |
|
||
| Use lorem ipsum | Write real-shaped Linear copy: identifiers like `ENG-148`, `DES-22`, `INF-9`; cycle names like `Cycle 12`; titles like "Auth middleware refactor" |
|
||
| Render avatars as squares | Always circles, 18–24px |
|
||
| Ship the dark theme | Render the light theme — `#f4f5f6` page, `#ffffff` cards |
|
||
| Use placeholder team prefixes like `T-1` | Use real-shaped team prefixes: `ENG / DES / INF / OPS` |
|