Skip to content

Commit c2b89ea

Browse files
committed
feat: add weekly-update skill, update linear skill with full context
1 parent 1ea495a commit c2b89ea

4 files changed

Lines changed: 559 additions & 61 deletions

File tree

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"typecheck": "tsc --noEmit"
44
},
55
"dependencies": {
6-
"@opencode-ai/plugin": "0.0.0-dev-202601101858"
6+
"@opencode-ai/plugin": "1.1.36"
77
},
88
"devDependencies": {
99
"@types/node": "^20.19.26",

skill/linear/SKILL.md

Lines changed: 329 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,329 @@
1+
# Linear for Vercel Academy (Education Team)
2+
3+
> **Linear is the source of truth.** Notion is deprecated for content tracking.
4+
5+
## The Key Insight
6+
7+
**DX Deliverable** is the magic label. Add it to ANY issue and it shows up in the content calendar.
8+
9+
```
10+
Issue (any team) + "DX Deliverable" label → Content Calendar
11+
```
12+
13+
## Education Team
14+
15+
| Name | Email | Linear ID | Notion ID | Slack ID |
16+
|------|-------|-----------|-----------|----------|
17+
| Joel Hooks | [email protected] | `47b94c47-f82f-4110-b7f1-9432ab567de3` | `1a7d872b-594c-81ed-9a54-0002a3193d1b` | `U08FCNRDY0J` |
18+
| Eve Porcello | [email protected] | `cf8edf1a-34d6-4d73-8e42-7536acf179ee` | `28fd872b-594c-8120-bc67-00024e0f4521` | `U09LZ68M67Q` |
19+
20+
## Your Context
21+
22+
- **Team**: Education (EDU-*)
23+
- **Team ID**: `3913aea8-c6df-4fcf-ab46-caba08f1ea6c`
24+
- **Site**: vercel.com/academy
25+
- **Slack Channel**: `#academy` (`C08UMBNDZ6G`)
26+
27+
## Collaborators (Cross-Team)
28+
29+
| Name | Email | Linear ID | Slack ID | Expertise |
30+
|------|-------|-----------|----------|-----------|
31+
| Hayden Bleasel | [email protected] | `e8258444-62fa-4557-ac9b-f18f55bfb23c` | - | shadcn/ui, design systems |
32+
| Drew Bredvick | [email protected] | `c64a8541-6605-4649-9487-025402aad9fd` | `U028DSQRZ6U` | AI, enterprise patterns |
33+
| Jimmy Lai | [email protected] | `6ecc995a-d2b0-4e0c-b351-ad2f3dd2caed` | - | Performance, profiling |
34+
| Dom Sipowicz | [email protected] | `132089fc-73a1-4423-bb70-c98a5a55e0b3` | - | Enterprise deployments, v0, flags |
35+
| Daniel Roe | [email protected] | `7269eae3-1018-4d91-9f7f-829a688038ae` | - | Nuxt, Vue ecosystem |
36+
| Dominic Ferber | - | - | - | Flags SDK creator |
37+
38+
## Documentation Team Collaborators
39+
40+
| Name | Email | Linear ID | Notion ID | Focus |
41+
|------|-------|-----------|-----------|-------|
42+
| Delba de Oliveira | [email protected] | `162d1ea2-3763-4f7b-9b3e-dc7d34d7095a` | `54c94858-2934-4931-ae79-06b9c111928a` | Next.js Education, Cache Comps |
43+
| Amy Burns | [email protected] | `79473979-bade-4346-880d-3a0c3b4efda6` | `00f52499-a6a5-4b5b-97b4-c1be4026299d` | Docs platform, Getting started |
44+
| Ismael Rumzan | [email protected] | `28a6cbf0-d706-4850-874e-585a4c0f7d93` | `53de7174-7d58-47a0-b6bc-d662c0b5b2db` | Knowledge base, CDN docs |
45+
| Anthony Shew | [email protected] | `bb0b2640-bce8-4468-bf23-79033d74ad1a` | `7d7d9288-a649-4ef7-96af-8026539da217` | Code examples, Turborepo |
46+
| Nico Albanese | [email protected] | `3f70c170-45cb-493e-ba4a-08937b0f89eb` | `3878be83-e05c-4e8a-8bbf-aeff821e10ac` | AI SDK education |
47+
48+
## Quick Actions
49+
50+
### Check Education Team Work
51+
52+
```
53+
# My assigned issues
54+
linear_list_issues(assignee="me")
55+
56+
# Eve's assigned issues
57+
linear_list_issues(assignee="[email protected]")
58+
59+
# All DX Deliverables (content calendar items)
60+
linear_list_issues(team="Education", label="DX Deliverable")
61+
62+
# Just courses
63+
linear_list_issues(team="Education", label="Course")
64+
65+
# Education team overview (natural language)
66+
linear_query_data(query="Issues assigned to Joel Hooks or Eve Porcello")
67+
```
68+
69+
### Create Academy Course
70+
71+
**ALWAYS add DX Deliverable to get on the content calendar:**
72+
73+
```
74+
linear_create_issue(
75+
team="Education",
76+
title="[Course Name] Course",
77+
description="## Overview\n\n## Learning Outcomes\n\n## Modules\n\n## Target Audience",
78+
labels=["Course", "DX Deliverable"]
79+
)
80+
```
81+
82+
### Natural Language Queries
83+
84+
```
85+
# Content calendar overview
86+
linear_query_data(query="All DX Deliverable issues due this week")
87+
88+
# My content
89+
linear_query_data(query="Issues assigned to Joel with DX Deliverable label")
90+
91+
# Academy-specific
92+
linear_query_data(query="Issues mentioning Academy or Course")
93+
```
94+
95+
## Labels
96+
97+
### Required for Content Calendar
98+
99+
| Label | ID | Note |
100+
|-------|-----|------|
101+
| **DX Deliverable** | `6b3d7451-e2b0-4b69-a27e-486845b95dd5` | **ADD THIS TO EVERYTHING** |
102+
103+
### Content Type Labels
104+
105+
| Label | ID | Use For |
106+
|-------|-----|---------|
107+
| Course | `3315ba45-f5b2-4bb9-950a-8cd6ea5b259a` | Academy courses |
108+
| Blog | `4b41c668-65dc-4ebd-ae80-071ea8d0911e` | Blog posts |
109+
| Social Post | `29286dc7-0311-428a-855b-234f0b0f19dd` | Twitter, LinkedIn, Bluesky |
110+
| Video | `efdef145-2a7f-4ac2-b1a4-1ee6f6dc5c81` | Video content |
111+
| Guide or Tutorial | `3836ebc4-c457-46dc-9eb6-23081baf4353` | Standalone tutorials |
112+
| Demo or Example | `367a6973-c306-434b-a330-04135ee6d12e` | Code examples |
113+
114+
### Topic Labels
115+
116+
| Label | ID |
117+
|-------|-----|
118+
| AI | `8fb7f72a-e024-4510-9238-98caa47307f1` |
119+
| area:next | `347ff051-3f2e-4d67-ba95-de6af6139941` |
120+
121+
## Workflow States
122+
123+
```
124+
Triage → Backlog → Todo → In Progress → In Draft → In Review → Done
125+
```
126+
127+
| State | ID |
128+
|-------|-----|
129+
| Backlog | `b46ceef4-89bf-44bb-b368-c1441006eca4` |
130+
| Todo | `90d01a28-3805-4c37-a534-fb0283c598a5` |
131+
| In Progress | `bad70e2d-7b96-49e5-9d0a-7d6d2db6cfee` |
132+
| In Draft | `0b4c8cb9-3411-4b08-ac33-3e968690c48b` |
133+
| In Review | `36bc1f68-a336-4ba4-b53f-d2e071b90a38` |
134+
| Done | `5a2cc380-14d6-41b1-b8d7-6275e2f88b98` |
135+
136+
## Relevant Projects
137+
138+
| Project | ID | Focus |
139+
|---------|-----|-------|
140+
| AI SDK Education Pipeline | `5cf81552-48aa-42c3-854d-9cc5c9deddfe` | AI SDK content |
141+
| Cache Components | `8a07a35a-0e73-4663-bbcf-2fa3d4b4393f` | Cache Components education |
142+
| Turbopack Engineering | `7924e3d4-4996-4493-9c14-938bbeb7c491` | Turbopack blogs |
143+
| Engineering Blogs | `9508cd00-9391-416d-9d9d-40003a09f274` | Technical blogs |
144+
| Next.js Skills / Agents DX | `ddb1b139-10e1-46a5-bb7c-0233b9fe36ae` | Skills for agents |
145+
| Education Strategy | `d8a90053-24dc-4d99-afc9-05a7902ef765` | Strategy planning |
146+
147+
## Current Courses (Jan 2026)
148+
149+
### Shipped
150+
| Issue | Title | Owner |
151+
|-------|-------|-------|
152+
| EDU-1 | React UI with shadcn/ui + Radix + Tailwind | Hayden |
153+
| EDU-2 | Vercel AI SDK Fundamentals | Joel |
154+
| EDU-3 | Slack Agents Course | Joel |
155+
| EDU-4 | Production Monorepos with Turborepo | Eve |
156+
| EDU-5 | Subscription Store with Vercel and Stripe | Eve |
157+
| EDU-6 | AI Summary App with Next.js | Eve |
158+
159+
### In Progress
160+
| Issue | Title | Owner | Target |
161+
|-------|-------|-------|--------|
162+
| EDU-7 | Next.js Foundations | Joel | Beta live, glossary added |
163+
| EDU-8 | Microfrontends on Vercel | Eve | Feb 5, 2026 |
164+
| EDU-9 | Filesystem Agents | Eve | Feb 11, 2026 |
165+
| EDU-10 | Building Intelligent Agents with AI SDK | Joel | Feb 15, 2026 |
166+
| EDU-16 | Svelte on Vercel | Eve | TBD (Rich Harris collab) |
167+
168+
### Backlog
169+
| Issue | Title | Owner | Notes |
170+
|-------|-------|-------|-------|
171+
| EDU-12 | v0 to Hero | Joel | Mar 15 - Dom's workshop → course |
172+
| EDU-14 | Profiling with Jimmy Lai | - | Needs scheduling |
173+
| EDU-15 | Nuxt on Vercel | Eve | Daniel Roe collab |
174+
175+
## Multi-Course Projects
176+
177+
### Advanced Next.js Deployment (EDU-13 Restructured)
178+
179+
Major restructure into 4-course series with Dom Sipowicz as SME:
180+
181+
| Issue | Title | Status |
182+
|-------|-------|--------|
183+
| EDU-17 | Shared Example (Turbo Repo Base) | **BLOCKS ALL** |
184+
| EDU-18 | Feature Flags on Vercel | Blocked |
185+
| EDU-19 | Rolling Release on Vercel | Blocked |
186+
| EDU-20 | Skew Protection on Vercel | Blocked |
187+
188+
### Project Structure Pattern
189+
190+
```
191+
┌─────────────────────────────────────────────────────────────┐
192+
│ LINEAR PROJECT: [Topic Name] │
193+
│ (Groups related work with shared goal) │
194+
├─────────────────────────────────────────────────────────────┤
195+
│ │
196+
│ 🔧 [TOPIC]-0: Shared Example Base │
197+
│ └─ Dev work (code, repo setup) │
198+
│ └─ BLOCKS all courses below │
199+
│ └─ Label: "Demo or Example" │
200+
│ │
201+
│ 📚 [TOPIC]-1: Course Name A │
202+
│ └─ BLOCKED BY [TOPIC]-0 │
203+
│ └─ Labels: "Course", "DX Deliverable" │
204+
│ │
205+
│ 📚 [TOPIC]-2: Course Name B │
206+
│ └─ BLOCKED BY [TOPIC]-0 │
207+
│ └─ Labels: "Course", "DX Deliverable" │
208+
│ │
209+
└─────────────────────────────────────────────────────────────┘
210+
```
211+
212+
## Slack Integration
213+
214+
### Mining #academy for Intel
215+
216+
```bash
217+
# Get recent channel history
218+
slack_slack_get_channel_history(channel_id="C08UMBNDZ6G", limit=50)
219+
220+
# Look up a user by ID
221+
slack_slack_get_user_profile(user_id="U...")
222+
```
223+
224+
### Slack URL Format
225+
226+
Timestamp `1769114468.646389` → URL: `https://vercel.slack.com/archives/C08UMBNDZ6G/p1769114468646389`
227+
228+
(Remove the dot from timestamp, prefix with `p`)
229+
230+
### What to Extract from Slack
231+
232+
- **Ship dates** - "we shipped X on [date]"
233+
- **Blockers** - "waiting on Y before we can..."
234+
- **Collaborator mentions** - who's working on what
235+
- **Target dates** - "aiming for [date]"
236+
- **Status updates** - progress, pivots, scope changes
237+
238+
## Course Template
239+
240+
```markdown
241+
## Overview
242+
243+
[What is this course about?]
244+
245+
## Target Audience
246+
247+
[Who is this for? Skill level?]
248+
249+
## Learning Outcomes
250+
251+
By the end of this course, learners will:
252+
253+
- [ ] Outcome 1
254+
- [ ] Outcome 2
255+
- [ ] Outcome 3
256+
257+
## Modules
258+
259+
1. Module 1: [Title]
260+
2. Module 2: [Title]
261+
3. Module 3: [Title]
262+
263+
## Prerequisites
264+
265+
- [Required knowledge]
266+
267+
## Timeline
268+
269+
- [ ] Outline
270+
- [ ] Content draft
271+
- [ ] Review
272+
- [ ] Production
273+
- [ ] Launch
274+
275+
## Links
276+
277+
- Repo: [course repo]
278+
- Academy URL: vercel.com/academy/[slug]
279+
- Draft URL: vercel.com/academy/draft/[slug]
280+
```
281+
282+
## Workflows
283+
284+
### Add to Content Calendar
285+
286+
1. Create or find issue
287+
2. Add `DX Deliverable` label
288+
3. Set due date
289+
4. Issue appears in content calendar
290+
291+
### Weekly Review
292+
293+
```
294+
# What's due this week
295+
linear_query_data(query="DX Deliverable issues due this week assigned to me")
296+
297+
# What's in progress
298+
linear_list_issues(assignee="me", state="In Progress")
299+
300+
# What's in review
301+
linear_list_issues(assignee="me", state="In Review")
302+
```
303+
304+
### New Course Workflow
305+
306+
1. Create issue: `linear_create_issue(team="Education", title="...", labels=["Course", "DX Deliverable"])`
307+
2. Add to relevant project
308+
3. Set due date
309+
4. Move through: Backlog → Todo → In Progress → In Draft → In Review → Done
310+
311+
## Tips
312+
313+
- **DX Deliverable = content calendar** - always add this label for visibility
314+
- Use `linear_query_data` for complex date-based queries
315+
- Link Academy courses to their GitHub repos
316+
- Sub-issues work well for course modules
317+
- **Mine Slack regularly** - that's where real status lives
318+
319+
## Legacy: Notion References (Deprecated)
320+
321+
> **DO NOT USE NOTION for new work.** These references exist for historical context only.
322+
323+
### Old Notion Databases (Read-Only Reference)
324+
325+
| Database | Collection ID | Notes |
326+
|----------|---------------|-------|
327+
| Academy Course Pipeline | `collection://292e06b0-59c4-80b3-93ea-000bdeff1d9e` | Migrated to Linear |
328+
| DX Deliverables | `collection://2b7e06b0-59c4-8041-bcad-000b4b0d5ab4` | Use Linear DX Deliverable label |
329+
| Campaign Planning | `collection://2bfe06b0-59c4-8006-91e1-000bdea543cb` | Migrated to Linear |

0 commit comments

Comments
 (0)