Create a Linear Project from requirements using Discovery Mode brainstorming. Same process as /spec but outputs to Linear instead of file...
Iron Law: Same process as /spec, different output target. Discovery Mode ā Linear Project.
This skill runs the brainstorm skill in Discovery Mode and outputs the result to a Linear Project instead of a file.
/spec [feature] ā brainstorm (Discovery) ā docs/specs/*.md
/create-linear-spec ā brainstorm (Discovery) ā Linear Project
Both use the same process. Only the output differs.
A spec contains WHAT and WHY. Never HOW. Never rejected decisions.
| In Project Description | NOT In Project Description |
|---|---|
| User stories | Code snippets |
| Acceptance criteria | Technical approach |
| Success metrics | Database schema |
| Requirements | API design |
| Constraints | Rejected alternatives |
| Diagrams (Mermaid) | Implementation details |
| Prose explanations | Decision logs |
Project descriptions should be CLEAR and FOCUSED:
ā
GOOD: "Users need real-time notifications so they don't miss important updates"
ā BAD: "We considered polling but rejected it due to performance concerns"
| Content | Location |
|---|---|
| What we're building + Why | Project Description |
| Rejected alternatives | Separate Document: "Decision Log" |
| Technical research | Separate Document: "Technical Research" |
| Meeting notes | Separate Document: "Discovery Notes" |
Projects contain prose and diagrams only. No code examples, no pseudo-code.
ā
GOOD: "The system validates user input before processing"
ā
GOOD: Mermaid diagram showing data flow
ā BAD: `if (!isValid(input)) throw new Error()`
Use /create-linear-design for technical approach with code patterns.
This is identical to /spec:
1. EXPLORE ā What problems exist? Who has them?
2. BRAINSTORM ā What are ALL the things this could do?
3. PRIORITIZE ā What's essential vs nice-to-have? (MoSCoW)
4. SPECIFY ā Write user stories + acceptance criteria
5. VALIDATE ā Review with user before creating
## Problem Exploration
**Who has this problem?**
- Primary user: [persona]
- Secondary users: [others affected]
**What's the pain today?**
- [Current workaround 1]
- [Current workaround 2]
**What triggers the need?**
- [Trigger event 1]
**What does success look like?**
- [Outcome 1]
- [Outcome 2]
Generate ALL possible requirements without filtering:
## Raw Requirements (Unfiltered)
### Core Functionality
- [ ] [Requirement] - even if obvious
- [ ] [Requirement] - even if complex
### User Experience
- [ ] [UX requirement]
### Edge Cases
- [ ] What if [edge case]?
Quantity over quality at this stage.
## Prioritized Requirements
### Must Have (P0) - Without these, feature is useless
- [ ] [Requirement 1]
### Should Have (P1) - Important but not critical
- [ ] [Requirement 2]
### Could Have (P2) - Nice to have
- [ ] [Requirement 3]
### Won't Have (This Release)
- [Requirement 4] - Reason: [why deferred]
## User Stories
### US-1: [Title]
**As a** [user type]
**I want to** [action]
**So that** [benefit]
**Acceptance Criteria:**
- [ ] Given [context], when [action], then [result]
- [ ] Given [context], when [action], then [result]
Show the user the complete spec for approval:
## Proposed Linear Project
**Name:** [Feature Name]
**Summary:** [One-line summary, max 255 chars]
**Description:** (Full spec below)
---
[Full spec content]
---
Create this Linear Project? I can adjust before creating.
List available initiatives:
mcp__linear-server__list_projects({ state: "started", limit: 50 })
Once approved, use Linear MCP:
mcp__linear-server__create_project({
name: "[Feature Name]",
summary: "[One-line summary]", // Max 255 chars
description: `[Full spec content in Markdown]`,
team: "[Team Name]",
initiative: "[Initiative ID]", // Optional
state: "planned"
});
## Linear Spec Created
**Project:** [Feature Name]
**Team:** [Team Name]
**Initiative:** [Initiative Name]
**URL:** https://linear.app/[workspace]/project/[slug]
**Next Steps:**
- Technical approach: `/brainstorm how to implement [feature]`
- Create plan: `/plan [feature]`
- Sync plan to Linear: `/create-linear-plan`
The project description should be clear, focused, and free of clutter.
# [Feature Name]
## Why This Matters
[2-3 sentences on the problem being solved and why it's important]
## What We're Building
[Clear description of the solution - prose only, no code]
## Target Users
- **Primary**: [Who] - [What they need]
- **Secondary**: [Who] - [What they need]
## Success Metrics
| Metric | Current | Target |
|--------|---------|--------|
| [Metric] | X | Y |
---
## User Stories
### US-1: [Title]
**As a** [user type]
**I want to** [action]
**So that** [benefit]
**Acceptance Criteria:**
- [ ] Given [context], when [action], then [result]
- [ ] Given [context], when [action], then [result]
### US-2: [Title]
[Same format]
---
## Scope Boundaries
- ā
**In scope**: [What IS included]
- ā **Out of scope**: [What is NOT included - without explaining why]
## Open Questions
- [ ] [Question needing resolution]
Notice what's NOT in the template:
If you have valuable context that shouldn't clutter the main description, create separate documents:
// Decision Log (if many alternatives were considered)
mcp__linear-server__create_document({
title: "[Feature] Decision Log",
project: "project-uuid",
content: `# Decision Log
## [Decision 1]: [Topic]
**Chosen:** [What we picked]
**Rejected:**
- [Alternative 1] - [Why rejected]
- [Alternative 2] - [Why rejected]
## [Decision 2]: [Topic]
...`
});
Only create these documents if the context is valuable for future reference. Don't create them just to have them.
User says: /create-linear-spec user notifications
Steps 1-5 - Discovery Mode:
Problem: Users miss important updates, have to refresh manually
Who: All authenticated users
Triggers: New message, status change, mention
Requirements (brainstormed):
- Real-time in-app notifications
- Email fallback for away users
- Notification preferences
- Read/unread status
- Notification center
- Push notifications
- Do not disturb
- Digest mode
Prioritized:
- P0: In-app real-time, read status
- P1: Email fallback, preferences
- P2: Push, digest mode
Step 6 - Validate:
## Proposed Linear Project
**Name:** User Notifications
**Summary:** Real-time notifications for important events with email fallback
**Description:**
[Full spec with 4 user stories, acceptance criteria, metrics]
Create this Linear Project?
Step 7 - Create:
mcp__linear-server__create_project({
name: "User Notifications",
summary: "Real-time notifications for important events with email fallback",
description: "[Full spec content]",
team: "Engineering",
initiative: "app-beta-uuid",
state: "planned"
})
Step 8 - Confirm:
## Linear Spec Created
**Project:** User Notifications
**URL:** https://linear.app/pea/project/user-notifications
Next: `/brainstorm how to implement notifications`
Then: `/plan notifications` ā `/create-linear-plan`
PROCESS: Same as /spec (brainstorm Discovery Mode)
OUTPUT: Linear Project (spec in description)
TOOLS: mcp__linear-server__create_project
1. EXPLORE ā Problem space
2. BRAINSTORM ā All requirements
3. PRIORITIZE ā MoSCoW (P0/P1/P2)
4. SPECIFY ā User stories + AC
5. VALIDATE ā User approval
6. SELECT ā Choose initiative
7. CREATE ā Linear Project
8. CONFIRM ā Return URL
CONTENT RULES:
ā
WHAT and WHY only
ā
Prose and diagrams
ā
User stories with AC
ā NO code snippets
ā NO rejected alternatives
ā NO implementation details
ā NO decision logs (use separate document)
Before creating the project, verify:
Uses:
Mirrors:
/spec - Same process, different output (file vs Linear)Pairs with:
/brainstorm how... - Technical approach after spec/create-linear-plan - Implementation issues