Managing 37 Issues Across 4 Milestones with Linear: How We Keep AI Projects Organized
Managing 37 Issues Across 4 Milestones with Linear: How We Keep AI Projects Organized
Meta Description: We use Linear to track 37 issues across 4 milestones for the Secure AI Prompt Builder course—preventing confusion in long AI conversations and maintaining progress visibility.
Building a complex project with AI across multiple conversations creates a unique problem: context loss. You finish a session, close the tab, come back tomorrow—what was done? What’s next? What’s blocking Milestone 2?
For the Secure AI Prompt Builder course, we’re tracking 37 issues across 4 milestones in Linear. Here’s why we chose Linear, how we use it to prevent confusion, and the workflow that keeps everything on track.
The Problem: AI Conversations Lose Context
Scenario: You’re building a course with Claude. Session 1: You fix test scoring logic. Session 2: You harden 10 prompts. Session 3: You build API key security. By Session 4, you ask: “Wait, did we finish the scoring fix?”
Claude doesn’t automatically remember what was completed three sessions ago. Each conversation is somewhat isolated. Without external tracking, you end up:
- Repeating completed work
- Forgetting blockers
- Losing track of milestone progress
- Asking “what’s left?” every session
Solution: External project tracking that persists across conversations.
Why Linear (Not GitHub Projects, Trello, or Notion)
We evaluated several options:
GitHub Projects
Pros:
- Lives in the repo
- Free for public/private repos
- Markdown support
Cons:
- Limited automation (compared to Linear)
- No GitHub Issues → Linear keyword integration
- UI is clunky for rapid updates
Trello
Pros:
- Simple Kanban interface
- Easy to learn
- Good for visual workflows
Cons:
- No developer-first features
- Limited API (compared to Linear)
- No Git integration
- Not built for technical project management
Notion
Pros:
- Extremely flexible
- Great for documentation + project tracking
- Powerful database views
Cons:
- Overkill for simple issue tracking
- Slower than Linear for rapid updates
- Not built specifically for issue management
Linear (Our Choice)
Why we chose it:
-
Developer-First UX
- Keyboard shortcuts for everything
- Fast, native-feeling UI
- Built by developers, for developers
-
Powerful API
- Full CRUD via @linear/sdk
- Programmatic import (37 issues in 60 seconds)
- Direct integration with Claude via Node.js scripts
-
GitHub Integration
- Git commit keywords (“Fixes SAPB-20”) auto-close issues
- Commits linked in Linear activity timeline
- Bidirectional sync between Linear and GitHub
-
Flexible Workflow States
- Backlog → Todo → In Progress → Done → Cancelled
- Custom states if needed
- Automatic progress tracking
-
Projects (Milestones)
- Group issues by deliverable
- Track progress toward each milestone
- See what’s blocking the next release
Bottom line: Linear is fast, developer-friendly, and integrates seamlessly with our Git workflow.
Our Project Structure
Team: Secure AI Prompt Builder (SAPB)
Milestones (Linear Projects):
-
M1: Testing Complete (10 issues)
- All 50 prompts tested and hardened
- Test framework validated
- Documentation complete
-
M2: Course Ready (12 issues)
- Course content finalized
- Platform setup (payment, auth, hosting)
- Student materials prepared
-
M3: Soft Launch (8 issues)
- Beta cohort recruited
- Feedback loop established
- Initial marketing materials
-
M4: Public Launch (7 issues)
- Full marketing campaign
- Support infrastructure
- Public release
Total: 37 issues across 4 milestones
Labels:
testing- Test framework and validationcontent- Course materialsproduct- Platform featureslaunch- Marketing and releasedocumentation- Guides and docs
Priorities:
- 🔴 Urgent - Blocking progress (2 issues)
- 🟠 High - Important but not blocking (8 issues)
- 🟡 Medium - Standard priority (20 issues)
- 🟢 Low - Nice to have (7 issues)
How We Use Linear Across AI Conversations
1. Start of Session: Check Current State
Every new conversation starts with:
powershell -File 00-Project-Management/check-all-issues.ps1
Output:
Found 37 issues:
SAPB-1: Fix test scoring logic
Status: Done
Priority: 🟠 High
Comments: 3
Updated: 12/26/2025, 8:44:37 PM
SAPB-20: API key configuration guide
Status: Done
Priority: 🟡 Medium
Comments: 4
Updated: 12/28/2025, 9:19:00 AM
SAPB-5: Harden 10 creative prompts
Status: In Progress
Priority: 🟠 High
Comments: 2
Updated: 12/27/2025, 3:15:00 PM
[... 34 more issues ...]
What this tells us:
- What’s done (SAPB-1, SAPB-20)
- What’s in progress (SAPB-5)
- What’s next (highest priority in Todo)
- What’s blocking milestones
Time to full audit: 30 seconds
2. During Work: Update Status in Real-Time
As we work, we update tickets immediately:
# Starting work on SAPB-5
powershell -File update-issue.ps1 SAPB-5 -Status "In Progress" -Comment "Starting batch 2 of creative prompt hardening"
# Mid-work progress update
powershell -File update-issue.ps1 SAPB-5 -Comment "✅ Hardened 5/10 prompts. Found 23 vulnerabilities so far."
# Completion
powershell -File update-issue.ps1 SAPB-5 -Status "Done" -Comment "All 10 prompts hardened. 47 vulnerabilities fixed total."
Why real-time updates matter:
- Next session sees exactly where we left off
- Comments capture what was done (not just status change)
- No “wait, did we finish that?” confusion
3. Git Commits: Automatic Issue Linking
When work is complete, Git commits automatically close issues:
git commit -m "Harden batch 2 creative prompts (10 prompts)
Fixed 47 vulnerabilities across social-media, ad-copy, and blog-outline prompts.
**Attack types prevented:**
- Jailbreak (19 cases)
- Prompt injection (15 cases)
- Content policy violation (13 cases)
Fixes SAPB-5
🤖 Generated with Claude Code
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>"
What happens:
- Commit pushed to GitHub
- GitHub notifies Linear (via integration)
- Linear finds “Fixes SAPB-5”
- Issue automatically marked Done
- Commit linked in Linear activity
- Files changed visible in Linear
Result: Zero manual status updates needed.
4. End of Session: Milestone Progress Check
Before ending a session:
# Check progress toward M1
powershell -File check-all-issues.ps1 | grep "M1:"
Output:
M1: Testing Complete - 7/10 issues completed (70%)
SAPB-1: Done ✅
SAPB-2: Done ✅
SAPB-3: In Progress 🔄
SAPB-4: Todo 📋
...
What this tells us:
- How close to milestone completion
- What’s blocking the milestone
- What to prioritize next session
How Linear Prevents Confusion
Problem 1: “What did we accomplish last session?”
Without Linear:
- Re-read previous conversation transcript
- Search for “Done” or “Completed”
- Guess based on Git commits
- Time: 5-10 minutes
With Linear:
- Check issue activity for recent status changes
- See comments with completion notes
- Review commits linked to issues
- Time: 30 seconds
Problem 2: “What’s next?”
Without Linear:
- Scroll through conversation
- Remember what was planned
- Hope nothing was forgotten
- Accuracy: ~70% (frequent forgotten tasks)
With Linear:
- Sort by priority
- Filter by “Todo” status
- See highest priority unstarted work
- Accuracy: 100% (everything is tracked)
Problem 3: “Are we on track for Milestone 2?”
Without Linear:
- Count completed tasks manually
- Estimate progress based on feeling
- No data-driven answer
- Time: Impossible without tracking
With Linear:
- Check project progress (12 issues, 8 done, 4 remaining)
- See 67% completion percentage
- Identify blockers visually
- Time: 10 seconds
Problem 4: “Did we already fix this?”
Without Linear:
- Search conversation history
- Check Git commits
- Ask Claude (who may not remember)
- Risk: High (might redo completed work)
With Linear:
- Search issue titles and descriptions
- Check status (Done = already fixed)
- Read comments for details
- Risk: Zero (definitive source of truth)
The Workflow That Works
Daily Routine:
-
Morning:
- Run
check-all-issues.ps1to see current state - Identify highest priority Todo item
- Move it to “In Progress”
- Run
-
During Work:
- Update status when starting new issue
- Add comments with progress notes
- Change priority if blockers discovered
-
On Completion:
- Commit with “Fixes SAPB-XX” keyword
- Verify Linear auto-closed the issue
- Check milestone progress
-
End of Day:
- Quick audit of In Progress items
- Update any stale statuses
- Plan next session priorities
Time Investment:
- Daily: ~3-5 minutes
- Per session: ~30 seconds (status checks)
- Total: ~10 minutes per week
Time Saved:
- No repeated work: ~20 minutes per week
- No “what’s next?” confusion: ~15 minutes per week
- No milestone tracking manually: ~10 minutes per week
- Total: ~45 minutes per week saved
Net Savings: 35+ minutes per week
Key Lessons Learned
1. External Tracking Is Non-Negotiable for Multi-Session Projects
AI conversations are powerful but ephemeral. Without external tracking:
- Context loss is inevitable
- Repeated work is common
- Progress is invisible
Lesson: If the project spans multiple sessions, use external issue tracking.
2. Real-Time Updates Beat End-of-Session Summaries
We tried two approaches:
Approach 1 (Failed): Update all tickets at end of session
- Forgot what was done
- Comments lacked detail
- Often skipped due to time pressure
Approach 2 (Works): Update tickets immediately during work
- Comments are detailed and accurate
- Nothing forgotten
- Adds ~5 seconds per update
Lesson: Update as you work, not after.
3. Git Integration Reduces Manual Work to Zero
Before GitHub + Linear integration:
- Manual status updates after commits
- Forgot to update Linear
- Stale ticket statuses
After GitHub + Linear integration:
- “Fixes SAPB-XX” auto-closes issue
- Commits linked automatically
- Always up-to-date
Lesson: Automate the meta-work (ticket updates) so you can focus on real work (building).
4. Milestones Provide Progress Visibility
Without milestones:
- “Are we close to launch?” → “Uh, I think so?”
- No clear finish line
- Hard to prioritize
With milestones:
- “Are we close to M1?” → “70% complete, 3 issues remaining”
- Clear deliverables
- Easy prioritization (focus on M1 blockers)
Lesson: Group issues into milestones to track progress toward deliverables.
5. Labels + Priorities Create Focus
37 issues is overwhelming. Filters make it manageable:
Filter by label:
testing→ See all test-related worklaunch→ See all marketing/release tasks
Filter by priority:
- 🔴 Urgent → What’s blocking progress?
- 🟠 High → What’s important but not blocking?
Combination:
testing+ 🔴 Urgent → Critical test failures
Lesson: Use labels and priorities to filter noise and focus on what matters.
What’s Next: Advanced Linear Usage
Planned Improvements:
-
Automated Test Results → Linear Comments
- Failed tests auto-comment on related issues
- Pass/fail stats updated in real-time
- Reduces manual test reporting
-
Milestone Progress Tracking
- Daily summary of progress toward each milestone
- Slack/email notifications for blockers
- Automated milestone completion celebration
-
Automated Prioritization
- Critical failures bump issue priority
- Stale issues auto-flagged for review
- Dependencies tracked automatically
-
Release Automation
- Completed M1 → Trigger course platform deploy
- Completed M4 → Trigger public launch workflow
- Zero manual release coordination
Bottom Line
Linear keeps us organized across 37 issues and 4 milestones. Every conversation starts with “What’s the current state?” and ends with “What’s next?” Both answers are instant and accurate.
The Pattern:
- Start session → Check Linear (30 sec)
- During work → Update issues (5 sec each)
- Finish work → Commit with keywords (auto-closes)
- End session → Check milestone progress (10 sec)
Stats:
- 37 issues tracked
- 4 milestones defined
- 0 repeated work
- 0 confusion about status
- ~35 minutes saved per week
- Infinite improvement in progress visibility
Investment: 10 minutes per week Return: Clear priorities, zero confusion, visible progress
Linear isn’t just project management. It’s how we maintain context across AI conversations. And in multi-session AI projects, context is everything.
Next post: How we built automated prompt security testing with validated retests—catching vulnerabilities before students see them.