Creating Monthly ProductTank SF Events
When to Use
Use this skill when the user asks to:
- •Create a new monthly ProductTank SF event
- •Set up event planning for a specific month/date
- •Generate a new event from the template
Announce at start: "I'm using the create-monthly-ptsf-event skill to create the [Month YYYY] event."
Prerequisites
Before starting, gather:
- •Event date (YYYY-MM-DD format) - typically 3rd Tuesday of the month
- •Month abbreviation - for title and labels (e.g., "Feb", "Mar")
- •Year - for project assignment (e.g., "2026")
Constants (do not ask user):
- •Team: "Product Tank SF"
- •Template source: PRO-60
The Process
Step 1: Calculate Timeline Dates
Use scripts/calculate-event-date.sh to calculate all T-minus and T-plus milestone dates.
Required milestone offsets:
- •Pre-event: -90, -60, -45, -30, -20, -14, -7, -2
- •Event day: 0 (event date itself)
- •Post-event: +1, +2, +3, +10, +15
Usage pattern:
./scripts/calculate-event-date.sh "<YYYY-MM-DD>" "<offset>"
Example (for event on 2026-02-17):
./scripts/calculate-event-date.sh "2026-02-17" "-60" # Returns: 2025-12-19
Run for all offsets to validate timeline dates before creating the project.
Step 2: Create Event Project
Use linear-cli p create with these parameters:
Fixed values:
- •
team: "Product Tank SF"
Dynamic values (from user input):
- •
name: "{Month} {YYYY} - [Speaker Name]" (e.g., "Feb 2026 - [Speaker Name]") - •
targetDate: Event date in YYYY-MM-DD format - •
labels: ["Event", "{Month}"] (e.g., ["Event", "Feb"])
Description construction:
- •Read PRO-60 template:
linear-cli i get PRO-60 --output json - •Replace placeholders in description:
- •
[YYYY Month]→ "{Month} {YYYY}" (e.g., "Feb 2026") - •
[Date]→ Full date string (e.g., "February 17, 2026") - •Keep:
[Speaker Name],[lead-name],[co-lead-name],[shadow-lead-name]
- •
- •Replace all checklist issue links with
[TBD]placeholders:- •Template contains links like
[PRO-61](https://linear.app/...) - •Replace with:
[Template]({{link-to-template}}) - •Why: Prevents Linear from auto-creating relationships to template sub-issues
- •Example:
- [ ] Secure Speaker [PRO-61](https://...)→- [ ] Secure Speaker [Template](https://linear.app/product-tank-sf/issue/PRO-61/event-name-ie-jan-2026-11-secure-speaker)
- •Template contains links like
- •Preserve all template sections (Overview, Quick Links, Checklist, Metrics)
Summary field:
- •Extract first paragraph of PRO-60 description or create concise summary (max 255 chars)
- •Example: "Monthly ProductTank SF event for {Month} {YYYY}"
Step 3: Validate Project Creation
Verification checklist:
- • Read created project with
linear-cli p get <PROJECT_ID> --output json - • Confirm name format: "{Month} {YYYY} - [Speaker Name]"
- • Confirm team: "Product Tank SF"
- • Confirm labels: "Event" and month abbreviation
- • Confirm target date matches event date
- • Confirm description has all template sections
- • Confirm summary is present
Report project URL and ID to user.
Troubleshooting
| Problem | Solution |
|---|---|
| Script not executable | chmod +x scripts/calculate-event-date.sh |
| Incorrect date calculations | Verify date format (YYYY-MM-DD) and offset sign (+/-) |
| Month label not found | Create label in Linear workspace before running |
| Project label not found | Create "Event" label in Linear workspace before running |
Creating Project Tasks from Templates
After creating the event project, create 25 tasks from the template checklist in the project's Definition of Done.
Using Sub-Agents for Parallel Creation
CRITICAL: Use sub-agents to create tasks in parallel batches of 5.
Each sub-agent creates ONE task following this process:
Sub-Agent Instructions (for each template):
- •
Read Template:
linear-cli i get <TEMPLATE_ID> --output json- •Note title format:
[Event Name, ie. Jan 2026]placeholder - •Note description:
[Event Date - X days]placeholder - •Note Target Completion field (e.g.,
[Event Date - 60 days]) - •Note category label (Speaker, Marketing, Venue, etc.)
- •Note title format:
- •
Calculate Due Date:
- •Extract offset from Target Completion (e.g.,
-60from[Event Date - 60 days]) - •Run:
./scripts/calculate-event-date.sh "<event-date>" "<offset>" - •For TBD items (no Target Completion): use
null
- •Extract offset from Target Completion (e.g.,
- •
Create Task:
linear-cli i create "<TITLE>" -t "Product Tank SF" --project "<PROJECT_NAME>" -l "<LABELS>"- •
title: Replace[Event Name, ie. Jan 2026]with{Month} {YYYY} - •
team: "Product Tank SF" - •
project: "{Month} {YYYY} - [Speaker Name]" (the project created in Step 2) - •
labels: [Template's category label, Event's month label] - •
dueDate: Calculated date (ornull) - •
description: Copy from template, replace[Event Date - X days]with calculated date - •
priority: 0
- •
- •
Report: Return template ID, new issue identifier, and URL
Execution Pattern
Launch 5 sub-agents in parallel (single message with 5 Task tool calls):
Batch 1: Templates PRO-61, PRO-83, PRO-62, PRO-63, PRO-64 Batch 2: Templates PRO-65, PRO-66, PRO-67, PRO-68, PRO-69 Batch 3: Templates PRO-70, PRO-71, PRO-72, PRO-73, PRO-88 Batch 4: Templates PRO-74, PRO-75, PRO-76, PRO-77, PRO-78 Batch 5: Templates PRO-79, PRO-80, PRO-81, PRO-82, PRO-84
Context to provide each sub-agent:
- •Template ID to process (e.g., "PRO-61")
- •Project name/ID - the event project created in Step 2
- •Event date (for calculation)
- •Event month/year labels
After Each Batch Completes
CRITICAL: The orchestrating agent (not sub-agents) updates the project DoD to avoid conflicts.
- •
Collect Results: Gather template ID → new issue mapping from all 5 sub-agents
- •Example:
{"PRO-83": "PRO-109", "PRO-62": "PRO-107", ...}
- •Example:
- •
Read Current Project:
linear-cli p get <PROJECT_ID> --output json - •
Update All Links: For each template → new issue mapping:
- •Find template link in description (e.g.,
[Template](https://linear.app/.../PRO-83/...)) - •Replace with new task link (e.g.,
[PRO-109](https://linear.app/.../PRO-109/...))
- •Find template link in description (e.g.,
- •
Single Update:
linear-cli p update <PROJECT_ID> -d "<UPDATED_DESCRIPTION>"
Why: Prevents concurrent update conflicts when multiple sub-agents try to update the same project simultaneously.
Next Steps
After all tasks created and links updated:
- •Update project with speaker details and team assignments
- •Begin T-90 milestone execution
References
- •Template Source: PRO-60 - Template Event
- •Team: Product Tank SF